openapi: 3.0.3 info: title: SpotDraft API version: v1 x-version: v1 x-logo: url: https://cdn.spotdraft.com/assets/logo-black-new.png backgroundColor: transparent altText: SpotDraft Logo href: https://spotdraft.com x-favicon: https://cdn.spotdraft.com/assets/favicon.png x-footer: © SpotDraft Inc. All rights reserved. description: "# SpotDraft Public API\n\nWelcome to the **SpotDraft Public API**. Use this documentation to authenticate\ \ requests, choose the right product workflow, and move from guide content into the endpoint-level API reference.\n\n\ ## Start here\n\nIf you are new to the API, use this sequence:\n\n1. Confirm your **regional base URL / cluster** and\ \ authentication headers.\n2. Start with one workflow: Embedded signing, Clickthrough, contract operations, or webhook\ \ ingestion.\n3. Use the **API Reference** section for endpoint schemas, request examples, and version-specific details.\n\ 4. Verify redirects, authentication, errors, and webhook validation before going live.\n\n## Quick navigation\n\n| I want\ \ to... | Start here \ \ |\n| --------------------------------------------------- | ------------------------------------------------------------------------------------\ \ |\n| Authenticate requests and choose the right hostname | [Authentication](/api/docs#description/authentication) \ \ |\n| Subscribe to lifecycle events | [Webhooks](/api/docs#description/webhooks)\ \ |\n| Understand error behavior and retry logic | [Errors](/api/docs#description/errors)\ \ |\n| Embed signing inside my product | [Embedded Contract\ \ API](/api/docs#description/embedded-contract-api) |\n| Add pre-acceptance flows with the SDK \ \ | [Clickthrough SDK](/api/docs#description/clickthrough-sdk) |\n| Explore the analytics\ \ SQL catalog | [Analytics Query Table Catalog](/api/docs#description/analytics-query-table-catalog)\ \ |\n| Explore endpoint-level details | [API Reference](/api/docs#tag/v21-contract-apis) \ \ |\n\n## Versioning and conventions\n\n- SpotDraft uses **versioning in the path**.\n- Versioning\ \ is **scoped to each API family**, not to the full public API surface.\n- Different families currently expose different\ \ path versions, including `v1`, `v2`, and `v2.1`.\n- The version in the request path is the contract for that endpoint.\ \ Do not infer version availability across unrelated API families.\n- A family can expose only one documented version,\ \ even if other families expose newer-looking path versions.\n- Documentation links, tags, and operation references should\ \ match the exact versioned path shown in the schema for that endpoint.\n- Composite ids such as `T-123` or `H-123` are\ \ identifiers, not plain integers. Send them exactly as documented.\n- Datetimes are returned in ISO 8601 UTC form such\ \ as `2025-06-07T00:00:00Z`.\n- Optional fields may be omitted or returned as `null`. Rely on field names and descriptions\ \ instead of assuming presence.\n- Pagination uses `page` and `limit`. Version-specific list endpoints document any additional\ \ filters or sorting options.\n\n## Base URL and regions\n\nPick the cluster that matches where your SpotDraft workspace\ \ is provisioned. The API reference server picker exposes the same four options.\n\n| Region | Domain \ \ |\n| ------------------- | ----------------------------------- |\n| IN (India) |\ \ `https://api.in.spotdraft.com/api/` |\n| US (United States) | `https://api.us.spotdraft.com/api/` |\n| ME (Middle East)\ \ | `https://api.me.spotdraft.com/api/` |\n| EU (European Union) | `https://api.eu.spotdraft.com/api/` |\n\nAlways\ \ use **`https://`**. Keep your API calls, webhook configuration, and embedded flows in the same regional cluster where\ \ the workspace is provisioned.\n\n## Redirects\n\nThe API commonly returns **`302 Found`** in two cases:\n\n1. **HTTP\ \ instead of HTTPS**\n2. **Trailing slash mismatch**\n\nSome HTTP clients do not preserve the original method on redirect.\ \ Disable automatic redirects while debugging so you can fix the real URL issue directly.\n\n---\n\n# Authentication\n\ \nAll API requests must include a **Client ID** in the HTTP headers.\n\n## Authentication quick reference\n\n| Scenario\ \ | Required headers |\n| -------- | ---------------- |\n| Server-to-server request | `client-id`, `client-secret` |\n\ | Act on behalf of a workspace user | `client-id`, `client-secret`, `user-email` |\n| OAuth JWT request | `Authorization:\ \ Bearer ` |\n| OAuth JWT request to a dual CLM bearer/OAuth endpoint | `Authorization: Bearer `, `X-SD-Auth-Type:\ \ oauth-jwt` |\n| Debugging auth failures | Confirm the workspace region, credential pair, and whether the impersonated\ \ user is active |\n\n## Requests as the application\n\nFor server-to-server access, send both **Client ID** and **Client\ \ Secret** in headers. SpotDraft audits these calls as the integration, not as a browser user session.\n\n### User impersonation\n\ \nYou may pass **`user-email`** with the email of a user to act on their behalf. That user must be an active member of\ \ the workspace tied to the credentials.\n\nTypical uses:\n\n- respecting per-user permissions\n- user-scoped list endpoints\n\ - audit attribution\n\nIf you omit **`user-email`**, the integration runs as the user linked to the API credentials.\n\ \nUse impersonation only when you want permission checks and audit attribution to resolve to a specific workspace user.\ \ Keep the credential pair and the selected user in the same workspace and region.\n\n## Header reference\n\n| Type |\ \ Header | Value |\n| ---- | ------ | ----- |\n| HEADER | `client-id` | string |\n| HEADER | `client-secret` | string\ \ |\n| HEADER | `user-email` | string (optional) |\n| HEADER | `Authorization` | `Bearer ` for OAuth JWT access\ \ |\n| HEADER | `X-SD-Auth-Type` | `oauth-jwt` when an endpoint explicitly supports both standard CLM bearer tokens and\ \ OAuth JWT bearer tokens |\n\n## OAuth JWT access\n\nOAuth-enabled routes accept a user-scoped OAuth JWT in the standard\ \ `Authorization` header:\n\n```http\nAuthorization: Bearer \n```\n\nSome internal routes support both standard\ \ CLM bearer tokens and OAuth JWT bearer tokens. For those dual-auth routes, callers must opt into OAuth JWT authentication\ \ explicitly:\n\n```http\nAuthorization: Bearer \nX-SD-Auth-Type: oauth-jwt\n```\n\nThis opt-in header prevents\ \ Django from treating an OAuth JWT string as a CLM bearer token before OAuth JWT authentication runs. Routes that only\ \ declare OAuth JWT authentication continue to use the standard bearer header without the opt-in header. Guide and guideline\ \ CRUD endpoints use the dual-auth pattern so existing CLM bearer-token clients continue to work while Sidebar and agent\ \ clients can call them with user-scoped OAuth JWTs.\n\n## Interactive auth in the API reference\n\nThe API reference\ \ exposes the supported auth mechanisms per endpoint:\n\n- `client-id` + `client-secret` for public API integrations\n\ - `Bearer ` for OAuth-enabled routes\n- `Bearer ` plus `X-SD-Auth-Type: oauth-jwt` for routes that explicitly\ \ support both standard CLM bearer tokens and OAuth JWT bearer tokens\n- clickthrough-specific headers on clickthrough\ \ browser endpoints\n\n`user-email` remains an optional request header for impersonation when the endpoint supports client-header\ \ authentication.\n\n## Creating credentials\n\nIn SpotDraft, open **Settings → Developer settings**, then **Generate\ \ API credential**. Copy the **Client ID** and **Client Secret** at creation time and store them in a secrets manager\ \ or password vault.\n\nIf requests fail unexpectedly, first confirm:\n\n- you are calling the correct regional cluster\n\ - the credential pair belongs to the same workspace\n- any impersonated `user-email` is active in that workspace\n\nReference:\ \ [Developer settings](https://help.spotdraft.com/articles/8632014145-developer-settings)\n\n---\n\n# Webhooks\n\nWebhooks\ \ notify **your server** when contract lifecycle events happen in SpotDraft. Register one or more **HTTPS endpoints**\ \ in **Settings → Developer settings → Webhooks**, choose the event types, and SpotDraft delivers an HTTP `POST` with\ \ a JSON payload.\n\nReturn a **`2xx`** response quickly. Queue slow work so timeouts do not count as failed deliveries.\n\ \n## Delivery requirements\n\n- **HTTPS** with a publicly trusted certificate\n- reliable endpoint behavior\n- support\ \ for multiple webhook URLs per account\n- event-type filtering so you only receive what you need\n- fast acknowledgement\ \ with asynchronous downstream processing\n\n## Verifying webhooks\n\nUse **`X-SD-WEBHOOK-CONTENT-HASH`** for verification.\ \ Validate the raw request body with **HMAC-SHA512** using the `hmac_key` returned by the HMAC key API.\n\n```python\n\ import base64\nimport hashlib\nimport hmac\n\nsignature = hmac.new(\n base64.b64decode(sample_hmac_key),\n request.body,\n\ \ digestmod=hashlib.sha512,\n).hexdigest()\n\nassert signature == request.headers[\"X-SD-WEBHOOK-CONTENT-HASH\"]\n\ ```\n\nCompare against the **raw** request body bytes before any JSON parsing or normalization.\n\n## Logs and troubleshooting\n\ \nDeveloper Settings also exposes webhook logs for operational debugging. Use them to:\n\n- search deliveries by contract\ \ id\n- inspect the request payload sent by SpotDraft\n- confirm delivery failures before retrying downstream processing\n\ \nWhen investigating failures, confirm that the destination URL belongs to the same cluster strategy you use for the rest\ \ of the integration and that your endpoint returns a `2xx` quickly.\n\n## Common activity types\n\n| `activity` value\ \ | When it fires |\n| ---------------- | ------------- |\n| `CONTRACT_CREATED` | A new contract is created |\n| `CONTRACT_SENT_TO_COUNTERPARTY`\ \ | Sent for counterparty review / redlining |\n| `CONTRACT_SIGNATURE_REQUESTED` | Marked for signature |\n| `CONTRACT_SIGNED`\ \ | Any required signatory completes signing |\n| `CONTRACT_EXECUTED` | All signatures are complete |\n| `CONTRACT_PROCESS_METRIC_UPDATED`\ \ | Workflow metrics change |\n\nUse the API reference for version-specific webhook endpoints and sample payload operations.\n\ \nReference: [Developer settings](https://help.spotdraft.com/articles/8632014145-developer-settings)\n\n---\n\n# Errors\n\ \nSpotDraft uses conventional HTTP status codes so clients can branch without parsing proprietary error enums first.\n\ \n## Error handling guidance\n\n- Treat the HTTP status code as the primary branch condition.\n- Parse the response body\ \ for fields such as `detail`, `message`, `code`, or field-level validation errors.\n- Preserve the original request URL\ \ and method in logs. Redirects and trailing-slash mismatches can otherwise look like unrelated auth or validation problems.\n\ \n## HTTP status summary\n\n| Code | Meaning |\n| ---- | ------- |\n| `200` | Success |\n| `400` | Invalid or incomplete\ \ input |\n| `401` | Credentials missing, expired, or not accepted |\n| `402` | Request failed due to business-rule or\ \ workflow state |\n| `403` | Authenticated, but not allowed |\n| `404` | Resource not found or not visible to the caller\ \ |\n| `409` | Conflict, duplicate, or version mismatch |\n| `429` | Rate limited |\n| `500`, `502`, `503`, `504` | SpotDraft\ \ or upstream infrastructure error |\n\n## Retry guidance\n\n- Retry `429` and `5xx` responses with exponential backoff.\n\ - Do **not** blindly retry `4xx` responses without fixing the request.\n- Disable automatic redirect following while debugging\ \ `302` responses so URL issues are visible.\n\n---\n\n# Embedded Contract API\n\nUse the Embedded Contract flow to create\ \ contracts through the Public API and render SpotDraft’s signing experience inside your product with an iframe.\n\n##\ \ High-level flow\n\n1. Create the contract with user-supplied data.\n2. Generate a short-lived embedded URL for the counterparty.\n\ 3. Render the iframe.\n4. Listen for `postMessage` events to detect completion, decline, or error states.\n\n## Step 1\ \ — Create a contract\n\nAuthenticate with your application credentials and call the **Create Contract** API using the\ \ data you collect in your product.\n\nUse a credential pair linked to the SpotDraft user who should:\n\n- receive notifications\n\ - appear as the business user when relevant\n- own the integration-level audit trail\n\n## Step 2 — Generate the embed\ \ URL\n\nUse the contract id returned by Create Contract together with the counterparty email to call the embedded URL\ \ endpoint. Treat the returned URL like a capability token: load it only for the intended user session and avoid logging\ \ it without redaction.\n\n## Step 3 — Render the iframe\n\nListen for `postMessage` events from the iframe and validate\ \ `event.origin` before trusting them.\n\n| Event | Message name | Payload |\n| ----- | ------------ | ------- |\n| Success\ \ | `spotdraft.embedded.sign_successful` | `{ contract_id }` |\n| Declined | `spotdraft.embedded.sign_declined` | `{ contract_id\ \ }` |\n| Signing error | `spotdraft.embedded.sign_error` | `{ contract_id, error: { code, upstream_error } }` |\n\n##\ \ Integration notes\n\n- Large agreements can take several seconds to render. Show a loader or skeleton state.\n- Keep\ \ API calls and embed URLs in the same region as the tenant.\n- Handle iframe close / completion without polling where\ \ possible.\n\n---\n\n# Clickthrough SDK\n\nThe **Clickthrough** JavaScript SDK lets you capture recorded acceptance of\ \ one or more agreements before a user continues with signup, checkout, or access to a gated feature.\n\n## Prerequisites\n\ \nBefore integrating, confirm the following in the SpotDraft Clickthrough console:\n\n- Clickthrough is enabled for the\ \ workspace\n- the relevant agreements are attached and published\n- your supported domains are allowlisted\n- production\ \ pages are served over HTTPS\n- you are using the snippet values for the same regional cluster as your workspace\n\n\ ## Installation\n\n### NPM\n\n```bash\nnpm install @spotdraft/clickwrap-client\n```\n\n### CDN\n\n```html\n\n```\n\n## Initialization\n\n```typescript\n\ import { SdClickthrough } from \"@spotdraft/clickwrap-client\";\n\nconst clickthrough = new SdClickthrough({\n clickwrapId:\ \ \"CLICKWRAP_ID_FROM_CONSOLE\",\n hostLocationDomId: \"HOST_ELEMENT_DOM_ID\",\n baseUrl: \"BASE_URL_FROM_CONSOLE\"\ ,\n});\n\nawait clickthrough.init();\n```\n\nUse the `clickwrapId` and `baseUrl` exactly as provided by the SpotDraft\ \ console snippet for that clickthrough.\nFor the latest SDK package details, installation metadata, and published package\ \ versions, use the npm package page for `@spotdraft/clickwrap-client`.\n\n## Submit payload\n\n`user_identifier` is the\ \ only required payload field for `submit(payload)`. It should uniquely identify the user in your product, such as their\ \ email address or mobile number.\n\n```typescript\nconst payload = {\n user_identifier: \"johndoe@example.com\",\n \ \ first_name: \"John\",\n last_name: \"Doe\",\n user_email: \"johndoe@example.com\",\n};\n```\n\n## Common methods\n\ \n| Method | Description |\n| ------ | ----------- |\n| `init()` | Mount embedded UI |\n| `isAccepted()` | Check whether\ \ required agreements are accepted |\n| `submit(payload)` | Record acceptance |\n| `openConsentDialog()` | Open modal\ \ mode |\n| `closeConsentDialog()` | Close modal mode |\n| `isReacceptanceRequired(id)` | Check whether a user must accept\ \ again |\n\n## Common events\n\n| Event | When it fires |\n| ----- | ------------- |\n| `acceptanceToggled` | Aggregate\ \ acceptance changed |\n| `acceptanceComplete` | All mandatory agreements are accepted |\n| `cancelClicked` | User dismisses\ \ the flow |\n| `sdClickthroughLoaded` | CDN SDK is ready |\n| `sdClickthroughLoadFailed` | CDN SDK failed to load |\n\ \n## Common setup issue\n\nIf the SDK returns **`Request received from invalid domain`**, the request origin is not allowlisted\ \ in Clickthrough settings. Add the full domain, including protocol such as `https://app.example.com`. `localhost` is\ \ typically allowlisted for local testing.\n\nUse the API reference for clickthrough endpoints and keep the product console’s\ \ **View snippet** output as the source of truth for tenant-specific ids and base URLs.\n\nReferences:\n\n- [@spotdraft/clickwrap-client\ \ on npm](https://www.npmjs.com/package/@spotdraft/clickwrap-client)\n- [How to Implement Clickthrough in Your Application](https://help.spotdraft.com/articles/3574375021-how-to-implement-clickthrough-in-your-application)\n\ - [How to Implement SpotDraft Clickthrough in Mobile Application](https://help.spotdraft.com/articles/9120222930-how-to-implement-spotdraft-clickthrough-in-mobile-application)\n\ \n---\n\n# Analytics Query Table Catalog\n\n**Dialect:** GoogleSQL (Google Standard SQL).\n\n---\n\n## Using this catalog\n\ \n| Topic | Behaviour |\n| --- | --- |\n| **Enablement** | The flag `PUBLIC_ANALYTICS_QUERY_API` must be enabled; otherwise\ \ the endpoint returns **501**. Contact SpotDraft support. |\n| **Endpoint** | [POST /api/v2.1/public/analytics/query/](#tag/v21-analytics-query/POST/api/v2.1/public/analytics/query/)\ \ |\n| **Column names** | Use **snake_case public** names (e.g. `execution_time`, `workflow_id`). |\n| **SQL** | Single\ \ `SELECT` (optional `WITH`, `UNION`). |\n| **Contract-scoped rows** | By default limited to contracts the user may access\ \ (server `user_access`). Optional `user_scoped` or `X-Spotdraft-Analytics-User-Scoped`; workspace-wide mode requires\ \ the workspace Admin role (see API overview). |\n\n---\n\n## Table contents\n\nJump to a table definition:\n\n- [`contracts`](#table-contracts)\n\ - [`users`](#table-users)\n- [`workflows_setup`](#table-workflows_setup)\n- [`approvals_setup`](#table-approvals_setup)\n\ - [`contract_types_setup`](#table-contract_types_setup)\n- [`counterparties_setup`](#table-counterparties_setup)\n- [`entities_setup`](#table-entities_setup)\n\ - [`signatures_setups`](#table-signatures_setups)\n- [`contract_lifecycle`](#table-contract_lifecycle)\n- [`contract_tat_details`](#table-contract_tat_details)\n\ - [`contract_sign`](#table-contract_sign)\n- [`contract_approvals`](#table-contract_approvals)\n- [`contracts_review`](#table-contracts_review)\n\ - [`signatories`](#table-signatories)\n- [`contract_level_metrics`](#table-contract_level_metrics)\n- [`contract_level_metrics_lc`](#table-contract_level_metrics_lc)\n\ - [`legal_intake`](#table-legal_intake)\n\n---\n\n## Dataset overview\n\n| Public table id | Description |\n| --- | ---\ \ |\n| `contracts` | Core fact table — one row per contract. Lifecycle timing, negotiation metrics, workflow linkage,\ \ counterparty name, entity name, and expiry. |\n| `users` | One row per user — activity, teams, licensing, and account\ \ flags. |\n| `workflows_setup` | Frozen (versioned) workflow configuration per workspace. |\n| `approvals_setup` | Approval\ \ steps configured within workflow versions. |\n| `contract_types_setup` | Contract type directory per workspace. |\n\ | `counterparties_setup` | Registered counterparties per workspace. |\n| `entities_setup` | Legal entities (customer signing\ \ companies) per workspace. |\n| `signatures_setups` | Signatory slots per workflow version. |\n| `contract_lifecycle`\ \ | Core contract register — one row per contract. Volume, status, type, expiry, counterparty, entity, workflow. |\n|\ \ `contract_tat_details` | Turnaround time per contract — one row per contract. Lifecycle stage timing, negotiation rounds,\ \ ownership. Time columns are in hours (FLOAT64). |\n| `contract_sign` | Signing-stage summary per contract — one row\ \ per contract. Signature SLA and pending-signature analysis. Time columns in hours where applicable. |\n| `contract_approvals`\ \ | Approval-step detail — one row per approval step per contract. Approval SLA and bottleneck analysis. Time columns\ \ in hours. |\n| `contracts_review` | Review-request detail — one row per review instance per contract. Legal workload\ \ and review SLA. Time columns in hours (FLOAT64). |\n| `signatories` | Individual signatory records — one row per signatory\ \ per contract. Per-signatory analytics. time_to_sign_hours is in hours (FLOAT64). |\n| `contract_level_metrics` | Event-level\ \ lifecycle tracking — multiple rows per contract. time_spent_seconds is in seconds (INT64); divide by 3600 for hours.\ \ |\n| `contract_level_metrics_lc` | Lifecycle-focused variant of contract_level_metrics — same structure without review_filter,\ \ approval_filter, sign_filter. time_spent_seconds in seconds. |\n| `legal_intake` | Legal intake requests — one row per\ \ intake item. Legal ops workload and intake SLA. |\n\nPhysical table names and cloud project or dataset identifiers are\ \ resolved server-side and are not part of this reference.\n\n---\n\n## `contracts`\n\n\n\ \nCore fact table — one row per contract. Lifecycle timing, negotiation metrics, workflow linkage, counterparty name,\ \ entity name, and expiry.\n\n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `contract_id`\ \ | `INT64` | Yes | Primary key — unique contract identifier |\n| `workspace_id` | `INT64` | Yes | Workspace this contract\ \ belongs to |\n| `contract_kind` | `STRING` | Yes | How the contract entered the system |\n| `contract_status` | `STRING`\ \ | Yes | Current lifecycle stage |\n| `contract_type_id` | `INT64` | Yes | FK to contract_types_setup |\n| `contract_type`\ \ | `STRING` | Yes | Human-readable contract type name |\n| `created_date` | `DATE` | Yes | Date the contract was created\ \ |\n| `execution_date` | `DATE` | Yes | Date the contract was fully executed |\n| `expiry_date` | `DATE` | Yes | Expiry\ \ or renewal date |\n| `term_length` | `STRING` | Yes | Contract term as text |\n| `counterparty_name` | `STRING` | Yes\ \ | Counterparty label on the contract (free text) |\n| `entity_name` | `STRING` | Yes | Signing company / entity name\ \ on the contract |\n| `redlining_starts` | `TIMESTAMP` | Yes | When redlining began |\n| `sign_starts` | `TIMESTAMP`\ \ | Yes | When signing began |\n| `sign_email_sent` | `TIMESTAMP` | Yes | When the signature request email was sent |\n\ | `draft_time` | `FLOAT64` | Yes | Days spent in Draft |\n| `redlining_time` | `FLOAT64` | Yes | Total days in Redlining\ \ |\n| `client_redlining_time` | `FLOAT64` | Yes | Days redlining on client side |\n| `counterparty_redlining_time` |\ \ `FLOAT64` | Yes | Days redlining on counterparty side |\n| `on_hold_time` | `FLOAT64` | Yes | Days spent On Hold |\n\ | `sign_nego_time` | `FLOAT64` | Yes | Days in sign negotiation |\n| `sign_time` | `FLOAT64` | Yes | Total days in Sign\ \ |\n| `sign_approvals` | `FLOAT64` | Yes | Days on sign-stage approvals |\n| `signature_collection` | `FLOAT64` | Yes\ \ | Days to collect signatures |\n| `execution_time` | `FLOAT64` | Yes | Total days from created to executed (key metric)\ \ |\n| `time_for_reviews` | `FLOAT64` | Yes | Days in internal reviews |\n| `reviews_requested` | `INT64` | Yes | Review\ \ requests made |\n| `pending_reviews` | `INT64` | Yes | Reviews still pending |\n| `client_rounds` | `INT64` | Yes |\ \ Redline rounds from client |\n| `cp_rounds` | `INT64` | Yes | Redline rounds from counterparty |\n| `turns` | `INT64`\ \ | Yes | Total negotiation turns |\n| `on_hold_rounds` | `INT64` | Yes | Times placed on hold |\n| `sign_nego_rounds`\ \ | `INT64` | Yes | Rounds of sign negotiation |\n| `contract_ageing_days` | `INT64` | Yes | Days since creation (in-flight)\ \ |\n| `sign_pending_with` | `STRING` | Yes | Who signing is pending with |\n| `total_time_to_sign_counterparty_hours`\ \ | `FLOAT64` | Yes | Hours counterparty took to sign |\n| `total_time_to_sign_company_hours` | `FLOAT64` | Yes | Hours\ \ company took to sign |\n| `pending_counterparty_signatories` | `INT64` | Yes | CP signatories yet to sign |\n| `counterparties_signatory_signed`\ \ | `INT64` | Yes | CP signatories who have signed |\n| `company_signatory_signed` | `INT64` | Yes | Company signatories\ \ who have signed |\n| `pending_company_signatories` | `INT64` | Yes | Company signatories yet to sign |\n| `frozen_workflow_id`\ \ | `INT64` | Yes | Frozen workflow snapshot at creation |\n| `workflow_title_at_creation` | `STRING` | Yes | Frozen workflow\ \ title at creation |\n| `workflow_id` | `INT64` | Yes | Current workflow id |\n| `current_workflow_title` | `STRING`\ \ | Yes | Current workflow display name |\n\n### Enum values\n\n#### `contract_status`\n\n- `Executed`\n- `Redlining`\n\ - `Sign`\n- `Draft`\n- `Voided`\n- `On Hold`\n\n#### `contract_kind`\n\n- `Externally Executed Contracts`\n- `Upload Sign\ \ Contracts`\n- `Campaign Contracts`\n- `Uploaded for review`\n- `Template Contracts`\n- `Template Contracts (Redlined)`\n\ - `Clickwrap Contracts`\n- `Express Template Contracts`\n\n#### `sign_pending_with`\n\n- `Executed`\n- `Pending with Counterparty\ \ Signatory`\n- `Pending with Company Signatory`\n- `Pending with Counterparty and Company Signatories`\n\n---\n\n## `users`\n\ \n\n\nOne row per user — activity, teams, licensing, and account flags.\n\n### Schema\n\n| Column\ \ | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `id` | `INT64` | Yes | Primary key (org_user_id) |\n\ | `last_activity_date` | `TIMESTAMP` | Yes | Most recent platform activity |\n| `invite_accepted` | `BOOL` | Yes | Invite\ \ accepted |\n| `first_login_date` | `TIMESTAMP` | Yes | First login time |\n| `is_active` | `BOOL` | Yes | Account active\ \ |\n| `is_deleted` | `BOOL` | Yes | Soft-deleted |\n| `created` | `TIMESTAMP` | Yes | Account created at |\n| `designation`\ \ | `STRING` | Yes | Job title / designation |\n| `created_by_workspace_id` | `INT64` | Yes | Workspace the user belongs\ \ to |\n| `teams` | `STRING` | Yes | Comma-separated team names |\n| `seniority_level` | `STRING` | Yes | Seniority band\ \ |\n| `department` | `STRING` | Yes | Department name |\n| `app_usage_purposes` | `STRING` | Yes | Stated usage purposes\ \ |\n| `licensed_user` | `BOOL` | Yes | Consumes a paid seat |\n\n---\n\n## `workflows_setup`\n\n\n\nFrozen (versioned) workflow configuration per workspace.\n\n### Schema\n\n| Column | Type | Nullable | Description\ \ |\n| --- | --- | --- | --- |\n| `workspace_id` | `INT64` | Yes | Workspace id |\n| `frozen_workflow_id` | `INT64` |\ \ Yes | Frozen workflow snapshot id (legacy spelling in dataset) |\n| `workflow_id` | `INT64` | Yes | Parent workflow\ \ id |\n| `title` | `STRING` | Yes | Workflow display name |\n| `status` | `STRING` | Yes | PUBLISHED / UNPUBLISHED /\ \ ARCHIVED |\n| `created` | `TIMESTAMP` | Yes | Version created at |\n| `last_published` | `TIMESTAMP` | Yes | Last published\ \ at |\n| `unpublished_changes_present` | `BOOL` | Yes | Draft changes not yet published |\n| `cp_contract_download_permission`\ \ | `STRING` | Yes | Counterparty download rights |\n\n### Enum values\n\n#### `status`\n\n- `PUBLISHED`\n- `UNPUBLISHED`\n\ - `ARCHIVED`\n\n#### `cp_contract_download_permission`\n\n- `ENABLE_PDF_OR_WORD`\n- `ENABLE_PDF_ONLY`\n- `DISABLE_UNTIL_SIGNING`\n\ - `NULL`\n\n---\n\n## `approvals_setup`\n\n\n\nApproval steps configured within workflow\ \ versions.\n\n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `approval_id` |\ \ `STRING` | Yes | Approval step id |\n| `approval_ver` | `STRING` | Yes | Version string |\n| `id` | `INT64` | Yes |\ \ Internal numeric id |\n| `approval_name` | `STRING` | Yes | Step display name |\n| `approval_order` | `INT64` | Yes\ \ | Sequence order |\n| `frozen_workflow_id` | `INT64` | Yes | Frozen workflow id |\n| `workflow_id` | `INT64` | Yes |\ \ Parent workflow id |\n| `workflow_name` | `STRING` | Yes | Parent workflow name |\n| `status` | `STRING` | Yes | Publication\ \ status |\n| `type` | `STRING` | Yes | TEMPLATE_WORKFLOW or UPLOAD_WORKFLOW |\n| `conditional_approval` | `BOOL` | Yes\ \ | Conditional step |\n| `workspace_id` | `INT64` | Yes | Workspace id |\n| `role_id` | `INT64` | Yes | Approver role\ \ id |\n| `skip_approval_restriction` | `BOOL` | Yes | Skip approvers allowed |\n| `download_contract_restriction` | `BOOL`\ \ | Yes | Download blocked during step |\n| `send_to_cp_restriction` | `BOOL` | Yes | Send-to-CP blocked during step |\n\ \n### Enum values\n\n#### `type`\n\n- `TEMPLATE_WORKFLOW`\n- `UPLOAD_WORKFLOW`\n\n---\n\n## `contract_types_setup`\n\n\ \n\nContract type directory per workspace.\n\n### Schema\n\n| Column | Type |\ \ Nullable | Description |\n| --- | --- | --- | --- |\n| `workspace_id` | `INT64` | Yes | Workspace id |\n| `contract_type_id`\ \ | `INT64` | Yes | Primary key |\n| `contract_type` | `STRING` | Yes | Contract type name |\n\n---\n\n## `counterparties_setup`\n\ \n\n\nRegistered counterparties per workspace.\n\n### Schema\n\n| Column | Type\ \ | Nullable | Description |\n| --- | --- | --- | --- |\n| `workspace_id` | `INT64` | Yes | Workspace id |\n| `counterparty_name`\ \ | `STRING` | Yes | Registered counterparty name |\n| `status` | `STRING` | Yes | ACTIVE / other states |\n\n---\n\n\ ## `entities_setup`\n\n\n\nLegal entities (customer signing companies) per workspace.\n\ \n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `workspace_id` | `INT64` | Yes\ \ | Workspace id |\n| `entity_name` | `STRING` | Yes | Display name |\n| `id` | `INT64` | Yes | Entity id |\n| `created`\ \ | `TIMESTAMP` | Yes | Created at |\n| `modified` | `TIMESTAMP` | Yes | Last modified at |\n| `is_primary` | `BOOL` |\ \ Yes | Primary entity flag |\n| `is_deleted` | `BOOL` | Yes | Soft delete |\n| `jurisdiction_id` | `INT64` | Yes | Jurisdiction\ \ id |\n| `organization_id` | `INT64` | Yes | Parent organization id |\n| `organization_type_id` | `INT64` | Yes | Organization\ \ type id |\n\n---\n\n## `signatures_setups`\n\n\n\nSignatory slots per workflow\ \ version.\n\n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `default_signature_id`\ \ | `INT64` | Yes | Signatory slot id |\n| `type` | `STRING` | Yes | COUNTER_PARTY or CREATOR_PARTY |\n| `name` | `STRING`\ \ | Yes | Signatory label |\n| `sign_order` | `INT64` | Yes | Signing order |\n| `created` | `TIMESTAMP` | Yes | Created\ \ at |\n| `workspace_id` | `INT64` | Yes | Workspace id |\n| `workflow_id` | `INT64` | Yes | Workflow id |\n| `conditional_signatory`\ \ | `BOOL` | Yes | Conditional signatory |\n| `conditional_routing` | `BOOL` | Yes | Conditional routing |\n\n### Enum\ \ values\n\n#### `type`\n\n- `COUNTER_PARTY`\n- `CREATOR_PARTY`\n\n---\n\n## `contract_lifecycle`\n\n\n\nCore contract register — one row per contract. Volume, status, type, expiry, counterparty, entity, workflow.\n\ \n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `contract_id` | `INT64` | Yes\ \ | Primary key — unique contract identifier |\n| `workspace_id` | `INT64` | Yes | Workspace filter key |\n| `created_date`\ \ | `DATE` | Yes | Contract creation date |\n| `contract_kind` | `STRING` | Yes | How contract entered the system |\n\ | `contract_type_id` | `INT64` | Yes | FK to contract type |\n| `contract_status` | `STRING` | Yes | Current lifecycle\ \ status |\n| `contract_name` | `STRING` | Yes | Name/title of the contract |\n| `contract_type` | `STRING` | Yes | Contract\ \ category label |\n| `template_name` | `STRING` | Yes | Template used (NULL for uploaded contracts) |\n| `execution_date`\ \ | `DATE` | Yes | Date contract was fully executed |\n| `term_length` | `STRING` | Yes | Contract duration as text |\n\ | `expiry_date` | `DATE` | Yes | Expiry or renewal date |\n| `post_execution_status` | `STRING` | Yes | Post-execution\ \ classification |\n| `execution_status` | `STRING` | Yes | Execution classification |\n| `counterparty_name` | `STRING`\ \ | Yes | Counterparty name |\n| `entity_name` | `STRING` | Yes | Company entity signing the contract |\n| `legal_owner`\ \ | `STRING` | Yes | Legal team member responsible |\n| `business_owner` | `STRING` | Yes | Business-side owner |\n| `business_owner_teams`\ \ | `STRING` | Yes | Comma-separated teams of the business owner |\n| `created_by_user_id` | `INT64` | Yes | org_user_id\ \ of contract creator |\n| `workflow_title_at_creation` | `STRING` | Yes | Workflow snapshot name used at contract creation\ \ |\n| `current_workflow_title` | `STRING` | Yes | Current active workflow name |\n| `workflow_id` | `INT64` | Yes | FK\ \ to workflow |\n\n### Enum values\n\n#### `contract_status`\n\n- `Executed`\n- `Redlining`\n- `Sign`\n- `Draft`\n- `Voided`\n\ - `On Hold`\n\n#### `contract_kind`\n\n- `Template Contracts`\n- `Template Contracts (Redlined)`\n- `Uploaded for review`\n\ - `Upload Sign Contracts`\n- `Externally Executed Contracts`\n- `Campaign Contracts`\n- `Clickwrap Contracts`\n- `Express\ \ Template Contracts`\n\n#### `post_execution_status`\n\n- `Active Contracts`\n- `Executed Contracts, no Expiry date`\n\ - `Expired Contracts`\n\n#### `execution_status`\n\n- `Executed`\n- `Not Yet Executed`\n\n---\n\n## `contract_tat_details`\n\ \n\n\nTurnaround time per contract — one row per contract. Lifecycle stage timing,\ \ negotiation rounds, ownership. Time columns are in hours (FLOAT64).\n\n### Schema\n\n| Column | Type | Nullable | Description\ \ |\n| --- | --- | --- | --- |\n| `contract_id` | `INT64` | Yes | FK to lifecycle table |\n| `workspace_id` | `INT64`\ \ | Yes | Workspace filter key |\n| `contract_name` | `STRING` | Yes | Contract name |\n| `contract_kind` | `STRING` |\ \ Yes | How contract entered the system |\n| `contract_type` | `STRING` | Yes | Contract category |\n| `template_name`\ \ | `STRING` | Yes | Template used |\n| `contract_status` | `STRING` | Yes | Current status |\n| `created_at` | `TIMESTAMP`\ \ | Yes | When contract was created |\n| `redlining_started_at` | `TIMESTAMP` | Yes | When redlining stage began |\n|\ \ `signing_started_at` | `TIMESTAMP` | Yes | When signing stage began |\n| `executed_at` | `TIMESTAMP` | Yes | When contract\ \ was executed |\n| `draft_time_hours` | `FLOAT64` | Yes | Hours spent in Draft stage |\n| `redlining_time_hours` | `FLOAT64`\ \ | Yes | Total hours in Redlining |\n| `client_redlining_time_hours` | `FLOAT64` | Yes | Hours of redlining attributed\ \ to client side |\n| `counterparty_redlining_time_hours` | `FLOAT64` | Yes | Hours of redlining attributed to counterparty\ \ |\n| `on_hold_time_hours` | `FLOAT64` | Yes | Hours spent On Hold |\n| `sign_negotiation_time_hours` | `FLOAT64` | Yes\ \ | Hours in sign negotiation phase |\n| `sign_time_hours` | `FLOAT64` | Yes | Total hours in Sign stage |\n| `sign_approval_time_hours`\ \ | `FLOAT64` | Yes | Hours spent on sign-stage approvals |\n| `signature_collection_time_hours` | `FLOAT64` | Yes | Hours\ \ to collect all signatures |\n| `total_execution_time_hours` | `FLOAT64` | Yes | Total hours from creation to execution\ \ |\n| `review_time_hours` | `FLOAT64` | Yes | Hours in internal reviews |\n| `reviews_requested_count` | `INT64` | Yes\ \ | Number of review requests made |\n| `pending_reviews_count` | `INT64` | Yes | Reviews still outstanding |\n| `client_redline_rounds`\ \ | `INT64` | Yes | Redline turns initiated by client |\n| `counterparty_redline_rounds` | `INT64` | Yes | Redline turns\ \ initiated by counterparty |\n| `total_negotiation_turns` | `INT64` | Yes | Total negotiation turns |\n| `on_hold_rounds`\ \ | `INT64` | Yes | Times placed On Hold |\n| `sign_negotiation_rounds` | `INT64` | Yes | Rounds of sign negotiation |\n\ | `is_tat_pending` | `INT64` | Yes | 1 = in-progress, 0 = complete |\n| `counterparty_name` | `STRING` | Yes | Counterparty\ \ name |\n| `entity_name` | `STRING` | Yes | Company entity |\n| `legal_owner` | `STRING` | Yes | Legal team owner |\n\ | `business_owner` | `STRING` | Yes | Business-side owner |\n| `business_owner_teams` | `STRING` | Yes | Teams of the\ \ business owner |\n| `workflow_title_at_creation` | `STRING` | Yes | Workflow used at contract creation |\n| `current_workflow_title`\ \ | `STRING` | Yes | Current workflow name |\n| `workflow_id` | `INT64` | Yes | FK to workflow |\n\n### Enum values\n\n\ #### `contract_status`\n\n- `Executed`\n- `Redlining`\n- `Sign`\n- `Draft`\n- `Voided`\n- `On Hold`\n\n#### `contract_kind`\n\ \n- `Template Contracts`\n- `Template Contracts (Redlined)`\n- `Uploaded for review`\n- `Upload Sign Contracts`\n- `Externally\ \ Executed Contracts`\n- `Campaign Contracts`\n- `Clickwrap Contracts`\n- `Express Template Contracts`\n\n---\n\n## `contract_sign`\n\ \n\n\nSigning-stage summary per contract — one row per contract. Signature SLA and pending-signature\ \ analysis. Time columns in hours where applicable.\n\n### Schema\n\n| Column | Type | Nullable | Description |\n| ---\ \ | --- | --- | --- |\n| `contract_id` | `INT64` | Yes | FK to lifecycle table |\n| `workspace_id` | `INT64` | Yes | Workspace\ \ filter key |\n| `contract_type` | `STRING` | Yes | Contract category |\n| `template_name` | `STRING` | Yes | Template\ \ used |\n| `counterparty_name` | `STRING` | Yes | Counterparty name |\n| `contract_name` | `STRING` | Yes | Contract\ \ name |\n| `created_date` | `DATE` | Yes | Contract creation date |\n| `execution_date` | `DATE` | Yes | Execution date\ \ |\n| `legal_owner` | `STRING` | Yes | Legal team owner |\n| `business_owner` | `STRING` | Yes | Business-side owner\ \ |\n| `workflow_status` | `STRING` | Yes | Workflow state |\n| `signing_started_at` | `TIMESTAMP` | Yes | When signing\ \ stage began |\n| `first_sign_request_sent_at` | `TIMESTAMP` | Yes | When first signature request was sent |\n| `pending_counterparty_signatories_count`\ \ | `INT64` | Yes | CP signatories yet to sign |\n| `counterparty_signatories_signed_count` | `INT64` | Yes | CP signatories\ \ who have signed |\n| `counterparty_total_signing_time_hours` | `FLOAT64` | Yes | Total hours for CP signatories to sign\ \ |\n| `counterparty_avg_signing_time_hours` | `FLOAT64` | Yes | Avg hours per CP signatory |\n| `pending_company_signatories_count`\ \ | `INT64` | Yes | Internal signatories yet to sign |\n| `company_signatories_signed_count` | `INT64` | Yes | Internal\ \ signatories who have signed |\n| `company_total_signing_time_hours` | `FLOAT64` | Yes | Total hours for internal signatories\ \ to sign |\n| `company_avg_signing_time_hours` | `FLOAT64` | Yes | Avg hours per internal signatory |\n| `signing_pending_with`\ \ | `STRING` | Yes | Who signing is currently pending with |\n\n### Enum values\n\n#### `signing_pending_with`\n\n- `Executed`\n\ - `Pending with Counterparty Signatory`\n- `Pending with Company Signatory`\n- `Pending with Counterparty and Company\ \ Signatories`\n\n---\n\n## `contract_approvals`\n\n\n\nApproval-step detail —\ \ one row per approval step per contract. Approval SLA and bottleneck analysis. Time columns in hours.\n\n### Schema\n\ \n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `contract_id` | `INT64` | Yes | FK to lifecycle\ \ table |\n| `workspace_id` | `INT64` | Yes | Workspace filter key |\n| `approval_instance_id` | `STRING` | Yes | Unique\ \ ID for this approval step instance |\n| `approval_step_name` | `STRING` | Yes | Name of the approval step |\n| `approval_step_category`\ \ | `STRING` | Yes | Sub-category of the approval step |\n| `contract_type` | `STRING` | Yes | Contract category |\n|\ \ `contract_kind` | `STRING` | Yes | How contract entered the system |\n| `contract_name` | `STRING` | Yes | Contract\ \ name |\n| `contract_status` | `STRING` | Yes | Current contract status |\n| `contract_created_date` | `DATE` | Yes |\ \ Contract creation date |\n| `contract_created_month` | `DATE` | Yes | First day of month contract was created |\n| `contract_created_by`\ \ | `STRING` | Yes | Who created the contract |\n| `approval_status` | `STRING` | Yes | Status of this approval step |\n\ | `last_requested_by` | `STRING` | Yes | Who most recently requested approval |\n| `last_approved_by` | `STRING` | Yes\ \ | Who most recently approved |\n| `first_requested_date` | `DATE` | Yes | When approval was first requested |\n| `last_requested_date`\ \ | `DATE` | Yes | Most recent approval request date |\n| `completed_date` | `DATE` | Yes | When approval was completed\ \ |\n| `first_response_time_hours` | `FLOAT64` | Yes | Hours for first approval response |\n| `total_approval_time_hours`\ \ | `FLOAT64` | Yes | Total approval time (including skips) |\n| `total_approval_time_hours_excl_skips` | `FLOAT64` |\ \ Yes | Total approval time (excluding skips) |\n| `approval_instances_count` | `INT64` | Yes | Total approval instances\ \ |\n| `approval_instances_count_excl_skips` | `INT64` | Yes | Approval instances excluding skips |\n| `active_approvals_count`\ \ | `INT64` | Yes | Currently active approval count |\n| `pending_with` | `STRING` | Yes | Who currently holds the approval\ \ |\n| `pending_since_days` | `INT64` | Yes | Days this approval has been pending |\n| `counterparty_name` | `STRING`\ \ | Yes | Counterparty name |\n| `entity_name` | `STRING` | Yes | Company entity |\n| `legal_owner` | `STRING` | Yes |\ \ Legal team owner |\n| `business_owner` | `STRING` | Yes | Business-side owner |\n| `business_owner_teams` | `STRING`\ \ | Yes | Teams of the business owner |\n| `workflow_title_at_creation` | `STRING` | Yes | Workflow used at contract creation\ \ |\n| `current_workflow_title` | `STRING` | Yes | Current workflow name |\n| `workflow_id` | `INT64` | Yes | FK to workflow\ \ |\n\n### Enum values\n\n#### `approval_status`\n\n- `Approved`\n- `Pending`\n- `Skipped`\n- `Rejected`\n\n---\n\n##\ \ `contracts_review`\n\n\n\nReview-request detail — one row per review instance per\ \ contract. Legal workload and review SLA. Time columns in hours (FLOAT64).\n\n### Schema\n\n| Column | Type | Nullable\ \ | Description |\n| --- | --- | --- | --- |\n| `contract_id` | `INT64` | Yes | FK to lifecycle table |\n| `workspace_id`\ \ | `INT64` | Yes | Workspace filter key |\n| `review_id` | `STRING` | Yes | Unique review instance ID |\n| `review_step_name`\ \ | `STRING` | Yes | Name of the review step |\n| `review_instance_number` | `INT64` | Yes | Instance number (1 = first\ \ review on this contract) |\n| `contract_created_date` | `DATE` | Yes | Contract creation date |\n| `contract_type` |\ \ `STRING` | Yes | Contract category |\n| `contract_kind` | `STRING` | Yes | How contract entered the system |\n| `review_assignment_type`\ \ | `STRING` | Yes | Role or User assignment |\n| `review_status` | `STRING` | Yes | Current review status |\n| `workflow_status`\ \ | `STRING` | Yes | Workflow state of the contract |\n| `requested_by` | `STRING` | Yes | Who requested the review |\n\ | `requested_at` | `TIMESTAMP` | Yes | When review was requested |\n| `assigned_at` | `TIMESTAMP` | Yes | When review\ \ was assigned |\n| `started_at` | `TIMESTAMP` | Yes | When reviewer began working |\n| `completed_at` | `TIMESTAMP` |\ \ Yes | When review was marked complete |\n| `first_response_time_hours` | `FLOAT64` | Yes | Hours from request to first\ \ response |\n| `time_since_first_response_hours` | `FLOAT64` | Yes | Hours from first response to completion |\n| `total_review_time_hours`\ \ | `FLOAT64` | Yes | Total review time in hours |\n| `on_hold_time_hours` | `FLOAT64` | Yes | Hours review was on hold\ \ |\n| `assigned_by` | `STRING` | Yes | Who assigned the reviewer |\n| `reviewer_name` | `STRING` | Yes | Legal team member\ \ who reviewed |\n| `reviewer_user_id` | `INT64` | Yes | org_user_id of reviewer |\n| `created_by_user_id` | `INT64` |\ \ Yes | org_user_id of contract creator |\n| `reviewer_team` | `STRING` | Yes | Legal team that handled the review |\n\ | `requested_month` | `DATE` | Yes | First day of month review was requested |\n| `completed_month` | `DATE` | Yes | First\ \ day of month review was completed |\n| `legal_owner` | `STRING` | Yes | Legal team owner |\n| `business_owner` | `STRING`\ \ | Yes | Business-side owner |\n| `entity_name` | `STRING` | Yes | Company entity |\n| `counterparty_name` | `STRING`\ \ | Yes | Counterparty name |\n| `pending_since_days` | `INT64` | Yes | Days review has been pending |\n| `workflow_title_at_creation`\ \ | `STRING` | Yes | Workflow used at contract creation |\n| `current_workflow_title` | `STRING` | Yes | Current workflow\ \ name |\n| `workflow_id` | `INT64` | Yes | FK to workflow |\n\n### Enum values\n\n#### `review_status`\n\n- `Review Completed`\n\ - `Review not yet assigned`\n- `Review in Progress`\n- `Pending`\n\n#### `review_assignment_type`\n\n- `Role`\n- `User`\n\ \n---\n\n## `signatories`\n\n\n\nIndividual signatory records — one row per signatory\ \ per contract. Per-signatory analytics. time_to_sign_hours is in hours (FLOAT64).\n\n### Schema\n\n| Column | Type |\ \ Nullable | Description |\n| --- | --- | --- | --- |\n| `signatory_id` | `INT64` | Yes | Unique signatory record |\n\ | `contract_id` | `INT64` | Yes | FK to lifecycle table |\n| `workspace_id` | `INT64` | Yes | Workspace filter key |\n\ | `user_id` | `INT64` | Yes | FK to internal user (NULL for external signatories) |\n| `signatory_name` | `STRING` | Yes\ \ | Name of the signatory |\n| `signatory_party` | `STRING` | Yes | COUNTER_PARTY or CREATOR_PARTY |\n| `signing_order`\ \ | `INT64` | Yes | Position in signing sequence |\n| `sign_status` | `STRING` | Yes | Current signing status |\n| `created_at`\ \ | `TIMESTAMP` | Yes | When signatory was added |\n| `signing_started_at` | `TIMESTAMP` | Yes | When this signatory's\ \ turn began |\n| `sign_request_sent_at` | `TIMESTAMP` | Yes | When sign request was sent |\n| `signed_at` | `TIMESTAMP`\ \ | Yes | When they signed |\n| `time_to_sign_hours` | `FLOAT64` | Yes | Hours from request sent to signature |\n| `contract_kind`\ \ | `STRING` | Yes | How contract entered the system |\n| `contract_type` | `STRING` | Yes | Contract category |\n| `template_name`\ \ | `STRING` | Yes | Template used |\n| `contract_name` | `STRING` | Yes | Contract name |\n| `contract_created_date`\ \ | `DATE` | Yes | Contract creation date |\n| `execution_date` | `DATE` | Yes | Contract execution date |\n| `counterparty_name`\ \ | `STRING` | Yes | Counterparty name |\n| `legal_owner` | `STRING` | Yes | Legal team owner |\n| `business_owner` |\ \ `STRING` | Yes | Business-side owner |\n| `workflow_status` | `STRING` | Yes | Workflow state |\n| `signature_service`\ \ | `STRING` | Yes | Connected integration name |\n| `workflow_title_at_creation` | `STRING` | Yes | Workflow used at\ \ contract creation |\n| `current_workflow_title` | `STRING` | Yes | Current workflow name |\n| `workflow_id` | `INT64`\ \ | Yes | FK to workflow |\n\n### Enum values\n\n#### `signatory_party`\n\n- `COUNTER_PARTY`\n- `CREATOR_PARTY`\n\n####\ \ `sign_status`\n\n- `Signed`\n- `Pending`\n- `Declined`\n- `Bounced`\n\n#### `signature_service`\n\n- `SpotSign`\n- `DocuSign`\n\ - `AdobeSign`\n- `ZohoSign`\n\n---\n\n## `contract_level_metrics`\n\n\n\nEvent-level\ \ lifecycle tracking — multiple rows per contract. time_spent_seconds is in seconds (INT64); divide by 3600 for hours.\ \ \n\n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | --- |\n| `contract_id` | `INT64` |\ \ Yes | FK to lifecycle table |\n| `workspace_id` | `INT64` | Yes | Workspace filter (maps from created_by_workspace_id)\ \ |\n| `event_id` | `STRING` | Yes | Unique event instance ID |\n| `event_sequence` | `STRING` | Yes | Sequence ordering\ \ of events |\n| `event_category` | `STRING` | Yes | High-level event type |\n| `event_subcategory_1` | `STRING` | Yes\ \ | Event sub-category level 1 |\n| `event_subcategory_2` | `STRING` | Yes | Event sub-category level 2 |\n| `status`\ \ | `STRING` | Yes | Status during this interval |\n| `started_at` | `TIMESTAMP` | Yes | Start of this time interval |\n\ | `ended_at` | `TIMESTAMP` | Yes | End of this interval (historical) |\n| `ended_at_current` | `TIMESTAMP` | Yes | End\ \ of interval (current; may be ongoing) |\n| `time_spent_seconds` | `INT64` | Yes | Time spent in this state, in seconds\ \ |\n| `party_type` | `STRING` | Yes | Internal or External party |\n| `review_filter` | `STRING` | Yes | Review stage\ \ filter flag |\n| `approval_filter` | `STRING` | Yes | Approval stage filter flag |\n| `sign_filter` | `STRING` | Yes\ \ | Sign stage filter flag |\n\n---\n\n## `contract_level_metrics_lc`\n\n\n\ \nLifecycle-focused variant of contract_level_metrics — same structure without review_filter, approval_filter, sign_filter.\ \ time_spent_seconds in seconds.\n\n### Schema\n\n| Column | Type | Nullable | Description |\n| --- | --- | --- | ---\ \ |\n| `contract_id` | `INT64` | Yes | FK to lifecycle table |\n| `workspace_id` | `INT64` | Yes | Workspace filter (maps\ \ from created_by_workspace_id) |\n| `event_id` | `STRING` | Yes | Unique event instance ID |\n| `event_sequence` | `STRING`\ \ | Yes | Sequence ordering of events |\n| `event_category` | `STRING` | Yes | High-level event type |\n| `event_subcategory_1`\ \ | `STRING` | Yes | Event sub-category level 1 |\n| `event_subcategory_2` | `STRING` | Yes | Event sub-category level\ \ 2 |\n| `status` | `STRING` | Yes | Status during this interval |\n| `started_at` | `TIMESTAMP` | Yes | Start of interval\ \ |\n| `ended_at` | `TIMESTAMP` | Yes | End of interval (historical) |\n| `ended_at_current` | `TIMESTAMP` | Yes | End\ \ of interval (current) |\n| `time_spent_seconds` | `INT64` | Yes | Time in state, in seconds |\n| `party_type` | `STRING`\ \ | Yes | Internal or External |\n\n---\n\n## `legal_intake`\n\n\n\nLegal intake requests\ \ — one row per intake item. Legal ops workload and intake SLA.\n\n### Schema\n\n| Column | Type | Nullable | Description\ \ |\n| --- | --- | --- | --- |\n| `intake_id` | `INT64` | Yes | Unique intake item ID |\n| `workspace_id` | `INT64` |\ \ Yes | Workspace filter key |\n| `title` | `STRING` | Yes | Intake request title |\n| `created_at` | `TIMESTAMP` | Yes\ \ | When intake was created |\n| `status` | `STRING` | Yes | Current status |\n| `priority` | `STRING` | Yes | Priority\ \ level |\n| `due_date` | `DATE` | Yes | Target completion date |\n| `completed_at` | `TIMESTAMP` | Yes | When marked\ \ complete |\n| `requested_by` | `STRING` | Yes | Who submitted the intake |\n| `assignee` | `STRING` | Yes | Who is responsible\ \ |\n| `workflow_name` | `STRING` | Yes | Associated workflow, if any |\n| `linked_entity_type` | `STRING` | Yes | Type\ \ of linked entity (e.g. contract) |\n| `linked_entity_id` | `STRING` | Yes | ID of the linked entity |\n| `pending_with`\ \ | `STRING` | Yes | Who the intake is pending with |\n| `completion_time_days` | `FLOAT64` | Yes | Days taken to complete\ \ |\n| `completion_time_hours` | `FLOAT64` | Yes | Hours taken to complete |\n| `pending_since_hours` | `FLOAT64` | Yes\ \ | Hours since intake was last actioned |\n| `pending_since_days` | `FLOAT64` | Yes | Days since intake was last actioned\ \ |\n\n### Enum values\n\n#### `status`\n\n- `Completed`\n- `Pending`\n- `In Progress`\n- `Cancelled`\n\n#### `priority`\n\ \n- `High`\n- `Medium`\n- `Low`\n\n---\n\n## Join map\n\n```\ncontracts.workflow_id ─────────────► workflows_setup.workflow_id\n\ contracts.frozen_workflow_id ───────► workflows_setup.frozen_workflow_id\ncontracts.contract_type_id ─────────► contract_types_setup.contract_type_id\n\ contracts.counterparty_name ────────► counterparties_setup.counterparty_name (join on public name)\nworkflows_setup.frozen_workflow_id\ \ ─► approvals_setup.frozen_workflow_id\nworkflows_setup.workflow_id ────────► signatures_setups.workflow_id\n\ncontract_lifecycle.contract_id\ \ ─────► contract_tat_details.contract_id\ncontract_lifecycle.contract_id ─────► contract_sign.contract_id\ncontract_lifecycle.contract_id\ \ ─────► contract_approvals.contract_id\ncontract_lifecycle.contract_id ─────► contracts_review.contract_id\ncontract_lifecycle.contract_id\ \ ─────► signatories.contract_id\ncontract_lifecycle.contract_id ─────► contract_level_metrics.contract_id\ncontract_lifecycle.contract_id\ \ ─────► contract_level_metrics_lc.contract_id\n```\n\nUse **public** column names in SQL. Table references may use bare\ \ catalog names (e.g. `contracts`); matching is case-insensitive." paths: /api/v2.1/public/analytics/query/: post: operationId: v2.1_public_analytics_query_create description: "Runs **read-only** analytics SQL in **GoogleSQL** (Google Standard SQL), including for timestamps, dates,\ \ and functions. Submit exactly one **`SELECT`** statement (optional **`WITH`** / **`UNION`**). Inserts, updates,\ \ deletes, DDL, and multi-statement batches are rejected.\n\n**Enablement** \nThis capability must be enabled for\ \ your workspace. If it is not, the API returns **501** with code `SD_PUBLIC_00045`. Contact SpotDraft support to\ \ request access.\n\n**Authentication** \nOAuth 2.0 Bearer JWT in the `Authorization` header (same Public API OAuth\ \ flow as other v2.1 endpoints). The authenticated principal must be authorized in the same organizational context\ \ as the token.\n\n**Permission** \n**Insights view** (`INSIGHTS_VIEW`).\n\n**Contracts scoping** \nBy default,\ \ the **`Contracts`** table is limited to rows the authenticated user may access. Optional body field **`user_scoped`**\ \ or header **`X-Spotdraft-Analytics-User-Scoped`** (`true` / `false`, or `1` / `0`, `yes` / `no`) overrides that.\ \ When both are omitted, the default is **`true`** in this environment. **`user_scoped: false`** (or the header equivalent)\ \ allows workspace-wide contract rows only for users with the workspace **Admin** role; others receive **403** with\ \ `SD_PUBLIC_00044`.\n\n**Tables and columns** \nUse **bare catalog table names** (e.g. `Contracts`, `Users`) and\ \ **snake_case** public column names from the table catalog (e.g. `execution_time`, `workflow_id`). Only allowlisted\ \ tables and columns are accepted.\n\n**Allowlisted tables (quick reference)** \n\n| Table in SQL | Role |\n|---|---|\n\ | `Contracts` | Core contract fact table |\n| `Users` | Users / org users |\n| `Workflows_setup` | Workflow definitions\ \ (incl. frozen versions) |\n| `Contract_types_setup` | Contract type lookup |\n| `Counterparties_setup` | Counterparty\ \ directory |\n| `Approvals_Setup` | Approval steps in workflows |\n| `Entities_setup` | Legal entities |\n| `Signatures_setups`\ \ | Signatory configuration per workflow |\n\nFor full column lists, types, and join guidance, see **[SpotDraft public\ \ analytics table catalog](#analytics-query-table-catalog)** (also under **External documentation**).\n\n**Limits\ \ (this deployment)** \n- At most **5,000** rows per response; `truncated` is **true** when more rows would have\ \ matched. \n- Query job timeout: **60 seconds**. \n- Maximum bytes billed per query job: **500 MB** (500,000,000\ \ bytes). \n- SQL text length limit: **10,000** characters per request. \n\n**Errors** \n\n| Code | HTTP | Meaning\ \ |\n|---|---:|---|\n| `SD_PUBLIC_00040` | 400 | Not an allowed read-only SELECT, or more than one statement |\n|\ \ `SD_PUBLIC_00041` | 400 | References a table outside the allowlisted catalog |\n| `SD_PUBLIC_00042` | 400 | Query\ \ could not be parsed or transpiled safely |\n| `SD_PUBLIC_00043` | 502 | Query execution failed |\n| `SD_PUBLIC_00044`\ \ | 403 | Workspace-wide contracts requested without workspace Admin role |\n| `SD_PUBLIC_00045` | 501 | Analytics\ \ query API not enabled for this workspace |\n" summary: Execute Read-only Analytics SQL (GoogleSQL) externalDocs: description: Analytics table catalog (columns, types, joins). url: '#analytics-query-table-catalog' tags: - V2.1 Analytics Query requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicAnalyticsQueryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicAnalyticsQueryRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicAnalyticsQueryRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicAnalyticsQueryResponse' description: Query result '501': description: Feature flag not enabled x-tagGroup: Platform /api/v2.1/public/auth/roles/: get: operationId: v2.1_public_auth_roles_retrieve description: Returns the Roles that exist for the workspace whose credentials are used. summary: Get Active Roles tags: - V2.1 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalUserActiveRolesResponseList' examples: Example1: value: active_roles: - id: 1 name: Legal Team description: The in-house legal team responsible for TPP Reviews. - id: 2 name: NA Sales description: The North America Sales Team - id: 3 name: APAC Sales description: The Asia Pacific Sales Team (ex Japan) summary: Example 1 description: Success x-tagGroup: Platform /api/v2.1/public/auth/roles/{role_id}/members: post: operationId: v2.1_public_auth_roles_members_create description: ' Adds one or more users to the specified role within the current workspace. Use this when role membership is managed separately from user invitation. ' summary: Add Role Member parameters: - in: path name: role_id schema: type: integer description: Use the [Get Active Roles](#tag/v21-users/GET/api/v2.1/public/auth/roles/) API to get the role ID. required: true tags: - V2.1 Users requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' examples: Example1: value: user_ids_to_add: - 4567 - 2345 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicRoleMemberAddResponse' examples: Example1: value: - id: 6545 email: barack@obama.com name: Barack Obama designation: President summary: Example 1 description: Add Role Member x-tagGroup: Platform delete: operationId: v2.1_public_auth_roles_members_destroy description: ' Removes one or more users from the specified role within the current workspace. The role itself is not deleted. ' summary: Delete Role Member parameters: - in: path name: role_id schema: type: integer description: Use the [Get Active Roles](#tag/v21-users/GET/api/v2.1/public/auth/roles/) API to get the role ID. required: true tags: - V2.1 Users security: - ClientId: [] ClientSecret: [] responses: '204': description: Delete Role Member x-tagGroup: Platform /api/v2.1/public/auth/users/: get: operationId: v2.1_public_auth_users_retrieve description: ' Lists organization users together with their assigned roles. Use `page`, `limit`, `user_email`, and `user_name` to page through results or narrow the list. ' summary: Get User List parameters: - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. - in: query name: user_email schema: type: string description: User email address for which that user list should be filtered. Please make sure that the value is url encoded. So for example, if the email address is `abc+123@xyz.com` the value passed should be `abc%2B123%40xyz.com`. - in: query name: user_name schema: type: string description: Filter users whose full name starts with the provided value. The comparison is case-insensitive and uses the format 'first name + last name'. tags: - V2.1 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicUserWithRolesMinimalListResponse' examples: Example1: value: total_results: 2 page: 1 limit: 10 results: - id: 100 first_name: Sonia last_name: Sotomayor email: sonia_sotomayor@notreally.supremecourt.gov designation: Lawyer is_active: true roles: - id: 456 name: Legal description: Legal team - id: 101 first_name: Elena last_name: Kagan email: elena_kagan@notreally.supremecourt.gov designation: Lead Lawyer is_active: true roles: - id: 123 name: Admin description: Admin team - id: 456 name: Legal description: Legal team summary: Example 1 description: User List x-tagGroup: Platform post: operationId: v2.1_public_auth_users_create description: ' Invites a new user into the organization and assigns the requested roles in one call. Use this when onboarding workspace users from your own admin surface. ' summary: Create and Invite User tags: - V2.1 Users requestBody: content: application/json: schema: $ref: '#/components/schemas/InviteUserAndAssignRolesPublicRequest' examples: Example1: value: first_name: Avery last_name: Stone designation: Legal Counsel email: avery.stone@example.com role_ids: - 12 - 18 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/InviteUserAndAssignRolesPublicRequest' multipart/form-data: schema: $ref: '#/components/schemas/InviteUserAndAssignRolesPublicRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationUserInvitePublicApiResponse' description: User created and invited successfully x-tagGroup: Platform /api/v2.1/public/clickwrap/{clickwrap_id}/agreements/preview/: post: operationId: v2.1_public_clickwrap_agreements_preview_create description: 'Generates an HTML preview of a clickwrap agreement for the given clickwrap. Exposed on the **public** API so custom scripts can run under the clickwrap/CSP domain instead of the main app domain.' summary: Preview Clickwrap Agreement parameters: - in: path name: clickwrap_id schema: type: integer description: Numeric id of the clickwrap. required: true tags: - V2.1 Clickwrap requestBody: content: application/json: schema: $ref: '#/components/schemas/ClickwrapAgreementPreviewRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ClickwrapAgreementPreviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/ClickwrapAgreementPreviewRequest' required: true security: - {} responses: '200': content: application/json: schema: type: string description: Rendered HTML preview (`text/html`). x-tagGroup: Clickwrap /api/v2.1/public/clickwrap/{clickwrap_public_id}/: get: operationId: v2.1_public_clickwrap_retrieve description: Returns the clickwrap corresponding to the clickwrap public id summary: Get Clickwrap parameters: - in: path name: clickwrap_public_id schema: type: string format: uuid description: Public Id of Clickwrap required: true tags: - V2.1 Clickwrap security: - ClickwrapId: [] Origin: [] - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/ClickwrapPublicGetAPIResponse' description: Success '404': content: application/json: schema: type: object properties: detail: type: string description: Clickwrap agreement not found description: Not Found x-tagGroup: Clickwrap /api/v2.1/public/clickwrap/{clickwrap_public_id}/consent_status/: post: operationId: v2.1_public_clickwrap_consent_status_create description: "\nUsed to know if a particular user has given consent to a specific clickwrap.\n\nReturns one of the following\ \ values as consent status for the user.\n\n \n \n \n \n \n \n \n \ \ \n \n \n \ \ \n \n \n \n \n \n \n \n
Status field value\n \ \ Details\n
NOT_ACCEPTEDWhen the user hasn’t accepted this clickwrap before.
ACCEPTED_OLDER_VERSIONWhen the user has accepted the clickwrap, but a new published\ \ version exists.
ACCEPTED_LATEST_VERSIONWhen\ \ the user has accepted the latest published version of the clickwrap.
\n" summary: Get Consent Status parameters: - in: path name: clickwrap_public_id schema: type: string format: uuid description: Public Id of Clickwrap required: true tags: - V2.1 Clickwrap requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicGetClickwrapConsentStatusRequestData' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicGetClickwrapConsentStatusRequestData' multipart/form-data: schema: $ref: '#/components/schemas/PublicGetClickwrapConsentStatusRequestData' required: true security: - ClientId: [] ClientSecret: [] - ClickwrapId: [] Origin: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicClickwrapConsentStatusResponse' description: Success x-tagGroup: Clickwrap /api/v2.1/public/clickwrap/{clickwrap_public_id}/execute/: post: operationId: v2.1_public_clickwrap_execute_create description: Creates the clickwrap contract summary: Create Clickwrap Contract parameters: - in: path name: clickwrap_public_id schema: type: string format: uuid description: Public Id of Clickwrap required: true tags: - V2.1 Clickwrap requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateClickwrapContractRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateClickwrapContractRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateClickwrapContractRequest' required: true security: - ClickwrapId: [] Origin: [] - {} responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractMinimalResponseV2' description: Created x-tagGroup: Clickwrap /api/v2.1/public/contract_types/: get: operationId: v2.1_public_contract_types_retrieve description: Returns the contract types available to the authenticated workspace. Use these ids when creating contracts, uploading third-party paper, or querying intake-form requirements. summary: Get Contract Type List tags: - V2.1 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractTypeListDomainModel' examples: Example1: value: - id: 100 name: General summary: Example 1 description: Contract Type List x-tagGroup: Workflow /api/v2.1/public/contract_types/{contract_type_id}/access_control: post: operationId: v2.1_public_contract_types_access_control_create description: Returns the contract-type access rules for the requested permission filters. Use this to understand which users and roles receive access automatically for contracts created from this contract type. summary: Get Access Control List for Contract Type parameters: - in: path name: contract_type_id schema: type: integer description: ID of the Contract Type. required: true tags: - V2.1 Contract Types requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractTypeAccessControlListAPIRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractTypeAccessControlListAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractTypeAccessControlListAPIRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractTypeAccessControlListAPIResponse' description: List Contract Type access control list x-tagGroup: Workflow /api/v2.1/public/contract_types/{contract_type_id}/entities: get: operationId: v2.1_public_contract_types_entities_retrieve description: Returns the organization entities that can be used with this contract type. Use these ids when the workflow requires a creator-side legal entity. summary: List Contract Type Entities parameters: - in: path name: contract_type_id schema: type: integer description: ID of the Contract Type. required: true tags: - V2.1 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractTypeEntityListResponse' description: List Contract Type Entities x-tagGroup: Workflow /api/v2.1/public/contract_types/{contract_type_id}/intake_form/questionnaire/: get: operationId: v2.1_public_contract_types_intake_form_questionnaire_retrieve description: Returns the intake-form questions configured for the contract type. Use the response to build a valid questionnaire payload before you create or upload a contract for this workflow. summary: Get Intake Form Questionnaire Details parameters: - in: path name: contract_type_id schema: type: integer description: ID of the Contract Type. required: true tags: - V2.1 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/IntakeFormQuestionnairePublicResponse' examples: Example1: value: display_label: Always she crime daughter task positive employee. Already mission popular ahead civil term. variable: Always she crime daughter task positive employee. Already mission popular ahead civil term. type: enum parent_type: dropdown options: - label: test option 1 value: test option 1 - label: test option 2 value: test option 2 - label: test option 3 value: test option 3 required: false default_value: null question: 'Today down gas marriage kid. South think reality always. Management effort ground machine reality when impact. Accept anyone picture him air.' attributes: null summary: Example 1 description: Intake Form Questionnaire Details x-tagGroup: Workflow /api/v2.1/public/contracts/: get: operationId: v2.1_public_contracts_retrieve description: 'Returns contracts visible to the current workspace. Use pagination, filter, and sort parameters to narrow the result set. Where supported by the version, contract metadata filters are also available.' summary: List Contracts parameters: - in: query name: filter__approvals_pending schema: type: string description: Filter by approvals pending (exact match). Equivalent to filter__approvals_pending[$eq]=value. - in: query name: filter__approvals_pending[$eq] schema: type: string description: Filter by approvals pending using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__approvals_pending[$in] schema: type: string description: Filter by approvals pending using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__approvals_pending[$ne] schema: type: string description: Filter by approvals pending using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__assigned_to schema: type: integer description: Filter by assigned to (exact match). Equivalent to filter__assigned_to[$eq]=value. - in: query name: filter__assigned_to[$eq] schema: type: string description: Filter by assigned to using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__assigned_to[$gt] schema: type: string description: Filter by assigned to using $gt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__assigned_to[$gte] schema: type: string description: Filter by assigned to using $gte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__assigned_to[$in] schema: type: string description: Filter by assigned to using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__assigned_to[$lt] schema: type: string description: Filter by assigned to using $lt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__assigned_to[$lte] schema: type: string description: Filter by assigned to using $lte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__assigned_to[$ne] schema: type: string description: Filter by assigned to using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__business_user_id schema: type: integer description: Filter by business user id (exact match). Equivalent to filter__business_user_id[$eq]=value. - in: query name: filter__business_user_id[$eq] schema: type: string description: Filter by business user id using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__business_user_id[$gt] schema: type: string description: Filter by business user id using $gt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__business_user_id[$gte] schema: type: string description: Filter by business user id using $gte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__business_user_id[$in] schema: type: string description: Filter by business user id using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__business_user_id[$lt] schema: type: string description: Filter by business user id using $lt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__business_user_id[$lte] schema: type: string description: Filter by business user id using $lte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__business_user_id[$ne] schema: type: string description: Filter by business user id using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__client_brand_name schema: type: string description: Filter by client brand name (exact match). Equivalent to filter__client_brand_name[$eq]=value. - in: query name: filter__client_brand_name[$eq] schema: type: string description: Filter by client brand name using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__client_brand_name[$in] schema: type: string description: Filter by client brand name using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__client_brand_name[$ne] schema: type: string description: Filter by client brand name using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__client_email schema: type: string description: Filter by client email (exact match). Equivalent to filter__client_email[$eq]=value. - in: query name: filter__client_email[$eq] schema: type: string description: Filter by client email using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__client_email[$in] schema: type: string description: Filter by client email using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__client_email[$ne] schema: type: string description: Filter by client email using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__client_email_address schema: type: string description: Filter by client email address (exact match). Equivalent to filter__client_email_address[$eq]=value. - in: query name: filter__client_email_address[$eq] schema: type: string description: Filter by client email address using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__client_email_address[$in] schema: type: string description: Filter by client email address using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__client_email_address[$ne] schema: type: string description: Filter by client email address using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__client_name schema: type: string description: Filter by client name (exact match). Equivalent to filter__client_name[$eq]=value. - in: query name: filter__client_name[$eq] schema: type: string description: Filter by client name using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__client_name[$in] schema: type: string description: Filter by client name using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__client_name[$ne] schema: type: string description: Filter by client name using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_id schema: type: string description: Filter by contract id (exact match). Equivalent to filter__contract_id[$eq]=value. - in: query name: filter__contract_id[$eq] schema: type: string description: Filter by contract id using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_id[$in] schema: type: string description: Filter by contract id using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_id[$ne] schema: type: string description: Filter by contract id using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_kind schema: type: string description: Filter by contract kind (exact match). Equivalent to filter__contract_kind[$eq]=value. - in: query name: filter__contract_kind[$eq] schema: type: string description: Filter by contract kind using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_kind[$in] schema: type: string description: Filter by contract kind using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_kind[$ne] schema: type: string description: Filter by contract kind using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_packet_name schema: type: string description: Filter by contract packet name (exact match). Equivalent to filter__contract_packet_name[$eq]=value. - in: query name: filter__contract_packet_name[$eq] schema: type: string description: Filter by contract packet name using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_packet_name[$in] schema: type: string description: Filter by contract packet name using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_packet_name[$ne] schema: type: string description: Filter by contract packet name using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_reference_id schema: type: string description: Filter by contract reference id (exact match). Equivalent to filter__contract_reference_id[$eq]=value. - in: query name: filter__contract_reference_id[$eq] schema: type: string description: Filter by contract reference id using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_reference_id[$in] schema: type: string description: Filter by contract reference id using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_reference_id[$ne] schema: type: string description: Filter by contract reference id using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_type_id schema: type: integer description: Filter by contract type id (exact match). Equivalent to filter__contract_type_id[$eq]=value. - in: query name: filter__contract_type_id[$eq] schema: type: string description: Filter by contract type id using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_type_id[$gt] schema: type: string description: Filter by contract type id using $gt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__contract_type_id[$gte] schema: type: string description: Filter by contract type id using $gte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__contract_type_id[$in] schema: type: string description: Filter by contract type id using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_type_id[$lt] schema: type: string description: Filter by contract type id using $lt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__contract_type_id[$lte] schema: type: string description: Filter by contract type id using $lte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__contract_type_id[$ne] schema: type: string description: Filter by contract type id using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__contract_type_name schema: type: string description: Filter by contract type name (exact match). Equivalent to filter__contract_type_name[$eq]=value. - in: query name: filter__contract_type_name[$eq] schema: type: string description: Filter by contract type name using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__contract_type_name[$in] schema: type: string description: Filter by contract type name using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__contract_type_name[$ne] schema: type: string description: Filter by contract type name using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__created_at schema: type: string format: date-time description: Filter by created at (exact match). Equivalent to filter__created_at[$eq]=value. - in: query name: filter__created_at[$eq] schema: type: string format: date-time description: Filter by created at using $eq operator. Expects a single value for equality (e.g., date-time). - in: query name: filter__created_at[$gt] schema: type: string format: date-time description: Filter by created at using $gt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__created_at[$gte] schema: type: string format: date-time description: Filter by created at using $gte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__created_at[$in] schema: type: string format: date-time description: Filter by created at using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__created_at[$lt] schema: type: string format: date-time description: Filter by created at using $lt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__created_at[$lte] schema: type: string format: date-time description: Filter by created at using $lte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__created_at[$ne] schema: type: string format: date-time description: Filter by created at using $ne operator. Expects a single value for not-equal comparison (e.g., date-time). - in: query name: filter__display_status schema: type: string enum: - DRAFT - EXECUTED - ON_HOLD - REDLINING - SIGN - VOIDED description: 'Filter by display status (exact match). Equivalent to filter__display_status[$eq]=value. Allowed values: DRAFT, REDLINING, SIGN, EXECUTED, ON_HOLD, VOIDED.' - in: query name: filter__display_status[$eq] schema: type: string enum: - DRAFT - EXECUTED - ON_HOLD - REDLINING - SIGN - VOIDED description: 'Filter by display status using $eq operator. Expects a single value for equality (e.g., string). Allowed values: DRAFT, REDLINING, SIGN, EXECUTED, ON_HOLD, VOIDED.' - in: query name: filter__display_status[$in] schema: type: string enum: - DRAFT - EXECUTED - ON_HOLD - REDLINING - SIGN - VOIDED description: 'Filter by display status using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. Allowed values: DRAFT, REDLINING, SIGN, EXECUTED, ON_HOLD, VOIDED.' - in: query name: filter__display_status[$ne] schema: type: string enum: - DRAFT - EXECUTED - ON_HOLD - REDLINING - SIGN - VOIDED description: 'Filter by display status using $ne operator. Expects a single value for not-equal comparison (e.g., string). Allowed values: DRAFT, REDLINING, SIGN, EXECUTED, ON_HOLD, VOIDED.' - in: query name: filter__entity_name schema: type: string description: Filter by entity name (exact match). Equivalent to filter__entity_name[$eq]=value. - in: query name: filter__entity_name[$eq] schema: type: string description: Filter by entity name using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__entity_name[$in] schema: type: string description: Filter by entity name using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__entity_name[$ne] schema: type: string description: Filter by entity name using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__execution_date schema: type: string format: date-time description: Filter by execution date (exact match). Equivalent to filter__execution_date[$eq]=value. - in: query name: filter__execution_date[$eq] schema: type: string format: date-time description: Filter by execution date using $eq operator. Expects a single value for equality (e.g., date-time). - in: query name: filter__execution_date[$gt] schema: type: string format: date-time description: Filter by execution date using $gt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__execution_date[$gte] schema: type: string format: date-time description: Filter by execution date using $gte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__execution_date[$in] schema: type: string format: date-time description: Filter by execution date using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__execution_date[$lt] schema: type: string format: date-time description: Filter by execution date using $lt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__execution_date[$lte] schema: type: string format: date-time description: Filter by execution date using $lte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__execution_date[$ne] schema: type: string format: date-time description: Filter by execution date using $ne operator. Expects a single value for not-equal comparison (e.g., date-time). - in: query name: filter__expiring_at schema: type: string format: date-time description: Filter by expiring at (exact match). Equivalent to filter__expiring_at[$eq]=value. - in: query name: filter__expiring_at[$eq] schema: type: string format: date-time description: Filter by expiring at using $eq operator. Expects a single value for equality (e.g., date-time). - in: query name: filter__expiring_at[$gt] schema: type: string format: date-time description: Filter by expiring at using $gt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__expiring_at[$gte] schema: type: string format: date-time description: Filter by expiring at using $gte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__expiring_at[$in] schema: type: string format: date-time description: Filter by expiring at using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__expiring_at[$lt] schema: type: string format: date-time description: Filter by expiring at using $lt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__expiring_at[$lte] schema: type: string format: date-time description: Filter by expiring at using $lte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__expiring_at[$ne] schema: type: string format: date-time description: Filter by expiring at using $ne operator. Expects a single value for not-equal comparison (e.g., date-time). - in: query name: filter__last_updated_on schema: type: string format: date-time description: Filter by last updated on (exact match). Equivalent to filter__last_updated_on[$eq]=value. - in: query name: filter__last_updated_on[$eq] schema: type: string format: date-time description: Filter by last updated on using $eq operator. Expects a single value for equality (e.g., date-time). - in: query name: filter__last_updated_on[$gt] schema: type: string format: date-time description: Filter by last updated on using $gt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__last_updated_on[$gte] schema: type: string format: date-time description: Filter by last updated on using $gte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__last_updated_on[$in] schema: type: string format: date-time description: Filter by last updated on using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__last_updated_on[$lt] schema: type: string format: date-time description: Filter by last updated on using $lt operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__last_updated_on[$lte] schema: type: string format: date-time description: Filter by last updated on using $lte operator. Expects a single value (e.g., number or ISO date-time). - in: query name: filter__last_updated_on[$ne] schema: type: string format: date-time description: Filter by last updated on using $ne operator. Expects a single value for not-equal comparison (e.g., date-time). - in: query name: filter__legal_user_id schema: type: integer description: Filter by legal user id (exact match). Equivalent to filter__legal_user_id[$eq]=value. - in: query name: filter__legal_user_id[$eq] schema: type: string description: Filter by legal user id using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__legal_user_id[$gt] schema: type: string description: Filter by legal user id using $gt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__legal_user_id[$gte] schema: type: string description: Filter by legal user id using $gte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__legal_user_id[$in] schema: type: string description: Filter by legal user id using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__legal_user_id[$lt] schema: type: string description: Filter by legal user id using $lt operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__legal_user_id[$lte] schema: type: string description: Filter by legal user id using $lte operator. Expects a single value (e.g., number or ISO string). - in: query name: filter__legal_user_id[$ne] schema: type: string description: Filter by legal user id using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__pending_with schema: type: string description: Filter by pending with (exact match). Equivalent to filter__pending_with[$eq]=value. - in: query name: filter__pending_with[$eq] schema: type: string description: Filter by pending with using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__pending_with[$in] schema: type: string description: Filter by pending with using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__pending_with[$ne] schema: type: string description: Filter by pending with using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__signatories schema: type: string description: Filter by signatories (exact match). Equivalent to filter__signatories[$eq]=value. - in: query name: filter__signatories[$eq] schema: type: string description: Filter by signatories using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__signatories[$in] schema: type: string description: Filter by signatories using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__signatories[$ne] schema: type: string description: Filter by signatories using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__signatures_completed_by schema: type: string description: Filter by signatures completed by (exact match). Equivalent to filter__signatures_completed_by[$eq]=value. - in: query name: filter__signatures_completed_by[$eq] schema: type: string description: Filter by signatures completed by using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__signatures_completed_by[$in] schema: type: string description: Filter by signatures completed by using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__signatures_completed_by[$ne] schema: type: string description: Filter by signatures completed by using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__signatures_pending_on schema: type: string description: Filter by signatures pending on (exact match). Equivalent to filter__signatures_pending_on[$eq]=value. - in: query name: filter__signatures_pending_on[$eq] schema: type: string description: Filter by signatures pending on using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__signatures_pending_on[$in] schema: type: string description: Filter by signatures pending on using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__signatures_pending_on[$ne] schema: type: string description: Filter by signatures pending on using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__signatures_rejected_by schema: type: string description: Filter by signatures rejected by (exact match). Equivalent to filter__signatures_rejected_by[$eq]=value. - in: query name: filter__signatures_rejected_by[$eq] schema: type: string description: Filter by signatures rejected by using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__signatures_rejected_by[$in] schema: type: string description: Filter by signatures rejected by using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__signatures_rejected_by[$ne] schema: type: string description: Filter by signatures rejected by using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: filter__tags schema: type: string description: Filter by tags (exact match). Equivalent to filter__tags[$eq]=value. - in: query name: filter__tags[$eq] schema: type: string description: Filter by tags using $eq operator. Expects a single value for equality (e.g., string). - in: query name: filter__tags[$in] schema: type: string description: Filter by tags using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. - in: query name: filter__tags[$ne] schema: type: string description: Filter by tags using $ne operator. Expects a single value for not-equal comparison (e.g., string). - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. - in: query name: query schema: type: string description: Query to filter the contracts. Searches on the contract name, entity name, party name, and party email. tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractListResponseV2' examples: Example: value: total_results: 2 page: 1 limit: 10 results: - id: 1234 created: '2021-05-20T04:52:04Z' created_by: Acme contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-1234 created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 - id: 4322 created: '2021-05-10T04:42:00Z' created_by: Apple contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-4322 created_by_user_name: Sonia Sotomayor created_by_user_email: sonia@apple.com created_by_workspace: 1 description: Contract List x-tagGroup: Contracts post: operationId: v2.1_public_contracts_create description: "Creates a new contract from a SpotDraft template and returns the created contract.\n\nProvide the template\ \ id, contract data, and counterparty details needed to render the agreement. Use this endpoint when you want SpotDraft\ \ to generate the contract from structured data.\n\nCreates a new contract from a SpotDraft template and returns the\ \ created contract.\n\nProvide contract data, counterparty details, and any required signatories for the workflow.\n\ \n\nIn signatories list, sign_order should be set for either all items or no items of the list. Additionally when\n\ sign_order is set for all items of signatories list then at-least one counter party signatory user should also be\ \ part\nof the list.\n\nThe `contract_data` object must use **template field names as keys**. Each value should match\ \ the data type configured for that field in SpotDraft.\n\n| Field type | Expected value | Example |\n| ----------\ \ | -------------- | ------- |\n| String / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line\ \ breaks if needed | `\"Not applicable\\nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14`\ \ |\n| Boolean / checkbox | Boolean | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601\ \ timestamp | `\"2026-09-15T10:30:00Z\"` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select\ \ | Array of selected option values | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\"\ : number }` | `{ \"type\": \"USD\", \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\\ |YEARS\", \"value\": int }` | `{ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address\ \ fields | `{ \"line_one\": \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating\ \ group | Array of row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\":\ \ 5000}}]` |\n| File / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\"\ : \"security-schedule.pdf\", \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \ \ \"agreement_date\": \"2026-03-28\",\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"\ Acme Inc.\",\n \"billing_currency\": {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\":\ \ \"MONTHS\", \"value\": 12, \"days\": 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\"\ : [\"US\", \"IN\"],\n \"billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\"\ ,\n \"state\": \"NY\",\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\"\ : [\n {\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\"\ : \"Annual subscription\", \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\"\ : \"security-schedule.pdf\", \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Create Contract parameters: - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractSerializerV2_1' examples: CreateContractRequest: value: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' renewal_review_at: '2026-09-15T10:30:00Z' customer_name: Acme Inc. billing_currency: type: USD value: 12000 subscription_term: type: MONTHS value: 12 days: 365 auto_renewal: true notice_period_days: 30 service_countries: - US - IN billing_address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' pricing_schedule: - milestone: Implementation amount: type: USD value: 5000 - milestone: Annual subscription amount: type: USD value: 7000 msa_attachment: file_name: security-schedule.pdf content_type: application/pdf counter_party_details: - is_individual: false organization_type: company organization_name: Acme Inc. poc_details: first_name: Avery last_name: Stone email: legal@acme.example organization_details: jurisdiction_iso_code: US address: line_one: 350 Fifth Avenue city: New York state: NY country_iso_code: US zipcode: '10118' external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example contract_name: Acme Master Services Agreement summary: Create contract request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContractSerializerV2_1' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContractSerializerV2_1' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractResponse' description: '' x-tagGroup: Contracts /api/v2.1/public/contracts/approvals/{contract_id}/: get: operationId: v2.1_public_contracts_approvals_retrieve description: Returns the approval steps currently configured or in progress for the contract. Use this to show approval status, approvers, and progression before taking contract actions that depend on approvals. summary: Get Contract Approvals parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract Approvals security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicContractApprovalListResponse' description: Success x-tagGroup: Contracts post: operationId: v2.1_public_contracts_approvals_create description: ' Create and send ad-hoc approvals for a contract. Notes: - This endpoint supports contracts on Approval V4. - Contracts configured for Approval V5 can fail with `SD_CONTRACT_APPROVALS_00001`. - The request can fail when another approval group is already in progress (`SD_CONTRACTS_00152`). ' summary: Create and Send Adhoc Approvals parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract Approvals requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' examples: Example1: value: approvals: - name: Legal Approval approver_user_id: 10324 notes: Please take a look need your approval. order: 1 - name: Finance team Approval approver_role_id: 60414 notes: Hi team need your approval on this contract. order: 2 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalApprovalListResponse' examples: Example1: value: - id: 1001 contract_id: 211270 name: Legal Approval approver_user_id: 10324 approver_role_id: null is_sent: true notes: Please take a look need your approval. order: 1 - id: 1002 contract_id: 211270 name: Finance team Approval approver_user_id: null approver_role_id: 60414 is_sent: true notes: Hi team need your approval on this contract. order: 2 summary: Example 1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Forbidden '404': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Not Found x-tagGroup: Contracts /api/v2.1/public/contracts/by_external_metadata/{external_metadata_id}: get: operationId: v2.1_public_contracts_by_external_metadata_retrieve description: 'Returns up to 50 contracts linked to the supplied external metadata id. Use this when you have an external system record id and need to find the related SpotDraft contracts.' summary: List Contracts by External Metadata ID parameters: - in: path name: external_metadata_id schema: type: string description: External Metadata ID of the Contract. This can be used to search for contracts based on an ID specified when creating the contract using the external API. required: true tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalContractV3' examples: Example: value: - - id: 1234 created: '2021-05-20T04:52:04Z' created_by: Acme contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-1234 created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 - id: 4322 created: '2021-05-10T04:42:00Z' created_by: Apple contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-4322 created_by_user_name: Sonia Sotomayor created_by_user_email: sonia@apple.com created_by_workspace: 1 description: Contract List x-tagGroup: Contracts /api/v2.1/public/contracts/embedded/contracts/{contract_id}/counter_party/: get: operationId: v2.1_public_contracts_embedded_contracts_counter_party_retrieve description: ' Returns a short-lived embedded signing URL for the specified counterparty email on the contract. Use this to render the counterparty signing experience inside your own product. ' summary: Get Counterparty Embedded URL parameters: - in: path name: contract_id schema: type: string pattern: ^[0-9]+$ required: true - in: query name: cp_email_id schema: type: string description: Email address of the CP for which the url needs to be returned. tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyEmbeddedUrlResponse' description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/executed_contracts/: post: operationId: v2.1_public_contracts_executed_contracts_create description: "\n This API can be used to upload existing executed contracts to SpotDraft.\n `contract_name` is\ \ treated as a caller-provided display name and is not inferred from the file content.\n Counterparty names in\ \ `counterparty_details` are also caller-provided values used for display/association.\n" summary: Upload Executed Contract API tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateExecutedContractAPIRequest' examples: Example1: value: contract_name: Acme Corporation NDA file_name: Acme_nda.pdf file_content: base64 encoded string of the file content contract_type_id: 103 organization_entity_id: 78 external_metadata: {} counterparty_details: - is_individual: true organization_type: Private Limited organization_name: Acme Corporation organization_details: {} poc_details: first_name: Mike last_name: Reed email: Mike_reed@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateExecutedContractAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateExecutedContractAPIRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractResponseV2' examples: Example1: value: id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/preview/: post: operationId: v2.1_public_contracts_preview_create description: "Generates a preview PDF using the supplied contract data without creating or updating a contract.\n\n\ Use this to validate how template variables render before you create the actual contract.\n\n\nThe `contract_data`\ \ object must use **template field names as keys**. Each value should match the data type configured for that field\ \ in SpotDraft.\n\n| Field type | Expected value | Example |\n| ---------- | -------------- | ------- |\n| String\ \ / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line breaks if needed | `\"Not applicable\\\ nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14` |\n| Boolean / checkbox | Boolean\ \ | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601 timestamp | `\"2026-09-15T10:30:00Z\"\ ` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select | Array of selected option values\ \ | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\": number }` | `{ \"type\": \"USD\"\ , \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\|YEARS\", \"value\": int }` | `{\ \ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address fields | `{ \"line_one\"\ : \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating group | Array of\ \ row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}}]` |\n| File\ \ / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \"agreement_date\": \"2026-03-28\"\ ,\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"Acme Inc.\",\n \"billing_currency\"\ : {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\": \"MONTHS\", \"value\": 12, \"days\"\ : 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\": [\"US\", \"IN\"],\n \"\ billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\",\n \"state\": \"NY\"\ ,\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\": [\n {\"milestone\"\ : \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\": \"Annual subscription\"\ , \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Generate Contract Preview tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' examples: PreviewRequest: value: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' customer_name: Acme Inc. subscription_term: type: MONTHS value: 12 days: 365 billing_currency: type: USD value: 12000 counter_party_details: - name: Acme Inc. email: legal@acme.example summary: Preview request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: string format: binary description: Preview PDF File x-tagGroup: Contracts /api/v2.1/public/contracts/upload_review_contracts/: post: operationId: v2.1_public_contracts_upload_review_contracts_create description: "\nThis API endpoint supports uploading Third-Party Paper (TPP) contracts and optionally allows for a review\ \ request.\n\n`contract_type_id` must be linked to a published Third-Party Paper upload workflow.\nIf this linkage\ \ is missing, the API can fail with `SD_CONTRACTS_00289`.\n\nIt accepts intake form data.\n\nThe Intake Form Data\ \ should have the following data types with the following output:\n\n \n \n \n\ \ \n \n \n \n\n \n \n\ \ \n \n\ \ \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \ \ \n \n\n
TypeData FormatSample
Duration\n {\"days\": int, \"type\": DurationKind, \"value\": int}
\n `DurationKind`:\ \ `DAYS` or `MONTHS` or `YEARS`\n
{\"days\": 180, \"type\": \"MONTHS\", \"value\": 6}
Date\n String formatted date in form YYYY-MM-dd\n\ \ \"2019-11-29\"
Dropdown\n \ \ Value as returned in options. Can be string or number.\n \"1\"
String\n A string value.\n \"Something\"\
Currency\n {\"type\": CurrencyCode, \"value\"\ : float}
\n Where currencyCode: \"INR\", \"USD\", \"SGD\", \"EUR\"\n
{\"\ type\": \"INR\", \"value\": 15000.00}
Check-box\n \ \ A boolean value\n true
text-box\n\ \ A string value. Can be multi-line\n \"Not Applicable\\nBecause...\"
number\n A numeric value. Can be int or float\n 4 or 3.14
\n\n\n### Sample Intake Form Data:\n\ ```\n{\n \"term\": {\"days\": 180, \"type\": \"MONTHS\", \"value\": 6},\n \"notes\": \"Not Applicable\",\n \ \ \"capacity\": 15,\n \"setup_fee\": {\"type\": \"INR\", \"value\": 30000.00},\n \"start_date\": \"2019-11-29\"\ ,\n \"yes_discounts\": false,\n \"payment_method\": \"1\",\n \"suggestions\": \"No suggestions\"\n}\n```\n" summary: Upload Contract for Review tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' examples: UploadForReviewRequest: value: contract_name: Acme Vendor Paper contract_type_id: 1 file_name: vendor-paper.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example reviewer: org_user_email: reviewer@spotdraft.example description: Please review the indemnity clause and payment terms. intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice summary: Upload for review request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractResponseV2' examples: Example1: value: id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/upload_sign_contracts/: post: operationId: v2.1_public_contracts_upload_sign_contracts_create description: "\nThis API can be used to create a new Third-Party Paper (TPP) contract for signing.\nUse this API when\ \ you want to upload a new contract and send it for signing.\n\n`contract_type_id` must be linked to a published Third-Party\ \ Paper upload workflow.\nIf this linkage is missing, the API can fail with `SD_CONTRACTS_00289`.\n\nIt accepts intake\ \ form data.\n\nThe Intake Form Data should have the following data types with the following output:\n\n \ \ \n \n \n \n \n \n \ \ \n\n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n\ \ \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n\n
TypeData FormatSample
Duration\n {\"days\": int, \"type\": DurationKind,\ \ \"value\": int}
\n `DurationKind`: `DAYS` or `MONTHS` or `YEARS`\n
{\"\ days\": 180, \"type\": \"MONTHS\", \"value\": 6}
Date\n \ \ String formatted date in form YYYY-MM-dd\n \"2019-11-29\"
Dropdown\n Value as returned in options. Can be string\ \ or number.\n \"1\"
String\n \ \ A string value.\n \"Something\"
Currency\n {\"type\": CurrencyCode, \"value\": float}
\n Where currencyCode: \"INR\"\ , \"USD\", \"SGD\", \"EUR\"\n
{\"type\": \"INR\", \"value\": 15000.00}
Check-box\n A boolean value\n true
text-box\n A string value. Can be multi-line\n \"\ Not Applicable\\nBecause...\"
number\n A numeric value.\ \ Can be int or float\n 4 or 3.14
\n\ \n\n### Sample Intake Form Data:\n```\n{\n \"term\": {\"days\": 180, \"type\": \"MONTHS\", \"value\": 6},\n \ \ \"notes\": \"Not Applicable\",\n \"capacity\": 15,\n \"setup_fee\": {\"type\": \"INR\", \"value\": 30000.00},\n\ \ \"start_date\": \"2019-11-29\",\n \"yes_discounts\": false,\n \"payment_method\": \"1\",\n \"suggestions\"\ : \"No suggestions\"\n}\n```\n" summary: Upload Contract for Signature tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' examples: UploadForSignatureRequest: value: contract_name: Acme Corporation NDA contract_type_id: 1 file_name: Acme_nda.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice business_user_email: owner@spotdraft.example summary: Upload for signature request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractResponseV2' examples: Example1: value: id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/webhooks/re_trigger_latest/: post: operationId: v2.1_public_contracts_webhooks_re_trigger_latest_create description: "\n Re-trigger the last webhook call made for all given contracts.\n " summary: Re-trigger Contract Webhooks tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' examples: Example1: value: contract_ids: - 1 - 2 - 3 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' multipart/form-data: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: object properties: message: type: string default: Success description: Success '404': content: application/json: schema: type: object properties: detail: type: string default: Not Found description: Not Found x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/content: get: operationId: v2.1_public_contracts_content_retrieve description: "\n Retrieve the text content of a contract in different formats.\n\n **Formats:**\n \ \ - `text`: Returns the full contract text as a single string\n - `segments`: Returns the contract text\ \ as an array of segments with metadata\n\n **Feature Flags:**\n This API requires `FULL_TEXT_SEARCH`\ \ to be enabled for the workspace.\n\n **Content Availability:**\n Content must be previously extracted\ \ to be available through this API.\n\n This API supports user scoping when the 'Enforce-User-Scoping'\n \ \ header is set to 'true'. When enabled, the API will only return content for\n contracts that the specified user\ \ has access to based on their permissions.\n " summary: Get Contract Content parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: query name: contract_version_id schema: type: integer description: ID of the contract version. If not provided, latest published version is used. - in: query name: text_format schema: type: string enum: - segments - text default: text description: Format of the returned content (text or segments) tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractContentResponse' examples: Example1: value: contract_id: T-12345 content_format: text content: This Agreement is entered into between... segments: null extraction_status: completed last_updated: '2024-01-15T10:30:00Z' summary: Example 1 Example2: value: contract_id: T-12345 content_format: segments content: null segments: - segment_text: This Agreement is entered into... page_number: 1 position: 1 extraction_status: completed last_updated: '2024-01-15T10:30:00Z' summary: Example 2 description: Success '400': description: Invalid format parameter '404': description: Contract not found x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/content/scanned: get: operationId: v2.1_public_contracts_content_scanned_retrieve description: "\n Retrieve extracted text content from a scanned PDF contract.\n It uses mr-ping endpoints\ \ to check if the contract is scanned and extract the text content.\n /is_scanned_pdf to check if the contract\ \ is scanned and /scanned_pdf_to_text to extract the text content from the scanned PDF.\n\n This API supports\ \ user scoping when the 'Enforce-User-Scoping'\n header is set to 'true'. When enabled, the API will only return\ \ content for\n contracts that the specified user has access to based on their permissions.\n\n Optionally\ \ pass `contract_version_id` as a query parameter to use a specific\n contract version; otherwise the last\ \ published version is used.\n " summary: Get Scanned Contract Content parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: query name: contract_version_id schema: type: integer description: ID of the contract version. If not provided, latest published version is used. tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ScannedContractContentResponse' examples: Example1: value: contract_id: 1090393 content: This Agreement is entered into between... summary: Example 1 description: Success '400': description: Invalid contract_version_id parameter '404': description: Contract not found x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/download: post: operationId: v2.1_public_contracts_download_create description: 'Generates and returns the latest downloadable copy of the contract. Use this when you need the contract file itself rather than a temporary download URL.' summary: Download Contract File parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: PDF copy of the Contract x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/download_link: post: operationId: v2.1_public_contracts_download_link_create description: 'Returns a temporary download URL for the contract file. Optionally provide a `format` in the request body (`PDF`, `DOCX`, or `DOCX_WITH_FALLBACK_TO_PDF`). If omitted, the response defaults to `PDF`.' summary: Create Contract Download Link parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/DownloadLinkRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DownloadLinkRequest' multipart/form-data: schema: $ref: '#/components/schemas/DownloadLinkRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DownloadUrl' examples: Example: value: url: https://storage.googleapis.com/some/path?signature=ASDASD file_name: Standard NDA a3b2.pdf current_version_id: 1 description: Download Link x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/intake_form/response: patch: operationId: v2.1_public_contracts_intake_form_response_partial_update description: ' Update intake-form data for the uploaded contract. For information about construction of payload, refer to `Sample Intake Form Data` in this [section](#tag/v21-contract-apis/POST/api/v2.1/public/contracts/upload_sign_contracts/). Get the Intake form questionnaire details using the [Get Intake Form Questionnaire](#tag/v21-contract-types/GET/api/v2.1/public/contract_types/intake_form_questionnaire/) API. The request is merged as a partial update into the latest intake-form response. Unknown keys are currently accepted, so clients should send only questionnaire field names. ' summary: Edit Intake Form Response parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIntakeFormData' examples: Example1: value: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIntakeFormData' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIntakeFormData' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalQuestionnaireResponseDomainModel' examples: Example1: value: data: name: Admin is_individual: false created: '2009-08-06T00:00:00Z' summary: Example 1 description: Intake form response details x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/key_pointers: get: operationId: v2.1_public_contracts_key_pointers_retrieve description: 'Returns **contract metadata values** for the requested contract. Use this when you already have a specific contract id and need the metadata captured on that contract. This is different from the metadata-definition APIs, which list field definitions for a workspace or contract type. The underlying API paths still use legacy key-pointer naming for backward compatibility. When the `Enforce-User-Scoping` header is `true`, only metadata values for contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Metadata Values parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract Metadata Values security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerMinimalListResponse' description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/key_pointers/bulk: post: operationId: v2.1_public_contracts_key_pointers_bulk_create description: Updates the specified list of contract metadata values. The underlying API path still uses legacy key-pointer naming for backward compatibility. summary: Bulk Update Contract Metadata Values parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract Metadata Values requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerBulkRequest' examples: Example1: value: key_pointers: - key_pointer_id: 100 value: type: MONTHS value: 6 - key_pointer_field_name: key_pointer_field_name value: type: MONTHS value: 6 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractKeyPointerBulkRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractKeyPointerBulkRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerMinimalListResponse' description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/mark_for_execution/: post: operationId: v2.1_public_contracts_mark_for_execution_create description: Marks the contract for execution summary: Marks the Contract for Execution parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/MarkForExecutionRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/MarkForExecutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/MarkForExecutionRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: Successfully Marked for Execution x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/notes: get: operationId: v2.1_public_contracts_notes_retrieve description: 'Returns all **notes** for the requested contract. When the `Enforce-User-Scoping` header is `true`, only notes for contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Notes parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract Notes security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractNoteMinimalResponse' examples: Example1: value: id: 1 text: sample note for contract note_tag: sample_tag summary: Example 1 description: Notes x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/recipients/: get: operationId: v2.1_public_contracts_recipients_retrieve description: "A recipient is a person who can access the contract and perform an action. A recipient can be one of these\n\ \ 3 types:\n \n \n \n \n \n \n \n \ \ \n \n \n \n\ \ \n \n \n \n\ \ \n \n \n
Type\n Action\n\ \
APPROVERApprove the contract
SIGNATORYSign the contract
RECEIVERReceive the contract
\n Further, every\ \ action has a status associated with it. It can be one of these 3 types:\n \n \n\ \ \n \n\ \ \n \n \n \n \n \n \n \ \ \n \n \n \ \ \n \n \ \ \n \n
Action Status\n Description\n
COMPLETEDUser has successfully\ \ performed the action
IN_PROGRESSUser has been invited but is yet to perform the action
PENDINGUser is yet to be invited to perform the action
\n This API can be used to get list of all recipients for a contract." summary: Get Contract Recipients parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Recipients security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicSignRecipientWithStatusListResponse' examples: Example1: value: items: - recipient: id: 143476 recipient_type: APPROVER user: id: 25367 name: Tyler designation: Senior Manager email: tyler@yahoo.com title: Senior Manager - Operations recipient_order: 1 note: He is a Senior Manager heading operations team is_sent_for_signature: true created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: '2024-05-24T05:46:22.721800Z' recipient_action: is_success: true action_notes: Approving on behalf of tyler timestamp: '2024-05-24T05:47:31.594842Z' status: COMPLETED - recipient: id: 143776 recipient_type: SIGNATORY user: id: 25567 name: Mike Reed designation: Operations Head email: mike_reed@yahoo.com title: '' recipient_order: 2 note: null is_sent_for_signature: true created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: '2024-05-25T05:46:22.721800Z' recipient_action: null status: IN_PROGRESS - recipient: id: 144776 recipient_type: RECEIVER user: id: 25367 name: Alice designation: null email: alice@yahoo.com title: '' recipient_order: 3 note: null is_sent_for_signature: false created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: null recipient_action: null status: IN_PROGRESS summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/send_to_counterparties: post: operationId: v2.1_public_contracts_send_to_counterparties_create description: Returns status code 200 if successful summary: Send Contract to Counterparties parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/SendToCounterparty' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SendToCounterparty' multipart/form-data: schema: $ref: '#/components/schemas/SendToCounterparty' required: true security: - ClientId: [] ClientSecret: [] responses: '200': description: Contract sent to counterparties. x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/signatories/resend_email/: post: operationId: v2.1_public_contracts_signatories_resend_email_create description: "\n This API can be used to resend email to signatory associated to the contract.\n" summary: Resend Email to the Signatory of a Contract. parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSignatoryResendEmailAPIRequest' examples: Example1: value: email_id: mike_reed@yahoo.com summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateSignatoryResendEmailAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateSignatoryResendEmailAPIRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: Resend request accepted. x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/status: get: operationId: v2.1_public_contracts_status_retrieve description: 'Returns the display **status** and **contract name** for the requested contract. When the `Enforce-User-Scoping` header is `true`, only contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Status parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractStatus' examples: Example: value: contract_status: EXECUTED contract_name: Service Agreement - Acme Corp description: Contract Status x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/status/void: post: operationId: v2.1_public_contracts_status_void_create description: ' Voids a contract and stores the provided void note. This endpoint is available on the v2.1 surface but retains the original v1 contract tag family because it operates on the legacy contract flow. ' summary: Void Contract parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/VoidContractRequestData' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/VoidContractRequestData' multipart/form-data: schema: $ref: '#/components/schemas/VoidContractRequestData' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '204': description: No response body '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Cannot void an executed contract. description: Voiding failed. x-tagGroup: Contracts /api/v2.1/public/contracts/{composite_id}/unmark_for_execution: post: operationId: v2.1_public_contracts_unmark_for_execution_create description: Unmarks the contract for execution and voids the signature service resource (For eg. DocuSign's envelope if enabled). summary: Unmark the Contract for Execution parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractUnMarkForExecutionRequest' examples: Example1: value: note: Client requested some edits to the contract summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractUnMarkForExecutionRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractUnMarkForExecutionRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: Contract unmarked for execution. '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Unable to unmark the contract for execution. description: Invalid request. x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/authorized_users/: get: operationId: v2.1_public_contracts_authorized_users_retrieve description: Gets all the users with authorized access to a contract summary: Get Contract Authorized Users List parameters: - in: path name: contract_id schema: type: integer required: true tags: - V2.1 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicUserMinimalListResponse' examples: Example1: value: total_results: 2 page: 1 limit: 10 results: - id: 100 first_name: Sonia last_name: Sotomayor email: sonia_sotomayor@notreally.supremecourt.gov designation: Lawyer - id: 101 first_name: Elena last_name: Kagan email: elena_kagan@notreally.supremecourt.gov designation: Lead Lawyer summary: Example 1 description: User List x-tagGroup: Platform /api/v2.1/public/contracts/{contract_id}/business_user/: patch: operationId: v2.1_public_contracts_business_user_partial_update description: ' Updates the business user associated with the contract. Use this when ownership needs to move to a different workspace user after the contract has been created. ' summary: Update Business User for a Contract parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalUpdateContractBusinessUserRequest' examples: Example1: value: user_id: 1234 update_user_task_on_bu_update: true summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalUpdateContractBusinessUserRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalUpdateContractBusinessUserRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractUserResponse' examples: Example1: value: user_id: 1234 type: BUSINESS contract_id: 1234 summary: Example 1 description: Success '404': content: application/json: schema: type: object properties: detail: type: string default: Not Found description: Not Found x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/comments/: get: operationId: v2.1_public_contracts_comments_retrieve description: Returns contract activity-log comments and replies in reverse chronological order. Use pagination to fetch older discussion threads. summary: Get Comments in Contract Activity Log. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2.1 Contract Activity security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalCommentListResponse' examples: Example1: value: page: 1 limit: 10 total_results: 2 results: - id: 1001 contract_id: 211270 comment: This is sample comment. replies: - id: 2021 comment: This is a sample reply. - id: 1002 contract_id: 211270 comment: Hi team this contract need your review. replies: [] summary: Example 1 description: Success x-tagGroup: Contracts post: operationId: v2.1_public_contracts_comments_create description: Creates a new activity-log comment on the contract. Mentions are supported with the documented `!!@{user_id}!!` syntax. summary: Add Comment to Contract Activity Log. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Activity requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' examples: Example1: value: comment: Hey !!@12310!! please review this contract. summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalCommentResponse' examples: Example1: value: id: 1001 contract_id: 211270 comment: Hey test.user@spotdraft.com please review this contract. replies: [] summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/contract_data: patch: operationId: v2.1_public_contracts_contract_data_partial_update description: "Updates the structured contract data used to populate the contract template.\n\nUse this to refresh template\ \ field values before the contract is finalized. Historic contracts are not supported for this endpoint.\n\n\nThe\ \ `contract_data` object must use **template field names as keys**. Each value should match the data type configured\ \ for that field in SpotDraft.\n\n| Field type | Expected value | Example |\n| ---------- | -------------- | -------\ \ |\n| String / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line breaks if needed | `\"Not\ \ applicable\\nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14` |\n| Boolean / checkbox\ \ | Boolean | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601 timestamp | `\"2026-09-15T10:30:00Z\"\ ` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select | Array of selected option values\ \ | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\": number }` | `{ \"type\": \"USD\"\ , \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\|YEARS\", \"value\": int }` | `{\ \ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address fields | `{ \"line_one\"\ : \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating group | Array of\ \ row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}}]` |\n| File\ \ / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \"agreement_date\": \"2026-03-28\"\ ,\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"Acme Inc.\",\n \"billing_currency\"\ : {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\": \"MONTHS\", \"value\": 12, \"days\"\ : 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\": [\"US\", \"IN\"],\n \"\ billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\",\n \"state\": \"NY\"\ ,\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\": [\n {\"milestone\"\ : \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\": \"Annual subscription\"\ , \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Update Contract Data parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' examples: Example1: value: data: term: days: 180 type: MONTHS value: 6 notes: Not Applicable capacity: 15 setup_fee: type: INR value: 30000.0 start_date: '2019-11-29' yes_discounts: false payment_method: '1' suggestions: No suggestions summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' examples: Example1: value: data: term: days: 180 type: MONTHS value: 6 notes: Not Applicable capacity: 15 setup_fee: type: INR value: 30000.0 start_date: '2019-11-29' yes_discounts: false payment_method: '1' suggestions: No suggestions summary: Example 1 description: Updated Data '400': content: application/json: schema: type: object properties: detail: type: string default: Contract cannot be updated because it has been executed. code: type: string default: SD_PUBLIC_00009 description: Contract cannot be updated in its current status x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/contract_relation/: post: operationId: v2.1_public_contracts_contract_relation_create description: "\n This 'Create Contract relations' API can be used to create a relation between two contracts,\n \ \ identifying <related_contract_id> as a <relation_type> of <contract_id>.\n" summary: Create Contract Relations parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalContractRelationCreateRequest' examples: Example1: value: related_contract_id: 1234 relation_type: CHILD summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalContractRelationCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalContractRelationCreateRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalContractRelationResponse' examples: Example1: value: id: 1000 related_contract_id: 1234 relation_type: CHILD created: '2021-05-20T04:52:04Z' summary: Example 1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string default: Unable to set relation as it is leading to a circular dependency between the contracts. code: type: string default: SD_CONTRACTS_00093 description: Circular dependency between the contracts x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/contract_version/: post: operationId: v2.1_public_contracts_contract_version_create description: Uploads a new contract version for an existing contract. Use this when you want to replace the working draft or add an executed version file to the contract history. summary: Upload Contract Version. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Versions requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' examples: Example1: value: document_name: OneNDA.pdf document_base_64: OneNDA document content in bytes converted to base64 string. collect_approvals: true summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/download_docx/: post: operationId: v2.1_public_contracts_download_docx_create description: ' Downloads a DOCX version of the contract. If the current version does not have a DOCX artifact, SpotDraft returns the last available DOCX version for the contract. ' summary: Download Docx for a Contract parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: DOCX copy of the Contract x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/external_metadata: get: operationId: v2.1_public_contracts_external_metadata_retrieve description: 'Returns the external record metadata currently associated with the contract. Pass the composite contract id in the path, for example `T-123` or `H-123`.' summary: Get Contract External Metadata parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract External Metadata security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: object properties: external_metadata: type: object properties: id: type: string default: external_record_id integration_name: type: string default: Salesforce record_type: type: string default: Account record_data: type: object default: {} object_configuration_id: type: object default: 2a2340fb-1af6-401e-a04c-c69a14c798b1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string default: 'Record Type: Account does not match the Object Configuration Name: Opportunity.' status_code: type: number default: 400 code: type: string default: SD_INTEGRATIONS_00030 message: type: string default: 'Record Type: Account does not match the Object Configuration Name: Opportunity.' description: Invalid Request '404': content: application/json: schema: type: object properties: detail: type: string default: 'The entity does not exists for the given object_configuration_id: a4f8e8e1-ed66-4217-9651-c304bdaef6d2' status_code: type: number default: 404 code: type: string default: SD_INTEGRATIONS_00021 message: type: string default: 'The entity does not exists for the given object_configuration_id: a4f8e8e1-ed66-4217-9651-c304bdaef6d2' description: Not Found x-tagGroup: Contracts post: operationId: v2.1_public_contracts_external_metadata_create description: 'Creates or updates the external record metadata linked to the contract. Use this to associate a SpotDraft contract with a CRM, ERP, or other external system record. Pass the composite contract id in the path, for example `T-123` or `H-123`.' summary: Create or Update Contract External Metadata parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract External Metadata requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalMetadataCreateOrUpdateRequestData' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalMetadataCreateOrUpdateRequestData' multipart/form-data: schema: $ref: '#/components/schemas/ExternalMetadataCreateOrUpdateRequestData' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: object properties: external_metadata: type: object properties: id: type: string default: external_record_id integration_name: type: string default: Salesforce record_type: type: string default: Account record_data: type: object default: {} object_configuration_id: type: object default: 2a2340fb-1af6-401e-a04c-c69a14c798b1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string default: 'Record Type: Account does not match the Object Configuration Name: Opportunity.' status_code: type: number default: 400 code: type: string default: SD_INTEGRATIONS_00030 message: type: string default: 'Record Type: Account does not match the Object Configuration Name: Opportunity.' description: Invalid Request '404': content: application/json: schema: type: object properties: detail: type: string default: 'The entity does not exists for the given object_configuration_id: a4f8e8e1-ed66-4217-9651-c304bdaef6d2' status_code: type: number default: 404 code: type: string default: SD_INTEGRATIONS_00021 message: type: string default: 'The entity does not exists for the given object_configuration_id: a4f8e8e1-ed66-4217-9651-c304bdaef6d2' description: Not Found x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/invite/: post: operationId: v2.1_public_contracts_invite_create description: ' Invites specific users or roles to collaborate on the contract. This grants contract-level access in addition to any access already inherited from the contract type. ' summary: Invite Users & Roles parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' examples: Example1: value: items: - role_id: 34 permission_name: CONTRACT.READ note: Inviting Legal team with contract read access. summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractInviteResponse' examples: Example1: value: impacted_users: [] impacted_roles: - id: 34 name: Legal description: Legal team summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/key_pointers/{contract_key_pointer_id}: patch: operationId: v2.1_public_contracts_key_pointers_partial_update description: Updates the specified contract metadata value. The underlying API path still uses legacy key-pointer naming for backward compatibility. summary: Update Contract Metadata Value parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: path name: contract_key_pointer_id schema: type: string description: ID of the contract key pointer value. required: true tags: - V2.1 Contract Metadata Values requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerMinimalResponse' examples: Example1: value: id: 1 value: sample label: Sample Label filed_name: sample_field_name data_type: string format_option: data: sample format option summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/notes/{note_id}: put: operationId: v2.1_public_contracts_notes_update description: Returns the updated note summary: Update Contract Note parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: path name: note_id schema: type: string description: ID of the note. required: true - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2.1 Contract Notes requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractNoteMinimalResponse' examples: Example1: value: id: 1 text: sample note for contract note_tag: sample_tag summary: Example 1 description: Notes x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/obligations/: get: operationId: v2.1_public_contracts_obligations_list description: List obligations for a given contract summary: List Obligations parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Obligations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractObligationListResponse' examples: Example: value: - id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly - id: 2345 title: Test Obligation 2 description: Test Description 2 start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 124 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause 2 contractual_delivery_value: '2000000' frequency: Yearly description: Obligation '400': description: Bad Request x-tagGroup: Contracts post: operationId: v2.1_public_contracts_obligations_create description: Create a new obligation for a given contract summary: Create Obligation parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Obligations requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequest' examples: Example1: value: obligation_type_id: 123 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: 1000000 frequency: Monthly tasks: title: test title notes: test note contract_id: 86311 due_date: '2021-05-20T04:52:04Z' due_date_key_pointer_id: 1 assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractObligationResponse' examples: Example: value: id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING priority: MEDIUM contract_id: 86311 custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly description: Obligation '400': description: Bad Request x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/obligations/bulk/: post: operationId: v2.1_public_contracts_obligations_bulk_create description: Bulk create obligations for a given contract summary: Bulk Create Obligations parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Obligations requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequestList' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequestList' multipart/form-data: schema: $ref: '#/components/schemas/CreateContractObligationPublicRequestList' security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractObligationListResponse' examples: Example: value: - id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly - id: 2345 title: Test Obligation 2 description: Test Description 2 start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 124 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause 2 contractual_delivery_value: '2000000' frequency: Yearly description: Obligation List '400': description: Bad Request x-tagGroup: Contracts patch: operationId: v2.1_public_contracts_obligations_bulk_partial_update description: Bulk update obligations for a given contract summary: Bulk Update Obligations parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Obligations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequestList' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequestList' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequestList' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractObligationListResponse' examples: Example: value: - id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly - id: 2345 title: Test Obligation 2 description: Test Description 2 start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 124 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause 2 contractual_delivery_value: '2000000' frequency: Yearly description: Obligation List '400': description: Bad Request x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/obligations/{obligation_id}/: get: operationId: v2.1_public_contracts_obligations_retrieve_by_id description: Get an obligation for a given contract summary: Get Obligation parameters: - in: path name: contract_id schema: type: integer required: true - in: path name: obligation_id schema: type: integer description: ID of the Obligation. required: true tags: - V2.1 Contract Obligations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractObligationResponse' examples: Example: value: id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING priority: MEDIUM contract_id: 86311 custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly description: Obligation '400': description: Bad Request x-tagGroup: Contracts patch: operationId: v2.1_public_contracts_obligations_partial_update description: Update an obligation for a given contract summary: Update Obligation parameters: - in: path name: contract_id schema: type: integer required: true - in: path name: obligation_id schema: type: integer description: ID of the Obligation. required: true tags: - V2.1 Contract Obligations requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequest' examples: Example: value: title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedUpdateObligationRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractObligationResponse' examples: Example: value: id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING priority: MEDIUM contract_id: 86311 custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly description: Obligation '400': description: Bad Request x-tagGroup: Contracts delete: operationId: v2.1_public_contracts_obligations_destroy description: Delete an obligation for a given contract summary: Delete Obligation parameters: - in: path name: contract_id schema: type: integer required: true - in: path name: obligation_id schema: type: integer description: ID of the Obligation. required: true tags: - V2.1 Contract Obligations security: - ClientId: [] ClientSecret: [] responses: '204': description: No Content '400': description: Bad Request x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/process_metrics/: get: operationId: v2.1_public_contracts_process_metrics_retrieve description: ' Returns process-metric timestamps and workflow-state measurements tracked for the contract. Use this for reporting, SLA monitoring, or contract-cycle analytics. ' summary: Get Contract Process Metric Data parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractProcessMetricResponse' examples: Example1: value: contract_id: 1234 contract_sent_to_cp_datetime: '2019-08-24T14:15:22Z' cp_added_info_initial_datetime: '2019-08-24T14:15:22Z' cp_added_info_latest_datetime: '2019-08-24T14:15:22Z' cp_opened_review_email_datetime: '2019-08-24T14:15:22Z' contract_signed_by_signatory_list: - is_creator_party: true signed_datetime: '2019-08-24T14:15:22Z' signatory_email: Mike_reed@yahoo.com contract_turns: manual_override_reason: Reason for manual override last_turn_change_datetime: '2019-08-24T14:15:22Z' last_turn_change_org_user_email: johndoe@example.com no_of_turns: 2 contract_executed_datetime: '2019-08-24T14:15:22Z' type_of_workflow: UPLOAD_SIGN contract_status: COMPLETED marked_for_signature_datetime: '2019-08-24T14:15:22Z' pending_with: COUNTER_PARTY summary: Example 1 description: Success '404': content: application/json: schema: type: object properties: detail: type: string default: Not Found description: Not Found x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/questionnaire/responses/: get: operationId: v2.1_public_contracts_questionnaire_responses_retrieve description: Returns the saved questionnaire answers for the contract. Use `questionnaire_type` to choose whether you want intake-form answers or template-questionnaire answers. summary: Get Questionnaire Response parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: questionnaire_type schema: type: string description: 'Enum: `INTAKE_FORM/TEMPLATE`. Type of the questionnaire for which response needs to be returned.' required: true tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractQuestionnairePublicResponse' examples: Example1: value: questionnaire_response_data: department: product respondents: - created_at: '2023-06-14T10:46:15.205587Z' created_by: Mike Reed org_name: Acme Inc. summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/recipients/recipient_link/: get: operationId: v2.1_public_contracts_recipients_recipient_link_retrieve description: Returns a recipient-specific signing or review link for the given contract and recipient email. Use this when you need to surface the recipient journey from your own application. summary: Get Recipient Link parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: recipient_email schema: type: string description: Email of the recipient for whom the link needs to be generated. required: true tags: - V2.1 Recipients security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalGetRecipientLinkResponse' description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/related_contracts/: get: operationId: v2.1_public_contracts_related_contracts_retrieve description: "\n This API gets all related contracts for the given contract.\n Related contracts can be of type\ \ CHILD, PARENT, ADDENDUM, or AMENDMENT.\n Only contracts that the requesting user has access to are returned.\n" summary: List Related Contracts parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2.1 Contract APIs security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalRelatedContractListResponse' examples: Example1: value: page: 1 limit: 10 total_results: 2 results: - id: 1000 contract: id: 1234 name: Acme Corporation NDA counter_party_list: - Acme Corp display_status: EXECUTED relation_type: CHILD - id: 1001 contract: id: 5678 name: Acme Corporation MSA counter_party_list: - Acme Corp display_status: DRAFT relation_type: AMENDMENT summary: Example 1 description: Success x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/review_request/: post: operationId: v2.1_public_contracts_review_request_create description: ' Creates a manual legal review task on the contract and assigns it to a user or role. Use this to trigger a review workflow from your own intake or contracting application. ' summary: Create and Assign a Legal Review Task parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ReviewRequestCreateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ReviewRequestCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ReviewRequestCreateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: Review task created. x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/tasks/bulk/: post: operationId: v2.1_public_contracts_tasks_bulk_create description: This API can be used to bulk create user tasks summary: V2.1 Bulk Create User Tasks parameters: - in: path name: contract_id schema: type: integer required: true tags: - V2.1 Tasks and Reminders requestBody: content: application/json: schema: $ref: '#/components/schemas/UserTaskCreateRequestList' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserTaskCreateRequestList' multipart/form-data: schema: $ref: '#/components/schemas/UserTaskCreateRequestList' security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserTaskPublicResponseList' description: V2.1 User Tasks with Reminders List x-tagGroup: Platform /api/v2.1/public/contracts/{contract_id}/uninvite/: post: operationId: v2.1_public_contracts_uninvite_create description: Un-Invite a specific user or roles to this contract who have been invited. This does not change contract type based access, this will also not remove read access given to sign recipients. summary: Un-invite a User or Role parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalContractUnInviteRequest' examples: Example1: value: user_id: 100 role_id: 101 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalContractUnInviteRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalContractUnInviteRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: Invite removed. x-tagGroup: Contracts /api/v2.1/public/contracts/{contract_id}/uninvite_all/: post: operationId: v2.1_public_contracts_uninvite_all_create description: Un-Invite all the users and roles who have been invited to this contract. This does not change contract type based access. this will also not remove read access given to sign recipients. summary: Un-invite All Users & Roles parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2.1 Contract Invitations security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': description: All invites removed. x-tagGroup: Contracts /api/v2.1/public/counter_parties/: get: operationId: v2.1_public_counter_parties_list description: Get the list of counterparties summary: List Counterparties parameters: - in: query name: filter__client_email_address schema: type: string description: Filters on the counter party email. Does an exact match. - in: query name: filter_custom__ schema: type: string description: 'Filters all the counterparties which have the custom field values present. Example: filter_custom__vendor_id=1234' - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2.1 Counterparties security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterpartyListAPIResponse' examples: Example1: value: page: 1 limit: 10 total_results: 50 results: - id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Counterparty x-tagGroup: Platform post: operationId: v2.1_public_counter_parties_create description: "\nThis method takes in counter party details to be used for counter Party creation\n and returns status\ \ code 201 along with the counterparty workspace id if successfully created.\n" summary: Create Counter Party tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' examples: Example1: value: is_individual: false organization_type: Private Limited organization_name: Acme Corporation contact_name: Mike Reed contact_email: Mike_reed@yahoo.com brand_name: Acme Corporation primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: CounterParty x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}: get: operationId: v2.1_public_counter_parties_retrieve_by_id description: Get the details of a counterparty by its ID summary: Get Counterparty parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Counterparty x-tagGroup: Platform patch: operationId: v2.1_public_counter_parties_partial_update description: Update counterparty details summary: Update Counterparty parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' examples: Example1: value: name: Susan Ervin brand_name: Susan's Org custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Update Counterparty x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}/addresses/: get: operationId: v2.1_public_counter_parties_addresses_retrieve description: Get the list of counterparty addresses summary: List Counterparty Addresses parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2.1 Counterparties security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterpartyListAddressResponse' examples: Example1: value: page: 1 limit: 10 total_results: 50 results: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: List Counterparty Addresses x-tagGroup: Platform post: operationId: v2.1_public_counter_parties_addresses_create description: Create counterparty address summary: Create Counterparty Address parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' examples: Example1: value: line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: test@yopmail.com phone: '1234567890' country_iso_code: US summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAddressResponse' examples: Example1: value: id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: Create Counterparty Address x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}/addresses/{address_id}/: patch: operationId: v2.1_public_counter_parties_addresses_partial_update description: Update counterparty address summary: Update Counterparty Address parameters: - in: path name: address_id schema: type: integer description: ID of the Counterparty address. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' examples: Example1: value: city_name: Cincinnati state_name: Ohio country_iso_code: IN zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAddressResponse' examples: Example1: value: id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: Update Counterparty Address x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}/contacts: get: operationId: v2.1_public_counter_parties_contacts_retrieve description: Get the list of counterparty contacts summary: List Counterparty Contacts parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2.1 Counterparties security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactsListAPIResponse' examples: Example1: value: page: 1 limit: 10 total_results: 1 results: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: List Counterparty Contacts x-tagGroup: Platform post: operationId: v2.1_public_counter_parties_contacts_create description: Create Counterparty Contact summary: Create Counterparty Contact parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' examples: Example1: value: name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactResponse' examples: Example1: value: id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: Create Counterparty Contact x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}/contacts/bulk/: patch: operationId: v2.1_public_counter_parties_contacts_bulk_partial_update description: Bulk Update counterparty contacts summary: Bulk Update Counterparty Contacts parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' examples: Example1: value: contacts: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalCounterpartyContactBulkUpdateResponse' description: Bulk Update Counterparty Contacts x-tagGroup: Platform /api/v2.1/public/counter_parties/{counterparty_id}/contacts/{contact_id}/: patch: operationId: v2.1_public_counter_parties_contacts_partial_update description: Update counterparty contact summary: Update Counterparty Contact parameters: - in: path name: contact_id schema: type: integer description: ID of the Counterparty contact. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' examples: Example1: value: name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactResponse' examples: Example1: value: id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: Update Counterparty Contact x-tagGroup: Platform delete: operationId: v2.1_public_counter_parties_contacts_destroy description: Delete counterparty contact summary: Delete Counterparty Contact parameters: - in: path name: contact_id schema: type: integer description: ID of the Counterparty contact. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2.1 Counterparties security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '204': description: Delete Counterparty Contact x-tagGroup: Platform /api/v2.1/public/facets/: get: operationId: v2.1_public_facets_retrieve description: 'Returns **facet metadata** for contract search and filtering in the workspace. Use `include_options=true` to include option values for dropdown-style facets; omit or set `false` for a lighter discovery response (structure only).' summary: List Contract Search Facets parameters: - in: query name: include_options schema: type: boolean description: If `true`, include selectable option values for each facet. If `false` (default), return facet structure only (lighter for discovery). tags: - V2.1 Contract Facets security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: object description: Workspace facet payload (structure defined by product). description: Facet definitions (and optionally option values) for the workspace. x-tagGroup: Contracts /api/v2.1/public/facets/options/{field_name}/: get: operationId: v2.1_public_facets_options_retrieve description: Returns **suggestions / option values** for a single facet (metadata) field, for use in contract search filters. Supports optional `q` and `exclude` query params. summary: Get Facet Field Options parameters: - in: query name: exclude schema: type: string description: Optional comma-separated values to exclude from results. - in: path name: field_name schema: type: string required: true - in: query name: q schema: type: string description: Optional search string to filter option labels/values. tags: - V2.1 Contract Facets security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: type: object description: Facet options response (typed by field configuration). description: Options and metadata for the requested facet field. x-tagGroup: Contracts /api/v2.1/public/key_pointers/: get: operationId: v2.1_public_key_pointers_retrieve description: Lists the contract metadata definitions configured for the workspace. These definitions describe which metadata fields exist; they do not return values for a specific contract. The underlying API paths still use legacy key-pointer naming for backward compatibility. summary: List Contract Metadata Definitions parameters: - in: query name: contract_type_id schema: type: integer description: ID of the Contract type. required: true - in: query name: is_external schema: type: boolean description: Set to True to get only key pointers from external sections. tags: - V2.1 Contract Metadata Definitions security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/KeyPointerListDomainModel' description: Contract metadata x-tagGroup: Workflow /api/v2.1/public/key_pointers/field-name-mapping/: post: operationId: v2.1_public_key_pointers_field_name_mapping_create description: Returns mappings between template **field names** and contract metadata **labels** for the workspace, optionally scoped by `contract_id` or `contract_type_id`. Used when renaming template variables or aligning metadata across versions. summary: Map Template Fields to Contract Metadata tags: - V2.1 Contract Metadata Definitions requestBody: content: application/json: schema: $ref: '#/components/schemas/ListFieldNameMappingViewRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ListFieldNameMappingViewRequest' multipart/form-data: schema: $ref: '#/components/schemas/ListFieldNameMappingViewRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/FieldNameMappingListDomainModel' description: Field name mapping rows for the request filters. x-tagGroup: Workflow /api/v2.1/public/organizations/entities/: get: operationId: v2.1_public_organizations_entities_retrieve description: Gets all the entity associated with the Organization summary: Get Organization Entities tags: - V2.1 Organizations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationEntityListDomainModel' description: Entities x-tagGroup: Platform post: operationId: v2.1_public_organizations_entities_create description: Create an entity associated with the Organization summary: Create Entity tags: - V2.1 Organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' examples: Example1: value: name: Acme Inc. reference_id: US1 jurisdiction_iso_code: US organization_type_id: 1 primary_address: city_name: Houston state_name: Texas zipcode: '77020' line_one: 3659 Burwell Heights Road country_iso_code: US is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrganizationEntityDomainModel' examples: Example1: value: id: 1045 name: Acme Inc. reference_id: US20 jurisdiction: id: 234 name: United States iso_code: US organization_type: id: 1 name: Private Company primary_address: id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US is_primary: true summary: Example 1 description: Created x-tagGroup: Platform /api/v2.1/public/organizations/types/: get: operationId: v2.1_public_organizations_types_retrieve description: Gets all the organization types available for a jurisdiction summary: Get Organization Types parameters: - in: query name: jurisdiction_iso_code schema: type: string description: The ISO-3166-1 Alpha-2 code of the jurisdiction associated with this organization. Any value passed here is overrides `jurisdiction`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). tags: - V2.1 Organizations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationTypeListDomainModel' description: Organization Type List '400': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Bad Request x-tagGroup: Platform /api/v2.1/public/sidebar/files/: post: operationId: v2.1_public_sidebar_files_create description: 'Upload a file to Sidebar and attach it to a chat, hub, agent, or table. - Omit `webhook_url` for a synchronous terminal file result. - Provide HTTPS `webhook_url` to receive `202 Accepted` once upload has completed and processing has been scheduled. - `upload_source` currently accepts `chat`, `hub`, `assistant`, or `table`. Use `assistant` when you want to attach the file to an agent.' summary: Upload Sidebar File tags: - V2.1 Sidebar requestBody: content: application/json: schema: $ref: '#/components/schemas/SidebarFileUploadRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SidebarFileUploadRequest' multipart/form-data: schema: $ref: '#/components/schemas/SidebarFileUploadRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/SidebarFileUploadResponse' description: Synchronous upload completed and processing reached a terminal status. '202': content: application/json: schema: $ref: '#/components/schemas/SidebarFileUploadAcceptedResponse' description: Accepted for asynchronous processing when `webhook_url` is provided. '400': description: Validation error while parsing multipart form fields. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: Unauthorized '413': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Uploaded file exceeds the maximum allowed size. description: Uploaded file is larger than the configured Sidebar limit. '502': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Upstream error description: Upstream connection error '504': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Upstream timeout description: Upstream timeout x-tagGroup: Sidebar /api/v2.1/public/sidebar/query/: post: operationId: v2.1_public_sidebar_query_create description: 'Ask Sidebar a legal question or continue an existing conversation. - Omit `chat_id` to start a new conversation. - Provide `chat_id` to continue an existing conversation. - Omit `webhook_url` for a synchronous response. - Provide HTTPS `webhook_url` to receive `202 Accepted` immediately and get the final result via webhook. You can optionally control which sources Sidebar may use and include related files, contracts, tables, or extra context.' summary: Run Sidebar Query tags: - V2.1 Sidebar requestBody: content: application/json: schema: $ref: '#/components/schemas/SidebarQueryRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SidebarQueryRequest' multipart/form-data: schema: $ref: '#/components/schemas/SidebarQueryRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/SidebarQueryResponse' description: Synchronous Sidebar query result. '202': content: application/json: schema: $ref: '#/components/schemas/SidebarQueryAcceptedResponse' description: Accepted for asynchronous processing when `webhook_url` is provided. '400': description: Validation error while parsing the Sidebar query payload. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: Unauthorized '502': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Upstream error description: Upstream connection error '504': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Upstream timeout description: Upstream timeout x-tagGroup: Sidebar /api/v2.1/public/supported_documents/{contract_id}/: post: operationId: v2.1_public_supported_documents_create description: Uploads an additional supporting document for the contract, such as a schedule, annexure, or supporting evidence file. The file is attached to the contract record and can be used alongside the primary contract document. summary: Upload Supported Documents for a Given Contract parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2.1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' examples: Example1: value: name: Acme Corporation Related Document file_name: Acme Related Document.pdf file_base64: base64 encoded string of the file content summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/SupportedDocumentResponse' examples: Example1: value: id: '199' name: Acme Corporation Related Document created: '2022-10-10' summary: Example 1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Forbidden x-tagGroup: Contracts /api/v2.1/public/templates/: get: operationId: v2.1_public_templates_list description: ' Lists published templates available to the workspace tied to the API credentials. Use query parameters to filter by tags, counterparty type, archive state, and multipart support. ' summary: Get Template List parameters: - in: query name: cp_types schema: type: string description: 'The type of Counterparty that can be added to contracts created from this template. Must be either `Organisation` or `Individual`. This value will be used to filter the list of templates returned by the API. The template will be having one or more CP that match cp_types.' - in: query name: cp_types_all schema: type: boolean default: false description: 'When a template has multiple counterparties, whether all counterparties should match the CP type given in cp_types. False by default' - in: query name: exclude_multi_party schema: type: boolean default: false description: Whether templates that support multiple counterparties should be excluded. - in: query name: include_archived schema: type: boolean default: false description: Whether archived templates should be included in the results. - in: query name: tags schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the Template tags are a subset of the tags passed will be returned.' - in: query name: tags_all schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the tags passed are a subset of the Template tags will be returned.' tags: - V2.1 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateListResponse' examples: Example1: value: items: - id: 1 name: Basic Non Disclosure Agreement contract_type_id: 10 summary: Example 1 description: Template List x-tagGroup: Workflow /api/v2.1/public/templates/{template_id}/: get: operationId: v2.1_public_templates_retrieve_by_id description: ' Returns the template details available to the current workspace, including workspace-specific access data. Use this before update calls when you need the current configuration state. ' summary: Get Template Details parameters: - in: path name: template_id schema: type: integer description: The ID of the template. required: true tags: - V2.1 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateResponseV2' examples: Example1: value: id: 1 name: Basic Non Disclosure Agreement tags: - Tag1 - Tag2 contract_type_id: 10 summary: Example 1 description: Template Details x-tagGroup: Workflow patch: operationId: v2.1_public_templates_partial_update description: ' Updates the workspace-specific data stored against a template. This is the version to use for self-serve and DraftMate-enabled template workflows. ' summary: Update Template Data parameters: - in: path name: template_id schema: type: integer description: The ID of the template. required: true tags: - V2.1 Templates requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' examples: Example1: value: tags: - Tag1 - Tag2 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateResponseV2' examples: Example1: value: id: 1 name: Basic Non Disclosure Agreement tags: - Tag1 - Tag2 contract_type_id: 10 summary: Example 1 description: Updated Template x-tagGroup: Workflow /api/v2.1/public/templates/{template_id}/metadata: get: operationId: v2.1_public_templates_metadata_retrieve description: ' Gets the list of fields required to create a contract with a given template. The list of attributes returned define how a `contract_data` payload is to be constructed for the [V2.1 Create Contract](#tag/v21-contract-apis/POST/api/v2.1/public/contracts/) request. V2.1 must be used for templates created using the DraftMate Add-on. ' summary: Get Template Metadata parameters: - in: path name: template_id schema: type: string pattern: ^[0-9]+$ required: true tags: - V2.1 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateMetaDataResponseV2' examples: Example1: value: {} summary: Example 1 description: Template Metadata x-tagGroup: Workflow /api/v2.1/public/user_tasks/: post: operationId: v2.1_public_user_tasks_create description: ' Creates one or more user tasks in SpotDraft. Validation notes: - For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` should be provided. - Each assignee must set exactly one of `org_user_id` or `role_id`. ' summary: V2.1 Create User Tasks List tags: - V2.1 Tasks and Reminders requestBody: content: application/json: schema: $ref: '#/components/schemas/UserTaskCreateRequest' examples: Example1: value: title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserTaskCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserTaskCreateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserTaskPublicResponse' description: V2.1 User Tasks with Reminders List '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Forbidden x-tagGroup: Platform /api/v2.1/public/webhooks/: post: operationId: v2.1_public_webhooks_create description: "Creates a webhook subscription for the selected SpotDraft activity types.\n See [Webhooks](/api/docs#description/webhooks)\ \ for delivery behavior, verification, and retry guidance." summary: Setup Webhook tags: - V2.1 Webhooks requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicWebhookCreateRequest' examples: Example1: value: title: Contract Created webhook only_for_activities: - CONTRACT_CREATED url: https://yourdomain.com/webhooks/event-handler description: Created for contract create webhook custom_headers: X-ABC-ACCESS-KEY: example-access-key X-CLIENT-SIGNATURE: example-client-signature summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicWebhookCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicWebhookCreateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PublicWebhookResponse' examples: Example1: value: id: 511 title: Contract Created webhook only_for_activities: - CONTRACT_CREATED url: https://yourdomain.com/webhooks/event-handler created_by_user: id: 17258 name: Mike Reed email: mike_reed@yahoo.com designation: Senior Marketing Manager description: Created for contract create webhook custom_headers: X-ABC-ACCESS-KEY: example-access-key DEF-ACCESS-KEY: example-secondary-access-key status: ACTIVE summary: Example 1 description: Created '400': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Forbidden '404': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Not Found x-tagGroup: Platform /api/v2.1/public/webhooks/hmac_key/: get: operationId: v2.1_public_webhooks_hmac_key_get description: "Returns the Base64-encoded HMAC secret used to verify webhook payload signatures.\n See [Webhooks](/api/docs#description/webhooks)\ \ for verification guidance." summary: Get Webhook Secret tags: - V2.1 Webhooks security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WebhookSecretKeyResponse' examples: Example1: value: hmac_key: zJDCvFUXhByUkPcQIzf+dt2W7bqm6x6Fb2o/gLhfUgXyPqvPcrZ6P9yYtoUrI4dErHzq2t+4gjZ4zH2btdpoSA== summary: Example 1 description: Success x-tagGroup: Platform /api/v2.1/public/webhooks/{webhook_id}: delete: operationId: v2.1_public_webhooks_destroy description: "Deletes an existing webhook subscription.\n See [Webhooks](/api/docs#description/webhooks) for\ \ delivery behavior and operational guidance." summary: Remove Webhook parameters: - in: path name: webhook_id schema: type: integer required: true tags: - V2.1 Webhooks security: - ClientId: [] ClientSecret: [] responses: '204': description: Success '403': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Forbidden '404': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Not Found x-tagGroup: Platform /api/v2.1/public/workspace/feature-flags/: post: operationId: v2.1_public_workspace_feature_flags_create description: Evaluates whether the given **feature flags** are enabled for the workspace tied to the API credentials. Pass at least one flag name in the `flags` array. summary: Check Workspace Feature Flags tags: - V2.1 Workspaces requestBody: content: application/json: schema: $ref: '#/components/schemas/FeatureFlagsCheckRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/FeatureFlagsCheckRequest' multipart/form-data: schema: $ref: '#/components/schemas/FeatureFlagsCheckRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: object description: Map or structure returned by FeatureFlagService for the requested flags. description: Per-flag enabled/disabled (or product-specific) status for the workspace. '400': content: application/json: schema: type: object properties: error: type: string description: No flag names supplied. x-tagGroup: Platform /api/v2.1/public/workspace/files/uploads/: post: operationId: v2.1_public_workspace_files_uploads_create description: Initialize file uploads for the authenticated workspace and return the upload instructions for each requested file. summary: Initialize Workspace File Uploads tags: - V2.1 Workspace Files requestBody: content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileUploadInitiationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WorkspaceFileUploadInitiationRequest' multipart/form-data: schema: $ref: '#/components/schemas/WorkspaceFileUploadInitiationRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileUploadInitiationPublicResponse' description: Upload instructions for the requested files '400': description: Invalid request payload '401': description: Unauthorized x-tagGroup: Platform /api/v2.1/public/workspace/files/{file_id}/: get: operationId: v2.1_public_workspace_files_retrieve description: Get a signed URL for downloading a workspace file by UUID. The file must belong to the authenticated request workspace. summary: Get Workspace File Signed Download URL parameters: - in: path name: file_id schema: type: string format: uuid description: Workspace file UUID required: true tags: - V2.1 Workspace Files security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/WorkspaceFileDownloadPublicResponse' description: Signed URL for workspace file download '401': description: Unauthorized '404': description: File not found x-tagGroup: Platform /api/v2.1/public/workspace/tags/: post: operationId: v2.1_public_workspace_tags_create description: ' Bulk-create one or more workspace tags. Tags are used to categorize, identify, and filter contracts within a workspace. Use this endpoint to create multiple tags in a single request before assigning them to contracts. **Required fields per tag:** `name` **Optional fields per tag:** - `colour_code` — hex colour string (e.g. `"#FF5733"`); defaults to empty string - `tag_entity_type` — `"Contract"` (default) or `"Clause"` **Responses:** - `201 Created` — all tags were created successfully; returns the created tag objects with their IDs - `400 Bad Request` — one or more tags already exist in the workspace, or the request body is invalid ' summary: Bulk Create Workspace Tags tags: - V2.1 Workspace Tags requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicBulkTagCreateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicBulkTagCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicBulkTagCreateRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/PublicBulkTagCreateResponse' description: Tags created successfully. '400': content: application/json: schema: type: object properties: detail: type: string code: type: string status_code: type: integer message: type: string description: Tag already exists in the workspace, or the request body is invalid. Malformed bodies are returned as field-keyed validation errors (via the global exception handler); duplicate tags use the standard SpotDraft error object with detail, code, status_code, and message. '401': description: Unauthorized — invalid or missing API credentials. x-tagGroup: Platform /api/v2/public/auth/roles/: get: operationId: v2_public_auth_roles_retrieve description: Returns the Roles that exist for the workspace whose credentials are used. summary: Get Active Roles tags: - V2 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalUserActiveRolesResponseList' examples: Example1: value: active_roles: - id: 1 name: Legal Team description: The in-house legal team responsible for TPP Reviews. - id: 2 name: NA Sales description: The North America Sales Team - id: 3 name: APAC Sales description: The Asia Pacific Sales Team (ex Japan) summary: Example 1 description: Success x-tagGroup: Platform /api/v2/public/auth/roles/{role_id}/members: post: operationId: v2_public_auth_roles_members_create description: ' Adds one or more users to the specified role within the current workspace. Use this when role membership is managed separately from user creation. ' summary: Add Role Member parameters: - in: path name: role_id schema: type: integer description: Use the [Get Active Roles](#tag/v21-users/GET/api/v2.1/public/auth/roles/) API to get the role ID. required: true tags: - V2 Users requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' examples: Example1: value: user_ids_to_add: - 4567 - 2345 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicRoleMembersAddRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicRoleMemberAddResponse' examples: Example1: value: - id: 6545 email: barack@obama.com name: Barack Obama designation: President summary: Example 1 description: Add Role Member x-tagGroup: Platform delete: operationId: v2_public_auth_roles_members_destroy description: ' Removes one or more users from the specified role within the current workspace. The role itself is not deleted. ' summary: Delete Role Member parameters: - in: path name: role_id schema: type: integer description: Use the [Get Active Roles](#tag/v21-users/GET/api/v2.1/public/auth/roles/) API to get the role ID. required: true tags: - V2 Users security: - ClientId: [] ClientSecret: [] responses: '204': description: Delete Role Member x-tagGroup: Platform /api/v2/public/auth/users/: get: operationId: v2_public_auth_users_retrieve description: ' Lists users in the organization backing the current workspace. Use `page`, `limit`, and `user_email` to page through results or narrow the list. ' summary: Get User List parameters: - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. - in: query name: user_email schema: type: string description: User email address for which that user list should be filtered. Please make sure that the value is url encoded. So for example, if the email address is `abc+123@xyz.com` the value passed should be `abc%2B123%40xyz.com`. tags: - V2 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicUserMinimalListResponse' examples: Example1: value: total_results: 2 page: 1 limit: 10 results: - id: 100 first_name: Sonia last_name: Sotomayor email: sonia_sotomayor@notreally.supremecourt.gov designation: Lawyer - id: 101 first_name: Elena last_name: Kagan email: elena_kagan@notreally.supremecourt.gov designation: Lead Lawyer summary: Example 1 description: User List x-tagGroup: Platform /api/v2/public/contract_types/: get: operationId: v2_public_contract_types_retrieve description: Returns the contract types available to the authenticated workspace. Use these ids when creating contracts, uploading third-party paper, or querying intake-form requirements. summary: Get Contract Type List tags: - V2 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractTypeListDomainModel' examples: Example1: value: - id: 100 name: General summary: Example 1 description: Contract Type List x-tagGroup: Workflow /api/v2/public/contract_types/{contract_type_id}/entities: get: operationId: v2_public_contract_types_entities_retrieve description: Get the list of contract type entities summary: List Contract Type Entities parameters: - in: path name: contract_type_id schema: type: integer description: ID of the Contract Type. required: true tags: - V2 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractTypeEntityListResponse' description: List Contract Type Entities x-tagGroup: Workflow /api/v2/public/contract_types/{contract_type_id}/intake_form/questionnaire/: get: operationId: v2_public_contract_types_intake_form_questionnaire_retrieve summary: Get Intake Form Questionnaire Details parameters: - in: path name: contract_type_id schema: type: integer description: ID of the Contract Type. required: true tags: - V2 Contract Types security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/IntakeFormQuestionnairePublicResponse' examples: Example1: value: display_label: Always she crime daughter task positive employee. Already mission popular ahead civil term. variable: Always she crime daughter task positive employee. Already mission popular ahead civil term. type: enum parent_type: dropdown options: - label: test option 1 value: test option 1 - label: test option 2 value: test option 2 - label: test option 3 value: test option 3 required: false default_value: null question: 'Today down gas marriage kid. South think reality always. Management effort ground machine reality when impact. Accept anyone picture him air.' attributes: null summary: Example 1 description: Intake Form Questionnaire Details x-tagGroup: Workflow /api/v2/public/contracts/: get: operationId: v2_public_contracts_retrieve description: 'Returns contracts visible to the current workspace. Use pagination, filter, and sort parameters to narrow the result set. Where supported by the version, contract metadata filters are also available.' summary: List Contracts parameters: - in: query name: filter__client_email_address schema: type: string description: Filters on the counter party email. Does an exact match. - in: query name: filter__client_name schema: type: string description: Filters on the counter party name. Does an exact match. - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractListResponseV2' examples: Example: value: total_results: 2 page: 1 limit: 10 results: - id: T-34211 created: '2021-05-20T04:52:04Z' created_by: Acme contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-1234 created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 - id: H-2342 created: '2021-05-10T04:42:00Z' created_by: Apple contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-4322 created_by_user_name: Sonia Sotomayor created_by_user_email: sonia@apple.com created_by_workspace: 1 description: Contract List x-tagGroup: Contracts post: operationId: v2_public_contracts_create description: "Creates a new contract from a SpotDraft template and returns the created contract.\n\nProvide the template\ \ id, contract data, and counterparty details needed to render the agreement. Use this endpoint when you want SpotDraft\ \ to generate the contract from structured data.\n\nCreates a new contract from a SpotDraft template and returns the\ \ created contract.\n\nProvide contract data, counterparty details, and any required signatories for the workflow.\n\ \n\nIn signatories list, sign_order should be set for either all items or no items of the list. Additionally when\n\ sign_order is set for all items of signatories list then at-least one counter party signatory user should also be\ \ part\nof the list.\n\nThe `contract_data` object must use **template field names as keys**. Each value should match\ \ the data type configured for that field in SpotDraft.\n\n| Field type | Expected value | Example |\n| ----------\ \ | -------------- | ------- |\n| String / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line\ \ breaks if needed | `\"Not applicable\\nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14`\ \ |\n| Boolean / checkbox | Boolean | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601\ \ timestamp | `\"2026-09-15T10:30:00Z\"` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select\ \ | Array of selected option values | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\"\ : number }` | `{ \"type\": \"USD\", \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\\ |YEARS\", \"value\": int }` | `{ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address\ \ fields | `{ \"line_one\": \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating\ \ group | Array of row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\":\ \ 5000}}]` |\n| File / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\"\ : \"security-schedule.pdf\", \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \ \ \"agreement_date\": \"2026-03-28\",\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"\ Acme Inc.\",\n \"billing_currency\": {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\":\ \ \"MONTHS\", \"value\": 12, \"days\": 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\"\ : [\"US\", \"IN\"],\n \"billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\"\ ,\n \"state\": \"NY\",\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\"\ : [\n {\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\"\ : \"Annual subscription\", \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\"\ : \"security-schedule.pdf\", \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Create Contract parameters: - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContract' examples: CreateContractRequest: value: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' renewal_review_at: '2026-09-15T10:30:00Z' customer_name: Acme Inc. billing_currency: type: USD value: 12000 subscription_term: type: MONTHS value: 12 days: 365 auto_renewal: true notice_period_days: 30 service_countries: - US - IN billing_address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' pricing_schedule: - milestone: Implementation amount: type: USD value: 5000 - milestone: Annual subscription amount: type: USD value: 7000 msa_attachment: file_name: security-schedule.pdf content_type: application/pdf counter_party_details: - is_individual: false organization_type: company organization_name: Acme Inc. poc_details: first_name: Avery last_name: Stone email: legal@acme.example organization_details: jurisdiction: Delaware address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example contract_name: Acme Master Services Agreement summary: Create contract request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContract' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContract' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractResponse' description: '' x-tagGroup: Contracts /api/v2/public/contracts/approvals/{contract_id}/: get: operationId: v2_public_contracts_approvals_retrieve summary: Get Contract Approvals parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract Approvals security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PublicContractApprovalListResponse' description: Success x-tagGroup: Contracts post: operationId: v2_public_contracts_approvals_create description: ' Create and send ad-hoc approvals for a contract. Notes: - This endpoint supports contracts on Approval V4. - Contracts configured for Approval V5 can fail with `SD_CONTRACT_APPROVALS_00001`. - The request can fail when another approval group is already in progress (`SD_CONTRACTS_00152`). ' summary: Create and Send Adhoc Approvals parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract Approvals requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' examples: Example1: value: approvals: - name: Legal Approval approver_user_id: 10324 notes: Please take a look need your approval. order: 1 - name: Finance team Approval approver_role_id: 60414 notes: Hi team need your approval on this contract. order: 2 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContractApprovalRequestList' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalApprovalListResponse' examples: Example1: value: - id: 1001 contract_id: 211270 name: Legal Approval approver_user_id: 10324 approver_role_id: null is_sent: true notes: Please take a look need your approval. order: 1 - id: 1002 contract_id: 211270 name: Finance team Approval approver_user_id: null approver_role_id: 60414 is_sent: true notes: Hi team need your approval on this contract. order: 2 summary: Example 1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Forbidden '404': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Not Found x-tagGroup: Contracts /api/v2/public/contracts/by_external_metadata/{external_metadata_id}: get: operationId: v2_public_contracts_by_external_metadata_retrieve description: 'Returns up to 50 contracts linked to the supplied external metadata id. Use this when you have an external system record id and need to find the related SpotDraft contracts.' summary: List Contracts by External Metadata ID parameters: - in: path name: external_metadata_id schema: type: string description: External Metadata ID of the Contract. This can be used to search for contracts based on an ID specified when creating the contract using the external API. required: true tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalContractV3' examples: Example: value: - - id: T-34211 created: '2021-05-20T04:52:04Z' created_by: Acme contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-1234 created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 - id: H-2342 created: '2021-05-10T04:42:00Z' created_by: Apple contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-4322 created_by_user_name: Sonia Sotomayor created_by_user_email: sonia@apple.com created_by_workspace: 1 description: Contract List x-tagGroup: Contracts /api/v2/public/contracts/embedded/contracts/{contract_id}/counter_party/: get: operationId: v2_public_contracts_embedded_contracts_counter_party_retrieve description: ' Returns a short-lived embedded signing URL for the specified counterparty email on the contract. Use this to render the counterparty signing experience inside your own product. ' summary: Get Counterparty Embedded URL parameters: - in: path name: contract_id schema: type: string pattern: ^[0-9]+$ required: true - in: query name: cp_email_id schema: type: string description: Email address of the CP for which the url needs to be returned. tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyEmbeddedUrlResponse' description: Success x-tagGroup: Contracts /api/v2/public/contracts/preview/: post: operationId: v2_public_contracts_preview_create description: "Generates a preview PDF using the supplied contract data without creating or updating a contract.\n\n\ Use this to validate how template variables render before you create the actual contract.\n\n\nThe `contract_data`\ \ object must use **template field names as keys**. Each value should match the data type configured for that field\ \ in SpotDraft.\n\n| Field type | Expected value | Example |\n| ---------- | -------------- | ------- |\n| String\ \ / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line breaks if needed | `\"Not applicable\\\ nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14` |\n| Boolean / checkbox | Boolean\ \ | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601 timestamp | `\"2026-09-15T10:30:00Z\"\ ` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select | Array of selected option values\ \ | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\": number }` | `{ \"type\": \"USD\"\ , \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\|YEARS\", \"value\": int }` | `{\ \ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address fields | `{ \"line_one\"\ : \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating group | Array of\ \ row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}}]` |\n| File\ \ / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \"agreement_date\": \"2026-03-28\"\ ,\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"Acme Inc.\",\n \"billing_currency\"\ : {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\": \"MONTHS\", \"value\": 12, \"days\"\ : 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\": [\"US\", \"IN\"],\n \"\ billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\",\n \"state\": \"NY\"\ ,\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\": [\n {\"milestone\"\ : \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\": \"Annual subscription\"\ , \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Generate Contract Preview tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' examples: PreviewRequest: value: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' customer_name: Acme Inc. subscription_term: type: MONTHS value: 12 days: 365 billing_currency: type: USD value: 12000 counter_party_details: - name: Acme Inc. email: legal@acme.example summary: Preview request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/GenerateContractPreviewRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: Preview PDF File x-tagGroup: Contracts /api/v2/public/contracts/upload_review_contracts/: post: operationId: v2_public_contracts_upload_review_contracts_create description: "\nThis API endpoint supports uploading Third-Party Paper (TPP) contracts and optionally allows for a review\ \ request.\n\n`contract_type_id` must be linked to a published Third-Party Paper upload workflow.\nIf this linkage\ \ is missing, the API can fail with `SD_CONTRACTS_00289`.\n\nIt accepts intake form data.\n\nThe Intake Form Data\ \ should have the following data types with the following output:\n\n \n \n \n\ \ \n \n \n \n\n \n \n\ \ \n \n\ \ \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \ \ \n \n\n
TypeData FormatSample
Duration\n {\"days\": int, \"type\": DurationKind, \"value\": int}
\n `DurationKind`:\ \ `DAYS` or `MONTHS` or `YEARS`\n
{\"days\": 180, \"type\": \"MONTHS\", \"value\": 6}
Date\n String formatted date in form YYYY-MM-dd\n\ \ \"2019-11-29\"
Dropdown\n \ \ Value as returned in options. Can be string or number.\n \"1\"
String\n A string value.\n \"Something\"\
Currency\n {\"type\": CurrencyCode, \"value\"\ : float}
\n Where currencyCode: \"INR\", \"USD\", \"SGD\", \"EUR\"\n
{\"\ type\": \"INR\", \"value\": 15000.00}
Check-box\n \ \ A boolean value\n true
text-box\n\ \ A string value. Can be multi-line\n \"Not Applicable\\nBecause...\"
number\n A numeric value. Can be int or float\n 4 or 3.14
\n\n\n### Sample Intake Form Data:\n\ ```\n{\n \"term\": {\"days\": 180, \"type\": \"MONTHS\", \"value\": 6},\n \"notes\": \"Not Applicable\",\n \ \ \"capacity\": 15,\n \"setup_fee\": {\"type\": \"INR\", \"value\": 30000.00},\n \"start_date\": \"2019-11-29\"\ ,\n \"yes_discounts\": false,\n \"payment_method\": \"1\",\n \"suggestions\": \"No suggestions\"\n}\n```\n" summary: Upload Contract for Review tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' examples: UploadForReviewRequest: value: contract_name: Acme Vendor Paper contract_type_id: 1 file_name: vendor-paper.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example reviewer: org_user_email: reviewer@spotdraft.example description: Please review the indemnity clause and payment terms. intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice summary: Upload for review request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractUploadForReviewRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractResponseV2' examples: Example1: value: id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/upload_sign_contracts/: post: operationId: v2_public_contracts_upload_sign_contracts_create description: "\nThis API can be used to create a new Third-Party Paper (TPP) contract for signing.\nUse this API when\ \ you want to upload a new contract and send it for signing.\n\n`contract_type_id` must be linked to a published Third-Party\ \ Paper upload workflow.\nIf this linkage is missing, the API can fail with `SD_CONTRACTS_00289`.\n\nIt accepts intake\ \ form data.\n\nThe Intake Form Data should have the following data types with the following output:\n\n \ \ \n \n \n \n \n \n \ \ \n\n \n \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n \n \n\ \ \n \n \n\ \ \n \n \n \n\ \ \n \n \n \n \n \n \n \n \n \n \n\n
TypeData FormatSample
Duration\n {\"days\": int, \"type\": DurationKind,\ \ \"value\": int}
\n `DurationKind`: `DAYS` or `MONTHS` or `YEARS`\n
{\"\ days\": 180, \"type\": \"MONTHS\", \"value\": 6}
Date\n \ \ String formatted date in form YYYY-MM-dd\n \"2019-11-29\"
Dropdown\n Value as returned in options. Can be string\ \ or number.\n \"1\"
String\n \ \ A string value.\n \"Something\"
Currency\n {\"type\": CurrencyCode, \"value\": float}
\n Where currencyCode: \"INR\"\ , \"USD\", \"SGD\", \"EUR\"\n
{\"type\": \"INR\", \"value\": 15000.00}
Check-box\n A boolean value\n true
text-box\n A string value. Can be multi-line\n \"\ Not Applicable\\nBecause...\"
number\n A numeric value.\ \ Can be int or float\n 4 or 3.14
\n\ \n\n### Sample Intake Form Data:\n```\n{\n \"term\": {\"days\": 180, \"type\": \"MONTHS\", \"value\": 6},\n \ \ \"notes\": \"Not Applicable\",\n \"capacity\": 15,\n \"setup_fee\": {\"type\": \"INR\", \"value\": 30000.00},\n\ \ \"start_date\": \"2019-11-29\",\n \"yes_discounts\": false,\n \"payment_method\": \"1\",\n \"suggestions\"\ : \"No suggestions\"\n}\n```\n" summary: Upload Contract for Signature tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' examples: UploadForSignatureRequest: value: contract_name: Acme Corporation NDA contract_type_id: 1 file_name: Acme_nda.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice business_user_email: owner@spotdraft.example summary: Upload for signature request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractUploadForSignatureRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ContractResponseV2' examples: Example1: value: id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/webhooks/re_trigger_latest/: post: operationId: v2_public_contracts_webhooks_re_trigger_latest_create description: "\n Re-trigger the last webhook call made for all given contracts.\n " summary: Re-trigger Contract Webhooks tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' examples: Example1: value: contract_ids: - 1 - 2 - 3 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' multipart/form-data: schema: $ref: '#/components/schemas/RetriggerLatestWebhooksRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: object properties: message: type: string default: Success description: Success '404': content: application/json: schema: type: object properties: detail: type: string default: Not Found description: Not Found x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/download: post: operationId: v2_public_contracts_download_create description: 'Generates and returns the latest downloadable copy of the contract. Use this when you need the contract file itself rather than a temporary download URL.' summary: Download Contract File parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: PDF copy of the Contract x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/download_link: post: operationId: v2_public_contracts_download_link_create description: 'Returns a temporary download URL for the contract file. Optionally provide a `format` in the request body (`PDF`, `DOCX`, or `DOCX_WITH_FALLBACK_TO_PDF`). If omitted, the response defaults to `PDF`.' summary: Create Contract Download Link parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/DownloadLinkRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DownloadLinkRequest' multipart/form-data: schema: $ref: '#/components/schemas/DownloadLinkRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DownloadUrl' examples: Example: value: url: https://storage.googleapis.com/some/path?signature=ASDASD file_name: Standard NDA a3b2.pdf current_version_id: 1 description: Download Link x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/intake_form/response: patch: operationId: v2_public_contracts_intake_form_response_partial_update description: ' Update intake-form data for the uploaded contract. For information about construction of payload, refer to `Sample Intake Form Data` in this [section](#tag/v21-contract-apis/POST/api/v2.1/public/contracts/upload_sign_contracts/). Get the Intake form questionnaire details using the [Get Intake Form Questionnaire](#tag/v21-contract-types/GET/api/v2.1/public/contract_types/intake_form_questionnaire/) API. The request is merged as a partial update into the latest intake-form response. Unknown keys are currently accepted, so clients should send only questionnaire field names. ' summary: Edit Intake Form Response parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedIntakeFormData' examples: Example1: value: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedIntakeFormData' multipart/form-data: schema: $ref: '#/components/schemas/PatchedIntakeFormData' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalQuestionnaireResponseDomainModel' examples: Example1: value: data: name: Admin is_individual: false created: '2009-08-06T00:00:00Z' summary: Example 1 description: Intake form response details x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/key_pointers: get: operationId: v2_public_contracts_key_pointers_retrieve description: 'Returns **contract metadata values** for the requested contract. Use this when you already have a specific contract id and need the metadata captured on that contract. This is different from the metadata-definition APIs, which list field definitions for a workspace or contract type. The underlying API paths still use legacy key-pointer naming for backward compatibility. When the `Enforce-User-Scoping` header is `true`, only metadata values for contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Metadata Values parameters: - in: path name: composite_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract Metadata Values security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerMinimalListResponse' description: Success x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/notes: get: operationId: v2_public_contracts_notes_retrieve description: 'Returns all **notes** for the requested contract. When the `Enforce-User-Scoping` header is `true`, only notes for contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Notes parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract Notes security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractNoteMinimalResponse' examples: Example1: value: id: 1 text: sample note for contract note_tag: sample_tag summary: Example 1 description: Notes x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/send_to_counterparties: post: operationId: v2_public_contracts_send_to_counterparties_create description: 'Sends the contract to counterparties for their next action in the workflow. Use this after preparing the contract when you want SpotDraft to trigger the external recipient flow.' summary: Send Contract to Counterparties parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/SendToCounterparty' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SendToCounterparty' multipart/form-data: schema: $ref: '#/components/schemas/SendToCounterparty' required: true security: - ClientId: [] ClientSecret: [] responses: '200': description: Contract sent to counterparties. x-tagGroup: Contracts /api/v2/public/contracts/{composite_id}/status: get: operationId: v2_public_contracts_status_retrieve description: 'Returns the display **status** and **contract name** for the requested contract. When the `Enforce-User-Scoping` header is `true`, only contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Status parameters: - in: path name: composite_id schema: type: string pattern: ^[HT\-0-9]+$ required: true - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractStatus' examples: Example: value: contract_status: EXECUTED contract_name: Service Agreement - Acme Corp description: Contract Status x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/comments/: get: operationId: v2_public_contracts_comments_retrieve summary: Get Comments in Contract Activity Log. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2 Contract Activity security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalCommentListResponse' examples: Example1: value: page: 1 limit: 10 total_results: 2 results: - id: 1001 contract_id: 211270 comment: This is sample comment. replies: - id: 2021 comment: This is a sample reply. - id: 1002 contract_id: 211270 comment: Hi team this contract need your review. replies: [] summary: Example 1 description: Success x-tagGroup: Contracts post: operationId: v2_public_contracts_comments_create summary: Add Comment to Contract Activity Log. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2 Contract Activity requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' examples: Example1: value: comment: Hey !!@12310!! please review this contract. summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContractCommentRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalCommentResponse' examples: Example1: value: id: 1001 contract_id: 211270 comment: Hey test.user@spotdraft.com please review this contract. replies: [] summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/contract_data: patch: operationId: v2_public_contracts_contract_data_partial_update description: "Updates the structured contract data used to populate the contract template.\n\nUse this to refresh template\ \ field values before the contract is finalized. Historic contracts are not supported for this endpoint.\n\n\nThe\ \ `contract_data` object must use **template field names as keys**. Each value should match the data type configured\ \ for that field in SpotDraft.\n\n| Field type | Expected value | Example |\n| ---------- | -------------- | -------\ \ |\n| String / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line breaks if needed | `\"Not\ \ applicable\\nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14` |\n| Boolean / checkbox\ \ | Boolean | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601 timestamp | `\"2026-09-15T10:30:00Z\"\ ` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select | Array of selected option values\ \ | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\": number }` | `{ \"type\": \"USD\"\ , \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\|YEARS\", \"value\": int }` | `{\ \ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address fields | `{ \"line_one\"\ : \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating group | Array of\ \ row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}}]` |\n| File\ \ / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \"agreement_date\": \"2026-03-28\"\ ,\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"Acme Inc.\",\n \"billing_currency\"\ : {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\": \"MONTHS\", \"value\": 12, \"days\"\ : 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\": [\"US\", \"IN\"],\n \"\ billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\",\n \"state\": \"NY\"\ ,\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\": [\n {\"milestone\"\ : \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\": \"Annual subscription\"\ , \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Update Contract Data parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' examples: Example1: value: data: term: days: 180 type: MONTHS value: 6 notes: Not Applicable capacity: 15 setup_fee: type: INR value: 30000.0 start_date: '2019-11-29' yes_discounts: false payment_method: '1' suggestions: No suggestions summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/PatchedContractDataUpdateRequest' examples: Example1: value: data: term: days: 180 type: MONTHS value: 6 notes: Not Applicable capacity: 15 setup_fee: type: INR value: 30000.0 start_date: '2019-11-29' yes_discounts: false payment_method: '1' suggestions: No suggestions summary: Example 1 description: Updated Data '400': content: application/json: schema: type: object properties: detail: type: string default: Contract cannot be updated because it has been executed. code: type: string default: SD_PUBLIC_00009 description: Contract cannot be updated in its current status x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/contract_version/: post: operationId: v2_public_contracts_contract_version_create summary: Upload Contract Version. parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2 Contract Versions requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' examples: Example1: value: document_name: OneNDA.pdf document_base_64: OneNDA document content in bytes converted to base64 string. collect_approvals: true summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicUploadContractVersionRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': description: Success x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/download_docx/: post: operationId: v2_public_contracts_download_docx_create description: ' Downloads a DOCX version of the contract. If the current version does not have a DOCX artifact, SpotDraft returns the last available DOCX version for the contract. ' summary: Download Docx for a Contract parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicDownloadContractDocxRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: DOCX copy of the Contract x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/invite/: post: operationId: v2_public_contracts_invite_create description: ' Invites specific users or roles to collaborate on the contract. This grants contract-level access in addition to any access already inherited from the contract type. ' summary: Invite Users & Roles parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V2 Contract Invitations requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' examples: Example1: value: items: - role_id: 34 permission_name: CONTRACT.READ note: Inviting Legal team with contract read access. summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalContractInviteRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractInviteResponse' examples: Example1: value: impacted_users: [] impacted_roles: - id: 34 name: Legal description: Legal team summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/key_pointers/{contract_key_pointer_id}: patch: operationId: v2_public_contracts_key_pointers_partial_update description: Updates the specified contract metadata value. The underlying API path still uses legacy key-pointer naming for backward compatibility. summary: Update Contract Metadata Value parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: path name: contract_key_pointer_id schema: type: string description: ID of the contract key pointer value. required: true tags: - V2 Contract Metadata Values requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedContractKeyPointerUpdateRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractKeyPointerMinimalResponse' examples: Example1: value: id: 1 value: sample label: Sample Label filed_name: sample_field_name data_type: string format_option: data: sample format option summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/notes/{note_id}: put: operationId: v2_public_contracts_notes_update description: Returns the updated note summary: Update Contract Note parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true - in: path name: note_id schema: type: string description: ID of the note. required: true - in: header name: user-email schema: type: string description: The email address of the user to act as (when using client-secret authentication). This header attributes actions taken using the API to the given user. tags: - V2 Contract Notes requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ContractNoteUpdateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractNoteMinimalResponse' examples: Example1: value: id: 1 text: sample note for contract note_tag: sample_tag summary: Example 1 description: Notes x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/questionnaire/responses/: get: operationId: v2_public_contracts_questionnaire_responses_retrieve summary: Get Questionnaire Response parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: questionnaire_type schema: type: string description: 'Enum: `INTAKE_FORM/TEMPLATE`. Type of the questionnaire for which response needs to be returned.' required: true tags: - V2 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractQuestionnairePublicResponse' examples: Example1: value: questionnaire_response_data: department: product respondents: - created_at: '2023-06-14T10:46:15.205587Z' created_by: Mike Reed org_name: Acme Inc. summary: Example 1 description: Success x-tagGroup: Contracts /api/v2/public/contracts/{contract_id}/recipients/recipient_link/: get: operationId: v2_public_contracts_recipients_recipient_link_retrieve summary: Get Recipient Link parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true - in: query name: recipient_email schema: type: string description: Email of the recipient for whom the link needs to be generated. required: true tags: - V2 Recipients security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalGetRecipientLinkResponse' description: Success x-tagGroup: Contracts /api/v2/public/counter_parties/: get: operationId: v2_public_counter_parties_list description: Get the list of counterparties summary: List Counterparties parameters: - in: query name: filter__client_email_address schema: type: string description: Filters on the counter party email. Does an exact match. - in: query name: filter_custom__ schema: type: string description: 'Filters all the counterparties which have the custom field values present. Example: filter_custom__vendor_id=1234' - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2 Counterparties security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterpartyListAPIResponse' examples: Example1: value: page: 1 limit: 10 total_results: 50 results: - id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Counterparty x-tagGroup: Platform post: operationId: v2_public_counter_parties_create description: "\nThis method takes in counter party details to be used for counter Party creation\n and returns status\ \ code 201 along with the counterparty workspace id if successfully created.\n" summary: Create Counterparty tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' examples: Example1: value: is_individual: false organization_type: Private Limited organization_name: Acme Corporation contact_name: Mike Reed contact_email: Mike_reed@yahoo.com brand_name: Acme Corporation primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateCounterPartyAPIRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Counterparty x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}: get: operationId: v2_public_counter_parties_retrieve_by_id description: Get the details of a counterparty by its ID summary: Get Counterparty parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Counterparty x-tagGroup: Platform patch: operationId: v2_public_counter_parties_partial_update description: Update counterparty details summary: Update Counterparty parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' examples: Example1: value: name: Susan Ervin brand_name: Susan's Org custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyUpdateRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAPIResponse' examples: Example1: value: id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 summary: Example 1 description: Update Counterparty x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}/addresses/: get: operationId: v2_public_counter_parties_addresses_retrieve description: Get the list of counterparty addresses summary: List Counterparty Addresses parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2 Counterparties security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterpartyListAddressResponse' examples: Example1: value: page: 1 limit: 10 total_results: 50 results: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: List Counterparty Addresses x-tagGroup: Platform post: operationId: v2_public_counter_parties_addresses_create description: Create counterparty address summary: Create Counterparty Address parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' examples: Example1: value: line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: test@yopmail.com phone: '1234567890' country_iso_code: US summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateCounterPartyAddressRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAddressResponse' examples: Example1: value: id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: Create Counterparty Address x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}/addresses/{address_id}/: patch: operationId: v2_public_counter_parties_addresses_partial_update description: Update counterparty address summary: Update Counterparty Address parameters: - in: path name: address_id schema: type: integer description: ID of the Counterparty address. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' examples: Example1: value: city_name: Cincinnati state_name: Ohio country_iso_code: IN zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyAddressUpdateRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyAddressResponse' examples: Example1: value: id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 summary: Example 1 description: Update Counterparty Address x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}/contacts: get: operationId: v2_public_counter_parties_contacts_retrieve description: Get the list of counterparty contacts summary: List Counterparty Contacts parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V2 Counterparties security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactsListAPIResponse' examples: Example1: value: page: 1 limit: 10 total_results: 1 results: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: List Counterparty Contacts x-tagGroup: Platform post: operationId: v2_public_counter_parties_contacts_create description: Create Counterparty Contact summary: Create Counterparty Contact parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' examples: Example1: value: name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCounterpartyContactCreateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactResponse' examples: Example1: value: id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: Create Counterparty Contact x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}/contacts/bulk/: patch: operationId: v2_public_counter_parties_contacts_bulk_partial_update description: Bulk Update counterparty contacts summary: Bulk Update Counterparty Contacts parameters: - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' examples: Example1: value: contacts: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactBulkUpdateListRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalCounterpartyContactBulkUpdateResponse' description: Bulk Update Counterparty Contacts x-tagGroup: Platform /api/v2/public/counter_parties/{counterparty_id}/contacts/{contact_id}/: patch: operationId: v2_public_counter_parties_contacts_partial_update description: Update counterparty contact summary: Update Counterparty Contact parameters: - in: path name: contact_id schema: type: integer description: ID of the Counterparty contact. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' examples: Example1: value: name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalCounterpartyContactUpdateRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/CounterPartyContactResponse' examples: Example1: value: id: 100 name: Susan Ervin email: dummy@email.com is_primary: false summary: Example 1 description: Update Counterparty Contact x-tagGroup: Platform delete: operationId: v2_public_counter_parties_contacts_destroy description: Delete counterparty contact summary: Delete Counterparty Contact parameters: - in: path name: contact_id schema: type: integer description: ID of the Counterparty contact. required: true - in: path name: counterparty_id schema: type: integer description: ID of the Counterparty. required: true tags: - V2 Counterparties security: - ClientId: [] ClientSecret: [] responses: '204': description: Delete Counterparty Contact x-tagGroup: Platform /api/v2/public/key_pointers/: get: operationId: v2_public_key_pointers_retrieve description: Lists the contract metadata definitions configured for the workspace. These definitions describe which metadata fields exist; they do not return values for a specific contract. The underlying API paths still use legacy key-pointer naming for backward compatibility. summary: List Contract Metadata Definitions parameters: - in: query name: contract_type_id schema: type: integer description: ID of the Contract type. required: true - in: query name: is_external schema: type: boolean description: Set to True to get only key pointers from external sections. tags: - V2 Contract Metadata Definitions security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/KeyPointerListDomainModel' description: Contract metadata x-tagGroup: Workflow /api/v2/public/organizations/entities/: get: operationId: v2_public_organizations_entities_retrieve description: Gets all the entity associated with the Organization summary: Get Organization Entities tags: - V2 Organizations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationEntityListDomainModel' description: Entities x-tagGroup: Platform post: operationId: v2_public_organizations_entities_create description: Create an entity associated with the Organization summary: Create Entity tags: - V2 Organizations requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' examples: Example1: value: name: Acme Inc. reference_id: US1 jurisdiction_iso_code: US organization_type_id: 1 primary_address: city_name: Houston state_name: Texas zipcode: '77020' line_one: 3659 Burwell Heights Road country_iso_code: US is_primary: false summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateOrganizationEntityRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/OrganizationEntityDomainModel' examples: Example1: value: id: 1045 name: Acme Inc. reference_id: US20 jurisdiction: id: 234 name: United States iso_code: US organization_type: id: 1 name: Private Company primary_address: id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US is_primary: true summary: Example 1 description: Created x-tagGroup: Platform /api/v2/public/organizations/types/: get: operationId: v2_public_organizations_types_retrieve description: Gets all the organization types available for a jurisdiction summary: Get Organization Types parameters: - in: query name: jurisdiction_iso_code schema: type: string description: The ISO-3166-1 Alpha-2 code of the jurisdiction associated with this organization. Any value passed here is overrides `jurisdiction`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). tags: - V2 Organizations security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/OrganizationTypeListDomainModel' description: Organization Type List '400': content: application/json: schema: type: object properties: detail: type: string status_code: type: integer code: type: string message: type: string description: Bad Request x-tagGroup: Platform /api/v2/public/supported_documents/{contract_id}/: post: operationId: v2_public_supported_documents_create summary: Upload Supported Documents for a Given Contract parameters: - in: path name: contract_id schema: type: string description: ID of the Contract. Should be of the form T-123 or H-123. T stands for Template contracts and H stands for Historical contracts. required: true tags: - V2 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' examples: Example1: value: name: Acme Corporation Related Document file_name: Acme Related Document.pdf file_base64: base64 encoded string of the file content summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' multipart/form-data: schema: $ref: '#/components/schemas/PublicSupportedDocumentCreateAPIRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/SupportedDocumentResponse' examples: Example1: value: id: '199' name: Acme Corporation Related Document created: '2022-10-10' summary: Example 1 description: Success '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Forbidden x-tagGroup: Contracts /api/v2/public/templates/: get: operationId: v2_public_templates_list description: ' Lists published templates available to the workspace tied to the API credentials. Use query parameters to filter by tags, counterparty type, archive state, and multipart support. ' summary: Get Template List parameters: - in: query name: cp_types schema: type: string description: 'The type of Counterparty that can be added to contracts created from this template. Must be either `Organisation` or `Individual`. This value will be used to filter the list of templates returned by the API. The template will be having one or more CP that match cp_types.' - in: query name: cp_types_all schema: type: boolean default: false description: 'When a template has multiple counterparties, whether all counterparties should match the CP type given in cp_types. False by default' - in: query name: exclude_multi_party schema: type: boolean default: false description: Whether templates that support multiple counterparties should be excluded. - in: query name: include_archived schema: type: boolean default: false description: Whether archived templates should be included in the results. - in: query name: tags schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the Template tags are a subset of the tags passed will be returned.' - in: query name: tags_all schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the tags passed are a subset of the Template tags will be returned.' tags: - V2 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateListResponse' examples: Example1: value: items: - id: 1 name: Basic Non Disclosure Agreement contract_type_id: 10 summary: Example 1 description: Template List x-tagGroup: Workflow /api/v2/public/templates/{template_id}/: get: operationId: v2_public_templates_retrieve_by_id description: ' Returns the template details available to the current workspace, including workspace-specific access data. Use this before update calls when you need the current configuration state. ' summary: Get Template Details parameters: - in: path name: template_id schema: type: integer description: The ID of the template. required: true tags: - V2 Templates security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateResponseV2' examples: Example1: value: id: 1 name: Basic Non Disclosure Agreement tags: - Tag1 - Tag2 contract_type_id: 10 summary: Example 1 description: Template Details x-tagGroup: Workflow patch: operationId: v2_public_templates_partial_update description: ' Updates the workspace-specific data stored against a template. Use this to change editable template attributes without modifying the underlying contract type. ' summary: Update Template Data parameters: - in: path name: template_id schema: type: integer description: The ID of the template. required: true tags: - V2 Templates requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' examples: Example1: value: tags: - Tag1 - Tag2 summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedTemplateUpdateRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateResponseV2' examples: Example1: value: id: 1 name: Basic Non Disclosure Agreement tags: - Tag1 - Tag2 contract_type_id: 10 summary: Example 1 description: Updated Template x-tagGroup: Workflow /api/v2/public/templates/{template_id}/metadata: get: operationId: v2_public_templates_metadata_retrieve description: ' Gets the list of fields required to create a contract with a given template. The list of attributes returned define how a `contract_data` payload is to be constructed for the [V2 Create Contract](#tag/v2-contract-apis/POST/api/v2/public/contracts/) request. ' summary: Get Template Metadata parameters: - in: path name: template_id schema: type: string pattern: ^[0-9]+$ required: true tags: - V2 Templates security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateMetaDataResponseV2' examples: Example1: value: {} summary: Example 1 description: Template Metadata x-tagGroup: Workflow /api/v2/public/user_tasks/: post: operationId: v2_public_user_tasks_create description: ' This API can be used to create User Tasks List for Task Creation on SpotDraft. Validation notes: - Exactly one of `due_date` or `due_date_key_pointer_id` should be provided. ' summary: V2 Create User Tasks List tags: - V2 Tasks and Reminders requestBody: content: application/json: schema: $ref: '#/components/schemas/UserTaskCreateRequest' examples: Example1: value: title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS summary: Example 1 application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/UserTaskCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/UserTaskCreateRequest' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/UserTaskPublicResponse' description: V2 User Tasks with Reminders List '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Bad Request '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. status_code: type: integer description: HTTP status code. code: type: string description: Application error code. message: type: string description: Human-readable message. required: - detail - status_code - code - message description: Forbidden x-tagGroup: Platform /api/v1/public/auth/roles: get: operationId: v1_public_auth_roles_retrieve description: ' Lists the active roles configured for the workspace tied to the API credentials. Use these ids in user-create and user-update requests. ' summary: Get Roles tags: - V1 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalUserActiveRole' examples: Example: value: - - id: 1 name: Admin - id: 2 name: Signatory description: List of Roles x-tagGroup: Platform /api/v1/public/auth/users: get: operationId: v1_public_auth_users_retrieve description: ' Lists users in the workspace linked to the API credentials. Use `page`, `limit`, and `user_email` to page through results or narrow to a specific user. ' summary: Get User List parameters: - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. - in: query name: user_email schema: type: string description: User email address for which that user list should be filtered. Please make sure that the value is url encoded. So for example, if the email address is `abc+123@xyz.com` the value passed should be `abc%2B123%40xyz.com`. tags: - V1 Users security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalUserPaginated' examples: Example: value: total_results: 2 page: 1 limit: 10 results: - first_name: Sonia last_name: Sotomayor roles: - Admin - Signatory username: sonia_sotomayor@notreally.supremecourt.gov created: '2009-08-06T00:00:00Z' modified: '2009-08-06T00:00:00Z' - first_name: Elena last_name: Kagan roles: - Admin - Signatory username: elena_kagan@notreally.supremecourt.gov created: '2010-08-05T00:00:00Z' modified: '2010-08-05T00:00:00Z' description: User List '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Invalid page number or page limit too big. description: Invalid pagination parameters. x-tagGroup: Platform post: operationId: v1_public_auth_users_create description: ' Creates a user in the client account and assigns the requested roles. If the user already exists in a deactivated state, the same endpoint can reactivate that user. ' summary: Create User tags: - V1 Users requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalUserCreate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalUserCreate' multipart/form-data: schema: $ref: '#/components/schemas/ExternalUserCreate' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalUser' examples: Example: value: first_name: Sonia last_name: Sotomayor roles: - Admin - Signatory username: sonia_sotomayor@notreally.supremecourt.gov created: '2009-08-06T00:00:00Z' modified: '2009-08-06T00:00:00Z' description: Created User '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Invalid request body or user already exists. description: Invalid request body. x-tagGroup: Platform /api/v1/public/auth/users/{user_id}: patch: operationId: v1_public_auth_users_partial_update description: ' Updates the roles assigned to an existing workspace user. Use this to add or remove role access without recreating the user. ' summary: Update User Roles parameters: - in: path name: user_id schema: type: integer description: ID of the user as returned by the List Users API. required: true tags: - V1 Users requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedExternalUserEdit' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedExternalUserEdit' multipart/form-data: schema: $ref: '#/components/schemas/PatchedExternalUserEdit' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalUser' examples: Example: value: first_name: Sonia last_name: Sotomayor roles: - Admin - Signatory username: sonia_sotomayor@notreally.supremecourt.gov created: '2009-08-06T00:00:00Z' modified: '2009-08-06T00:00:00Z' description: Updated User '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Invalid role ID. description: Invalid role update request. x-tagGroup: Platform delete: operationId: v1_public_auth_users_destroy description: ' Deactivates a workspace user by id. The user remains part of the historical audit trail but can no longer act in the workspace. ' summary: Deactivate a User parameters: - in: path name: user_id schema: type: integer description: ID of the user as returned by the List Users API. required: true tags: - V1 Users security: - ClientId: [] ClientSecret: [] responses: '204': description: No response body '400': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: User already deactivated. description: Invalid request. x-tagGroup: Platform /api/v1/public/contracts: get: operationId: v1_public_contracts_retrieve description: ' Returns contracts visible to the current workspace. Use pagination parameters to step through the result set. ' summary: List Contracts parameters: - in: query name: limit schema: type: integer default: 10 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. tags: - V1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractV3List' examples: Example: value: total_results: 2 page: 1 limit: 10 results: - id: 1234 created: '2021-05-20T04:52:04Z' created_by: Acme contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-1234 created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 - id: 4322 created: '2021-05-10T04:42:00Z' created_by: Apple contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA contract_type_id: 100 reference_id: SD-4322 created_by_user_name: Sonia Sotomayor created_by_user_email: sonia@apple.com created_by_workspace: 1 description: Contract List x-tagGroup: Contracts post: operationId: v1_public_contracts_create description: "Creates a new contract from a SpotDraft template and returns the created contract.\n\nProvide contract\ \ data, counterparty details, and any required signatories for the workflow.\n\n\nIn signatories list, sign_order\ \ should be set for either all items or no items of the list. Additionally when\nsign_order is set for all items of\ \ signatories list then at-least one counter party signatory user should also be part\nof the list.\n\nThe `contract_data`\ \ object must use **template field names as keys**. Each value should match the data type configured for that field\ \ in SpotDraft.\n\n| Field type | Expected value | Example |\n| ---------- | -------------- | ------- |\n| String\ \ / text | String | `\"Acme Inc.\"` |\n| Multi-line text | String with line breaks if needed | `\"Not applicable\\\ nCustomer redlines pending\"` |\n| Number | Integer or decimal | `15` or `3.14` |\n| Boolean / checkbox | Boolean\ \ | `true` |\n| Date | `YYYY-MM-DD` | `\"2026-03-28\"` |\n| Datetime | ISO 8601 timestamp | `\"2026-09-15T10:30:00Z\"\ ` |\n| Dropdown | Selected option value | `\"annual_invoice\"` |\n| Multi-select | Array of selected option values\ \ | `[\"US\", \"IN\"]` |\n| Currency | `{ \"type\": \"\", \"value\": number }` | `{ \"type\": \"USD\"\ , \"value\": 12000 }` |\n| Duration | `{ \"days\": int, \"type\": \"DAYS\\|MONTHS\\|YEARS\", \"value\": int }` | `{\ \ \"days\": 180, \"type\": \"MONTHS\", \"value\": 6 }` |\n| Address | Object with address fields | `{ \"line_one\"\ : \"350 Fifth Avenue\", \"city\": \"New York\", \"country\": \"United States\" }` |\n| Repeating group | Array of\ \ row objects | `[{\"milestone\": \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}}]` |\n| File\ \ / attachment | File object or uploaded file reference supported by the workflow | `{ \"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\" }` |\n\nSample contract data:\n\n```json\n{\n \"agreement_date\": \"2026-03-28\"\ ,\n \"renewal_review_at\": \"2026-09-15T10:30:00Z\",\n \"customer_name\": \"Acme Inc.\",\n \"billing_currency\"\ : {\"type\": \"USD\", \"value\": 12000},\n \"subscription_term\": {\"type\": \"MONTHS\", \"value\": 12, \"days\"\ : 365},\n \"auto_renewal\": true,\n \"notice_period_days\": 30,\n \"service_countries\": [\"US\", \"IN\"],\n \"\ billing_address\": {\n \"line_one\": \"350 Fifth Avenue\",\n \"city\": \"New York\",\n \"state\": \"NY\"\ ,\n \"country\": \"United States\",\n \"zipcode\": \"10118\"\n },\n \"pricing_schedule\": [\n {\"milestone\"\ : \"Implementation\", \"amount\": {\"type\": \"USD\", \"value\": 5000}},\n {\"milestone\": \"Annual subscription\"\ , \"amount\": {\"type\": \"USD\", \"value\": 7000}}\n ],\n \"msa_attachment\": {\"file_name\": \"security-schedule.pdf\"\ , \"content_type\": \"application/pdf\"}\n}\n```\n" summary: Create Contract tags: - V1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/ExternalCreateContract' examples: CreateContractRequest: value: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' renewal_review_at: '2026-09-15T10:30:00Z' customer_name: Acme Inc. billing_currency: type: USD value: 12000 subscription_term: type: MONTHS value: 12 days: 365 auto_renewal: true notice_period_days: 30 service_countries: - US - IN billing_address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' pricing_schedule: - milestone: Implementation amount: type: USD value: 5000 - milestone: Annual subscription amount: type: USD value: 7000 msa_attachment: file_name: security-schedule.pdf content_type: application/pdf counter_party_details: - is_individual: false organization_type: company organization_name: Acme Inc. poc_details: first_name: Avery last_name: Stone email: legal@acme.example organization_details: jurisdiction: Delaware address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example contract_name: Acme Master Services Agreement summary: Create contract request application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ExternalCreateContract' multipart/form-data: schema: $ref: '#/components/schemas/ExternalCreateContract' required: true security: - ClientId: [] ClientSecret: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/ExternalContractV3' description: '' x-tagGroup: Contracts /api/v1/public/contracts/by_external_metadata/{external_metadata_id}: get: operationId: v1_public_contracts_by_external_metadata_retrieve description: 'Returns up to 50 contracts linked to the supplied external metadata id. Use this when you have an external system record id and need to find the related SpotDraft contracts.' summary: List Contracts by External Metadata ID parameters: - in: path name: external_metadata_id schema: type: string description: External Metadata ID of the Contract. This can be used to search for contracts based on an ID specified when creating the contract using the external API. required: true tags: - V1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/ExternalContractV3' examples: Example: value: - - id: 1234 created: '2021-05-20T04:52:04Z' created_by: Elena Kagan contract_link: https://app.spotdraft.com/contracts/v2/1234 contract_status: REDLINING contract_name: Standard NDA counter_party_name: Microsoft contract_type_name: Standard NDA reference_id: SD-1234 - id: 4322 created: '2021-05-10T04:42:00Z' created_by: Sonia Sotomayor contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED contract_name: Standard NDA - With Apple counter_party_name: Apple Inc. contract_type_name: Standard NDA reference_id: SD-4322 description: Contract List x-tagGroup: Contracts /api/v1/public/contracts/{contract_id}/download: post: operationId: v1_public_contracts_download_create description: 'Generates and returns the latest downloadable copy of the contract. Use this when you need the contract file itself rather than a temporary download URL.' summary: Download Contract File parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: type: string format: binary description: PDF copy of the Contract x-tagGroup: Contracts /api/v1/public/contracts/{contract_id}/download_link: post: operationId: v1_public_contracts_download_link_create description: 'Returns a temporary download URL for the contract file. Optionally provide a `format` in the request body (`PDF`, `DOCX`, or `DOCX_WITH_FALLBACK_TO_PDF`). If omitted, the response defaults to `PDF`.' summary: Create Contract Download Link parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/DownloadLinkRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DownloadLinkRequest' multipart/form-data: schema: $ref: '#/components/schemas/DownloadLinkRequest' security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/DownloadUrl' examples: Example: value: url: https://storage.googleapis.com/some/path?signature=ASDASD file_name: Standard NDA a3b2.pdf current_version_id: 1 description: Download Link x-tagGroup: Contracts /api/v1/public/contracts/{contract_id}/send_to_counterparties: post: operationId: v1_public_contracts_send_to_counterparties_create description: Returns status code 200 if successful summary: Send Contract to Counterparties parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V1 Contract APIs requestBody: content: application/json: schema: $ref: '#/components/schemas/SendToCounterparty' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/SendToCounterparty' multipart/form-data: schema: $ref: '#/components/schemas/SendToCounterparty' required: true security: - ClientId: [] ClientSecret: [] responses: '200': description: Contract sent to counterparties. x-tagGroup: Contracts /api/v1/public/contracts/{contract_id}/status: get: operationId: v1_public_contracts_status_retrieve description: 'Returns the display **status** and **contract name** for the requested contract. When the `Enforce-User-Scoping` header is `true`, only contracts the specified user may access (based on their permissions) are returned.' summary: Get Contract Status parameters: - in: path name: contract_id schema: type: integer description: ID of the Contract. required: true tags: - V1 Contract APIs security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ExternalContractStatus' examples: Example: value: contract_status: EXECUTED contract_name: Service Agreement - Acme Corp description: Contract Status x-tagGroup: Contracts /api/v1/public/legal_intake/: get: operationId: v1_public_legal_intake_retrieve description: Returns a paginated list of legal intakes for the authenticated user's workspace. Results are limited to intakes visible to the authenticated user in that workspace. Supports filtering, sorting, and text search via query parameters. summary: List Legal Intakes parameters: - in: query name: filter__priority schema: type: string enum: - HIGH - LOW - MEDIUM description: 'Filter by priority (exact match). Equivalent to filter__priority[$eq]=value. Allowed values: LOW, MEDIUM, HIGH.' - in: query name: filter__priority[$eq] schema: type: string enum: - HIGH - LOW - MEDIUM description: 'Filter by priority using $eq operator. Expects a single value for equality (e.g., string). Allowed values: LOW, MEDIUM, HIGH.' - in: query name: filter__priority[$in] schema: type: string enum: - HIGH - LOW - MEDIUM description: 'Filter by priority using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. Allowed values: LOW, MEDIUM, HIGH.' - in: query name: filter__priority[$ne] schema: type: string enum: - HIGH - LOW - MEDIUM description: 'Filter by priority using $ne operator. Expects a single value for not-equal comparison (e.g., string). Allowed values: LOW, MEDIUM, HIGH.' - in: query name: filter__status schema: type: string enum: - BLOCKED - COMPLETED - DISCARDED - DRAFT - IN_PROGRESS - PENDING description: 'Filter by status (exact match). Equivalent to filter__status[$eq]=value. Allowed values: DRAFT, PENDING, IN_PROGRESS, BLOCKED, COMPLETED, DISCARDED.' - in: query name: filter__status[$eq] schema: type: string enum: - BLOCKED - COMPLETED - DISCARDED - DRAFT - IN_PROGRESS - PENDING description: 'Filter by status using $eq operator. Expects a single value for equality (e.g., string). Allowed values: DRAFT, PENDING, IN_PROGRESS, BLOCKED, COMPLETED, DISCARDED.' - in: query name: filter__status[$in] schema: type: string enum: - BLOCKED - COMPLETED - DISCARDED - DRAFT - IN_PROGRESS - PENDING description: 'Filter by status using $in operator. Expects a comma-separated list of values (e.g., val1,val2). Use \, to include literal commas in values. Allowed values: DRAFT, PENDING, IN_PROGRESS, BLOCKED, COMPLETED, DISCARDED.' - in: query name: filter__status[$ne] schema: type: string enum: - BLOCKED - COMPLETED - DISCARDED - DRAFT - IN_PROGRESS - PENDING description: 'Filter by status using $ne operator. Expects a single value for not-equal comparison (e.g., string). Allowed values: DRAFT, PENDING, IN_PROGRESS, BLOCKED, COMPLETED, DISCARDED.' - in: query name: limit schema: type: integer default: 50 description: The number of items to return per page. - in: query name: page schema: type: integer default: 1 description: The page to return. Page numbers start at 1. - in: query name: query schema: type: string description: 'Search legal intake requests by keyword. This query performs a full-text search across main fields such as Title, Description, or Reference ID. Use keywords relevant to your request. For example: ?query=contract+review.

Results will match legal intakes containing all specified keywords. ' - in: query name: sort schema: type: string description: 'Sorting option for results. Use ''-field'' for descending or ''field''/''+field'' for ascending order. Supported values are `created_at`, `priority`, `status`, and `title`. Example: `sort=-created_at`. Only a single sort field is supported.' tags: - V1 Legal Intake security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/LegalIntakePublicListResponse' description: '' '400': content: application/json: schema: type: object additionalProperties: {} examples: InvalidLimit: value: limit: - Input should be less than or equal to 100 summary: Invalid limit InvalidSort: value: detail: Invalid sort field summary: Invalid sort InvalidFilterValue: value: status: - Value should be one of PENDING, IN_PROGRESS summary: Invalid filter value description: Validation error for list query parameters. Returned when `page` or `limit` is invalid, when filter parameters are malformed or use unsupported values, or when `sort` is not one of the supported fields. Response body is a field-keyed validation object. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: 'Unauthorized — invalid or missing credentials. ' '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: You do not have permission to perform this action. description: 'Forbidden — workspace membership failed, intake access was denied, or the intake is not visible in this workspace. Intake-by-id routes intentionally return `403` instead of `404` for unknown or cross-workspace ids. Response body is ``{"detail": "..."}`` only.' x-tagGroup: Legal Intake post: operationId: v1_public_legal_intake_create description: ' Creates a new legal intake in the authenticated workspace from the latest published frozen version of the workflow identified by `workflow_id`. Optional `file_ids` are resolved against workspace files, and the response returns the created intake in the detailed legal intake response shape. ' summary: Create Legal Intake tags: - V1 Legal Intake requestBody: content: application/json: schema: $ref: '#/components/schemas/LegalIntakePublicCreateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/LegalIntakePublicCreateRequest' multipart/form-data: schema: $ref: '#/components/schemas/LegalIntakePublicCreateRequest' required: true security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/LegalIntakePublicDetailResponse' description: '' '400': content: application/json: schema: type: object additionalProperties: {} examples: InvalidPriority: value: priority: - Input should be 'LOW', 'MEDIUM' or 'HIGH' summary: Invalid priority MalformedAssigneeRow: value: assignees: '0': entity_id: - Field required summary: Malformed assignee row UnknownFileId: value: detail: One or more file_ids not found in workspace status_code: 400 code: SD_PUBLIC_00039 message: One or more file_ids not found in workspace summary: Unknown file id WorkflowHasNoPublishedVersion: value: detail: This workflow has no published version for the workspace status_code: 400 code: SD_PUBLIC_00039 message: This workflow has no published version for the workspace summary: Workflow has no published version WorkflowIsNotAnIntakeWorkflow: value: detail: This workflow is not an INTAKE_WORKFLOW status_code: 400 code: SD_PUBLIC_00039 message: This workflow is not an INTAKE_WORKFLOW summary: Workflow is not an intake workflow description: Invalid create request. This endpoint can return either a field-keyed validation object for malformed request payloads, or a SpotDraft public error object for create-domain failures such as unknown `file_ids`, a workflow with no published frozen version, or a workflow that is not an `INTAKE_WORKFLOW`. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: 'Unauthorized — invalid or missing credentials. ' '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: You do not have permission to perform this action. description: 'Forbidden — workspace membership failed, intake access was denied, or the intake is not visible in this workspace. Intake-by-id routes intentionally return `403` instead of `404` for unknown or cross-workspace ids. Response body is ``{"detail": "..."}`` only.' x-tagGroup: Legal Intake /api/v1/public/legal_intake/{legal_intake_id}/: get: operationId: v1_public_legal_intake_retrieve_2 description: Returns the detailed legal intake for the provided id. Results are limited to intakes visible to the authenticated user in that workspace. summary: Get Legal Intake by ID parameters: - in: path name: legal_intake_id schema: type: integer description: Unique integer identifier of the legal intake request.
Required in the path for endpoints that operate on a specific legal intake.

required: true tags: - V1 Legal Intake security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/LegalIntakePublicDetailResponse' description: '' '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: 'Unauthorized — invalid or missing credentials. ' '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: You do not have permission to perform this action. description: 'Forbidden — workspace membership failed, intake access was denied, or the intake is not visible in this workspace. Intake-by-id routes intentionally return `403` instead of `404` for unknown or cross-workspace ids. Response body is ``{"detail": "..."}`` only.' x-tagGroup: Legal Intake patch: operationId: v1_public_legal_intake_partial_update description: 'Updates the specified legal intake. Only users with edit access can modify an intake. This operation uses PATCH and performs a partial update: only supplied fields are modified and omitted fields are left unchanged. Send `null` for nullable fields such as `description` or `due_date` to clear them.' summary: Update Legal Intake parameters: - in: path name: legal_intake_id schema: type: integer description: Unique integer identifier of the legal intake request.
Required in the path for endpoints that operate on a specific legal intake.

required: true tags: - V1 Legal Intake requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedLegalIntakePublicUpdateRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedLegalIntakePublicUpdateRequest' multipart/form-data: schema: $ref: '#/components/schemas/PatchedLegalIntakePublicUpdateRequest' security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/LegalIntakePublicDetailResponse' description: '' '400': content: application/json: schema: type: object additionalProperties: {} examples: MalformedAssigneeRow: value: assignees: '0': entity_id: - Field required summary: Malformed assignee row InvalidPriority: value: priority: - Input should be 'LOW', 'MEDIUM' or 'HIGH' summary: Invalid priority description: Validation error for legal intake updates. Returned when the partial update payload is malformed or contains invalid enum values. Response body is a field-keyed validation object. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: 'Unauthorized — invalid or missing credentials. ' '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: You do not have permission to perform this action. description: 'Forbidden — workspace membership failed, intake access was denied, or the intake is not visible in this workspace. Intake-by-id routes intentionally return `403` instead of `404` for unknown or cross-workspace ids. Response body is ``{"detail": "..."}`` only.' x-tagGroup: Legal Intake delete: operationId: v1_public_legal_intake_destroy description: Soft deletes the specified legal intake. summary: Delete Legal Intake parameters: - in: path name: legal_intake_id schema: type: integer description: Unique integer identifier of the legal intake request.
Required in the path for endpoints that operate on a specific legal intake.

required: true tags: - V1 Legal Intake security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '204': content: application/json: schema: type: object nullable: true description: No content. description: Success; empty response body. '401': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: Authentication credentials were not provided. description: 'Unauthorized — invalid or missing credentials. ' '403': content: application/json: schema: type: object properties: detail: type: string description: Error detail. required: - detail examples: Example: value: detail: You do not have permission to perform this action. description: 'Forbidden — workspace membership failed, intake access was denied, or the intake is not visible in this workspace. Intake-by-id routes intentionally return `403` instead of `404` for unknown or cross-workspace ids. Response body is ``{"detail": "..."}`` only.' x-tagGroup: Legal Intake /api/v1/public/native_integration/solution/{integration_solution_entity_id}/{credential_public_id}/: post: operationId: v1_public_native_integration_solution_create description: Enqueues **asynchronous** contract creation for the given native integration solution and credential (e.g. Coupa). The HTTP response returns immediately after the job is queued. Request body shape is integration-specific; for Coupa, send the approval payload expected by your integration configuration. summary: Queue Native Integration Contracts parameters: - in: path name: credential_public_id schema: type: string description: Public id of the native integration credential for this workspace. required: true - in: path name: integration_solution_entity_id schema: type: string description: Native integration solution entity identifier (e.g. Coupa create-contract). required: true tags: - V1 Native Integrations requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateContractsForCoupaIntegrationRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CreateContractsForCoupaIntegrationRequest' multipart/form-data: schema: $ref: '#/components/schemas/CreateContractsForCoupaIntegrationRequest' required: true security: - NativeIntegrationBasic: [] responses: '200': content: application/json: schema: type: object properties: message: type: string example: Initiated contract creation on SpotDraft description: Contract creation was queued successfully. x-tagGroup: Platform /api/v1/public/obligations/types/: get: operationId: v1_public_obligations_types_list description: Get the list of active obligation types summary: Get Active Obligation Type List tags: - V1 Obligation Types security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ObligationTypeListResponse' description: Obligation Type List x-tagGroup: Platform /api/v1/public/obligations/types/{obligation_type_id}/: get: operationId: v1_public_obligations_types_retrieve_by_id description: Get the obligation type details for the given obligation type id summary: Get Obligation Type parameters: - in: path name: obligation_type_id schema: type: integer description: ID of the Obligation Type. required: true tags: - V1 Obligation Types security: - ClientId: [] ClientSecret: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ObligationTypeResponse' description: Obligation Type '404': description: Obligation Type Not Found x-tagGroup: Platform /api/v1/public/templates/: get: operationId: v1_public_templates_list description: ' Lists published templates available to the workspace tied to the API credentials. Use query parameters to filter by tags, counterparty type, archive state, and multipart support. ' summary: Get Template List parameters: - in: query name: cp_types schema: type: string description: 'The type of Counterparty that can be added to contracts created from this template. Must be either `Organisation` or `Individual`. This value will be used to filter the list of templates returned by the API. The template will be having one or more CP that match cp_types.' - in: query name: cp_types_all schema: type: boolean default: false description: 'When a template has multiple counterparties, whether all counterparties should match the CP type given in cp_types. False by default' - in: query name: exclude_multi_party schema: type: boolean default: false description: Whether templates that support multiple counterparties should be excluded. - in: query name: include_archived schema: type: boolean default: false description: Whether archived templates should be included in the results. - in: query name: tags schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the Template tags are a subset of the tags passed will be returned.' - in: query name: tags_all schema: type: array items: type: string description: 'The tags (if any) to filter the templates by. Multiple tags can be specified by specifying the query param multiple times. Only templates where the tags passed are a subset of the Template tags will be returned.' tags: - V1 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateListResponse' examples: Example1: value: items: - id: 1 name: Basic Non Disclosure Agreement contract_type_id: 10 summary: Example 1 description: Template List x-tagGroup: Workflow /api/v1/public/templates/{template_id}/metadata: get: operationId: v1_public_templates_metadata_retrieve description: ' Returns the fields required to construct `contract_data` for contracts created from the given template. Use this when your integration needs to dynamically render a form before calling the create-contract endpoint. ' summary: Get Template Metadata parameters: - in: path name: template_id schema: type: string pattern: ^[0-9]+$ required: true tags: - V1 Templates security: - ClientId: [] ClientSecret: [] - OAuthBearer: [] deprecated: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/TemplateMetaDataResponse' examples: Example1: value: attributes: - variable: start_date mandatory: true type: date - variable: kind_of_nda mandatory: true type: dropdown options: - label: Mutual value: mutual - label: Exclusive value: exclusive summary: Example 1 description: Template Metadata x-tagGroup: Workflow /api/v1/public/view-email/{email_audit_key}/: get: operationId: v1_public_view_email_retrieve description: Returns the stored HTML body for an email audit entry. Useful for previewing rendered emails and debugging notification output. summary: View Rendered Email parameters: - in: path name: email_audit_key schema: type: string pattern: ^[0-9a-z\-]+$ required: true tags: - V1 Emails security: - {} responses: '200': content: application/json: schema: type: string description: Rendered email HTML (`text/html`). '404': description: Email audit not found. x-tagGroup: Platform /api/v1/public/webhook-sample/: post: operationId: v1_public_webhook_sample_create description: 'This is a sample webhook request as sent to the listener of the webhook. Sample payloads for each activity type can be seen in the responses section by changing the mime type on the right side. Please note that this API does not exist and will throw a 404.' summary: Sample Webhook Request tags: - V1 Webhooks requestBody: content: application/json: schema: $ref: '#/components/schemas/ContractActivityDomainModel' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ContractActivityDomainModel' multipart/form-data: schema: $ref: '#/components/schemas/ContractActivityDomainModel' required: true security: - {} responses: '200': content: application/json: schema: $ref: '#/components/schemas/ContractActivityDomainModel' description: Sample Payloads x-tagGroup: Platform components: schemas: ActivityEnum: enum: - CONTRACT_VERSION_UPLOADED - CONTRACT_APPROVAL_COMPLETED - CONTRACT_APPROVAL_REQUESTED - CONTRACT_CREATED - CONTRACT_DATA_UPDATED - CONTRACT_DELETED - CONTRACT_EXECUTED - CONTRACT_MARK_FOR_EXECUTION - CONTRACT_SENT_TO_COUNTERPARTY - CONTRACT_SIGNATURE_DECLINED - CONTRACT_SIGNATURE_REQUESTED - CONTRACT_SIGNED - CONTRACT_UNMARK_FOR_EXECUTION - POSTMARK_EMAIL_EVENT - CONTRACT_KEY_POINTER_UPDATION - CONTRACT_KEY_POINTER_CREATION - SIGNING_EMAIL_DELIVERED - SIGNING_EMAIL_OPENED - SIGNING_EMAIL_NOT_DELIVERED - SIGNING_EMAIL_LINK_CLICKED - REDLINING_EMAIL_DELIVERED - REDLINING_EMAIL_OPENED - REDLINING_EMAIL_NOT_DELIVERED - REDLINING_EMAIL_LINK_CLICKED - CONTRACT_SIGNATURE_REQUESTED_NOTIFICATION_SENT - COUNTER_PARTY_CREATED - COUNTER_PARTY_UPDATED - COUNTER_PARTY_CONTACT_CREATED - COUNTER_PARTY_CONTACT_UPDATED - COUNTER_PARTY_ADDRESS_CREATED - COUNTER_PARTY_ADDRESS_UPDATED - CONTRACT_ACTIVITY_LOG_COMMENT_CREATED - CONTRACT_VOIDED - CONTRACT_PROCESS_METRIC_UPDATED - CONTRACT_EXTERNAL_METADATA_CREATED - CONTRACT_EXTERNAL_METADATA_UPDATED - CONTRACT_ENTITY_UPDATED type: string AgreementClickwrapGetAPIResponse: properties: id: title: Id type: integer current_version: $ref: '#/components/schemas/ClickwrapWithVersionGetAPIResponse' required: - id - current_version title: AgreementClickwrapGetAPIResponse type: object AttachmentFormatsEnum: enum: - DOCX - PDF - TEMPLATE type: string description: '* `DOCX` - DOCX * `PDF` - PDF * `TEMPLATE` - TEMPLATE' ClickwrapAgreementPreviewRequest: title: ClickwrapAgreementPreviewRequest type: object properties: auth_user_id: title: Auth User Id description: Authenticated user id under whose context the agreement preview should be rendered. type: integer workspace_id: title: Workspace Id description: Workspace id that owns the clickwrap agreement. type: integer org_user_id: title: Org User Id description: Workspace membership id for the authenticated user. type: integer agreement_id: title: Agreement Id description: Agreement id to preview. type: integer name: title: Name description: Agreement name shown in the preview. type: string html_content: title: Html Content description: Rendered agreement HTML that should be previewed. type: string required: - auth_user_id - workspace_id - org_user_id - agreement_id - name - html_content ClickwrapAgreementVersionStatusType: enum: - PUBLISHED - DRAFT - PAST_PUBLISHED title: ClickwrapAgreementVersionStatusType type: string ClickwrapConsentStatus: enum: - NOT_ACCEPTED - ACCEPTED_OLDER_VERSION - ACCEPTED_LATEST_VERSION title: ClickwrapConsentStatus type: string ClickwrapPublicGetAPIResponse: properties: id: title: Id type: integer name: minLength: 1 title: Name type: string description: minLength: 1 title: Description type: string created_by_org_user: $ref: '#/components/schemas/OrgUserMinimalDomainModel' updated_by_org_user_at: title: Updated By Org User At type: string agreements: items: $ref: '#/components/schemas/AgreementClickwrapGetAPIResponse' title: Agreements type: array public_id: format: uuid4 title: Public Id type: string contract_type_id: title: Contract Type Id type: integer settings: $ref: '#/components/schemas/ClickwrapSettingsPublicResponse' required: - id - name - description - created_by_org_user - updated_by_org_user_at - agreements - public_id - contract_type_id - settings title: ClickwrapPublicGetAPIResponse type: object ClickwrapSettingsPublicResponse: properties: type: $ref: '#/components/schemas/ClickwrapType' whitelisted_domains: default: [] items: type: string title: Whitelisted Domains type: array allow_all_domains: default: false title: Allow All Domains type: boolean clickwrap_texts: items: minLength: 1 type: string title: Clickwrap Texts type: array clickwrap_texts_raw: items: type: object title: Clickwrap Texts Raw type: array required: - type - clickwrap_texts - clickwrap_texts_raw title: ClickwrapSettingsPublicResponse type: object ClickwrapType: enum: - SINGLE_CHECKBOX - MULTIPLE_CHECKBOX - INLINE title: ClickwrapType type: string ClickwrapWithVersionGetAPIResponse: properties: id: title: Id type: integer name: minLength: 1 title: Name type: string status: anyOf: - $ref: '#/components/schemas/ClickwrapAgreementVersionStatusType' - type: 'null' default: null modified_by_org_user_at: title: Modified By Org User At type: string version_number: title: Version Number type: integer sub_version_number: title: Sub Version Number type: integer public_url: anyOf: - format: uri minLength: 1 type: string - type: 'null' default: null title: Public Url full_version_number: minLength: 1 readOnly: true title: Full Version Number type: string required: - id - name - modified_by_org_user_at - version_number - sub_version_number - full_version_number title: ClickwrapWithVersionGetAPIResponse type: object ContentFormatEnum: enum: - text - segments type: string ContractActivityDomainModel: title: ContractActivityDomainModel type: object properties: activity_data: title: Activity Data type: object properties: performed_by: title: Performed By type: object properties: name: title: Name description: The name of the user. Can be set to `SYSTEM` for system initiated actions. type: string email: title: Email description: The email address of the user. Can be unset if name is `SYSTEM`. type: string required: - name description: The User details timestamp: title: Timestamp description: The timestamp at which this action was taken type: string format: date-time required: - performed_by - timestamp description: Details of the action taken which caused this webhook activity: allOf: - $ref: '#/components/schemas/ActivityEnum' title: ContractWebhookActivityType description: The name of the activity. See [Webhook Activity Types](#webhook-activity-types) contract_id: title: Contract Id description: The ID of the contract for which the webhook is sent type: integer contract_title: title: Contract Title description: The title of the contract as set by the user type: string contract_type: title: Contract Type description: The type of the contract type: string contract_type_name: title: Contract Type Name description: The contract type name of the contract type: string contract_type_id: title: Contract Type Id description: The contract type id of the contract type: integer contract_status: title: Contract Status description: The status of the contract. One of DRAFT, REDLINING, SIGN, EXECUTED type: string contract_kind: allOf: - $ref: '#/components/schemas/ContractActivityDomainModelContractKindEnum' title: ContractKindActivityData description: The workflow kind of the contract. One of TEMPLATE_CONTRACT, EDITED_TEMPLATE_CONTRACT, THIRD_PARTY_CONTRACT, SIGN_CONTRACT, EXECUTED_CONTRACT, EXPRESS_TEMPLATE_CONTRACT business_user: title: Business User type: object properties: name: title: Name description: The name of the user. Can be set to `SYSTEM` for system initiated actions. type: string email: title: Email description: The email address of the user. Can be unset if name is `SYSTEM`. type: string required: - name description: The Business User details legal_user: title: Legal User type: object properties: name: title: Name description: The name of the user. Can be set to `SYSTEM` for system initiated actions. type: string email: title: Email description: The email address of the user. Can be unset if name is `SYSTEM`. type: string required: - name description: The Legal User details created_at: title: Created At description: The time the contract was created type: string format: date-time counterparties: title: Counterparties description: The details of the counter parties of this contract. Only set if set by the user type: array items: title: ContractActivityCounterparty type: object properties: type: title: Type description: The type of counterparty. Valid options are Organization or Individual type: string organization_name: title: Organization Name description: The name of the counterparty. type: string poc_name: title: Poc Name description: The name of the point of contact. type: string poc_email: title: Poc Email description: The email of the point of contact. type: string counterparty_id: title: Counterparty Id description: The id of the counterparty. type: integer required: - type external_metadata: title: External Metadata description: The external metadata for this contract, if set type: object entity: title: Entity type: object properties: reference_id: title: Reference Id description: The reference ID of the entity type: string name: title: Name description: The name of the entity type: string jurisdiction: title: Jurisdiction description: The name of the country which is the jurisdiction for this entity type: string type: title: Type description: The type of this entity type: string required: - reference_id - name - jurisdiction - type description: The entity information for this contract, if set contract_reference_id: title: Contract Reference Id description: Reference id of the contract. type: string contract_template_id: title: Contract Template Id description: Template id of the template contract. type: integer required: - activity_data - activity - contract_id - contract_title - contract_type - contract_type_name - contract_type_id - contract_status - contract_kind - business_user - created_at examples: CONTRACT_CREATED: contract_id: 19589 contract_kind: EXECUTED_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: DRAFT business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: Rohith Salim email: rohith+core@spotdraft.com timestamp: '2021-08-22T03:48:56.491054Z' activity: CONTRACT_CREATED CONTRACT_SENT_TO_COUNTERPARTY: contract_id: 19589 contract_kind: TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: REDLINING business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: Rohith Salim email: rohith+core@spotdraft.com timestamp: '2021-08-22T03:49:21.713506Z' counterparty_email_recipients: to_recipients: - rohith+test@spotdraft.com cc_recipients: - rohith+core@spotdraft.com activity: CONTRACT_SENT_TO_COUNTERPARTY REDLINING_EMAIL_OPENED: contract_id: 19589 contract_kind: TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: REDLINING business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:49:41.983699Z' email_event_data: recipient_email: rohith+core@spotdraft.com email_mode: cc occured_at: '2021-08-22T03:49:37Z' activity: REDLINING_EMAIL_OPENED REDLINING_EMAIL_LINK_CLICKED: contract_id: 19589 contract_kind: TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: REDLINING business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:50:03.407226Z' email_event_data: recipient_email: rohith+core@spotdraft.com email_mode: cc occured_at: '2021-08-22T03:49:59Z' activity: REDLINING_EMAIL_LINK_CLICKED REDLINING_EMAIL_DELIVERED: contract_id: 19589 contract_kind: TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: REDLINING business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:50:07.275986Z' email_event_data: recipient_email: rohith+core@spotdraft.com email_mode: cc occured_at: '2021-08-22T03:49:26Z' activity: REDLINING_EMAIL_DELIVERED CONTRACT_SIGNATURE_REQUESTED_NOTIFICATION_SENT: contract_id: 19589 contract_kind: EDITED_TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: SIGN business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: Rohith Salim email: rohith+core@spotdraft.com timestamp: '2021-08-22T03:51:07.532908Z' signatory: name: Rohith Salim email: rohith+core@spotdraft.com activity: CONTRACT_SIGNATURE_REQUESTED_NOTIFICATION_SENT SIGNING_EMAIL_DELIVERED: contract_id: 19589 contract_kind: EDITED_TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: SIGN business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:51:44.797406Z' email_event_data: recipient_email: rohith+test@spotdraft.com email_mode: to occured_at: '2021-08-22T03:51:11Z' activity: SIGNING_EMAIL_DELIVERED SIGNING_EMAIL_OPENED: contract_id: 19589 contract_kind: EDITED_TEMPLATE_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: SIGN business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:52:11.355880Z' email_event_data: recipient_email: rohith+core@spotdraft.com email_mode: to occured_at: '2021-08-22T03:52:08Z' activity: SIGNING_EMAIL_OPENED SIGNING_EMAIL_LINK_CLICKED: contract_id: 19589 contract_kind: THIRD_PARTY_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: SIGN business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:52:36.374731Z' email_event_data: recipient_email: rohith+core@spotdraft.com email_mode: to occured_at: '2021-08-22T03:52:31Z' activity: SIGNING_EMAIL_LINK_CLICKED CONTRACT_SIGNED: contract_id: 19589 contract_kind: THIRD_PARTY_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: SIGN business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: Rohith Salim email: rohith+core@spotdraft.com timestamp: '2021-08-22T03:53:27.630482Z' activity: CONTRACT_SIGNED CONTRACT_EXECUTED: contract_id: 19589 contract_kind: THIRD_PARTY_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: EXECUTED business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: SYSTEM timestamp: '2021-08-22T03:53:52.201442Z' activity: CONTRACT_EXECUTED CONTRACT_DELETED: contract_id: 19589 contract_kind: SIGN_CONTRACT contract_title: SpotDraft Standard DPA contract_type: Data Processing Agreement contract_type_name: Data Processing Agreement contract_type_id: 135 contract_status: EXECUTED business_user: name: Rohith Salim email: rohith+core@spotdraft.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2021-08-22T03:48:52.370635Z' counterparties: - type: Organization organization_name: Test Customer poc_name: Rohith Salim poc_email: rohith+test@spotdraft.com activity_data: performed_by: name: Rohith Salim email: rohith+core@spotdraft.com timestamp: '2021-08-22T03:53:52.201442Z' activity: CONTRACT_DELETED CONTRACT_SIGNATURE_DECLINED: contract_id: 193 contract_kind: EXPRESS_TEMPLATE contract_title: Master Lease Agreement contract_type: Type contract_type_id: 135 contract_type_name: Type contract_status: DRAFT business_user: name: Madhav Bhagat email: madhav89@gmail.com legal_user: name: Jane Legal email: jane.legal@example.com created_at: '2020-10-28T11:35:11.119130Z' counterparties: - type: Organization organization_name: first last org activity_data: performed_by: name: Madhav Bhagat email: madhav89@gmail.com timestamp: '2021-09-13T07:30:15.470887Z' activity: CONTRACT_SIGNATURE_DECLINED ContractActivityDomainModelContractKindEnum: enum: - TEMPLATE_CONTRACT - EDITED_TEMPLATE_CONTRACT - THIRD_PARTY_CONTRACT - SIGN_CONTRACT - EXECUTED_CONTRACT - EXPRESS_TEMPLATE_CONTRACT - CLICKWRAP_CONTRACT - HISTORICAL_CLICKWRAP_CONTRACT type: string ContractContentResponse: title: ContractContentResponse type: object properties: contract_id: title: Contract Id description: The contract ID type: string content_format: allOf: - $ref: '#/components/schemas/ContentFormatEnum' title: ContractContentFormatType description: Format of the returned content content: title: Content description: Full contract text content (when format=text) type: string segments: title: Segments description: Text segments with metadata (when format=segments) type: array items: title: TextSegmentedResponse type: object properties: segment_text: title: Segment Text type: string required: - segment_text extraction_status: allOf: - $ref: '#/components/schemas/ExtractionStatusEnum' title: ContractContentExtractionStatus description: Status of the content extraction process last_updated: title: Last Updated description: Timestamp when content was last extracted type: string format: date-time required: - contract_id - content_format - extraction_status examples: - contract_id: T-12345 content_format: text content: This Agreement is entered into between... segments: null extraction_status: completed last_updated: '2024-01-15T10:30:00Z' - contract_id: T-12345 content_format: segments content: null segments: - segment_text: This Agreement is entered into... page_number: 1 position: 1 extraction_status: completed last_updated: '2024-01-15T10:30:00Z' ContractDisplayStatusEnum: enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string ContractKeyPointerBulkRequest: title: ContractKeyPointerBulkRequest type: object properties: key_pointers: title: Key Pointers description: List of keypointers to be created/updated for a contract. type: array items: title: ContractKeyPointerRequest type: object properties: key_pointer_id: title: Key Pointer Id description: ID of the key pointer that needs to be created or updated for a contract type: integer key_pointer_field_name: title: Key Pointer Field Name description: Field name of the key pointer that needs to be created or updated for a contract. At least one of `key_pointer_id` or `key_pointer_field_name` is required. type: string value: title: Value description: Value of the keypointer, the type of this value depends on the type of the keypointer. required: - key_pointers examples: - key_pointers: - key_pointer_id: 100 value: type: MONTHS value: 6 - key_pointer_field_name: key_pointer_field_name value: type: MONTHS value: 6 ContractKeyPointerMinimalListResponse: title: ContractKeyPointerMinimalListResponse type: array items: title: ContractKeyPointerMinimalResponse type: object properties: id: title: Id type: integer value: title: Value description: Value of the key pointer anyOf: - type: number - type: integer - type: string - type: array items: {} - type: object - type: boolean label: title: Label type: string field_name: title: Field Name type: string data_type: title: Data Type type: string format_option: title: Format Option type: object required: - id - value - label - field_name - data_type - format_option examples: - id: 1 value: sample label: Sample Label filed_name: sample_field_name data_type: string format_option: data: sample format option ContractKeyPointerMinimalResponse: title: ContractKeyPointerMinimalResponse type: object properties: id: title: Id type: integer value: title: Value description: Value of the key pointer anyOf: - type: number - type: integer - type: string - type: array items: {} - type: object - type: boolean label: title: Label type: string field_name: title: Field Name type: string data_type: title: Data Type type: string format_option: title: Format Option type: object required: - id - value - label - field_name - data_type - format_option examples: - id: 1 value: sample label: Sample Label filed_name: sample_field_name data_type: string format_option: data: sample format option ContractListResponseV2: title: ContractListResponseV2 type: object properties: page: title: Page type: integer limit: title: Limit type: integer total_results: title: Total Results type: integer results: title: Results type: array items: title: ContractResponseV2 description: Must be kept in sync with ExternalContractV3Serializer type: object properties: id: title: Id description: The Id of the contract on SpotDraft's Platform. type: string created: title: Created description: The date and time at which the contract was created or uploaded on SpotDraft's platform. type: string format: date-time contract_name: title: Contract Name description: The name of the contract that is visible to users. type: string contract_link: title: Contract Link description: The Url to view the contract. type: string contract_status: title: Contract Status description: The status of the contract. type: string created_by: title: Created By description: The full name of user who created or uploaded the executed contract on to SpotDraft's platform. type: string counter_party_name: title: Counter Party Name description: The full name of the counter party involved in the contract. type: string contract_type_name: title: Contract Type Name description: The type of the contract. type: string contract_type_id: title: Contract Type Id description: The ID of the contract type. type: integer external_metadata: title: External Metadata type: object reference_id: title: Reference Id type: string created_by_user_name: title: Created By User Name description: The full name of user who created or uploaded the executed contract on to SpotDraft's platform. type: string created_by_user_email: title: Created By User Email description: The email of user who created or uploaded the executed contract on to SpotDraft's platform. type: string created_by_workspace: title: Created By Workspace description: The workspace ID of the user who created or uploaded the executed contract on to SpotDraft's platform. type: integer required: - id - created - contract_name - contract_link - contract_status - created_by - counter_party_name - contract_type_name - contract_type_id - created_by_workspace examples: - id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 required: - page - limit - total_results - results ContractMinimalResponseV2: title: ContractMinimalResponseV2 description: "Minimal response model for a contract.\nAttributes:\n id (ContractId): The ID of the contract.\n \ \ public_id (str): Public ID of the contract.\n contract_name (str): Name of the contract.\n contract_type_id\ \ (ContractTypeId): ID of the contract type.\n contract_template_id (Optional[int], optional): ID of the associated\ \ contract template.\n status (str): Status of the contract.\n display_status (ContractDisplayStatus): Display\ \ status of the contract.\n display_status_without_on_hold_check (ContractDisplayStatus):\n Display status\ \ of the contract without on-hold check.\n workflow_status (Optional[ContractWorkflowStatus], optional): Workflow\ \ status of the contract.\n contract_kind (ContractKind): Kind of the contract.\n campaign_id (Optional[int],\ \ optional): ID of the associated campaign.\n campaign_v3_id (Optional[CampaignId], optional): ID of the associated\ \ campaign (v3).\n express_template_id (Optional[int], optional): ID of the express template.\n contract_data_id\ \ (Optional[int], optional): ID of the contract data.\n contract_editable_document_id (Optional[int], optional):\ \ ID of the editable document related to the contract.\n created (datetime): Date and time when the contract was\ \ created.\n created_by_workspace_id (WorkspaceId): ID of the workspace where the contract was created.\n editor_client\ \ (ContractEditorClient): Client editor of the contract.\n execution_date (Optional[datetime], optional): Date\ \ and time of contract execution.\n frozen_template_id (Optional[int], optional): ID of the frozen contract template.\n\ \ workflow_id (str): ID of the workflow associated with the contract.\n\nMethods:\n is_executed() -> bool:\n\ \ Checks if the contract is executed.\n\n is_voided() -> bool:\n Checks if the contract is voided.\n\ \n is_historic_upload() -> bool:\n Checks if the contract is a historic upload.\n\n contract_response_v2()\ \ -> ContractResponseV2:\n Retrieves the full response object for the contract.\n\n get_fields_to_select()\ \ -> List[str]:\n Retrieves the list of fields to select for the contract." type: object properties: id: title: Id type: integer public_id: title: Public Id type: string contract_name: title: Contract Name type: string contract_type_id: title: Contract Type Id type: integer contract_template_id: title: Contract Template Id type: integer status: title: Status type: string display_status: allOf: - $ref: '#/components/schemas/ContractDisplayStatusEnum' title: ContractDisplayStatus description: An enumeration. display_status_without_on_hold_check: allOf: - $ref: '#/components/schemas/ContractDisplayStatusEnum' title: ContractDisplayStatus description: An enumeration. workflow_status: allOf: - $ref: '#/components/schemas/WorkflowStatusEnum' title: ContractWorkflowStatus description: An enumeration. contract_kind: allOf: - $ref: '#/components/schemas/ContractMinimalResponseV2ContractKindEnum' title: ContractKind description: An enumeration. campaign_id: title: Campaign Id type: integer campaign_v3_id: title: Campaign V3 Id type: integer express_template_id: title: Express Template Id type: integer contract_data_id: title: Contract Data Id type: integer contract_editable_document_id: title: Contract Editable Document Id type: integer created: title: Created type: string format: date-time created_by_workspace_id: title: Created By Workspace Id type: integer editor_client: allOf: - $ref: '#/components/schemas/EditorClientEnum' title: ContractEditorClient description: An enumeration. execution_date: title: Execution Date type: string format: date-time frozen_template_id: title: Frozen Template Id type: integer workflow_id: title: Workflow Id type: string workflow_name: title: Workflow Name type: string required: - id - public_id - contract_name - contract_type_id - status - display_status - display_status_without_on_hold_check - contract_kind - created - created_by_workspace_id - editor_client - workflow_id ContractMinimalResponseV2ContractKindEnum: enum: - TEMPLATE - TEMPLATE_EDITABLE - UPLOAD_EDITABLE - UPLOAD_SIGN - UPLOAD_EXECUTED - EXPRESS_TEMPLATE - CLICKWRAP - HISTORICAL_CLICKWRAP type: string ContractNoteMinimalResponse: title: ContractNoteMinimalResponse type: object properties: id: title: Id type: integer text: title: Text type: string note_tag: title: Note Tag type: string required: - id - text examples: - id: 1 text: sample note for contract note_tag: sample_tag ContractNoteUpdateRequest: title: ContractNoteUpdateRequest type: object properties: note_tag: title: ContractNoteTagRequest type: object properties: name: title: Name type: string id: title: Id type: integer required: - name text: title: Text description: Updated note text. type: string required: - text ContractObligationListResponse: title: ContractObligationListResponse description: The list of obligations type: array items: title: ContractObligationResponse type: object properties: id: title: Id description: The ID of the obligation type: integer title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer status: title: ObligationStatus description: The status of the obligation enum: - PENDING - COMPLETED - FAILED - VERIFIED type: string entity_id: title: Entity Id description: The ID of the contract type: integer custom_fields: title: Custom Fields description: The custom fields of the obligation type: object tasks: title: Tasks description: The tasks of the obligation type: array items: title: UserTaskPublicResponse type: object properties: id: title: Id description: ID of the Task type: integer title: title: Title description: Title of the Task type: string notes: title: Notes description: Notes for the Task type: string contract: title: Contract description: The Details of the Contract type: object properties: id: title: Id type: integer public_id: title: Public Id type: string contract_name: title: Contract Name type: string contract_type_id: title: Contract Type Id type: integer contract_template_id: title: Contract Template Id type: integer status: title: Status type: string display_status: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string display_status_without_on_hold_check: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string workflow_status: title: ContractWorkflowStatus description: An enumeration. enum: - DRAFT - INVITE_CLIENT - INFO_COLLECTION - CONTRACT_APPROVAL - CONTRACT_DRAFT_APPROVAL - CONTRACT_APPROVAL_REJECTED - REVIEW - SIGN - COMPLETING - COMPLETED - TEMPLATE_PRE_SIGN_APPROVAL type: string contract_kind: title: ContractKind description: An enumeration. enum: - TEMPLATE - TEMPLATE_EDITABLE - UPLOAD_EDITABLE - UPLOAD_SIGN - UPLOAD_EXECUTED - EXPRESS_TEMPLATE - CLICKWRAP - HISTORICAL_CLICKWRAP type: string campaign_id: title: Campaign Id type: integer campaign_v3_id: title: Campaign V3 Id type: integer express_template_id: title: Express Template Id type: integer contract_data_id: title: Contract Data Id type: integer contract_editable_document_id: title: Contract Editable Document Id type: integer created: title: Created type: string format: date-time created_by_workspace_id: title: Created By Workspace Id type: integer editor_client: title: ContractEditorClient description: An enumeration. enum: - ONLY_OFFICE_NATIVE - WOPI - UNSET type: string execution_date: title: Execution Date type: string format: date-time frozen_template_id: title: Frozen Template Id type: integer workflow_id: title: Workflow Id type: string workflow_name: title: Workflow Name type: string required: - id - public_id - contract_name - contract_type_id - status - display_status - display_status_without_on_hold_check - contract_kind - created - created_by_workspace_id - editor_client - workflow_id created_by_org_user: title: Created By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who created the Task completed_by_org_user: title: Completed By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who completed the Task completed_at: title: Completed At description: The date and time when the Task got completed type: string format: date-time absolute_due_date: title: Absolute Due Date description: The date and time when the Task is due for completion type: string format: date-time created: title: Created description: The date and time when the task got created type: string format: date-time created_by_workspace: title: Created By Workspace type: object properties: id: title: Id type: integer owner_id: title: Owner Id type: integer name: title: Name type: string is_individual_org: title: Is Individual Org type: boolean show_workspace_migration: title: Show Workspace Migration type: boolean short_hand_notation: title: Short Hand Notation type: string company_email_domains: title: Company Email Domains type: array items: type: string brand_name: title: Brand Name type: string required: - id - name - is_individual_org - show_workspace_migration description: The Details of the Workspace who created the Task assignees: title: Assignees description: The Details of Assignees for the Task type: array items: title: TaskAssigneeDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer assignee_org_user: title: Assignee Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Assignee Org User assignee_role: title: Assignee Role type: object properties: id: title: Id type: integer name: title: Name type: string description: title: Description type: string created: title: Created type: string format: date-time point_of_contact: title: OrganizationUserResponse type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id required: - id - name - description - created description: The Details of the Role assigned to Assignee last_manual_reminder_sent_at: title: Last Manual Reminder Sent At type: string format: date-time required: - id - user_task_id status: title: UserTaskStatus description: An enumeration. enum: - COMPLETED - UPCOMING - OVERDUE - NO_DATE type: string default: NO_DATE deleted_at: title: Deleted At description: The date and time when the task got deleted type: string format: date-time task_category: title: TaskCategory description: The category of the task enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string default: USER_TASK task_associations: title: Task Associations description: List of Task Associations for the Task type: array items: title: TaskAssociationPublicResponse type: object properties: entity_id: title: Entity Id description: Entity id of the task association type: string entity_type: title: TaskAssociationEntityType description: Entity type of the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: Association type of the task association enum: - PRIMARY - SECONDARY type: string required: - entity_id - entity_type - association_type due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task type: integer reminders: title: Reminders description: List of Reminders for the Task default: '' type: array items: title: ReminderDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer relative_time: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days absolute_time: title: Absolute Time type: string format: date-time required: - id - user_task_id - relative_time required: - id - title - created_by_org_user - created_by_workspace - assignees priority: title: ObligationPriority description: The priority of the obligation enum: - LOW - MEDIUM - HIGH type: string required: - id - title - end_date - obligation_type_id - status - entity_id - priority example: id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING priority: MEDIUM contract_id: 86311 custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly example: - id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly - id: 2345 title: Test Obligation 2 description: Test Description 2 start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 124 status: PENDING contract_id: 86311 priority: MEDIUM custom_fields: clause: Test Clause 2 contractual_delivery_value: '2000000' frequency: Yearly ContractObligationResponse: title: ContractObligationResponse type: object properties: id: title: Id description: The ID of the obligation type: integer title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer status: allOf: - $ref: '#/components/schemas/StatusDc2Enum' title: ObligationStatus description: The status of the obligation entity_id: title: Entity Id description: The ID of the contract type: integer custom_fields: title: Custom Fields description: The custom fields of the obligation type: object tasks: title: Tasks description: The tasks of the obligation type: array items: title: UserTaskPublicResponse type: object properties: id: title: Id description: ID of the Task type: integer title: title: Title description: Title of the Task type: string notes: title: Notes description: Notes for the Task type: string contract: title: Contract description: The Details of the Contract type: object properties: id: title: Id type: integer public_id: title: Public Id type: string contract_name: title: Contract Name type: string contract_type_id: title: Contract Type Id type: integer contract_template_id: title: Contract Template Id type: integer status: title: Status type: string display_status: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string display_status_without_on_hold_check: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string workflow_status: title: ContractWorkflowStatus description: An enumeration. enum: - DRAFT - INVITE_CLIENT - INFO_COLLECTION - CONTRACT_APPROVAL - CONTRACT_DRAFT_APPROVAL - CONTRACT_APPROVAL_REJECTED - REVIEW - SIGN - COMPLETING - COMPLETED - TEMPLATE_PRE_SIGN_APPROVAL type: string contract_kind: title: ContractKind description: An enumeration. enum: - TEMPLATE - TEMPLATE_EDITABLE - UPLOAD_EDITABLE - UPLOAD_SIGN - UPLOAD_EXECUTED - EXPRESS_TEMPLATE - CLICKWRAP - HISTORICAL_CLICKWRAP type: string campaign_id: title: Campaign Id type: integer campaign_v3_id: title: Campaign V3 Id type: integer express_template_id: title: Express Template Id type: integer contract_data_id: title: Contract Data Id type: integer contract_editable_document_id: title: Contract Editable Document Id type: integer created: title: Created type: string format: date-time created_by_workspace_id: title: Created By Workspace Id type: integer editor_client: title: ContractEditorClient description: An enumeration. enum: - ONLY_OFFICE_NATIVE - WOPI - UNSET type: string execution_date: title: Execution Date type: string format: date-time frozen_template_id: title: Frozen Template Id type: integer workflow_id: title: Workflow Id type: string workflow_name: title: Workflow Name type: string required: - id - public_id - contract_name - contract_type_id - status - display_status - display_status_without_on_hold_check - contract_kind - created - created_by_workspace_id - editor_client - workflow_id created_by_org_user: title: Created By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who created the Task completed_by_org_user: title: Completed By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who completed the Task completed_at: title: Completed At description: The date and time when the Task got completed type: string format: date-time absolute_due_date: title: Absolute Due Date description: The date and time when the Task is due for completion type: string format: date-time created: title: Created description: The date and time when the task got created type: string format: date-time created_by_workspace: title: Created By Workspace type: object properties: id: title: Id type: integer owner_id: title: Owner Id type: integer name: title: Name type: string is_individual_org: title: Is Individual Org type: boolean show_workspace_migration: title: Show Workspace Migration type: boolean short_hand_notation: title: Short Hand Notation type: string company_email_domains: title: Company Email Domains type: array items: type: string brand_name: title: Brand Name type: string required: - id - name - is_individual_org - show_workspace_migration description: The Details of the Workspace who created the Task assignees: title: Assignees description: The Details of Assignees for the Task type: array items: title: TaskAssigneeDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer assignee_org_user: title: Assignee Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Assignee Org User assignee_role: title: Assignee Role type: object properties: id: title: Id type: integer name: title: Name type: string description: title: Description type: string created: title: Created type: string format: date-time point_of_contact: title: OrganizationUserResponse type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id required: - id - name - description - created description: The Details of the Role assigned to Assignee last_manual_reminder_sent_at: title: Last Manual Reminder Sent At type: string format: date-time required: - id - user_task_id status: title: UserTaskStatus description: An enumeration. enum: - COMPLETED - UPCOMING - OVERDUE - NO_DATE type: string default: NO_DATE deleted_at: title: Deleted At description: The date and time when the task got deleted type: string format: date-time task_category: title: TaskCategory description: The category of the task enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string default: USER_TASK task_associations: title: Task Associations description: List of Task Associations for the Task type: array items: title: TaskAssociationPublicResponse type: object properties: entity_id: title: Entity Id description: Entity id of the task association type: string entity_type: title: TaskAssociationEntityType description: Entity type of the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: Association type of the task association enum: - PRIMARY - SECONDARY type: string required: - entity_id - entity_type - association_type due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task type: integer reminders: title: Reminders description: List of Reminders for the Task default: '' type: array items: title: ReminderDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer relative_time: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days absolute_time: title: Absolute Time type: string format: date-time required: - id - user_task_id - relative_time required: - id - title - created_by_org_user - created_by_workspace - assignees priority: allOf: - $ref: '#/components/schemas/PriorityEnum' title: ObligationPriority description: The priority of the obligation required: - id - title - end_date - obligation_type_id - status - entity_id - priority example: id: 2344 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' obligation_type_id: 123 status: PENDING priority: MEDIUM contract_id: 86311 custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly ContractProcessMetricResponse: title: ContractProcessMetricResponse type: object properties: contract_id: title: Contract Id description: Id of the contract that this data belongs to type: integer contract_sent_to_cp_datetime: title: Contract Sent To Cp Datetime description: Date and time when the contract was first sent to Counterparty type: string format: date-time cp_added_info_initial_datetime: title: Cp Added Info Initial Datetime description: Date and time when the Counterparty updated contract data for the first time type: string format: date-time cp_added_info_latest_datetime: title: Cp Added Info Latest Datetime description: Date and time when the Counterparty updated contract data type: string format: date-time cp_opened_review_email_datetime: title: Cp Opened Review Email Datetime description: Date and time when the Counterparty opened the contract review email for the first time type: string format: date-time contract_signed_by_signatory_list: title: Contract Signed By Signatory List description: List of signatories along with the date and time of signature. type: array items: title: SignatoryData type: object properties: is_creator_party: title: Is Creator Party type: boolean signed_datetime: title: Signed Datetime type: string format: date-time signatory_email: title: Signatory Email type: string required: - is_creator_party - signed_datetime - signatory_email contract_turns: title: ContractTurnsData type: object properties: manual_override_reason: title: Manual Override Reason description: Reason for contract pending with counterparty having a manual override. type: string last_turn_change_datetime: title: Last Turn Change Datetime description: Date and time when the contract turn was last changed. type: string format: date-time last_turn_change_org_user_email: title: Last Turn Change Org User Email description: User that caused the last turn change to happen. type: string no_of_turns: title: No Of Turns description: Number of turns recorded on this contract. default: 0 type: integer contract_executed_datetime: title: Contract Executed Datetime description: Date and time when the contract was executed. type: string format: date-time type_of_workflow: title: Type Of Workflow description: Contract kind. type: string contract_status: title: Contract Status description: Current status of contract. type: string marked_for_signature_datetime: title: Marked For Signature Datetime description: Date and time when the contract was made ready to accept signatures. type: string format: date-time pending_with: allOf: - $ref: '#/components/schemas/PendingWithEnum' title: ContractPendingWith description: Contract pending with party. required: - contract_id - contract_turns examples: - contract_id: 1234 contract_sent_to_cp_datetime: '2019-08-24T14:15:22Z' cp_added_info_initial_datetime: '2019-08-24T14:15:22Z' cp_added_info_latest_datetime: '2019-08-24T14:15:22Z' cp_opened_review_email_datetime: '2019-08-24T14:15:22Z' contract_signed_by_signatory_list: - is_creator_party: true signed_datetime: '2019-08-24T14:15:22Z' signatory_email: Mike_reed@yahoo.com contract_turns: manual_override_reason: Reason for manual override last_turn_change_datetime: '2019-08-24T14:15:22Z' last_turn_change_org_user_email: johndoe@example.com no_of_turns: 2 contract_executed_datetime: '2019-08-24T14:15:22Z' type_of_workflow: UPLOAD_SIGN contract_status: COMPLETED marked_for_signature_datetime: '2019-08-24T14:15:22Z' pending_with: COUNTER_PARTY ContractResponseV2: title: ContractResponseV2 description: Must be kept in sync with ExternalContractV3Serializer type: object properties: id: title: Id description: The Id of the contract on SpotDraft's Platform. type: string created: title: Created description: The date and time at which the contract was created or uploaded on SpotDraft's platform. type: string format: date-time contract_name: title: Contract Name description: The name of the contract that is visible to users. type: string contract_link: title: Contract Link description: The Url to view the contract. type: string contract_status: title: Contract Status description: The status of the contract. type: string created_by: title: Created By description: The full name of user who created or uploaded the executed contract on to SpotDraft's platform. type: string counter_party_name: title: Counter Party Name description: The full name of the counter party involved in the contract. type: string contract_type_name: title: Contract Type Name description: The type of the contract. type: string contract_type_id: title: Contract Type Id description: The ID of the contract type. type: integer external_metadata: title: External Metadata type: object reference_id: title: Reference Id type: string created_by_user_name: title: Created By User Name description: The full name of user who created or uploaded the executed contract on to SpotDraft's platform. type: string created_by_user_email: title: Created By User Email description: The email of user who created or uploaded the executed contract on to SpotDraft's platform. type: string created_by_workspace: title: Created By Workspace description: The workspace ID of the user who created or uploaded the executed contract on to SpotDraft's platform. type: integer required: - id - created - contract_name - contract_link - contract_status - created_by - counter_party_name - contract_type_name - contract_type_id - created_by_workspace examples: - id: T-1234 created: '2021-05-20T04:52:04Z' contract_name: Acme Corporation NDA contract_link: https://app.spotdraft.com/contracts/v2/4322 contract_status: EXECUTED created_by: Morgan Freeman counter_party_name: Mike Reed contract_type_name: Historic contract_type_id: 103 external_metadata: {} created_by_user_name: Elena Kagan created_by_user_email: elena@acme.com created_by_workspace: 1 ContractTypeAccessControlListAPIRequest: title: ContractTypeAccessControlListAPIRequest type: object properties: permission_filter_list: description: List of permission types to filter on. Provide one or more permission enum values. type: array items: allOf: - $ref: '#/components/schemas/PermissionFilterListEnum' title: ExternalContractInvitePermissionType description: An enumeration. required: - permission_filter_list ContractTypeListDomainModel: title: ContractTypeListDomainModel type: array items: title: ContractTypeDomainModel type: object properties: id: title: Id type: integer name: title: Name type: string required: - id - name examples: - - id: 100 name: General ContractUnMarkForExecutionRequest: title: ContractUnMarkForExecutionRequest type: object properties: note: title: Note description: Optional note explaining the reason for un-marking the contract for execution. type: string examples: - note: Client requested some edits to the contract ContractUploadForReviewRequest: title: ContractUploadForReviewRequest type: object properties: contract_name: title: Contract Name description: The name of the uploaded contract that is visible to users. type: string contract_type_id: title: Contract Type Id description: The ID of the contract type for this uploaded contract. Use the [Get Contract Types](#tag/V2.1-Contract-Type-APIs/operation/v2.1_public_contract_types_list) API to get this ID. type: integer file_name: title: File Name description: The name of the file being uploaded. This is used when the file is downloaded. Expected to be a fully qualified file name with an extension. type: string file_base64: title: File Base64 description: The contents of the file as a base64 encoded string. type: string creator_organization_entity_id: title: Creator Organization Entity Id description: The ID of the organization entity for the creator party of the uploaded contract. Use the [Get Organization Entities](#tag/V2.1-Organization-APIs/operation/v2.1_public_organizations_entities_list) API to get this ID. type: integer external_metadata: title: External Metadata type: object properties: id: title: Id description: Identifier of the record in the external system. integration_name: title: Integration Name description: Name of the external integration, for example Salesforce. type: string record_type: title: Record Type description: External record type, for example Opportunity or Account. type: string record_data: title: Record Data description: Arbitrary metadata payload from the external system. type: object object_configuration_id: title: Object Configuration Id description: Optional public identifier for a native integration object configuration. When provided, also send `record_type`. The API resolves and stores the corresponding internal entity reference. type: string format: uuid description: Optional external system metadata to associate with the uploaded contract. reviewer: title: Reviewer type: object properties: org_user_email: title: Org User Email description: Email of the reviewer type: string role_id: title: Role Id description: Role id of reviewer type: integer description: title: Description description: Note to the reviewer default: '' type: string description: Used to set reviewer for contract being uploaded counterparty_workspace_id: title: Counterparty Workspace Id description: workspace_id of counterparty organization. Either this field or `counterparty_organization_name` is required. type: integer counterparty_organization_name: title: Counterparty Organization Name description: The name of the counter party's organization. Either this field or `counterparty_workspace_id` is required. type: string counterparty_is_individual: title: Counterparty Is Individual description: Defines if this Counterparty is an individual or an organization like a company.When not provided organization like company is created. type: boolean counterparty_poc_details: title: Counterparty Poc Details type: object properties: first_name: title: First Name description: The first name of the Point of Contact type: string last_name: title: Last Name description: The last name of the Point of Contact type: string email: title: Email description: The email address of the Point of Contact type: string required: - first_name - last_name - email description: Point of Contact details for this counterparty. Should be the details of the individual for `counterparty_is_individual=True` and the details of the contact at the counterparty organization in case of `counterparty_is_individual=False`. intake_form_data: title: Intake Form Data description: A key-value object keyed by intake-form questionnaire field name. Values must match the question type configured on the upload workflow. Use the Intake Form Questionnaire API to discover the allowed field names and expected value shapes. type: object business_user_email: title: Business User Email description: The email address of the business user for the Upload for Sign contract. type: string format: email creator_signatories: title: Creator Signatories description: Details of the signatories on the creator party side. type: array items: title: CreatorPartySignatoryRequest type: object properties: email: title: Email description: Email of the signatory on the creator party side. type: string format: email title: title: Title description: Title of the signatory. default: '' type: string note: title: Note description: Note for the signatory type: string required: - email required: - contract_name - contract_type_id - file_name - file_base64 examples: - contract_name: Acme Vendor Paper contract_type_id: 1 file_name: vendor-paper.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example reviewer: org_user_email: reviewer@spotdraft.example description: Please review the indemnity clause and payment terms. intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice ContractUploadForSignatureRequest: title: ContractUploadForSignatureRequest type: object properties: contract_name: title: Contract Name description: The name of the uploaded contract that is visible to users. type: string contract_type_id: title: Contract Type Id description: The ID of the contract type for this uploaded contract. Use the [Get Contract Types](#tag/V2-Contract-Type-APIs/operation/v2_public_contract_types_list) API to get this ID. type: integer file_name: title: File Name description: The name of the file being uploaded. This is used when the file is downloaded. Expected to be a fully qualified file name with an extension. minLength: 1 type: string file_base64: title: File Base64 description: The contents of the file as a base64 encoded string. minLength: 1 type: string creator_organization_entity_id: title: Creator Organization Entity Id description: The ID of the organization entity for the creator party of the uploaded contract. Use the [Get Organization Entities](#tag/V2-Organization-APIs/operation/v2_public_organizations_entities_list) API to get this ID. type: integer counterparty_organization_name: title: Counterparty Organization Name description: The name of the counter party's organization. type: string external_metadata: title: External Metadata type: object properties: id: title: Id description: Identifier of the record in the external system. integration_name: title: Integration Name description: Name of the external integration, for example Salesforce. type: string record_type: title: Record Type description: External record type, for example Opportunity or Account. type: string record_data: title: Record Data description: Arbitrary metadata payload from the external system. type: object object_configuration_id: title: Object Configuration Id description: Optional public identifier for a native integration object configuration. When provided, also send `record_type`. The API resolves and stores the corresponding internal entity reference. type: string format: uuid description: Optional external system metadata to associate with the uploaded contract. counterparty_is_individual: title: Counterparty Is Individual description: Defines if this Counterparty is an individual or an organization like a company. When not provided, the counterparty is treated as an organization. type: boolean counterparty_poc_details: title: Counterparty Poc Details type: object properties: first_name: title: First Name description: The first name of the Point of Contact type: string last_name: title: Last Name description: The last name of the Point of Contact type: string email: title: Email description: The email address of the Point of Contact type: string required: - first_name - last_name - email description: Point of Contact details for this counterparty. Should be the details of the individual for `counterparty_is_individual=True` and the details of the contact at the counterparty organization in case of `counterparty_is_individual=False`. intake_form_data: title: Intake Form Data description: A key-value object keyed by intake-form questionnaire field name. Values must match the question type configured on the upload workflow. Use the Intake Form Questionnaire API to discover the allowed field names and expected value shapes. type: object business_user_email: title: Business User Email description: The email address of the business user for the Upload for Sign contract. type: string format: email creator_signatories: title: Creator Signatories description: Details of the signatories on the creator party side. type: array items: title: CreatorPartySignatoryRequest type: object properties: email: title: Email description: Email of the signatory on the creator party side. type: string format: email title: title: Title description: Title of the signatory. default: '' type: string note: title: Note description: Note for the signatory type: string required: - email required: - contract_name - contract_type_id - file_name - file_base64 - counterparty_organization_name examples: - contract_name: Acme Corporation NDA contract_type_id: 1 file_name: Acme_nda.pdf file_base64: base64 encoded string of the PDF file creator_organization_entity_id: 1 counterparty_organization_name: Acme Corporation external_metadata: id: hubspot-deal-10024 integration_name: HubSpot record_type: Deal record_data: deal_stage: contractsent owner_email: owner@acme.example counterparty_is_individual: false counterparty_poc_details: first_name: Avery last_name: Stone email: legal@acme.example intake_form_data: term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice business_user_email: owner@spotdraft.example CounterPartyAPIResponse: title: CounterPartyAPIResponse type: object properties: id: title: Id description: The ID of this Counterparty. Globally Unique. type: integer name: title: Name description: The name of this Counterparty. Unique within a workspace. type: string is_individual: title: Is Individual description: Defines if this Counterparty is an individual or an organization like a company. type: boolean contacts: title: Contacts description: The list of contacts associated with this counterparty. type: array items: title: ContactResponse type: object properties: id: title: Id description: The id of the contact. type: integer name: title: Name description: The name of the contact. type: string email: title: Email description: The email of the contact. type: string required: - id - name - email primary_address: title: Primary Address type: object properties: id: title: Id description: The ID of this address. Globally Unique. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string required: - id - line_one - city_name - state_name - zipcode - country_name examples: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 description: The address details of the counterparty. Used to render the address in the contract templates. status: allOf: - $ref: '#/components/schemas/CounterPartyAPIResponseStatusEnum' title: OrganizationStatus description: Status of the Counterparty. Valid values are ACTIVE and ARCHIVED. custom_fields: title: Custom Fields description: Custom field values for the Counterparty type: object brand_name: title: Brand Name description: The brand name of the counterparty. This is typically used for display purposes and contract templates. type: string required: - id - name - is_individual - contacts - status examples: - id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 CounterPartyAPIResponseStatusEnum: enum: - ACTIVE - ARCHIVED - MIGRATING type: string CounterPartyAddressResponse: title: CounterPartyAddressResponse type: object properties: id: title: Id description: The ID of this address. Globally Unique. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string required: - id - line_one - city_name - state_name - zipcode - country_name examples: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 CounterPartyContactResponse: title: CounterPartyContactResponse type: object properties: id: title: Id description: The ID of this contact. Globally Unique. type: integer name: title: Name description: The name of this contact. type: string email: title: Email description: The email of this contact. type: string is_primary: title: Is Primary description: Defines if this contact is the primary contact for the associated counterparty. type: boolean required: - id - name - email - is_primary examples: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false CounterPartyContactsListAPIResponse: title: CounterPartyContactsListAPIResponse type: object properties: page: title: Page type: integer limit: title: Limit type: integer total_results: title: Total Results type: integer results: title: Results type: array items: title: CounterPartyContactResponse type: object properties: id: title: Id description: The ID of this contact. Globally Unique. type: integer name: title: Name description: The name of this contact. type: string email: title: Email description: The email of this contact. type: string is_primary: title: Is Primary description: Defines if this contact is the primary contact for the associated counterparty. type: boolean required: - id - name - email - is_primary examples: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false required: - page - limit - total_results - results examples: - page: 1 limit: 10 total_results: 1 results: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false CounterPartyEmbeddedUrlResponse: title: CounterPartyEmbeddedUrlResponse type: object properties: url: title: Url type: string required: - url CounterPartyKindEnum: enum: - Individual - Organisation - Both type: string CounterpartyListAPIResponse: title: CounterpartyListAPIResponse type: object properties: page: title: Page type: integer limit: title: Limit type: integer total_results: title: Total Results type: integer results: title: Results type: array items: title: CounterPartyAPIResponse type: object properties: id: title: Id description: The ID of this Counterparty. Globally Unique. type: integer name: title: Name description: The name of this Counterparty. Unique within a workspace. type: string is_individual: title: Is Individual description: Defines if this Counterparty is an individual or an organization like a company. type: boolean contacts: title: Contacts description: The list of contacts associated with this counterparty. type: array items: title: ContactResponse type: object properties: id: title: Id description: The id of the contact. type: integer name: title: Name description: The name of the contact. type: string email: title: Email description: The email of the contact. type: string required: - id - name - email primary_address: title: Primary Address type: object properties: id: title: Id description: The ID of this address. Globally Unique. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string required: - id - line_one - city_name - state_name - zipcode - country_name examples: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 description: The address details of the counterparty. Used to render the address in the contract templates. status: title: OrganizationStatus description: Status of the Counterparty. Valid values are ACTIVE and ARCHIVED. enum: - ACTIVE - ARCHIVED - MIGRATING type: string custom_fields: title: Custom Fields description: Custom field values for the Counterparty type: object brand_name: title: Brand Name description: The brand name of the counterparty. This is typically used for display purposes and contract templates. type: string required: - id - name - is_individual - contacts - status examples: - id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 required: - page - limit - total_results - results examples: - page: 1 limit: 10 total_results: 50 results: - id: 102 name: Mike Reed is_individual: false contacts: - id: 100 name: Susan Ervin email: SueErvin@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' status: ACTIVE custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 CounterpartyListAddressResponse: title: CounterpartyListAddressResponse type: object properties: page: title: Page type: integer limit: title: Limit type: integer total_results: title: Total Results type: integer results: title: Results type: array items: title: CounterPartyAddressResponse type: object properties: id: title: Id description: The ID of this address. Globally Unique. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string required: - id - line_one - city_name - state_name - zipcode - country_name examples: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 required: - page - limit - total_results - results examples: - page: 1 limit: 10 total_results: 50 results: - id: 100 line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: john.doe@gmail.com phone: (415) 555-0198 CreateClickwrapContractRequest: title: CreateClickwrapContractRequest type: object properties: clickwrap_public_id: title: Clickwrap Public Id description: Public clickwrap id that identifies the clickwrap experience. type: string format: uuid user_identifier: title: User Identifier description: Your stable identifier for the end user accepting the clickwrap, such as an email address or application user id. type: string clickwrap_id: title: Clickwrap Id description: Internal clickwrap id resolved by SpotDraft for the requested public clickwrap. type: integer first_name: title: First Name description: Optional first name for the accepting user. type: string last_name: title: Last Name description: Optional last name for the accepting user. type: string user_email: title: User Email description: Optional email address for the accepting user. type: string ip_address: title: Ip Address description: IP address captured for the acceptance event. type: string additional_custom_information: title: Additional Custom Information description: Optional custom key-value metadata to store alongside the acceptance record. type: object key_pointer_information: title: Key Pointer Information description: Optional structured values to populate contract metadata fields during clickwrap contract creation. type: object agreements: title: Agreements description: Agreement versions the user is accepting as part of this clickwrap execution. minItems: 1 type: array items: title: CreateClickwrapContractAgreementVersionRequest type: object properties: id: title: Id description: Agreement id included in the clickwrap execution request. type: integer version_id: title: Version Id description: Published agreement version id the user is accepting. type: integer has_clicked: title: Has Clicked description: Whether the user opened or interacted with this agreement before acceptance. default: false type: boolean required: - id - version_id external_metadata: title: External Metadata description: Optional external-system metadata to associate with the created clickwrap contract. type: object required: - clickwrap_public_id - user_identifier - clickwrap_id - agreements CreateContractObligationPublicRequest: title: CreateContractObligationPublicRequest type: object properties: obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' tasks: title: Tasks description: The tasks related the obligation type: array items: title: UserTaskCreateRequest type: object properties: title: title: Title description: Title of the task minLength: 1 type: string notes: title: Notes description: Notes for the task default: '' type: string contract_id: title: Contract Id description: Contract Id for the task type: integer due_date: title: Due Date description: The date and time when this task is due for completion. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: string format: date-time due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: integer assignees: title: Assignees description: List of assignees for the task. For non-intake tasks, at least one assignee is required. Each assignee must set exactly one of `org_user_id` or `role_id`. type: array items: title: TaskAssigneeCreateRequest type: object properties: org_user_id: title: Org User Id type: integer role_id: title: Role Id type: integer reminders: title: Reminders description: List of reminders relative to the due date. Reminder values must use the supported duration object shape. type: array items: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days task_category: title: TaskCategory description: The category of the task. `priority` and `intake_task_status` are only allowed for `INTAKE_TASK`. enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string priority: title: TaskPriority description: Priority of the task. Only allowed for `INTAKE_TASK`; defaults to `MEDIUM` when omitted for intake tasks. enum: - LOW - MEDIUM - HIGH type: string intake_task_status: title: IntakeTaskStatus description: Status of the intake task. Only allowed for `INTAKE_TASK`; defaults to `PENDING` when omitted for intake tasks. enum: - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED type: string task_associations: title: Task Associations description: The associations of the task type: array items: title: TaskAssociationCreateRequest type: object properties: entity_id: title: Entity Id description: The ID of the entity for the task association type: integer entity_type: title: TaskAssociationEntityType description: The type of the entity for the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: The type of the association for the task association enum: - PRIMARY - SECONDARY type: string default: PRIMARY required: - title - assignees examples: - title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS status: allOf: - $ref: '#/components/schemas/StatusDc2Enum' title: ObligationStatus description: The status of the obligation custom_fields: title: Custom Fields type: object properties: clause: title: Clause description: The clause where the obligation is mentioned type: string contractual_delivery_value: title: Contractual Delivery Value description: The contractual delivery value of the obligation anyOf: - type: integer - type: number - type: string frequency: title: Frequency description: The frequency of the obligation type: string description: The custom fields of the obligation priority: allOf: - $ref: '#/components/schemas/PriorityEnum' title: ObligationPriority description: The priority of the obligation required: - obligation_type_id - title - end_date - priority examples: - obligation_type_id: 123 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: 1000000 frequency: Monthly tasks: title: test title notes: test note contract_id: 86311 due_date: '2021-05-20T04:52:04Z' due_date_key_pointer_id: 1 assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS CreateContractObligationPublicRequestList: title: CreateContractObligationPublicRequestList description: The list of obligations type: array items: title: CreateContractObligationPublicRequest type: object properties: obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' tasks: title: Tasks description: The tasks related the obligation type: array items: title: UserTaskCreateRequest type: object properties: title: title: Title description: Title of the task minLength: 1 type: string notes: title: Notes description: Notes for the task default: '' type: string contract_id: title: Contract Id description: Contract Id for the task type: integer due_date: title: Due Date description: The date and time when this task is due for completion. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: string format: date-time due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: integer assignees: title: Assignees description: List of assignees for the task. For non-intake tasks, at least one assignee is required. Each assignee must set exactly one of `org_user_id` or `role_id`. type: array items: title: TaskAssigneeCreateRequest type: object properties: org_user_id: title: Org User Id type: integer role_id: title: Role Id type: integer reminders: title: Reminders description: List of reminders relative to the due date. Reminder values must use the supported duration object shape. type: array items: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days task_category: title: TaskCategory description: The category of the task. `priority` and `intake_task_status` are only allowed for `INTAKE_TASK`. enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string priority: title: TaskPriority description: Priority of the task. Only allowed for `INTAKE_TASK`; defaults to `MEDIUM` when omitted for intake tasks. enum: - LOW - MEDIUM - HIGH type: string intake_task_status: title: IntakeTaskStatus description: Status of the intake task. Only allowed for `INTAKE_TASK`; defaults to `PENDING` when omitted for intake tasks. enum: - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED type: string task_associations: title: Task Associations description: The associations of the task type: array items: title: TaskAssociationCreateRequest type: object properties: entity_id: title: Entity Id description: The ID of the entity for the task association type: integer entity_type: title: TaskAssociationEntityType description: The type of the entity for the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: The type of the association for the task association enum: - PRIMARY - SECONDARY type: string default: PRIMARY required: - title - assignees examples: - title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS status: title: ObligationStatus description: The status of the obligation enum: - PENDING - COMPLETED - FAILED - VERIFIED type: string custom_fields: title: Custom Fields type: object properties: clause: title: Clause description: The clause where the obligation is mentioned type: string contractual_delivery_value: title: Contractual Delivery Value description: The contractual delivery value of the obligation anyOf: - type: integer - type: number - type: string frequency: title: Frequency description: The frequency of the obligation type: string description: The custom fields of the obligation priority: title: ObligationPriority description: The priority of the obligation enum: - LOW - MEDIUM - HIGH type: string required: - obligation_type_id - title - end_date - priority examples: - obligation_type_id: 123 title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: 1000000 frequency: Monthly tasks: title: test title notes: test note contract_id: 86311 due_date: '2021-05-20T04:52:04Z' due_date_key_pointer_id: 1 assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS CreateContractsForCoupaIntegrationRequest: title: CreateContractsForCoupaIntegrationRequest type: object properties: integration_solution_entity_id: allOf: - $ref: '#/components/schemas/IntegrationSolutionEntityIdEnum' title: Integration Solution Entity Id default: COUPA_CREATE_CONTRACT record_id: title: Record Id minLength: 1 type: string coupa_approval_id: title: Coupa Approval Id minLength: 1 type: string required: - record_id - coupa_approval_id CreateCounterPartyAPIRequest: title: CreateCounterPartyAPIRequest type: object properties: is_individual: title: Is Individual description: Defines if this Counterparty is an individual or an organization like a company. When `true`, `contact_name` and `contact_email` are required. When `false`, `organization_name` is required. type: boolean organization_type: title: Organization Type description: The type of the counterparty if it is an organization. Expects values like LLC, LLP, etc. Please ask help@spotdraft.com for valid values. type: string organization_name: title: Organization Name description: The name of the counterparty if it is an organization. Expects the name of the company/entity that is the counterparty. Required when `is_individual=false`. type: string contact_name: title: Contact Name description: The name of the counterparty in case of an individual, and the name of the Point of Contact in case of organizations. Required together with `contact_email` when `is_individual=true`. type: string contact_email: title: Contact Email description: The email of the counterparty in case of an individual, and the email of the Point of Contact in case of organizations. Required together with `contact_name` when `is_individual=true`. type: string brand_name: title: Brand Name description: The brand name of the counterparty. This is typically used for display purposes and contract templates. type: string primary_address: title: Primary Address type: object properties: line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. default: '' type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. default: '' type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. Any value passed here is ignored if `country_iso_code` is passed. Valid values are defined internally. Please ask help@spotdraft.com for more information. type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this counterparty address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string required: - line_one - city_name - country_name examples: - line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: test@yopmail.com phone: '1234567890' country_iso_code: US description: The address details of the counterparty. Used to render the address in the contract templates. custom_fields: title: Custom Fields description: 'Custom field values for the counterparty. Note: The custom_fields feature is available only upon request. To enable this feature, please contact help@spotdraft.com' type: object required: - is_individual examples: - is_individual: false organization_type: Private Limited organization_name: Acme Corporation contact_name: Mike Reed contact_email: Mike_reed@yahoo.com brand_name: Acme Corporation primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 CreateCounterPartyAddressRequest: title: CreateCounterPartyAddressRequest type: object properties: line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. default: '' type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. default: '' type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string country_name: title: Country Name description: The name of the country associated with this counterparty address. Any value passed here is ignored if `country_iso_code` is passed. Valid values are defined internally. Please ask help@spotdraft.com for more information. type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this counterparty address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string required: - line_one - city_name - country_name examples: - line_one: 'st: 3, block: 2, Jenkins Road' city_name: Cincinnati state_name: Ohio zipcode: '513' country_name: USA email: test@yopmail.com phone: '1234567890' country_iso_code: US CreateExecutedContractAPIRequest: title: CreateExecutedContractAPIRequest type: object properties: contract_name: title: Contract Name description: The display name of the executed contract that is visible to users. This is caller-provided metadata and is not inferred from file contents. type: string file_name: title: File Name description: The name of the file being uploaded. This is used when the file is downloaded. Expected to be a fully qualified file name with an extension. Only `.pdf` files are accepted. type: string file_content: title: File Content description: The contents of the file as a base64 encoded string. The decoded file must be a valid PDF. type: string contract_type_id: title: Contract Type Id description: 'The ID of the contract type for this executed contract. Use the [Get Contract Types](#tag/v2-contract-types/GET/api/v2/public/contract_types/) API to get this ID. ' type: integer organization_entity_id: title: Organization Entity Id description: 'The ID of the organization entity for this executed contract. Use the [Get Organization Entity](#tag/v21-organizations/GET/api/v2.1/public/organizations/entities/) API to get this ID. ' type: integer counterparty_details: title: Counterparty Details description: The list of counterparties involved in the executed contract. Counterparty naming values are caller-provided and used for display/association metadata. type: array items: title: CounterPartyDetails type: object properties: is_individual: title: Is Individual description: Defines if this Counterparty is an individual or an organization like a company type: boolean organization_type: title: Organization Type description: The type of the counterparty if it is an organization. Expects values like LLC, LLP, etc. Please ask help@spotdraft.com for valid values. type: string organization_name: title: Organization Name description: The name of the counterparty if it is an organization. Expects the name of the company/entity that is the counterparty. Required when `is_individual=false`. type: string organization_details: title: Organization Details type: object properties: jurisdiction: title: Jurisdiction description: The jurisdiction to which this organization belongs. Valid values are defined internally. Please reach out to help@spotdraft.com for a list. type: string address: title: Address type: object properties: city: title: City description: The city name for this address. type: string state: title: State description: The state name for this address. default: '' type: string country: title: Country description: The name of the country associated with this counterparty address. Any value passed here is ignored if `country_iso_code` is passed. Valid values are defined internally. Please ask help@spotdraft.com for more information. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. default: '' type: string line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string line_two: title: Line Two description: The second address line (if any). type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string gst_number: title: Gst Number description: The GST Number for this Organization. Can be unset if not available or applicable. type: string tax_id: title: Tax Id description: The VAT/GST/Sales Tax/etc ID for this Organization. type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this counterparty address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string required: - city - country - line_one description: The primary address for this organization (if any) description: Additional details for an organization. Should be set if `is_individual=False` poc_details: title: Poc Details type: object properties: first_name: title: First Name description: The first name of the Point of Contact type: string last_name: title: Last Name description: The last name of the Point of Contact type: string email: title: Email description: The email address of the Point of Contact type: string required: - first_name - last_name - email description: Point of Contact details for this counterparty. Should be the details of the individual for `is_individual=True` and the details of the contact at the counterparty organization in case of `is_individual=False`. party_role_identifier: title: Party Role Identifier description: The unique identifier of the party this counterparty should be assigned to. minLength: 1 type: string required: - is_individual - poc_details examples: - is_individual: true organization_type: Private Limited organization_name: Acme Corporation organization_details: {} poc_details: first_name: Mike last_name: Reed email: Mike_reed@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' external_metadata: title: External Metadata type: object properties: id: title: Id description: Identifier of the record in the external system. integration_name: title: Integration Name description: Name of the external integration, for example Salesforce. type: string record_type: title: Record Type description: External record type, for example Opportunity or Account. type: string record_data: title: Record Data description: Arbitrary metadata payload from the external system. type: object object_configuration_id: title: Object Configuration Id description: Optional public identifier for a native integration object configuration. When provided, also send `record_type`. The API resolves and stores the corresponding internal entity reference. type: string format: uuid description: Optional external system metadata to associate with the executed contract. required: - contract_name - file_name - file_content - contract_type_id - organization_entity_id examples: - contract_name: Acme Corporation NDA file_name: Acme_nda.pdf file_content: base64 encoded string of the file content contract_type_id: 103 organization_entity_id: 78 external_metadata: {} counterparty_details: - is_individual: true organization_type: Private Limited organization_name: Acme Corporation organization_details: {} poc_details: first_name: Mike last_name: Reed email: Mike_reed@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' CreateOrganizationEntityRequest: title: CreateOrganizationEntityRequest type: object properties: name: title: Name description: The name of the entity. minLength: 1 type: string reference_id: title: Reference Id description: The caller-defined reference ID of the entity. Use a value that is unique within your integration so you can map the SpotDraft entity back to your source system. type: string jurisdiction_iso_code: title: Jurisdiction Iso Code description: The ISO-3166-1 Alpha-2 code of the country which is the jurisdiction for this organization entity. Any value passed here is overrides `jurisdiction`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string organization_type_id: title: Organization Type Id description: The ID of the type of this entity. This identifies the company type. For example LLP vs LLC vs S Corp in the US. Check [Get Organization Types](#tag/v2-organizations/GET/api/v2/public/organizations/types/) to get the ID of organization type. type: integer is_primary: title: Is Primary description: To set the entity as the primary entity. If set to `TRUE`, this will replace the existing entity as the primary entity. type: boolean primary_address: title: Primary Address type: object properties: line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this organization entity address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string required: - line_one - city_name - state_name - zipcode - country_iso_code examples: - city_name: Houston state_name: Texas zipcode: '77020' line_one: 3659 Burwell Heights Road country_iso_code: US description: The primary address for the entity. required: - name - reference_id - jurisdiction_iso_code - organization_type_id - is_primary - primary_address examples: - name: Acme Inc. reference_id: US1 jurisdiction_iso_code: US organization_type_id: 1 primary_address: city_name: Houston state_name: Texas zipcode: '77020' line_one: 3659 Burwell Heights Road country_iso_code: US is_primary: false CreateSignatoryResendEmailAPIRequest: title: CreateSignatoryResendEmailAPIRequest type: object properties: email_id: title: Email Id description: The Email Address of the signatory to whom email should be resent to. type: string required: - email_id examples: - email_id: mike_reed@yahoo.com DownloadLinkRequest: description: Request body for Get Contract Download Link API. Optional; defaults to PDF if omitted. properties: format: anyOf: - $ref: '#/components/schemas/EditableDocumentDownloadFormat' - type: 'null' default: PDF description: Download format for the contract file. Defaults to `PDF` when omitted. title: DownloadLinkRequest type: object DownloadUrl: type: object properties: url: type: string description: The URL from which this contract can be downloaded. file_name: type: string description: The file name of the contract. current_version_id: type: integer description: The ID of the current version of the contract. required: - file_name - url EditableDocumentDownloadFormat: enum: - PDF - DOCX - DOCX_WITH_FALLBACK_TO_PDF title: EditableDocumentDownloadFormat type: string EditorClientEnum: enum: - ONLY_OFFICE_NATIVE - WOPI - UNSET type: string EmailBase64Attachment: type: object properties: file_name: type: string mime_type: type: string content_base64: type: string required: - content_base64 - file_name - mime_type EntityTypeEnum: enum: - ORG_USER type: string ExternalApprovalListResponse: title: ExternalApprovalListResponse type: array items: title: ExternalApprovalResponse type: object properties: id: title: Id type: integer contract_id: title: Contract Id description: The id of the contract to which the approval belongs. type: integer name: title: Name description: The name that will be used to represent the approval in Spotdraft. type: string approver_user_id: title: Approver User Id description: The ID of the user who has to take action on this Approval. Either `approver_user_id` or `approver_role_id` will always be set, but not both. type: integer approver_role_id: title: Approver Role Id description: The ID of the role that has to take action on this Approval. Either `approver_user_id` or `approver_role_id` will always be set, but not both. type: integer is_sent: title: Is Sent description: Set to true when the approval request has been sent to the approver. type: boolean notes: title: Notes description: The message that will be sent to the approver along with the approval request. type: string order: title: Order description: The order denotes the sequence in which the approval requests will be sent to the approver of each approval. Lower values of order are sent before higher values of order. Approvals with same order will be sent to the approver at the same time. type: integer required: - id - contract_id - name - is_sent examples: - - id: 1001 contract_id: 211270 name: Legal Approval approver_user_id: 10324 approver_role_id: null is_sent: true notes: Please take a look need your approval. order: 1 - id: 1002 contract_id: 211270 name: Finance team Approval approver_user_id: null approver_role_id: 60414 is_sent: true notes: Hi team need your approval on this contract. order: 2 ExternalCommentListResponse: title: ExternalCommentListResponse type: object properties: page: title: Page type: integer limit: title: Limit type: integer total_results: title: Total Results type: integer results: title: Results type: array items: title: ExternalCommentResponse type: object properties: id: title: Id type: integer contract_id: title: Contract Id description: The id of the contract to which the comment belongs. type: integer comment: title: Comment description: The content of the comment. type: string replies: title: Replies description: The replies associated with the comment. type: array items: title: ExternalReplyResponse type: object properties: id: title: Id type: integer comment: title: Comment description: The content of the reply. type: string required: - id - comment required: - id - contract_id - comment - replies examples: - id: 1001 contract_id: 211270 comment: Hey test.user@spotdraft.com please review this contract. replies: [] required: - page - limit - total_results - results examples: - page: 1 limit: 10 total_results: 2 results: - id: 1001 contract_id: 211270 comment: This is sample comment. replies: - id: 2021 comment: This is a sample reply. - id: 1002 contract_id: 211270 comment: Hi team this contract need your review. replies: [] ExternalCommentResponse: title: ExternalCommentResponse type: object properties: id: title: Id type: integer contract_id: title: Contract Id description: The id of the contract to which the comment belongs. type: integer comment: title: Comment description: The content of the comment. type: string replies: title: Replies description: The replies associated with the comment. type: array items: title: ExternalReplyResponse type: object properties: id: title: Id type: integer comment: title: Comment description: The content of the reply. type: string required: - id - comment required: - id - contract_id - comment - replies examples: - id: 1001 contract_id: 211270 comment: Hey test.user@spotdraft.com please review this contract. replies: [] ExternalContractInviteRequest: title: ExternalContractInviteRequest type: object properties: items: title: Items description: The list of roles/org users/new emails to be invited for this contract. The list cannot be empty. type: array items: title: ExternalContractInviteRequestItem type: object properties: role_id: title: Role Id description: The Role ID to be invited. [This](https://api.spotdraft.com/api/v2/public/auth/roles) API can be used to fetch the role ID. type: integer user_id: title: User Id description: The User ID to be invited. [This](https://api.spotdraft.com/api/v2.1/public/auth/users) API can be used to fetch the user ID. type: integer new_user_email: title: New User Email description: Email of the new user to be invited. Set exactly one of `role_id`, `user_id`, or `new_user_email`. minLength: 1 type: string new_user_name: title: New User Name description: Name of the new user to be invited. default: '' minLength: 1 type: string new_user_role_id: title: New User Role Id description: Role ID to which the new invited user is to be assigned. [This](https://api.spotdraft.com/api/v2/public/auth/roles) API can be used to fetch the role ID. type: integer note: title: Note description: Note to be included in the contract invite. default: '' minLength: 1 type: string permission_name: title: ExternalContractInvitePermissionType description: The type of permission to be provided to the invited role/user. enum: - CONTRACT.READ - CONTRACT.SUGGEST - CONTRACT.EDIT - CONTRACT.SIGN type: string required: - permission_name required: - items examples: - items: - role_id: 34 permission_name: CONTRACT.READ note: Inviting Legal team with contract read access. ExternalContractInviteResponse: title: ExternalContractInviteResponse type: object properties: impacted_users: title: Impacted Users description: The list of users invited. default: [] type: array items: title: ExternalUserPublicResponse type: object properties: id: title: Id description: Id of the User. type: integer name: title: Name description: Name of the User. default: '' type: string email: title: Email description: Email of the User. type: string format: email designation: title: Designation description: Designation of the User. type: string required: - id - email impacted_roles: title: Impacted Roles description: The list of roles invited. default: [] type: array items: title: ExternalRolePublicResponse type: object properties: id: title: Id description: Id of the role. type: integer name: title: Name description: Name of the role. minLength: 1 type: string description: title: Description description: Description of the role. type: string required: - id - name - description examples: - impacted_users: [] impacted_roles: - id: 34 name: Legal description: Legal team ExternalContractQuestionnairePublicResponse: title: ExternalContractQuestionnairePublicResponse type: object properties: questionnaire_response_data: title: Questionnaire Response Data description: Questionnaire response data for the contract. type: object respondents: title: Respondents description: List of users who answered the questionnaire. type: array items: title: ExternalContractQuestionnaireRespondentPublicData description: Respondent data for contract questionnaire responses type: object properties: created_at: title: Created At description: Time when the respondent filled the questionnaire for the contract type: string format: date-time created_by: title: Created By description: Respondent name who filled questionnaire for the contract type: string org_name: title: Org Name description: Name of the organization to which respondent belongs to. type: string required: - questionnaire_response_data examples: - questionnaire_response_data: department: product respondents: - created_at: '2023-06-14T10:46:15.205587Z' created_by: Mike Reed org_name: Acme Inc. ExternalContractRelationCreateRequest: title: ExternalContractRelationCreateRequest type: object properties: related_contract_id: title: Related Contract Id description: ID of the contract that is being related. type: integer relation_type: allOf: - $ref: '#/components/schemas/RelationTypeEnum' title: ContractRelationType description: Type of relationship established with the related contract. required: - related_contract_id - relation_type examples: - related_contract_id: 1234 relation_type: CHILD ExternalContractRelationResponse: title: ExternalContractRelationResponse type: object properties: id: title: Id description: Contract Relation ID type: integer related_contract_id: title: Related Contract Id description: ID of the contract that is being related. type: integer relation_type: allOf: - $ref: '#/components/schemas/RelationTypeEnum' title: ContractRelationType description: Type of relationship established with the related contract. created: title: Created description: The date and time at which the contract relation was created type: string format: date-time required: - id - related_contract_id - relation_type - created examples: - id: 1000 related_contract_id: 1234 relation_type: CHILD created: '2021-05-20T04:52:04Z' ExternalContractStatus: type: object description: Defines the data that is required to show the status of a contract properties: contract_status: allOf: - $ref: '#/components/schemas/ContractDisplayStatusEnum' description: 'The status of this contract. * `DRAFT` - DRAFT * `REDLINING` - REDLINING * `SIGN` - SIGN * `EXECUTED` - EXECUTED * `ON_HOLD` - ON_HOLD * `VOIDED` - VOIDED' contract_name: type: string description: The name of the contract that is visible to users. required: - contract_name - contract_status ExternalContractTypeAccessControlListAPIResponse: title: ExternalContractTypeAccessControlListAPIResponse type: object properties: contract_type_id: title: Contract Type Id type: integer contract_type_name: title: Contract Type Name type: string permission_list: title: Permission List type: array items: title: ExternalAccessControlListItem type: object properties: permission_label: title: Permission Label type: string authorized_list: title: Authorized List type: array items: title: ExternalPolicyResponse type: object properties: kind: title: Kind type: string subject_id: title: Subject Id type: integer role: title: ExternalRolePublicResponse type: object properties: id: title: Id description: Id of the role. type: integer name: title: Name description: Name of the role. minLength: 1 type: string description: title: Description description: Description of the role. type: string required: - id - name - description user: title: ExternalUserPublicResponse type: object properties: id: title: Id description: Id of the User. type: integer name: title: Name description: Name of the User. default: '' type: string email: title: Email description: Email of the User. type: string format: email designation: title: Designation description: Designation of the User. type: string required: - id - email required: - kind - subject_id required: - permission_label - authorized_list auto_add_read_access_creator_team: title: Auto Add Read Access Creator Team default: false type: boolean required: - contract_type_id - contract_type_name - permission_list ExternalContractTypeEntityListResponse: title: ExternalContractTypeEntityListResponse description: The list of entities for the contract type type: array items: title: ExternalContractTypeEntityResponse type: object properties: entity_id: title: Entity Id description: The id of the entity type: integer entity_name: title: Entity Name description: The name of the entity type: string entity_type: title: Entity Type description: The type of the entity type: string jurisdiction_of_incorporation: title: Jurisdiction Of Incorporation description: The jurisdiction of incorporation type: string address: title: Address type: object properties: city: title: City description: The city name for this address. type: string state: title: State description: The state name for this address. default: '' type: string country: title: Country description: The name of the country associated with this entity address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. default: '' type: string line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string required: - city - country - line_one examples: - address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' description: The address of the entity is_primary: title: Is Primary description: Defines if this is the primary entity type: boolean required: - entity_id - entity_name - entity_type - jurisdiction_of_incorporation - address - is_primary examples: - entity_id: 100 entity_name: ABC Services entity_type: Private Company jurisdiction_of_incorporation: United Arab Emirates address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' is_primary: true ExternalContractUnInviteRequest: title: ExternalContractUnInviteRequest type: object properties: user_id: title: User Id description: ID of the user that is to be uninvited. Set exactly one of `user_id` or `role_id`. type: integer role_id: title: Role Id description: ID of the role that is to be uninvited. Set exactly one of `user_id` or `role_id`. type: integer examples: - user_id: 100 role_id: 101 ExternalContractUserResponse: title: ExternalContractUserResponse type: object properties: user_id: title: User Id description: The Org User Id of user who is one users for the contract type: integer contract_id: title: Contract Id description: The contract id for which business user was updated type: integer type: allOf: - $ref: '#/components/schemas/TypeEnum' title: ContractUserType description: Type of contract user required: - user_id - contract_id - type examples: - user_id: 1234 type: BUSINESS contract_id: 1234 ExternalContractV3: type: object description: Defines the data required to be shown affter contract creation properties: id: type: integer readOnly: true created: type: string format: date-time description: The timestamp at which this contract was first created. contract_name: type: string description: The name of the contract. Might be defaulted from the template or edited by the user. contract_link: type: string readOnly: true description: The link to the SpotDraft app where this contract can be viewed. The user will need to log in (and have view access) to be able to view the contract. contract_status: allOf: - $ref: '#/components/schemas/ContractDisplayStatusEnum' description: The status of this contract. readOnly: true created_by: type: string readOnly: true description: The email address of the user who created this contract. counter_party_name: type: string readOnly: true description: The name of the Counter Party for this contract. contract_type_name: type: string readOnly: true description: The type of Contract. The types are as defined by the Client. contract_type_id: type: integer readOnly: true description: The ID of the Contract Type. created_by_workspace: type: integer readOnly: true description: The workspace ID of the user who created or uploaded the executed contract on to SpotDraft's platform. external_metadata: type: object additionalProperties: {} readOnly: true description: The external metadata associated with this contract. reference_id: type: string readOnly: true description: The reference id of the contract. required: - contract_link - contract_name - contract_status - contract_type_id - contract_type_name - counter_party_name - created - created_by - created_by_workspace - external_metadata - id - reference_id ExternalContractV3List: type: object properties: total_results: type: integer description: Total number of items in the result set. page: type: integer description: The current page number. Page numbers start at 1. limit: type: integer description: The number of items returned per page. results: type: array items: $ref: '#/components/schemas/ExternalContractV3' description: The list of Contracts required: - limit - page - results - total_results ExternalCounterPartyDetails: type: object description: Defines the data required for contract counterpartydetails properties: is_individual: type: boolean organization_type: type: string organization_name: type: string description: The legal name of the organization. Required if `is_individual` is False. poc_details: allOf: - $ref: '#/components/schemas/ExternalPOCDetails' description: Details of the primary point of contact for this counterparty. Required for both individuals and organizations. organization_details: $ref: '#/components/schemas/OrganizationDetails' party_role_identifier: type: string minLength: 1 required: - is_individual - poc_details ExternalCounterPartyDetailsSerializerV2_1: type: object description: Defines the data required for contract counterpartydetails for API V2.1 properties: is_individual: type: boolean organization_type: type: string organization_name: type: string description: The legal name of the organization. Required if `is_individual` is False. poc_details: allOf: - $ref: '#/components/schemas/ExternalPOCDetails' description: Details of the primary point of contact for this counterparty. Required for both individuals and organizations. organization_details: $ref: '#/components/schemas/OrganizationDetailsSerializerV2_1' party_role_identifier: type: string minLength: 1 required: - is_individual - poc_details ExternalCounterpartyContactBulkUpdateResponse: title: ExternalCounterpartyContactBulkUpdateResponse type: array items: title: CounterPartyContactResponse type: object properties: id: title: Id description: The ID of this contact. Globally Unique. type: integer name: title: Name description: The name of this contact. type: string email: title: Email description: The email of this contact. type: string is_primary: title: Is Primary description: Defines if this contact is the primary contact for the associated counterparty. type: boolean required: - id - name - email - is_primary examples: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false ExternalCounterpartyContactCreateRequest: title: ExternalCounterpartyContactCreateRequest type: object properties: name: title: Name description: Name of the contact minLength: 1 type: string email: title: Email description: Email of the contact type: string format: email is_primary: title: Is Primary description: Whether the contact needs to be set as the primary contact. type: boolean required: - name - email - is_primary examples: - name: Susan Ervin email: dummy@email.com is_primary: false ExternalCreateContract: type: object description: Defines the data that is required for contract creation properties: contract_template_id: type: integer description: ID of the SpotDraft contract template used to generate the contract. contract_data: description: 'A key-value object where each key must match a template field name from the contract template. Values should use the data type expected by that template field. Common patterns include: - `string`: free-form text - `number`: integer or decimal values - `boolean`: `true` or `false` - `date`: `YYYY-MM-DD` - `datetime`: ISO 8601 timestamp such as `2026-03-28T10:15:00Z` - `duration`: `{ "type": "MONTHS" | "YEARS" | "DAYS", "value": number, "days": number }` - `currency`: `{ "type": "USD" | "INR" | ... , "value": number }` - `dropdown`: the selected option value as configured in the template - `multi_select`: an array of selected option values - `address`: an object such as `{ "line_one": ..., "city": ..., "country": ..., "zipcode": ... }` - `repeating`: an array of row objects for repeating groups or dynamic tables - `file`: a file object or uploaded file reference where the workflow supports attachments Use template field names exactly as configured in SpotDraft.' counter_party_details: type: array items: $ref: '#/components/schemas/ExternalCounterPartyDetails' description: A list of counterparties involved in the contract. At least one counterparty must be provided. external_metadata: description: Optional external system metadata to associate with the contract, such as a CRM or ERP record reference. entity_reference_id: type: string description: Optional creator organization entity reference ID. If omitted, SpotDraft uses the primary organization entity for the creator organization. workflow_config: $ref: '#/components/schemas/WorkflowConfig' send_to_counterparty_config: allOf: - $ref: '#/components/schemas/SendToCounterparty' description: Optional email-delivery settings to apply when sending the contract to counterparties. contract_name: type: string description: Optional contract display name. If omitted, SpotDraft derives the contract name from the workflow or template configuration. signatories: type: array items: $ref: '#/components/schemas/ExternalCreateContractSignatory' description: An optional list of signatories for the contract. If provided, each signatory must be associated with a counterparty specified in `counter_party_details`. is_embedded_contract: type: boolean default: false description: Set to true when the contract will be used in an embedded signing flow. required: - contract_data - contract_template_id - counter_party_details ExternalCreateContractApprovalRequestList: title: ExternalCreateContractApprovalRequestList type: object properties: approvals: title: Approvals description: List of information that needs to be provided in order to create multiple Approvals. type: array items: title: ExternalCreateContractApprovalRequest type: object properties: name: title: Name description: The name that will be used to represent the approval in Spotdraft. type: string approver_user_id: title: Approver User Id description: The ID of the user who has to take action on this Approval. Either `approver_user_id` or `approver_role_id` must be set, but not both. Use the [Get User List](#tag/v21-users/GET/api/v2.1/public/auth/users/) API to get the user ID. type: integer approver_role_id: title: Approver Role Id description: The ID of the role that has to take action on this Approval. Either `approver_user_id` or `approver_role_id` must be set, but not both. Use the [Get Active Roles](#tag/v21-users/GET/api/v2.1/public/auth/roles/) API to get the role ID. type: integer notes: title: Notes description: The message that will be sent to the approver along with the approval request. type: string order: title: Order description: The order denotes the sequence in which the approval requests will be sent to the approver of each approval. Lower values of order are sent before higher values of order. Approvals with same order will be sent to the approver at the same time. type: integer required: - name - notes required: - approvals examples: - approvals: - name: Legal Approval approver_user_id: 10324 notes: Please take a look need your approval. order: 1 - name: Finance team Approval approver_role_id: 60414 notes: Hi team need your approval on this contract. order: 2 ExternalCreateContractCommentRequest: title: ExternalCreateContractCommentRequest type: object properties: comment: title: Comment description: The content of the comment. Whitespace-only comments are rejected. Users can be mentioned using the format `!!@{user_id}!!`, where the user id must belong to the same workspace. Use the [Get User List](#tag/v21-users/GET/api/v2.1/public/auth/users/) API to fetch valid user ids. type: string required: - comment examples: - comment: Hey !!@12310!! please review this contract. ExternalCreateContractResponse: type: object description: Response schema for v2/v2.1 create contract APIs. properties: id: type: string description: The ID of the contract on SpotDraft's platform. created: type: string format: date-time description: The timestamp at which this contract was first created. contract_name: type: string description: The name of the contract. Might be defaulted from the template or edited by the user. contract_link: type: string readOnly: true description: The link to the SpotDraft app where this contract can be viewed. The user will need to log in (and have view access) to be able to view the contract. contract_status: allOf: - $ref: '#/components/schemas/ContractDisplayStatusEnum' description: The status of this contract. readOnly: true created_by: type: string readOnly: true description: The email address of the user who created this contract. counter_party_name: type: string readOnly: true description: The name of the Counter Party for this contract. contract_type_name: type: string readOnly: true description: The type of Contract. The types are as defined by the Client. contract_type_id: type: integer readOnly: true description: The ID of the Contract Type. created_by_workspace: type: integer readOnly: true description: The workspace ID of the user who created or uploaded the executed contract on to SpotDraft's platform. external_metadata: type: object additionalProperties: {} readOnly: true description: The external metadata associated with this contract. reference_id: type: string readOnly: true description: The reference id of the contract. contract_id: type: integer description: The numeric internal contract ID. required: - contract_id - contract_link - contract_name - contract_status - contract_type_id - contract_type_name - counter_party_name - created - created_by - created_by_workspace - external_metadata - id - reference_id ExternalCreateContractSerializerV2_1: type: object description: Defines the data that is required for contract creation for API V2.1 properties: contract_template_id: type: integer description: ID of the SpotDraft contract template used to generate the contract. contract_data: description: 'A key-value object where each key must match a template field name from the contract template. Values should use the data type expected by that template field. Common patterns include: - `string`: free-form text - `number`: integer or decimal values - `boolean`: `true` or `false` - `date`: `YYYY-MM-DD` - `datetime`: ISO 8601 timestamp such as `2026-03-28T10:15:00Z` - `duration`: `{ "type": "MONTHS" | "YEARS" | "DAYS", "value": number, "days": number }` - `currency`: `{ "type": "USD" | "INR" | ... , "value": number }` - `dropdown`: the selected option value as configured in the template - `multi_select`: an array of selected option values - `address`: an object such as `{ "line_one": ..., "city": ..., "country": ..., "zipcode": ... }` - `repeating`: an array of row objects for repeating groups or dynamic tables - `file`: a file object or uploaded file reference where the workflow supports attachments Use template field names exactly as configured in SpotDraft.' counter_party_details: type: array items: $ref: '#/components/schemas/ExternalCounterPartyDetailsSerializerV2_1' description: A list of counterparties involved in the contract. Use ISO country and jurisdiction codes in v2.1 organization details. external_metadata: description: Optional external system metadata to associate with the contract, such as a CRM or ERP record reference. entity_reference_id: type: string description: Optional creator organization entity reference ID. If omitted, SpotDraft uses the primary organization entity for the creator organization. workflow_config: $ref: '#/components/schemas/WorkflowConfig' send_to_counterparty_config: allOf: - $ref: '#/components/schemas/SendToCounterparty' description: Optional email-delivery settings to apply when sending the contract to counterparties. contract_name: type: string description: Optional contract display name. If omitted, SpotDraft derives the contract name from the workflow or template configuration. signatories: type: array items: $ref: '#/components/schemas/ExternalCreateContractSignatory' description: An optional list of signatories for the contract. If provided, each signatory must be associated with a counterparty specified in `counter_party_details`. is_embedded_contract: type: boolean default: false description: Set to true when the contract will be used in an embedded signing flow. required: - contract_data - contract_template_id - counter_party_details ExternalCreateContractSignatory: type: object description: Defines the data that is required for create contract signatory properties: name: type: string email: type: string title: type: string is_counterparty_signatory: type: boolean description: Set this as True if the signatory belongs to a counterparty. Else set it as False. counterparty_name: type: string description: Required if `is_counterparty_signatory` is True. Must match the name of one of the counterparties in `counter_party_details`. If the counterparty `is_individual` is True, this should be the concatenation of the `first_name` and `last_name` from `poc_details` (e.g., 'John Doe'). If `is_individual` is False, this should match the `organization_name` of the counterparty. If `is_counterparty_signatory` is False, leave this field blank. sign_order: type: integer note: type: string required: - email - is_counterparty_signatory - name ExternalGetRecipientLinkResponse: title: ExternalGetRecipientLinkResponse type: object properties: link: title: Link description: Link that can be used by the recipient to take an action like signing, approval, etc. type: string required: - link ExternalMetadataCreateOrUpdateRequestData: title: ExternalMetadataCreateOrUpdateRequestData type: object properties: external_metadata: title: PublicExternalMetadata type: object properties: id: title: Id description: Identifier of the record in the external system. integration_name: title: Integration Name description: Name of the external integration, for example Salesforce. type: string record_type: title: Record Type description: External record type, for example Opportunity or Account. type: string record_data: title: Record Data description: Arbitrary metadata payload from the external system. type: object object_configuration_id: title: Object Configuration Id description: Optional public identifier for a native integration object configuration. When provided, also send `record_type`. The API resolves and stores the corresponding internal entity reference. type: string format: uuid required: - external_metadata ExternalPOCDetails: type: object description: Defines the data required in poc details properties: first_name: type: string last_name: type: string default: '' email: type: string required: - email - first_name ExternalQuestionnaireResponseDomainModel: title: ExternalQuestionnaireResponseDomainModel type: object properties: data: title: Data description: The intake form questionnaire type: object created: title: Created description: The ISO timestamp when the intake form questionnaire was edited type: string format: date-time required: - data - created additionalProperties: false examples: - data: name: Admin is_individual: false created: '2009-08-06T00:00:00Z' ExternalRelatedContractListResponse: title: ExternalRelatedContractListResponse type: object properties: page: title: Page description: Current page number type: integer limit: title: Limit description: Number of results per page type: integer total_results: title: Total Results description: Total number of related contracts type: integer results: title: Results description: List of related contracts type: array items: title: ExternalRelatedContractResponse type: object properties: id: title: Id description: Contract Relation ID type: integer contract: title: Contract type: object properties: id: title: Id description: ID of the related contract type: integer name: title: Name description: Name of the related contract type: string counter_party_list: title: Counter Party List description: List of counterparty names associated with the contract type: array items: type: string display_status: title: ContractDisplayStatus description: Current display status of the contract enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string required: - id - name - counter_party_list - display_status description: Details of the related contract relation_type: title: Relation Type description: Type of relationship (CHILD, ADDENDUM, AMENDMENT, PARENT) type: string required: - id - contract - relation_type examples: - id: 1000 contract: id: 1234 name: Acme Corporation NDA counter_party_list: - Acme Corp display_status: EXECUTED relation_type: CHILD required: - page - limit - total_results - results examples: - page: 1 limit: 10 total_results: 2 results: - id: 1000 contract: id: 1234 name: Acme Corporation NDA counter_party_list: - Acme Corp display_status: EXECUTED relation_type: CHILD - id: 1001 contract: id: 5678 name: Acme Corporation MSA counter_party_list: - Acme Corp display_status: DRAFT relation_type: AMENDMENT ExternalUser: type: object description: The response for the user created in SpotDraft properties: id: type: integer readOnly: true first_name: type: string description: The first name of the user. last_name: type: string description: The last name of the user. roles: type: array items: type: string readOnly: true description: The list of roles for the user. username: type: string description: The email address of the user. created: type: string format: date-time description: The ISO timestamp when the user was created. modified: type: string format: date-time description: The ISO timestamp when the user was last modified. required: - created - first_name - id - last_name - modified - roles - username ExternalUserActiveRole: type: object description: The response for the active role for that workspace properties: id: type: integer readOnly: true name: type: string maxLength: 150 required: - id - name ExternalUserActiveRolesResponseList: title: ExternalUserActiveRolesResponseList description: External model containing list of active roles. type: object properties: active_roles: title: Active Roles description: The list of roles active in the current workspace. type: array items: title: ExternalUserActiveRolesData description: Details of an active role type: object properties: id: title: Id description: ID of the role. Use this to identify the role when calling APIs like Add/Delete Role Member. type: integer name: title: Name description: The user visible name of the role. type: string description: title: Description description: An option description that helps clarify the use of a particular role. type: string required: - id - name required: - active_roles examples: - active_roles: - id: 1 name: Legal Team description: The in-house legal team responsible for TPP Reviews. - id: 2 name: NA Sales description: The North America Sales Team - id: 3 name: APAC Sales description: The Asia Pacific Sales Team (ex Japan) ExternalUserCreate: type: object description: The request body to create the users in SpotDraft properties: username: type: string format: email description: The email address of the user. first_name: type: string description: The first name of the user. last_name: type: string description: The last name of the user. password: type: string description: Password for the user. roles: type: array items: type: integer description: Role IDs applicable to this user. IDs are returned by the Roles API. required: - first_name - last_name - roles - username ExternalUserPaginated: type: object properties: total_results: type: integer description: Total number of items in the result set. page: type: integer description: The current page number. Page numbers start at 1. limit: type: integer description: The number of items returned per page. results: type: array items: $ref: '#/components/schemas/ExternalUser' description: The actual results. required: - limit - page - results - total_results ExtractionStatusEnum: enum: - completed - pending - failed - not_available type: string FeatureFlagsCheckRequest: title: FeatureFlagsCheckRequest type: object properties: flags: title: Flags description: List of feature-flag names to check for the authenticated workspace. Provide at least one flag. type: array items: type: string required: - flags FieldNameMappingDomainModel: description: Domain model for field name mapping. properties: id: anyOf: - type: integer - type: 'null' default: null description: The ID of the field name mapping title: Id old_field_name: description: The original template field name title: Old Field Name type: string new_field_name: description: The new template field name title: New Field Name type: string tenant_workspace_id: description: The workspace ID this mapping belongs to title: Tenant Workspace Id type: integer contract_type_id: anyOf: - type: integer - type: 'null' default: null description: The contract type ID this mapping belongs to title: Contract Type Id created: anyOf: - format: date-time type: string - type: 'null' default: null description: Creation timestamp title: Created modified: anyOf: - format: date-time type: string - type: 'null' default: null description: Last modification timestamp title: Modified data_type: anyOf: - type: string - type: 'null' default: null description: The data type of the key pointer which was linked to the old_field_name attribute title: Data Type new_field_name_label: anyOf: - type: string - type: 'null' default: null title: New Field Name Label required: - old_field_name - new_field_name - tenant_workspace_id title: FieldNameMappingDomainModel type: object FieldNameMappingListDomainModel: description: Domain model for list of field name mappings. properties: items: items: $ref: '#/components/schemas/FieldNameMappingDomainModel' title: Items type: array title: FieldNameMappingListDomainModel type: object FrozenWorkflowPublicResponse: properties: id: description: Id of the frozen workflow snapshot. title: Id type: integer workflow_id: description: Id of the parent workflow this frozen version belongs to. title: Workflow Id type: integer title: description: Title of the frozen workflow. title: Title type: string description: description: Description of the frozen workflow. title: Description type: string type: $ref: '#/components/schemas/WorkflowType' description: Workflow type (e.g. INTAKE_WORKFLOW). required: - id - workflow_id - title - description - type title: FrozenWorkflowPublicResponse type: object GenerateContractPreviewRequest: title: GenerateContractPreviewRequest type: object properties: contract_template_id: title: Contract Template Id description: ID of the SpotDraft contract template used to render the preview. type: integer contract_data: title: Contract Data description: 'A key-value object where each key must match a template field name from the contract template. Values should use the data type expected by that template field. Common patterns include: - `string`: free-form text - `number`: integer or decimal values - `boolean`: `true` or `false` - `date`: `YYYY-MM-DD` - `datetime`: ISO 8601 timestamp such as `2026-03-28T10:15:00Z` - `duration`: `{ "type": "MONTHS" | "YEARS" | "DAYS", "value": number, "days": number }` - `currency`: `{ "type": "USD" | "INR" | ... , "value": number }` - `dropdown`: the selected option value as configured in the template - `multi_select`: an array of selected option values - `address`: an object such as `{ "line_one": ..., "city": ..., "country": ..., "zipcode": ... }` - `repeating`: an array of row objects for repeating groups or dynamic tables - `file`: a file object or uploaded file reference where the workflow supports attachments Use template field names exactly as configured in SpotDraft.' type: object organization_entity_id: title: Organization Entity Id description: Optional creator organization entity id used while rendering the preview. type: integer counter_party_details: title: Counter Party Details description: Optional counterparties used to render counterparty variables in the preview. For organizational counterparties, `organization_name` is required. type: array items: title: CounterPartyDetails type: object properties: is_individual: title: Is Individual description: Defines if this Counterparty is an individual or an organization like a company type: boolean organization_type: title: Organization Type description: The type of the counterparty if it is an organization. Expects values like LLC, LLP, etc. Please ask help@spotdraft.com for valid values. type: string organization_name: title: Organization Name description: The name of the counterparty if it is an organization. Expects the name of the company/entity that is the counterparty. Required when `is_individual=false`. type: string organization_details: title: Organization Details type: object properties: jurisdiction: title: Jurisdiction description: The jurisdiction to which this organization belongs. Valid values are defined internally. Please reach out to help@spotdraft.com for a list. type: string address: title: Address type: object properties: city: title: City description: The city name for this address. type: string state: title: State description: The state name for this address. default: '' type: string country: title: Country description: The name of the country associated with this counterparty address. Any value passed here is ignored if `country_iso_code` is passed. Valid values are defined internally. Please ask help@spotdraft.com for more information. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. default: '' type: string line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string line_two: title: Line Two description: The second address line (if any). type: string email: title: Email description: The email address associated with this counterparty address (if any). type: string phone: title: Phone description: The phone number associated with this counterparty address (if any). type: string gst_number: title: Gst Number description: The GST Number for this Organization. Can be unset if not available or applicable. type: string tax_id: title: Tax Id description: The VAT/GST/Sales Tax/etc ID for this Organization. type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this counterparty address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). type: string required: - city - country - line_one description: The primary address for this organization (if any) description: Additional details for an organization. Should be set if `is_individual=False` poc_details: title: Poc Details type: object properties: first_name: title: First Name description: The first name of the Point of Contact type: string last_name: title: Last Name description: The last name of the Point of Contact type: string email: title: Email description: The email address of the Point of Contact type: string required: - first_name - last_name - email description: Point of Contact details for this counterparty. Should be the details of the individual for `is_individual=True` and the details of the contact at the counterparty organization in case of `is_individual=False`. party_role_identifier: title: Party Role Identifier description: The unique identifier of the party this counterparty should be assigned to. minLength: 1 type: string required: - is_individual - poc_details examples: - is_individual: true organization_type: Private Limited organization_name: Acme Corporation organization_details: {} poc_details: first_name: Mike last_name: Reed email: Mike_reed@yahoo.com primary_address: city_name: Cincinnati state_name: Ohio country_name: USA zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' required: - contract_template_id - contract_data example: contract_template_id: 1204 contract_data: agreement_date: '2026-03-28' renewal_review_at: '2026-09-15T10:30:00Z' customer_name: Acme Inc. billing_currency: type: USD value: 12000 subscription_term: type: MONTHS value: 12 days: 365 auto_renewal: true notice_period_days: 30 service_countries: - US - IN billing_address: line_one: 350 Fifth Avenue city: New York state: NY country: United States zipcode: '10118' pricing_schedule: - milestone: Implementation amount: type: USD value: 5000 - milestone: Annual subscription amount: type: USD value: 7000 msa_attachment: file_name: security-schedule.pdf content_type: application/pdf counter_party_details: - is_individual: false organization_type: company organization_name: Acme Inc. poc_details: first_name: Avery last_name: Stone email: legal@acme.example IntakeFormQuestionnairePublicResponse: title: IntakeFormQuestionnairePublicResponse description: The list of attributes for this contract template. type: array items: title: IntakeFormQuestionnaireDetailsPublicResponse type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: This defines the name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: This defines the type of question field. The type defines what value needs to be sent in response to this field. enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string parent_type: title: Parent Type description: 'The SpotDraft type of the parent variable this field is a child for, if any. Example: dropdown, duration, date, etc' minLength: 1 type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is mandatory or not. default: true type: boolean default_value: title: Default Value description: The default value for this field, if any question: title: Question description: Question for this attribute. type: string attributes: title: Attributes description: Describes the shape of the object for repeating types. Only set when `type` is `repeating`. type: array items: title: IntakeFormQuestionnaireDetailsPublicBaseResponse type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: This defines the name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: This defines the type of question field. The type defines what value needs to be sent in response to this field. enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string parent_type: title: Parent Type description: 'The SpotDraft type of the parent variable this field is a child for, if any. Example: dropdown, duration, date, etc' minLength: 1 type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is mandatory or not. default: true type: boolean default_value: title: Default Value description: The default value for this field, if any question: title: Question description: Question for this attribute. type: string required: - display_label - variable - type required: - display_label - variable - type examples: - display_label: Always she crime daughter task positive employee. Already mission popular ahead civil term. variable: Always she crime daughter task positive employee. Already mission popular ahead civil term. type: enum parent_type: dropdown options: - label: test option 1 value: test option 1 - label: test option 2 value: test option 2 - label: test option 3 value: test option 3 required: false default_value: null question: 'Today down gas marriage kid. South think reality always. Management effort ground machine reality when impact. Accept anyone picture him air.' attributes: null IntakeTaskStatus: enum: - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED title: IntakeTaskStatus type: string IntakeTaskStatusEnum: enum: - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED type: string IntegrationSolutionEntityIdEnum: enum: - COUPA_CREATE_CONTRACT type: string InviteUserAndAssignRolesPublicRequest: title: InviteUserAndAssignRolesPublicRequest type: object properties: first_name: title: First Name description: First name of the user being invited type: string last_name: title: Last Name description: Last name of the user being invited type: string designation: title: Designation description: Job title or role of the user in the organization type: string email: title: Email description: Email address of the user being invited type: string role_ids: title: Role Ids description: Optional list of role IDs to assign to the user at invite time. Use the V2.1 Get Active Roles API to fetch valid role ids. type: array items: type: integer required: - first_name - email examples: - first_name: Avery last_name: Stone designation: Legal Counsel email: avery.stone@example.com role_ids: - 12 - 18 KeyPointerListDomainModel: title: KeyPointerListDomainModel type: array items: title: KeyPointerDomainModel type: object properties: id: title: Id description: The ID of this Key Pointer. Globally unique. type: integer descriptors: title: Descriptors description: The list of descriptors clarifying what type of data this Key Pointer stores. Useful to ensure valid data is being passed. type: array items: title: CfPublicDescriptor description: 'A descriptor to describe the CommonForm blank. Used for the public API.' type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: The name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: The type of field. The type changes the values to be sent. See V2 Create Contract enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string help_text: title: Help Text description: Help text which can be shown to the user if needed. type: string parent_variable: title: Parent Variable description: For nested variables, this is the name of the variable which should be an object with the values set in it type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is required. In case its nested (if `parent_variable` is set) the entire object can be unset if `parent_required` is unset or false default: true type: boolean parent_required: title: Parent Required description: Only set if `parent_variable` is set. If set to true then the parent variable is required. Thus the nested object for the parent should be set. The required-ness of the nested variables is based on the `required` field type: boolean default_value: title: Default Value description: The default value for this field, if any parent_type: title: Parent Type description: The SpotDraft type of the parent variable this field is a child for, if any. type: string child_variable: title: Child Variable description: The name of the child field. This is only set if this variable is a child field. type: string question: title: Question description: Question for this attribute. type: string attributes: title: Attributes description: Describes the shape of the object for repeating types. Only set when `type` is `repeating`. type: array items: title: CfPublicDescriptorBase type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: The name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: The type of field. The type changes the values to be sent. See V2 Create Contract enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string help_text: title: Help Text description: Help text which can be shown to the user if needed. type: string parent_variable: title: Parent Variable description: For nested variables, this is the name of the variable which should be an object with the values set in it type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is required. In case its nested (if `parent_variable` is set) the entire object can be unset if `parent_required` is unset or false default: true type: boolean parent_required: title: Parent Required description: Only set if `parent_variable` is set. If set to true then the parent variable is required. Thus the nested object for the parent should be set. The required-ness of the nested variables is based on the `required` field type: boolean default_value: title: Default Value description: The default value for this field, if any parent_type: title: Parent Type description: The SpotDraft type of the parent variable this field is a child for, if any. type: string child_variable: title: Child Variable description: The name of the child field. This is only set if this variable is a child field. type: string question: title: Question description: Question for this attribute. type: string required: - display_label - variable - type required: - display_label - variable - type section: title: Section type: object properties: id: title: Id description: The ID of this section. Gobally Unique. type: integer section_type: title: Section Type description: Defines what kind of section this is. SpotDraft has inbuilt sections and users can also define additional sections. Valid values are `USER_DEFINED` and `SYSTEM_DEFINED` type: string name: title: Name description: The name of the section as shown to users. type: string required: - id - section_type - name description: The section which this key pointer belongs to. required: - id - descriptors - section LegalIntakeAssigneeEntityType: enum: - ORG_USER - ROLE title: LegalIntakeAssigneeEntityType type: string LegalIntakeAssigneePublicCreateRequest: description: Request model for creating an assignee for a legal intake. examples: - assignee_type: ASSIGNED_TO entity_id: '1' entity_type: ORG_USER properties: entity_id: description: Id of the assignee entity (organization user id as a string). minLength: 1 title: Entity Id type: string entity_type: allOf: - $ref: '#/components/schemas/EntityTypeEnum' const: ORG_USER description: Type of assignee entity. Only ORG_USER is supported in the public API. title: Entity Type assignee_type: $ref: '#/components/schemas/LegalIntakeAssigneeType' description: 'Relationship to the intake: ASSIGNED_TO or COLLABORATOR.' required: - entity_id - entity_type - assignee_type title: LegalIntakeAssigneePublicCreateRequest type: object LegalIntakeAssigneePublicResponse: description: Assignee or collaborator in a legal intake response. properties: entity_id: description: Id of the entity assigned to the intake. title: Entity Id type: string entity_type: $ref: '#/components/schemas/LegalIntakeAssigneeEntityType' description: Type of the entity assigned to the intake. assignee_type: $ref: '#/components/schemas/LegalIntakeAssigneeType' description: Type of the assignee. assignee_org_user: anyOf: - $ref: '#/components/schemas/PublicOrgUserResponse' - type: 'null' default: null description: User details when entity_type is ORG_USER. required: - entity_id - entity_type - assignee_type title: LegalIntakeAssigneePublicResponse type: object LegalIntakeAssigneeType: enum: - ASSIGNED_TO - COLLABORATOR title: LegalIntakeAssigneeType type: string LegalIntakeAttachmentPublicResponse: description: Lightweight attachment metadata exposed by the public detail API. properties: uuid: description: Stable UUID for the attached workspace file. format: uuid title: Uuid type: string name: anyOf: - type: string - type: 'null' default: null description: Original filename of the attached workspace file. title: Name required: - uuid title: LegalIntakeAttachmentPublicResponse type: object LegalIntakePriority: enum: - LOW - MEDIUM - HIGH title: LegalIntakePriority type: string LegalIntakePublicCreateRequest: description: Request body for creating a legal intake from a workflow. examples: - assignees: - assignee_type: ASSIGNED_TO entity_id: '1' entity_type: ORG_USER description: Legal review for vendor NDA due_date: '2025-12-31T23:59:59Z' file_ids: - 10f9a299-9e9a-4bc9-9299-5b89bc06d370 metadata: source: api priority: HIGH title: Review NDA workflow_id: 42 properties: title: description: Title of the intake. maxLength: 255 minLength: 1 title: Title type: string description: anyOf: - type: string - type: 'null' default: null description: Optional description of the intake. title: Description priority: $ref: '#/components/schemas/LegalIntakePriority' default: MEDIUM description: Priority of the intake. due_date: anyOf: - format: date-time type: string - type: 'null' default: null description: Optional due date (ISO 8601). title: Due Date assignees: anyOf: - items: $ref: '#/components/schemas/LegalIntakeAssigneePublicCreateRequest' type: array - type: 'null' default: null description: Optional intake participants. Each row must specify whether it is an ASSIGNED_TO assignee or a COLLABORATOR. title: Assignees metadata: anyOf: - type: object - type: 'null' default: null description: Optional key-value metadata for the intake. title: Metadata workflow_id: description: Id of the workflow to create from. The API resolves the latest published frozen version for this workflow in the current workspace, and it must be an INTAKE_WORKFLOW. title: Workflow Id type: integer file_ids: anyOf: - items: format: uuid type: string type: array - type: 'null' default: null description: Optional workspace file ids to attach during creation. Every file id must belong to the authenticated workspace. title: File Ids required: - title - workflow_id title: LegalIntakePublicCreateRequest type: object LegalIntakePublicDetailResponse: description: Detailed legal intake response used by public get/create/update APIs. examples: - assignees: - assignee_org_user: designation: Legal email: jane@example.com id: 1 name: Jane Doe assignee_type: ASSIGNED_TO entity_id: '1' entity_type: ORG_USER attachments: - name: nda.pdf uuid: 10f9a299-9e9a-4bc9-9299-5b89bc06d370 - name: vendor-msa.docx uuid: 9831fa6f-1d6c-4f8e-8fba-83d68765ca20 collaborators: - assignee_type: COLLABORATOR entity_id: '1' entity_type: ORG_USER created_at: '2025-01-15T10:00:00Z' created_by: designation: Legal email: jane@example.com id: 1 name: Jane Doe description: Legal review for vendor NDA due_date: '2025-12-31T23:59:59Z' frozen_workflow: description: Standard NDA id: 100 title: NDA Workflow type: INTAKE_WORKFLOW workflow_id: 1 id: 1 metadata: {} modified_at: '2025-01-15T10:00:00Z' priority: HIGH public_id: 10f9a299-9e9a-4bc9-9299-5b89bc06d370 reference_id: I-001 status: PENDING tasks: - absolute_due_date: '2025-12-20T17:00:00Z' id: 101 intake_task_status: PENDING notes: Friday EOD priority: HIGH reference_id: T-0101 status: UPCOMING title: Sign the document title: Review NDA properties: id: description: Id of the intake. title: Id type: integer title: description: Title of the intake. title: Title type: string description: anyOf: - type: string - type: 'null' default: null description: Description of the intake. title: Description status: $ref: '#/components/schemas/LegalIntakeStatus' description: Current status of the intake. priority: $ref: '#/components/schemas/LegalIntakePriority' description: Priority of the intake. due_date: anyOf: - format: date-time type: string - type: 'null' default: null description: Target completion time for the intake, if set. title: Due Date metadata: anyOf: - type: object - type: 'null' default: null description: Custom metadata stored on the intake. title: Metadata public_id: description: Stable public UUID for the intake. format: uuid title: Public Id type: string reference_id: anyOf: - type: string - type: 'null' default: null description: Human-readable reference for the intake (e.g. sequential id). title: Reference Id created_by: anyOf: - $ref: '#/components/schemas/PublicOrgUserResponse' - type: 'null' default: null description: User details for the intake creator. created_at: description: When the intake was created. format: date-time title: Created At type: string modified_at: description: When the intake was last updated. format: date-time title: Modified At type: string frozen_workflow: anyOf: - $ref: '#/components/schemas/FrozenWorkflowPublicResponse' - type: 'null' default: null description: Frozen workflow snapshot linked to this intake. assignees: anyOf: - items: $ref: '#/components/schemas/LegalIntakeAssigneePublicResponse' type: array - type: 'null' default: null description: ASSIGNED_TO rows for this intake. title: Assignees collaborators: anyOf: - items: $ref: '#/components/schemas/LegalIntakeAssigneePublicResponse' type: array - type: 'null' default: null description: COLLABORATOR rows for this intake. title: Collaborators tasks: anyOf: - items: $ref: '#/components/schemas/LegalIntakeTaskPublicResponse' type: array - type: 'null' default: null description: Tasks linked to the intake when loaded by the API. title: Tasks attachments: description: Lightweight metadata for files attached to the intake. items: $ref: '#/components/schemas/LegalIntakeAttachmentPublicResponse' title: Attachments type: array required: - id - title - status - priority - public_id - created_at - modified_at title: LegalIntakePublicDetailResponse type: object LegalIntakePublicListItemResponse: description: Minimal legal intake response used by the public list API. examples: - created_at: '2025-01-15T10:00:00Z' created_by: designation: Legal email: jane@example.com id: 1 name: Jane Doe description: Legal review for vendor NDA due_date: '2025-12-31T23:59:59Z' frozen_workflow: description: Standard NDA id: 100 title: NDA Workflow type: INTAKE_WORKFLOW workflow_id: 1 id: 1 metadata: {} modified_at: '2025-01-15T10:00:00Z' priority: HIGH public_id: 10f9a299-9e9a-4bc9-9299-5b89bc06d370 reference_id: I-001 status: PENDING title: Review NDA properties: id: description: Id of the intake. title: Id type: integer title: description: Title of the intake. title: Title type: string description: anyOf: - type: string - type: 'null' default: null description: Description of the intake. title: Description status: $ref: '#/components/schemas/LegalIntakeStatus' description: Current status of the intake. priority: $ref: '#/components/schemas/LegalIntakePriority' description: Priority of the intake. due_date: anyOf: - format: date-time type: string - type: 'null' default: null description: Target completion time for the intake, if set. title: Due Date metadata: anyOf: - type: object - type: 'null' default: null description: Custom metadata stored on the intake. title: Metadata public_id: description: Stable public UUID for the intake. format: uuid title: Public Id type: string reference_id: anyOf: - type: string - type: 'null' default: null description: Human-readable reference for the intake (e.g. sequential id). title: Reference Id created_by: anyOf: - $ref: '#/components/schemas/PublicOrgUserResponse' - type: 'null' default: null description: User details for the intake creator. created_at: description: When the intake was created. format: date-time title: Created At type: string modified_at: description: When the intake was last updated. format: date-time title: Modified At type: string frozen_workflow: anyOf: - $ref: '#/components/schemas/FrozenWorkflowPublicResponse' - type: 'null' default: null description: Frozen workflow snapshot linked to this intake. required: - id - title - status - priority - public_id - created_at - modified_at title: LegalIntakePublicListItemResponse type: object LegalIntakePublicListResponse: description: Paginated list of legal intakes. Response schema for List legal intakes API. examples: - has_next: false has_previous: false intakes: - created_at: '2025-01-15T10:00:00Z' created_by: designation: Legal email: jane@example.com id: 1 name: Jane Doe description: Legal review for vendor NDA due_date: '2025-12-31T23:59:59Z' frozen_workflow: description: Standard NDA id: 100 title: NDA Workflow type: INTAKE_WORKFLOW workflow_id: 1 id: 1 metadata: {} modified_at: '2025-01-15T10:00:00Z' priority: HIGH public_id: 10f9a299-9e9a-4bc9-9299-5b89bc06d370 reference_id: I-001 status: PENDING title: Review NDA limit: 50 page: 1 total_count: 1 total_pages: 1 properties: intakes: description: List of legal intake response objects for the current page. items: $ref: '#/components/schemas/LegalIntakePublicListItemResponse' title: Intakes type: array total_count: description: Total matching intakes across pages. title: Total Count type: integer page: description: Current page number. title: Page type: integer limit: description: Page size used for this response. title: Limit type: integer total_pages: description: Total number of pages for the current query. title: Total Pages type: integer has_next: description: Whether a next page exists. title: Has Next type: boolean has_previous: description: Whether a previous page exists. title: Has Previous type: boolean required: - intakes - total_count - page - limit - total_pages - has_next - has_previous title: LegalIntakePublicListResponse type: object LegalIntakeStatus: enum: - DRAFT - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED title: LegalIntakeStatus type: string LegalIntakeTaskPublicResponse: description: User task fields returned on legal intake public responses (list/detail). examples: - absolute_due_date: '2025-12-20T17:00:00Z' id: 101 intake_task_status: PENDING notes: Friday EOD priority: HIGH reference_id: T-0101 status: UPCOMING title: Sign the document properties: id: description: Task ID. title: Id type: integer title: description: Task title. title: Title type: string notes: anyOf: - type: string - type: 'null' default: null description: Task notes. title: Notes absolute_due_date: anyOf: - format: date-time type: string - type: 'null' default: null description: When the task is due. title: Absolute Due Date status: $ref: '#/components/schemas/UserTaskStatus' description: Derived status from due date and completion (e.g. UPCOMING, OVERDUE). priority: anyOf: - $ref: '#/components/schemas/TaskPriority' - type: 'null' default: null description: Priority for intake tasks. intake_task_status: anyOf: - $ref: '#/components/schemas/IntakeTaskStatus' - type: 'null' default: null description: Intake workflow status for the task. reference_id: anyOf: - type: string - type: 'null' default: null description: Human-readable task reference when available. title: Reference Id required: - id - title - status title: LegalIntakeTaskPublicResponse type: object ListFieldNameMappingViewRequest: title: ListFieldNameMappingViewRequest type: object properties: contract_id: title: Contract Id description: Optional contract id to scope the mapping lookup to a specific contract instance. type: integer contract_type_id: title: Contract Type Id description: Optional contract type id to scope the mapping lookup to a specific workflow or template family. type: integer old_field_names: title: Old Field Names description: Optional list of legacy template field names to translate into current contract metadata labels. type: array items: type: string new_field_names: title: New Field Names description: Optional list of current template field names to map back to existing contract metadata labels. type: array items: type: string MarkForExecutionRequest: title: MarkForExecutionRequest type: object properties: affix_stamp_documents: title: Affix Stamp Documents description: Whether stamp documents should be affixed as part of marking the contract for execution, when stamping is configured for the workflow. type: boolean ObligationTypeListResponse: example: - description: Requires the submission of relevant reports or documentation at specified intervals or triggers. id: 101 name: Reporting - description: Requires the delivery of goods, services, or results in accordance with agreed terms. id: 102 name: Performance/Delivery items: $ref: '#/components/schemas/ObligationTypeResponse' title: ObligationTypeListResponse type: array ObligationTypeResponse: example: description: Requires the delivery of goods, services, or results in accordance with agreed terms. id: 102 name: Performance/Delivery properties: id: description: The ID of the obligation type title: Id type: integer name: description: The name of the obligation type minLength: 1 title: Name type: string description: anyOf: - type: string - type: 'null' description: The description of the obligation type. title: Description required: - id - name - description title: ObligationTypeResponse type: object OnlyForActivitiesEnum: enum: - CONTRACT_VERSION_UPLOADED - CONTRACT_APPROVAL_COMPLETED - CONTRACT_APPROVAL_REQUESTED - CONTRACT_CREATED - CONTRACT_DATA_UPDATED - CONTRACT_DELETED - CONTRACT_EXECUTED - CONTRACT_MARK_FOR_EXECUTION - CONTRACT_SENT_TO_COUNTERPARTY - CONTRACT_SIGNATURE_DECLINED - CONTRACT_SIGNATURE_REQUESTED - CONTRACT_SIGNED - CONTRACT_UNMARK_FOR_EXECUTION - POSTMARK_EMAIL_EVENT - CONTRACT_KEY_POINTER_UPDATION - CONTRACT_KEY_POINTER_CREATION - SIGNING_EMAIL_DELIVERED - SIGNING_EMAIL_OPENED - SIGNING_EMAIL_NOT_DELIVERED - SIGNING_EMAIL_LINK_CLICKED - REDLINING_EMAIL_DELIVERED - REDLINING_EMAIL_OPENED - REDLINING_EMAIL_NOT_DELIVERED - REDLINING_EMAIL_LINK_CLICKED - CONTRACT_SIGNATURE_REQUESTED_NOTIFICATION_SENT - COUNTER_PARTY_CREATED - COUNTER_PARTY_UPDATED - COUNTER_PARTY_CONTACT_CREATED - COUNTER_PARTY_CONTACT_UPDATED - COUNTER_PARTY_ADDRESS_CREATED - COUNTER_PARTY_ADDRESS_UPDATED - CONTRACT_ACTIVITY_LOG_COMMENT_CREATED - CONTRACT_VOIDED - CONTRACT_PROCESS_METRIC_UPDATED - CONTRACT_EXTERNAL_METADATA_CREATED - CONTRACT_EXTERNAL_METADATA_UPDATED - CONTRACT_ENTITY_UPDATED type: string OrgUserMinimalDomainModel: properties: id: title: Id type: integer name: title: Name type: string email: title: Email type: string designation: anyOf: - type: string - type: 'null' default: null title: Designation auth_user_id: anyOf: - type: integer - type: 'null' default: null title: Auth User Id required: - id - name - email title: OrgUserMinimalDomainModel type: object OrganizationAddress: type: object description: Defines structure for organization address properties: city: type: string state: type: string default: '' country: type: string zipcode: type: string default: '' line_one: type: string line_two: type: string email: type: string phone: type: string gst_number: type: string tax_id: type: string country_iso_code: type: string required: - city - country - line_one OrganizationAddressSerializerV2_1: type: object description: Defines structure for organization address for API v2.1 properties: city: type: string state: type: string default: '' country: type: string zipcode: type: string default: '' line_one: type: string line_two: type: string email: type: string phone: type: string gst_number: type: string tax_id: type: string country_iso_code: type: string required: - city - country_iso_code - line_one OrganizationDetails: type: object description: Defines structure for organization details properties: jurisdiction: type: string address: $ref: '#/components/schemas/OrganizationAddress' OrganizationDetailsSerializerV2_1: type: object description: Defines structure for organization details for API v2.1 properties: jurisdiction: type: string address: $ref: '#/components/schemas/OrganizationAddressSerializerV2_1' jurisdiction_iso_code: type: string OrganizationEntityDomainModel: title: OrganizationEntityDomainModel type: object properties: id: title: Id description: The ID of the Entity type: integer name: title: Name description: The name of Entity as rendered in the contracts and shown to users. type: string reference_id: title: Reference Id description: The Reference ID of the entity which is used to identify the entity in templates. type: string jurisdiction: title: Jurisdiction type: object properties: id: title: Id description: The ID of the Jurisdiction. type: integer name: title: Name description: The name of the Jurisdiction. type: string code2: title: Code2 description: The ISO-3166-1 Alpha-2 code of the Jurisdiction. type: string required: - id description: The Jurisdiction associated with the entity. organization_type: title: Organization Type type: object properties: id: title: Id description: The ID of the Organization Type. type: integer name: title: Name description: Name of the Organization Type. For example LLP vs LLC vs S Corp in the US type: string required: - id - name examples: - id: 2798 name: Limited Liability Company (LLC) description: The type of this entity. This identifies the company type. For example LLP vs LLC vs S Corp in the US primary_address: title: Primary Address type: object properties: id: title: Id description: The ID for this address. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country: title: Country type: object properties: id: title: Id description: The ID of the Jurisdiction. type: integer name: title: Name description: The name of the Jurisdiction. type: string code2: title: Code2 description: The ISO-3166-1 Alpha-2 code of the Jurisdiction. type: string required: - id description: The ISO-3166-1 Alpha-2 code of the country associated with this organization entity address. required: - id - line_one - city_name - state_name - zipcode examples: - id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US description: The address details of the entity. is_primary: title: Is Primary description: This identify the entity as the primary entity or not type: boolean required: - id - name - reference_id - jurisdiction - organization_type - primary_address - is_primary examples: - id: 1045 name: Acme Inc. reference_id: US20 jurisdiction: id: 234 name: United States iso_code: US organization_type: id: 1 name: Private Company primary_address: id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US is_primary: true OrganizationEntityListDomainModel: title: OrganizationEntityListDomainModel type: array items: title: OrganizationEntityDomainModel type: object properties: id: title: Id description: The ID of the Entity type: integer name: title: Name description: The name of Entity as rendered in the contracts and shown to users. type: string reference_id: title: Reference Id description: The Reference ID of the entity which is used to identify the entity in templates. type: string jurisdiction: title: Jurisdiction type: object properties: id: title: Id description: The ID of the Jurisdiction. type: integer name: title: Name description: The name of the Jurisdiction. type: string code2: title: Code2 description: The ISO-3166-1 Alpha-2 code of the Jurisdiction. type: string required: - id description: The Jurisdiction associated with the entity. organization_type: title: Organization Type type: object properties: id: title: Id description: The ID of the Organization Type. type: integer name: title: Name description: Name of the Organization Type. For example LLP vs LLC vs S Corp in the US type: string required: - id - name examples: - id: 2798 name: Limited Liability Company (LLC) description: The type of this entity. This identifies the company type. For example LLP vs LLC vs S Corp in the US primary_address: title: Primary Address type: object properties: id: title: Id description: The ID for this address. type: integer line_one: title: Line One description: The first line of the address. Usually the apartment, floor, and street information. type: string city_name: title: City Name description: The city name for this address. type: string state_name: title: State Name description: The state name for this address. type: string zipcode: title: Zipcode description: The zip/pin/postal code for this address. type: string country: title: Country type: object properties: id: title: Id description: The ID of the Jurisdiction. type: integer name: title: Name description: The name of the Jurisdiction. type: string code2: title: Code2 description: The ISO-3166-1 Alpha-2 code of the Jurisdiction. type: string required: - id description: The ISO-3166-1 Alpha-2 code of the country associated with this organization entity address. required: - id - line_one - city_name - state_name - zipcode examples: - id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US description: The address details of the entity. is_primary: title: Is Primary description: This identify the entity as the primary entity or not type: boolean required: - id - name - reference_id - jurisdiction - organization_type - primary_address - is_primary examples: - id: 1045 name: Acme Inc. reference_id: US20 jurisdiction: id: 234 name: United States iso_code: US organization_type: id: 1 name: Private Company primary_address: id: 5073 line_one: 3659 Burwell Heights Road city_name: Houston state_name: Texas zipcode: '77020' country: id: 234 name: United States iso_code: US is_primary: true OrganizationTypeListDomainModel: title: OrganizationTypeListDomainModel type: array items: title: OrganizationTypeDomainModel type: object properties: id: title: Id description: The ID of the Organization Type. type: integer name: title: Name description: Name of the Organization Type. For example LLP vs LLC vs S Corp in the US type: string jurisdiction: title: Jurisdiction type: object properties: id: title: Id description: The ID of the Jurisdiction. type: integer name: title: Name description: The name of the Jurisdiction. type: string code2: title: Code2 description: The ISO-3166-1 Alpha-2 code of the Jurisdiction. type: string required: - id description: The Jurisdiction associated with the Organization Type. required: - id - name examples: - id: 2798 name: Limited Liability Company (LLC) jurisdiction: id: 234 name: United States iso_code: US OrganizationUserInvitePublicApiResponse: title: OrganizationUserInvitePublicApiResponse type: object properties: email: title: Email type: string first_name: title: First Name type: string last_name: title: Last Name type: string designation: title: Designation type: string token: title: Token type: string disabled_token: title: Disabled Token type: boolean created_by_user: title: Created By User type: string role_ids: title: Role Ids type: array items: type: integer required: - email - token - disabled_token - created_by_user PatchedContractDataUpdateRequest: title: ContractDataUpdateRequest type: object properties: data: title: Data description: Contract data keyed by template field name. Values must match the field types configured on the contract template. type: object required: - data examples: - data: term: days: 180 type: MONTHS value: 6 notes: Not Applicable capacity: 15 setup_fee: type: INR value: 30000.0 start_date: '2019-11-29' yes_discounts: false payment_method: '1' suggestions: No suggestions PatchedContractKeyPointerUpdateRequest: title: ContractKeyPointerUpdateRequest type: object properties: value: title: Value was_edited_by_user: title: Was Edited By User default: false type: boolean value_source_metadata: title: Value Source Metadata default: [] type: array items: title: ValueSourceMetadata type: object properties: id: title: Id type: string value: title: Value ranked_suggestion: title: SuggestionRankingDomainModel type: object properties: id: title: Id type: integer key_pointer_id: title: Key Pointer Id type: integer suggestion: title: DealPointSuggestionDomainModel type: object properties: id: title: Id type: string historic_contract_id: title: Historic Contract Id type: integer contract_id: title: Contract Id type: integer async_task_id: title: Async Task Id type: string value: title: Value type: string deal_point: title: DealPoint description: Defines the structure of the Dealpoint returned from the pipeline type: object properties: uuid: title: Uuid type: string para_id: title: ParagraphId description: Structure of the paragraph Id returned from the pipeline type: object properties: backend_id: title: Backend Id default: '' type: string uuid: title: Uuid default: '' type: string span: title: Span description: Defines the span for a text in the document type: object properties: id: title: Id type: object text: title: Text default: '' type: string value: title: Value type: object bounding_boxes: title: Bounding Boxes type: array items: title: BoundingBox description: Defines the bounding box of a element inside the document. type: object properties: top_left: title: Coordinates description: Defines horizontal and vertical position of a point on a page. type: object properties: x: title: X type: number y: title: Y type: number required: - x - y bottom_right: title: Coordinates description: Defines horizontal and vertical position of a point on a page. type: object properties: x: title: X type: number y: title: Y type: number required: - x - y page_number: title: Page Number type: integer line_id: title: Line Id type: string required: - top_left - bottom_right - page_number docx_nav_sources: title: Docx Nav Sources type: array items: title: DocxNavSource description: Defines a DOCX navigation source for a span. type: object properties: xpath: title: Xpath type: string text: title: Text type: string required: - text end_index: title: End Index type: integer start_index: title: Start Index default: 0 type: integer required: - end_index label: title: Label type: string confidence_score: title: Confidence Score type: number is_removed: title: Is Removed default: false type: boolean source: title: Source type: object standard_text: title: Standard Text type: string required: - uuid - para_id - span - label - confidence_score - source source: title: Source type: string required: - id - async_task_id - value - deal_point - source rank: title: Rank type: integer score: title: Score type: number source: title: Source type: string parsed_value: title: Parsed Value required: - key_pointer_id - suggestion - rank - score - source user_selected_span: title: SpanBase description: Defines essentials for a span definition for a text in the document type: object properties: id: title: Id type: object text: title: Text default: '' type: string value: title: Value type: object bounding_boxes: title: Bounding Boxes type: array items: title: BoundingBox description: Defines the bounding box of a element inside the document. type: object properties: top_left: title: Coordinates description: Defines horizontal and vertical position of a point on a page. type: object properties: x: title: X type: number y: title: Y type: number required: - x - y bottom_right: title: Coordinates description: Defines horizontal and vertical position of a point on a page. type: object properties: x: title: X type: number y: title: Y type: number required: - x - y page_number: title: Page Number type: integer line_id: title: Line Id type: string required: - top_left - bottom_right - page_number docx_nav_sources: title: Docx Nav Sources type: array items: title: DocxNavSource description: Defines a DOCX navigation source for a span. type: object properties: xpath: title: Xpath type: string text: title: Text type: string required: - text source_non_validated_value: title: Source Non Validated Value source_datatype: title: Source Datatype type: string PatchedExternalCounterpartyAddressUpdateRequest: title: ExternalCounterpartyAddressUpdateRequest type: object properties: city_name: title: City Name description: The updated city name of the address minLength: 1 type: string state_name: title: State Name description: The updated state name of the address minLength: 1 type: string country_iso_code: title: Country Iso Code description: The ISO-3166-1 Alpha-2 code of the country associated with this counterparty address. Any value passed here is overrides `country`. Valid values can be found [here](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). minLength: 1 type: string zipcode: title: Zipcode description: The updated zipcode of the address minLength: 1 type: string line_one: title: Line One description: The updated line one of the address, It is the first line of address. Usually the apartment, floor, and street information. minLength: 1 type: string is_primary: title: Is Primary description: Whether the address needs to be set as the primary address. type: boolean examples: - city_name: Cincinnati state_name: Ohio country_iso_code: IN zipcode: '513' line_one: 'st: 3, block: 2, Jenkins Road' is_primary: false PatchedExternalCounterpartyContactBulkUpdateListRequest: title: ExternalCounterpartyContactBulkUpdateListRequest type: object properties: contacts: title: Contacts description: List of contacts to be updated. Maximum 50 contacts per request. type: array items: title: ExternalCounterpartyContactBulkUpdateRequest type: object properties: name: title: Name description: The updated name of the Contact minLength: 1 type: string email: title: Email description: The updated email of the Contact type: string format: email is_primary: title: Is Primary description: Whether the contact needs to be set as the primary contact. type: boolean id: title: Id description: ID of the Counterparty contact to be updated. type: integer required: - id examples: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false required: - contacts examples: - contacts: - id: 100 name: Susan Ervin email: dummy@email.com is_primary: false PatchedExternalCounterpartyContactUpdateRequest: title: ExternalCounterpartyContactUpdateRequest type: object properties: name: title: Name description: The updated name of the Contact minLength: 1 type: string email: title: Email description: The updated email of the Contact type: string format: email is_primary: title: Is Primary description: Whether the contact needs to be set as the primary contact. type: boolean examples: - name: Susan Ervin email: dummy@email.com is_primary: false PatchedExternalCounterpartyUpdateRequest: title: ExternalCounterpartyUpdateRequest type: object properties: name: title: Name description: The updated name of the Counterparty minLength: 1 type: string brand_name: title: Brand Name description: The updated brand name of the Counterparty type: string custom_fields: title: Custom Fields description: The updated custom fields of the Counterparty type: object examples: - name: Susan Ervin brand_name: Susan's Org custom_fields: vendor_id: '1234' gst_number: 22AAAAA0000A1Z5 PatchedExternalUpdateContractBusinessUserRequest: title: ExternalUpdateContractBusinessUserRequest type: object properties: user_id: title: User Id description: The Org User Id of user who should be business user for the contract type: integer update_user_task_on_bu_update: title: Update User Task On Bu Update description: If true then all contract tasks (if any) will be re-assigned to new business user but if false they will remain assigned to old business user default: true type: boolean required: - user_id examples: - user_id: 1234 update_user_task_on_bu_update: true PatchedExternalUserEdit: type: object properties: roles: type: array items: type: integer description: The Role IDs for this user. Role IDs are returned by the Roles API. PatchedIntakeFormData: title: IntakeFormData description: A key-value object keyed by intake-form question field name. Values must match the question type configured on the contract type questionnaire. type: object additionalProperties: false examples: - term: days: 180 type: MONTHS value: 6 notes: Customer requested revised indemnity clause. capacity: 15 setup_fee: type: USD value: 30000.0 start_date: '2026-04-01' payment_method: annual_invoice PatchedLegalIntakePublicUpdateRequest: description: Request body for updating a legal intake. All fields optional. examples: - priority: MEDIUM status: IN_PROGRESS title: Updated title properties: title: anyOf: - minLength: 1 type: string - type: 'null' default: null description: Updated title. title: Title description: anyOf: - type: string - type: 'null' default: null description: Updated description. title: Description status: anyOf: - $ref: '#/components/schemas/LegalIntakeStatus' - type: 'null' default: null description: Updated intake status. priority: anyOf: - $ref: '#/components/schemas/LegalIntakePriority' - type: 'null' default: null description: Updated intake priority. due_date: anyOf: - format: date-time type: string - type: 'null' default: null description: Updated due date in ISO format. title: Due Date metadata: anyOf: - type: object - type: 'null' default: null description: Updated metadata object. title: Metadata assignees: anyOf: - items: $ref: '#/components/schemas/LegalIntakeAssigneePublicCreateRequest' type: array - type: 'null' default: null description: Updated assignees/collaborators list. title: Assignees title: LegalIntakePublicUpdateRequest type: object PatchedTemplateUpdateRequest: title: TemplateUpdateRequest type: object properties: tags: title: Tags description: The complete set of tags to store on the requested template. Send an empty list to clear existing tags. type: array items: type: string examples: - tags: - Tag1 - Tag2 PatchedUpdateObligationRequest: title: UpdateObligationRequest type: object properties: title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' status: allOf: - $ref: '#/components/schemas/StatusDc2Enum' title: ObligationStatus description: The status of the obligation priority: allOf: - $ref: '#/components/schemas/PriorityEnum' title: ObligationPriority description: The priority of the obligation custom_fields: title: Custom Fields type: object properties: clause: title: Clause description: The clause where the obligation is mentioned type: string contractual_delivery_value: title: Contractual Delivery Value description: The contractual delivery value of the obligation anyOf: - type: integer - type: number - type: string frequency: title: Frequency description: The frequency of the obligation type: string description: The custom fields of the obligation obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer example: title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly PatchedUpdateObligationRequestList: title: UpdateObligationRequestList description: The list of obligations type: array items: title: UpdateObligationRequestWithId type: object properties: title: title: Title description: The title of the obligation type: string description: title: Description description: The description of the obligation type: string start_date: title: Start Date description: The start date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' end_date: title: End Date description: The end date of the obligation type: string format: date-time example: '2025-09-08T10:40:07Z' status: title: ObligationStatus description: The status of the obligation enum: - PENDING - COMPLETED - FAILED - VERIFIED type: string priority: title: ObligationPriority description: The priority of the obligation enum: - LOW - MEDIUM - HIGH type: string custom_fields: title: Custom Fields type: object properties: clause: title: Clause description: The clause where the obligation is mentioned type: string contractual_delivery_value: title: Contractual Delivery Value description: The contractual delivery value of the obligation anyOf: - type: integer - type: number - type: string frequency: title: Frequency description: The frequency of the obligation type: string description: The custom fields of the obligation obligation_type_id: title: Obligation Type Id description: The ID of the obligation type type: integer id: title: Id description: The ID of the obligation type: integer required: - id example: title: Test Obligation description: Test Description start_date: '2021-01-01' end_date: '2021-01-01' status: PENDING priority: MEDIUM custom_fields: clause: Test Clause contractual_delivery_value: '1000000' frequency: Monthly PendingWithEnum: enum: - CREATOR_PARTY - COUNTER_PARTY - BOTH type: string PermissionFilterListEnum: enum: - READ - SUGGEST - EDIT - SIGN - CREATE type: string PriorityEnum: enum: - LOW - MEDIUM - HIGH type: string PublicAnalyticsQueryRequest: description: Body for POST /api/v2.1/public/analytics/query/. properties: query: description: A single GoogleSQL SELECT (optional WITH / UNION). Maximum length 10,000 characters. maxLength: 10000 title: Query type: string user_scoped: anyOf: - type: boolean - type: 'null' default: null description: 'When set, overrides X-Spotdraft-Analytics-User-Scoped. True: restrict Contracts via user_access (default when unset). False: workspace-wide only for users with the workspace Admin role. Non-admin callers cannot widen access by sending `false`.' title: User Scoped required: - query title: PublicAnalyticsQueryRequest type: object PublicAnalyticsQueryResponse: properties: columns: description: Column names in result order. items: type: string title: Columns type: array rows: description: Each row is a JSON object keyed by column name. Values are JSON-serializable (e.g. timestamps as ISO 8601 strings). items: type: object title: Rows type: array row_count: description: Number of rows returned after the server row cap is applied. title: Row Count type: integer truncated: description: True if more rows existed than were returned (see limits in operation docs). title: Truncated type: boolean execution_ms: description: Approximate wall time in milliseconds for transpilation and query execution. title: Execution Ms type: number required: - columns - rows - row_count - truncated - execution_ms title: PublicAnalyticsQueryResponse type: object PublicBulkTagCreateRequest: description: Request body for bulk tag creation. examples: - tags: - colour_code: '#FF5733' name: NDA - name: MSA - colour_code: '#3498DB' name: SOW tag_entity_type: Contract properties: tags: description: List of tags to create. Each tag requires at minimum a 'name' field. items: $ref: '#/components/schemas/PublicTagCreateRequest' minItems: 1 title: Tags type: array required: - tags title: PublicBulkTagCreateRequest type: object PublicBulkTagCreateResponse: description: Response body for bulk tag creation. examples: - tags: - colour_code: '#FF5733' id: 42 name: NDA tag_entity_type: Contract workspace_id: 101 properties: tags: description: List of successfully created tags items: $ref: '#/components/schemas/PublicTagResponse' title: Tags type: array required: - tags title: PublicBulkTagCreateResponse type: object PublicClickwrapConsentStatusResponse: example: status: NOT_ACCEPTED properties: status: $ref: '#/components/schemas/ClickwrapConsentStatus' trigger_acceptance: title: Trigger Acceptance type: boolean required: - status - trigger_acceptance title: PublicClickwrapConsentStatusResponse type: object PublicContractApprovalListResponse: title: PublicContractApprovalListResponse type: object properties: results: title: Results type: array items: title: PublicContractApprovalExpandedResponse type: object properties: approval_actions: title: Approval Actions type: array items: title: ContractApprovalAction type: object properties: status: title: ContractApprovalV2Status description: Status of this approval action enum: - APPROVED - REJECTED - SUGGESTED - SKIPPED type: string notes: title: Notes description: Notes for this approval action type: string created: title: Created description: Datetime at which this action was taken type: string format: date-time latest: title: Latest description: This will be True if this is latest approval action type: boolean required: - status - created - latest approval: title: PublicContractRequiredApprovalResponse type: object properties: id: title: Id description: Id of the approval type: integer contract_id: title: Contract Id description: Id of contract to which this approval belongs type: integer approval_name: title: Approval Name description: Approval Name type: string approval_type: title: ApprovalV2Type description: Type of approval enum: - PRE_SEND - PRE_SIGN - AD_HOC - APPROVAL_V5 type: string org_user: title: Org User type: object properties: id: title: Id description: Id of the user type: integer name: title: Name description: Name of the user type: string email: title: Email description: Email of the user type: string required: - id - name - email description: User who is supposed to approve this approval sent_for_approval: title: Sent For Approval description: Whether this apporval has been sent or not type: boolean last_sent_at: title: Last Sent At description: Datetime when this approval was last sent at type: string format: date-time notes: title: Notes description: Notes for this approval type: string created_by_org_user: title: Created By Org User type: object properties: id: title: Id description: Id of the user type: integer name: title: Name description: Name of the user type: string email: title: Email description: Email of the user type: string required: - id - name - email description: User who created this approval status: title: RequiredApprovalStatus description: Current status of this approval enum: - NOT_STARTED - PENDING - REJECTED - SUGGESTED - APPROVED - SKIPPED type: string required: - id - contract_id - approval_name - approval_type - sent_for_approval - created_by_org_user - status required: - approval_actions - approval required: - results PublicDownloadContractDocxRequest: title: PublicDownloadContractDocxRequest type: object properties: fallback_to_last_available_docx: title: Fallback To Last Available Docx description: 'Whether to fallback to last available DOCX version if current contract version is not in DOCX format. Note: This might return an outdated DOCX version if the current version which is being used is in a different format (e.g., PDF). The returned DOCX may not reflect recent changes made in the current version.' default: false type: boolean PublicGetClickwrapConsentStatusRequestData: examples: - user_identifier: 10f9a299-9e9a-4bc9-9299-5b89bc06d370 properties: user_identifier: description: An identifier for the user whose consent status is being queried. minLength: 1 title: User Identifier type: string required: - user_identifier title: PublicGetClickwrapConsentStatusRequestData type: object PublicOrgUserResponse: properties: id: description: Id of the user. title: Id type: integer name: description: Name of the user. title: Name type: string email: description: Email of the user. title: Email type: string designation: anyOf: - type: string - type: 'null' default: null description: Designation of the user. title: Designation required: - id - name - email title: PublicOrgUserResponse type: object PublicRoleMemberAddResponse: title: PublicRoleMemberAddResponse description: A list of the members who were added to the role. type: array items: title: PublicMinimalUserResponse type: object properties: id: title: Id description: ID of the user type: integer email: title: Email description: Email Id of the user type: string name: title: Name description: Name of the user type: string designation: title: Designation description: Designation of the user within the organization type: string required: - id - email - name examples: - - id: 6545 email: barack@obama.com name: Barack Obama designation: President PublicRoleMembersAddRequest: title: PublicRoleMembersAddRequest type: object properties: user_ids_to_add: title: User Ids To Add description: The user ids that are to be added to the role. The IDs are returned by the [Get User List](#tag/v21-users/GET/api/v2.1/public/auth/users/) API. This list must contain at least one user id. default: [] type: array items: type: integer examples: - user_ids_to_add: - 4567 - 2345 PublicSignRecipientWithStatusListResponse: title: PublicSignRecipientWithStatusListResponse type: object properties: items: title: Items description: List of all recipients with their details for the contract type: array items: title: PublicSignRecipientWithStatusResponse type: object properties: recipient: title: Recipient type: object properties: id: title: Id description: Signatory ID type: integer recipient_type: title: RecipientType description: The type of recipient as set by the creator/editor for the contract enum: - SIGNATORY - APPROVER - RECEIVER type: string user: title: User type: object properties: id: title: Id description: ID of the user type: integer email: title: Email description: Email Id of the user type: string name: title: Name description: Name of the user type: string designation: title: Designation description: Designation of the user within the organization type: string required: - id - email - name description: Basic details of a recipient user recipient_order: title: Recipient Order description: The order in which contract is sent out to the recipient, as set by the creator/editor for the contract type: integer note: title: Note description: The note for the recipient as set by the creator/editor for the contract type: string created: title: Created description: The timestamp (in ISO 8601 format) when the recipient was added by the creator/editor for the contract type: string format: date-time title: title: Title description: The title of the recipient as set by the creator/editor for the contract default: '' type: string is_sent_for_signature: title: Is Sent For Signature description: Set to true when contract has been sent out to recipient and false when contract has yet to be sent out to recipient default: false type: boolean last_sent_for_signature_at: title: Last Sent For Signature At description: The timestamp (in ISO 8601 format) when the contract was last sent to the recipient type: string format: date-time required: - id - recipient_type - user - created description: The details of the recipient recipient_action: title: Recipient Action type: object properties: is_success: title: Is Success description: Set to true when recipient has signed/approved the contract and false when recipient has declined to sign/approve the contract default: false type: boolean action_notes: title: Action Notes description: Note added by the recipient while signing/approving the contract type: string timestamp: title: Timestamp description: The timestamp (in ISO 8601 format) when recipient performed the action on the contract type: string format: date-time description: The action taken by the recipient status: title: RecipientStatus description: The current status of action that the recipient can perform enum: - PENDING - IN_PROGRESS - COMPLETED type: string required: - recipient - status required: - items examples: - items: - recipient: id: 143476 recipient_type: APPROVER user: id: 25367 name: Tyler designation: Senior Manager email: tyler@yahoo.com title: Senior Manager - Operations recipient_order: 1 note: He is a Senior Manager heading operations team is_sent_for_signature: true created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: '2024-05-24T05:46:22.721800Z' recipient_action: is_success: true action_notes: Approving on behalf of tyler timestamp: '2024-05-24T05:47:31.594842Z' status: COMPLETED - recipient: id: 143776 recipient_type: SIGNATORY user: id: 25567 name: Mike Reed designation: Operations Head email: mike_reed@yahoo.com title: '' recipient_order: 2 note: null is_sent_for_signature: true created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: '2024-05-25T05:46:22.721800Z' recipient_action: null status: IN_PROGRESS - recipient: id: 144776 recipient_type: RECEIVER user: id: 25367 name: Alice designation: null email: alice@yahoo.com title: '' recipient_order: 3 note: null is_sent_for_signature: false created: '2024-05-24T05:45:34.478802Z' last_sent_for_signature_at: null recipient_action: null status: IN_PROGRESS PublicSupportedDocumentCreateAPIRequest: title: PublicSupportedDocumentCreateAPIRequest type: object properties: name: title: Name description: Name of the document type: string file_name: title: File Name description: Name of the file, including its extension. type: string file_base64: title: File Base64 description: The contents of the file as a base64 encoded string. type: string required: - name - file_name - file_base64 examples: - name: Acme Corporation Related Document file_name: Acme Related Document.pdf file_base64: base64 encoded string of the file content PublicTagCreateRequest: description: Request model for a single tag to be created. examples: - colour_code: '#FF5733' name: NDA tag_entity_type: Contract properties: name: description: Name of the tag to create (1–100 characters, not empty or whitespace-only). maxLength: 100 minLength: 1 title: Name type: string colour_code: default: '' description: Colour code for the tag (e.g. '#FF5733'); up to 10 characters. Defaults to an empty string. maxLength: 10 title: Colour Code type: string tag_entity_type: $ref: '#/components/schemas/TagEntityType' default: Contract description: Entity type the tag applies to. One of 'Contract' or 'Clause'. Defaults to 'Contract'. required: - name title: PublicTagCreateRequest type: object PublicTagResponse: description: Response model for a created tag. examples: - colour_code: '#FF5733' id: 42 name: NDA tag_entity_type: Contract workspace_id: 101 properties: id: description: Unique identifier of the tag title: Id type: integer name: description: Name of the tag title: Name type: string workspace_id: description: ID of the workspace the tag belongs to title: Workspace Id type: integer colour_code: description: Hex colour code for the tag title: Colour Code type: string tag_entity_type: $ref: '#/components/schemas/TagEntityType' description: Entity type the tag applies to required: - id - name - workspace_id - colour_code - tag_entity_type title: PublicTagResponse type: object PublicUploadContractVersionRequest: title: PublicUploadContractVersionRequest type: object properties: document_name: title: Document Name description: Name of the document along with file type extension that is being uploaded as a new contract version. PDF and DOCX uploads are supported. type: string document_base_64: title: Document Base 64 description: The document content in bytes converted to a base64 string. type: string collect_approvals: title: Collect Approvals description: Boolean flag to collect or skip approvals for the newly uploaded version when approvals are configured on the contract. default: true type: boolean is_executed_version: title: Is Executed Version description: Boolean flag to mark the uploaded version as the executed version. default: false type: boolean required: - document_name - document_base_64 examples: - document_name: OneNDA.pdf document_base_64: OneNDA document content in bytes converted to base64 string. collect_approvals: true PublicUserMinimalListResponse: title: PublicUserMinimalListResponse description: SD Generic Model from which all other Generic Models should inherit type: object properties: page: title: Page description: The current page number. Page numbers start at 1. type: integer limit: title: Limit description: The number of items returned per page. type: integer total_results: title: Total Results description: Total number of items in the result set. type: integer results: title: Results description: The actual results. type: array items: title: PublicMinimalUserResponse type: object properties: id: title: Id description: ID of the user type: integer email: title: Email description: Email Id of the user type: string name: title: Name description: Name of the user type: string designation: title: Designation description: Designation of the user within the organization type: string required: - id - email - name required: - page - limit - total_results - results examples: - total_results: 2 page: 1 limit: 10 results: - id: 100 first_name: Sonia last_name: Sotomayor email: sonia_sotomayor@notreally.supremecourt.gov designation: Lawyer - id: 101 first_name: Elena last_name: Kagan email: elena_kagan@notreally.supremecourt.gov designation: Lead Lawyer PublicUserWithRolesMinimalListResponse: title: PublicUserWithRolesMinimalListResponse description: SD Generic Model from which all other Generic Models should inherit type: object properties: page: title: Page description: The current page number. Page numbers start at 1. type: integer limit: title: Limit description: The number of items returned per page. type: integer total_results: title: Total Results description: Total number of items in the result set. type: integer results: title: Results description: The actual results. type: array items: title: PublicMinimalUserWithRolesResponse type: object properties: id: title: Id description: ID of the user type: integer email: title: Email description: Email Id of the user type: string name: title: Name description: Name of the user type: string designation: title: Designation description: Designation of the user within the organization type: string roles: title: Roles description: Roles/Teams that this user belongs to type: array items: title: ExternalUserActiveRolesData description: Details of an active role type: object properties: id: title: Id description: ID of the role. Use this to identify the role when calling APIs like Add/Delete Role Member. type: integer name: title: Name description: The user visible name of the role. type: string description: title: Description description: An option description that helps clarify the use of a particular role. type: string required: - id - name is_active: title: Is Active description: Shows whether the user is active or deactivated type: boolean required: - id - email - name - is_active required: - page - limit - total_results - results examples: - total_results: 2 page: 1 limit: 10 results: - id: 100 first_name: Sonia last_name: Sotomayor email: sonia_sotomayor@notreally.supremecourt.gov designation: Lawyer is_active: true roles: - id: 456 name: Legal description: Legal team - id: 101 first_name: Elena last_name: Kagan email: elena_kagan@notreally.supremecourt.gov designation: Lead Lawyer is_active: true roles: - id: 123 name: Admin description: Admin team - id: 456 name: Legal description: Legal team PublicWebhookCreateRequest: title: PublicWebhookCreateRequest type: object properties: title: title: Title description: The title of this webhook minLength: 1 type: string description: title: Description description: The description for the webhook type: string custom_headers: title: Custom Headers description: Custom headers to be included in the webhook call. Header names are trimmed before validation. Use custom header names only; standard HTTP headers are rejected. Header names should start with `X-` and must not start with X-Google-, X-Goog-, X-GFE-, X-Amz-, X-MS-, X-DD-, X-Datadog-, X-B3-, X-SD- and X-SPOTDRAFT-. type: object only_for_activities: description: Webhook activity types for which to trigger this webhook. The list cannot be empty. type: array items: allOf: - $ref: '#/components/schemas/OnlyForActivitiesEnum' title: ContractWebhookActivityType description: An enumeration. url: title: Url description: The HTTPS URL that should receive this event. Non-HTTPS URLs are rejected. minLength: 1 type: string required: - title - only_for_activities - url examples: - title: Contract Created webhook only_for_activities: - CONTRACT_CREATED url: https://yourdomain.com/webhooks/event-handler description: Created for contract create webhook custom_headers: X-ABC-ACCESS-KEY: example-access-key X-CLIENT-SIGNATURE: example-client-signature PublicWebhookResponse: title: PublicWebhookResponse type: object properties: id: title: Id description: Webhook ID type: integer title: title: Title description: The title of this webhook minLength: 1 type: string only_for_activities: description: Webhook activity types for which to trigger this webhook type: array items: allOf: - $ref: '#/components/schemas/OnlyForActivitiesEnum' title: ContractWebhookActivityType description: An enumeration. url: title: Url description: The url to receive this event type: string created_by_user: title: Created By User type: object properties: id: title: Id description: ID of the user type: integer email: title: Email description: Email Id of the user type: string name: title: Name description: Name of the user type: string designation: title: Designation description: Designation of the user within the organization type: string required: - id - email - name description: Basic details of the user who created the webhook description: title: Description description: The description for the webhook type: string custom_headers: title: Custom Headers description: Custom headers to be included in the webhook call type: object status: allOf: - $ref: '#/components/schemas/PublicWebhookResponseStatusEnum' title: ContractActivityWebhookStatus description: The status of the webhook required: - id - title - url - status examples: - id: 511 title: Contract Created webhook only_for_activities: - CONTRACT_CREATED url: https://yourdomain.com/webhooks/event-handler created_by_user: id: 17258 name: Mike Reed email: mike_reed@yahoo.com designation: Senior Marketing Manager description: Created for contract create webhook custom_headers: X-ABC-ACCESS-KEY: example-access-key DEF-ACCESS-KEY: example-secondary-access-key status: ACTIVE PublicWebhookResponseStatusEnum: enum: - ACTIVE - DISABLED_BY_USER - DISABLED_BY_ERROR type: string RelationTypeEnum: enum: - CHILD - ADDENDUM - AMENDMENT - PARENT type: string RetriggerLatestWebhooksRequest: title: RetriggerLatestWebhooksRequest type: object properties: contract_ids: title: Contract Ids description: The list of contract ids whose latest webhook calls need to be re-triggered. Provide one or more contract ids. type: array items: type: integer required: - contract_ids examples: - contract_ids: - 1 - 2 - 3 ReviewRequestCreateRequest: title: ReviewRequestCreateRequest type: object properties: description: title: Description description: Description of the review request. Visible to the reviewer default: '' minLength: 1 type: string assignee_user_id: title: Assignee User Id description: The ID of the org user to whom the review request should be assigned. Either `assignee_user_id` or `assignee_role_id` must be set, but not both. type: integer assignee_role_id: title: Assignee Role Id description: The ID of the role to which the review request should be assigned. Either `assignee_user_id` or `assignee_role_id` must be set, but not both. type: integer ScannedContractContentResponse: title: ScannedContractContentResponse type: object properties: contract_id: title: Contract Id description: The contract ID type: string content: title: Content description: Extracted full text content from the scanned PDF type: string required: - contract_id - content examples: - contract_id: 1090393 content: This Agreement is entered into between... SendToCounterparty: type: object properties: to_emails: type: array items: type: string description: Optional list of primary recipient email addresses. If omitted, SpotDraft uses the configured counterparty recipients for the contract. cc_emails: type: array items: type: string description: Optional list of email addresses to copy on the outbound contract email. bcc_emails: type: array items: type: string description: Optional list of blind-copy email addresses for the outbound contract email. attachment_formats: type: array items: $ref: '#/components/schemas/AttachmentFormatsEnum' description: At least one attachment format is required. Allowed values come from the ContractEmailFormat enum. extra_attachments: type: array items: $ref: '#/components/schemas/EmailBase64Attachment' description: Optional additional attachments to send with the contract email. custom_message: type: string description: Optional custom message to include in the contract email body. subject: type: string description: Optional custom email subject line. required: - attachment_formats SidebarContractContext: type: object properties: contract_id: type: string description: ID of a contract that Sidebar should use. contract_name: type: string description: Name of the contract, to help you identify it. required: - contract_id - contract_name SidebarFileContext: type: object properties: file_id: type: string format: uuid description: ID of a file that Sidebar should use. file_name: type: string description: Name of the file, to help you identify it. version_number: type: integer nullable: true description: Optional file version to use. required: - file_id - file_name SidebarFileUploadAcceptedResponse: type: object properties: file_id: type: string format: uuid description: ID of the uploaded file. status: type: string description: Always `accepted` when processing will continue in the background and the terminal file result will be delivered via webhook. required: - file_id - status SidebarFileUploadRequest: type: object properties: file: type: string format: uri description: File to upload to Sidebar. upload_source: allOf: - $ref: '#/components/schemas/UploadSourceEnum' description: 'Where the file should be attached. Use `assistant` when attaching it to an agent. * `chat` - chat * `hub` - hub * `assistant` - assistant * `table` - table' entity_id: type: string format: uuid description: ID of the chat, hub, agent, or table that should receive the file. webhook_url: type: string format: uri pattern: ^https:// nullable: true description: Optional HTTPS callback URL. If provided, Sidebar sends the final upload result there instead of keeping this request open. required: - entity_id - file - upload_source SidebarFileUploadResponse: type: object properties: file_id: type: string format: uuid description: ID of the uploaded file. status: type: string description: Final file status. `created` means the file is ready. error: type: string nullable: true description: Error message if processing failed. required: - file_id - status SidebarLawSources: type: object properties: us: type: boolean default: false description: Let Sidebar use US legal materials. SidebarQueryAcceptedResponse: type: object properties: chat_id: type: string format: uuid description: Conversation ID allocated for the asynchronous request. status: type: string description: Always `accepted` when the result will be delivered later. required: - chat_id - status SidebarQueryRequest: type: object properties: user_input: type: string description: Question or instruction to send to Sidebar. chat_id: type: string format: uuid nullable: true description: Use this to continue an existing Sidebar conversation. Leave it out to start a new one. webhook_url: type: string format: uri pattern: ^https:// nullable: true description: Optional HTTPS callback URL. If provided, Sidebar sends the final result there instead of keeping this request open. sources: allOf: - $ref: '#/components/schemas/SidebarSources' description: Choose which sources Sidebar is allowed to use. deep_research: type: boolean default: false description: Use a deeper research mode. This may take longer. files: type: array items: $ref: '#/components/schemas/SidebarFileContext' description: Existing files to include as context. contracts: type: array items: $ref: '#/components/schemas/SidebarContractContext' description: Existing contracts to include as context. agent_context: type: array items: type: string description: Optional extra notes that Sidebar should consider. tables: type: array items: $ref: '#/components/schemas/SidebarTableContext' description: Existing tables to include as context. agent_id: type: string format: uuid nullable: true description: Optional agent to use for this question. required: - user_input SidebarQueryResponse: type: object properties: chat_id: type: string format: uuid description: Conversation ID for the created or reused Sidebar chat. response: type: string description: Sidebar's answer. sources: type: array items: $ref: '#/components/schemas/SidebarSearchResult' description: Sources referenced in the answer. error: type: string nullable: true description: Error message if the request failed. required: - chat_id - response SidebarSearchResult: type: object properties: title: type: string description: Title of a source used in the answer. url: type: string format: uri description: Link to a source used in the answer. source_id: type: string nullable: true description: Optional source identifier. required: - title - url SidebarSources: type: object properties: web: $ref: '#/components/schemas/SidebarWebSources' law: $ref: '#/components/schemas/SidebarLawSources' clm_connector: type: boolean default: false description: Let Sidebar use your connected SpotDraft contract data. SidebarTableContext: type: object properties: table_id: type: string description: ID of a table that Sidebar should use. table_name: type: string description: Name of the table, to help you identify it. required: - table_id - table_name SidebarWebSources: type: object properties: open: type: boolean default: false description: Let Sidebar search the public web. indian: type: boolean default: false description: Let Sidebar search Indian legal and government websites. eu: type: boolean default: false description: Let Sidebar search EU legal and government websites. us: type: boolean default: false description: Let Sidebar search US legal and government websites. StatusDc2Enum: enum: - PENDING - COMPLETED - FAILED - VERIFIED type: string SupportedDocumentResponse: title: SupportedDocumentResponse type: object properties: id: title: Id description: Id of supported document type: integer name: title: Name description: Name of the document type: string created: title: Created description: Datetime when document was created type: string format: date-time required: - id - name - created examples: - id: '199' name: Acme Corporation Related Document created: '2022-10-10' TagEntityType: description: Enum type to indicate type of the entity for which the tags correspond to enum: - Contract - Clause title: TagEntityType type: string TaskCategoryEnum: enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string TaskPriority: enum: - LOW - MEDIUM - HIGH title: TaskPriority type: string TemplateListResponse: title: TemplateListResponse description: A list of template as returned by the public API type: object properties: items: title: Items description: The list of templates supported for this Client. type: array items: title: TemplateResponse description: A template as returned by the public API type: object properties: id: title: Id description: The ID of the template type: integer name: title: Name description: The name of the template type: string contract_type_id: title: Contract Type Id description: The id of the contract type that the template is mapped to type: integer required: - id - name - contract_type_id examples: - id: 1 name: Basic Non Disclosure Agreement contract_type_id: 10 required: - items examples: - items: - id: 1 name: Basic Non Disclosure Agreement contract_type_id: 10 TemplateMetaDataResponse: title: TemplateMetaDataResponse type: object properties: attributes: title: Attributes description: The list of attributes for this contract template. type: array items: title: TemplateMetaItem type: object properties: variable: title: Variable description: The name of the variable as it would be sent in the contract create API. type: string mandatory: title: Mandatory description: If this is required for a template to go from Draft to Redlining. type: boolean type: title: QuestionVariableType description: The kind of field. enum: - check-box - string - date - number - text-box - currency - phone-number - address - duration - multi-dropdown - dropdown - date-range - table - multi-text-input - rich-text - repeating - multi-file - image - related-contract type: string options: title: Options description: The list of options for this field. Only set for dropdown and enum types. type: array items: title: CommonFormTypeOption type: object properties: label: title: Label description: The label that is to be shown to the user. type: string value: title: Value description: The value that must be sent as part of contract data. required: - label required: - variable - mandatory - type - options examples: - variable: start_date mandatory: true type: date - variable: kind_of_nda mandatory: true type: dropdown options: - label: Mutual value: mutual - label: Exclusive value: exclusive required: - attributes examples: - attributes: - variable: start_date mandatory: true type: date - variable: kind_of_nda mandatory: true type: dropdown options: - label: Mutual value: mutual - label: Exclusive value: exclusive TemplateMetaDataResponseV2: title: TemplateMetaDataResponseV2 type: object properties: attributes: title: Attributes description: The list of attributes for this contract template. type: array items: title: CfPublicDescriptor description: 'A descriptor to describe the CommonForm blank. Used for the public API.' type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: The name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: The type of field. The type changes the values to be sent. See V2 Create Contract enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string help_text: title: Help Text description: Help text which can be shown to the user if needed. type: string parent_variable: title: Parent Variable description: For nested variables, this is the name of the variable which should be an object with the values set in it type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is required. In case its nested (if `parent_variable` is set) the entire object can be unset if `parent_required` is unset or false default: true type: boolean parent_required: title: Parent Required description: Only set if `parent_variable` is set. If set to true then the parent variable is required. Thus the nested object for the parent should be set. The required-ness of the nested variables is based on the `required` field type: boolean default_value: title: Default Value description: The default value for this field, if any parent_type: title: Parent Type description: The SpotDraft type of the parent variable this field is a child for, if any. type: string child_variable: title: Child Variable description: The name of the child field. This is only set if this variable is a child field. type: string question: title: Question description: Question for this attribute. type: string attributes: title: Attributes description: Describes the shape of the object for repeating types. Only set when `type` is `repeating`. type: array items: title: CfPublicDescriptorBase type: object properties: display_label: title: Display Label description: The label to be displayed to users type: string variable: title: Variable description: The name of the variable. In case this is a nested variable, The name will include a `.` type: string type: title: CfPublicDescriptorType description: The type of field. The type changes the values to be sent. See V2 Create Contract enum: - string - boolean - int - float - array of strings - array of options - enum - date - repeating - array of files type: string help_text: title: Help Text description: Help text which can be shown to the user if needed. type: string parent_variable: title: Parent Variable description: For nested variables, this is the name of the variable which should be an object with the values set in it type: string options: title: Options description: For `enum` and `arrary of options` types, this is the list of options to be shown to the user. type: array items: title: CfOption type: object properties: label: title: Label description: The label of this Option as shown to the user. type: string value: title: Value description: The value of this Option as sent to the API. required: - label required: title: Required description: Describes if this variable is required. In case its nested (if `parent_variable` is set) the entire object can be unset if `parent_required` is unset or false default: true type: boolean parent_required: title: Parent Required description: Only set if `parent_variable` is set. If set to true then the parent variable is required. Thus the nested object for the parent should be set. The required-ness of the nested variables is based on the `required` field type: boolean default_value: title: Default Value description: The default value for this field, if any parent_type: title: Parent Type description: The SpotDraft type of the parent variable this field is a child for, if any. type: string child_variable: title: Child Variable description: The name of the child field. This is only set if this variable is a child field. type: string question: title: Question description: Question for this attribute. type: string required: - display_label - variable - type required: - display_label - variable - type counter_party_kind: allOf: - $ref: '#/components/schemas/CounterPartyKindEnum' title: PartyOrganizationKind description: The kind of Counter Party for this contract template. Signfies if the Counter Party is an individual or an organization. Data sent to create an instance of this template changes based on the kind returned here. required: - attributes - counter_party_kind examples: - {} TemplateResponseV2: title: TemplateResponseV2 description: A template along with the updated data as updated by the public API. type: object properties: id: title: Id description: The ID of the template type: integer name: title: Name description: The name of the template type: string contract_type_id: title: Contract Type Id description: The id of the contract type type: integer tags: title: Tags description: The tags to be updated for the requested template id. type: array items: type: string required: - id - name - contract_type_id examples: - id: 1 name: Basic Non Disclosure Agreement tags: - Tag1 - Tag2 contract_type_id: 10 TypeEnum: enum: - BUSINESS - LEGAL - CP_POC - LEGAL_POC - SIGNATORY type: string UploadSourceEnum: enum: - chat - hub - assistant - table type: string description: '* `chat` - chat * `hub` - hub * `assistant` - assistant * `table` - table' UserTaskCreateRequest: title: UserTaskCreateRequest type: object properties: title: title: Title description: Title of the task minLength: 1 type: string notes: title: Notes description: Notes for the task default: '' type: string contract_id: title: Contract Id description: Contract Id for the task type: integer due_date: title: Due Date description: The date and time when this task is due for completion. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: string format: date-time due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: integer assignees: title: Assignees description: List of assignees for the task. For non-intake tasks, at least one assignee is required. Each assignee must set exactly one of `org_user_id` or `role_id`. type: array items: title: TaskAssigneeCreateRequest type: object properties: org_user_id: title: Org User Id type: integer role_id: title: Role Id type: integer reminders: title: Reminders description: List of reminders relative to the due date. Reminder values must use the supported duration object shape. type: array items: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days task_category: allOf: - $ref: '#/components/schemas/TaskCategoryEnum' title: TaskCategory description: The category of the task. `priority` and `intake_task_status` are only allowed for `INTAKE_TASK`. priority: allOf: - $ref: '#/components/schemas/PriorityEnum' title: TaskPriority description: Priority of the task. Only allowed for `INTAKE_TASK`; defaults to `MEDIUM` when omitted for intake tasks. intake_task_status: allOf: - $ref: '#/components/schemas/IntakeTaskStatusEnum' title: IntakeTaskStatus description: Status of the intake task. Only allowed for `INTAKE_TASK`; defaults to `PENDING` when omitted for intake tasks. task_associations: title: Task Associations description: The associations of the task type: array items: title: TaskAssociationCreateRequest type: object properties: entity_id: title: Entity Id description: The ID of the entity for the task association type: integer entity_type: title: TaskAssociationEntityType description: The type of the entity for the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: The type of the association for the task association enum: - PRIMARY - SECONDARY type: string default: PRIMARY required: - title - assignees examples: - title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS UserTaskCreateRequestList: title: UserTaskCreateRequestList description: List of tasks type: array items: title: UserTaskCreateRequest type: object properties: title: title: Title description: Title of the task minLength: 1 type: string notes: title: Notes description: Notes for the task default: '' type: string contract_id: title: Contract Id description: Contract Id for the task type: integer due_date: title: Due Date description: The date and time when this task is due for completion. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: string format: date-time due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task. For non-intake tasks, exactly one of `due_date` or `due_date_key_pointer_id` is required. For intake tasks, due date fields are optional. type: integer assignees: title: Assignees description: List of assignees for the task. For non-intake tasks, at least one assignee is required. Each assignee must set exactly one of `org_user_id` or `role_id`. type: array items: title: TaskAssigneeCreateRequest type: object properties: org_user_id: title: Org User Id type: integer role_id: title: Role Id type: integer reminders: title: Reminders description: List of reminders relative to the due date. Reminder values must use the supported duration object shape. type: array items: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days task_category: title: TaskCategory description: The category of the task. `priority` and `intake_task_status` are only allowed for `INTAKE_TASK`. enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string priority: title: TaskPriority description: Priority of the task. Only allowed for `INTAKE_TASK`; defaults to `MEDIUM` when omitted for intake tasks. enum: - LOW - MEDIUM - HIGH type: string intake_task_status: title: IntakeTaskStatus description: Status of the intake task. Only allowed for `INTAKE_TASK`; defaults to `PENDING` when omitted for intake tasks. enum: - PENDING - IN_PROGRESS - BLOCKED - COMPLETED - DISCARDED type: string task_associations: title: Task Associations description: The associations of the task type: array items: title: TaskAssociationCreateRequest type: object properties: entity_id: title: Entity Id description: The ID of the entity for the task association type: integer entity_type: title: TaskAssociationEntityType description: The type of the entity for the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: The type of the association for the task association enum: - PRIMARY - SECONDARY type: string default: PRIMARY required: - title - assignees examples: - title: test title notes: test note contract_id: 1 due_date: '2021-05-20T04:52:04Z' assignees: - org_user_id: 1 - role_id: 1 reminders: - value: 10 type: DAYS UserTaskPublicResponse: title: UserTaskPublicResponse type: object properties: id: title: Id description: ID of the Task type: integer title: title: Title description: Title of the Task type: string notes: title: Notes description: Notes for the Task type: string contract: title: Contract description: The Details of the Contract type: object properties: id: title: Id type: integer public_id: title: Public Id type: string contract_name: title: Contract Name type: string contract_type_id: title: Contract Type Id type: integer contract_template_id: title: Contract Template Id type: integer status: title: Status type: string display_status: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string display_status_without_on_hold_check: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string workflow_status: title: ContractWorkflowStatus description: An enumeration. enum: - DRAFT - INVITE_CLIENT - INFO_COLLECTION - CONTRACT_APPROVAL - CONTRACT_DRAFT_APPROVAL - CONTRACT_APPROVAL_REJECTED - REVIEW - SIGN - COMPLETING - COMPLETED - TEMPLATE_PRE_SIGN_APPROVAL type: string contract_kind: title: ContractKind description: An enumeration. enum: - TEMPLATE - TEMPLATE_EDITABLE - UPLOAD_EDITABLE - UPLOAD_SIGN - UPLOAD_EXECUTED - EXPRESS_TEMPLATE - CLICKWRAP - HISTORICAL_CLICKWRAP type: string campaign_id: title: Campaign Id type: integer campaign_v3_id: title: Campaign V3 Id type: integer express_template_id: title: Express Template Id type: integer contract_data_id: title: Contract Data Id type: integer contract_editable_document_id: title: Contract Editable Document Id type: integer created: title: Created type: string format: date-time created_by_workspace_id: title: Created By Workspace Id type: integer editor_client: title: ContractEditorClient description: An enumeration. enum: - ONLY_OFFICE_NATIVE - WOPI - UNSET type: string execution_date: title: Execution Date type: string format: date-time frozen_template_id: title: Frozen Template Id type: integer workflow_id: title: Workflow Id type: string workflow_name: title: Workflow Name type: string required: - id - public_id - contract_name - contract_type_id - status - display_status - display_status_without_on_hold_check - contract_kind - created - created_by_workspace_id - editor_client - workflow_id created_by_org_user: title: Created By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who created the Task completed_by_org_user: title: Completed By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who completed the Task completed_at: title: Completed At description: The date and time when the Task got completed type: string format: date-time absolute_due_date: title: Absolute Due Date description: The date and time when the Task is due for completion type: string format: date-time created: title: Created description: The date and time when the task got created type: string format: date-time created_by_workspace: title: Created By Workspace type: object properties: id: title: Id type: integer owner_id: title: Owner Id type: integer name: title: Name type: string is_individual_org: title: Is Individual Org type: boolean show_workspace_migration: title: Show Workspace Migration type: boolean short_hand_notation: title: Short Hand Notation type: string company_email_domains: title: Company Email Domains type: array items: type: string brand_name: title: Brand Name type: string required: - id - name - is_individual_org - show_workspace_migration description: The Details of the Workspace who created the Task assignees: title: Assignees description: The Details of Assignees for the Task type: array items: title: TaskAssigneeDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer assignee_org_user: title: Assignee Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Assignee Org User assignee_role: title: Assignee Role type: object properties: id: title: Id type: integer name: title: Name type: string description: title: Description type: string created: title: Created type: string format: date-time point_of_contact: title: OrganizationUserResponse type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id required: - id - name - description - created description: The Details of the Role assigned to Assignee last_manual_reminder_sent_at: title: Last Manual Reminder Sent At type: string format: date-time required: - id - user_task_id status: allOf: - $ref: '#/components/schemas/UserTaskPublicResponseStatusEnum' title: UserTaskStatus description: An enumeration. default: NO_DATE deleted_at: title: Deleted At description: The date and time when the task got deleted type: string format: date-time task_category: allOf: - $ref: '#/components/schemas/TaskCategoryEnum' title: TaskCategory description: The category of the task default: USER_TASK task_associations: title: Task Associations description: List of Task Associations for the Task type: array items: title: TaskAssociationPublicResponse type: object properties: entity_id: title: Entity Id description: Entity id of the task association type: string entity_type: title: TaskAssociationEntityType description: Entity type of the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: Association type of the task association enum: - PRIMARY - SECONDARY type: string required: - entity_id - entity_type - association_type due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task type: integer reminders: title: Reminders description: List of Reminders for the Task default: '' type: array items: title: ReminderDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer relative_time: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days absolute_time: title: Absolute Time type: string format: date-time required: - id - user_task_id - relative_time required: - id - title - created_by_org_user - created_by_workspace - assignees UserTaskPublicResponseList: title: UserTaskPublicResponseList type: array items: title: UserTaskPublicResponse type: object properties: id: title: Id description: ID of the Task type: integer title: title: Title description: Title of the Task type: string notes: title: Notes description: Notes for the Task type: string contract: title: Contract description: The Details of the Contract type: object properties: id: title: Id type: integer public_id: title: Public Id type: string contract_name: title: Contract Name type: string contract_type_id: title: Contract Type Id type: integer contract_template_id: title: Contract Template Id type: integer status: title: Status type: string display_status: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string display_status_without_on_hold_check: title: ContractDisplayStatus description: An enumeration. enum: - DRAFT - REDLINING - SIGN - EXECUTED - ON_HOLD - VOIDED type: string workflow_status: title: ContractWorkflowStatus description: An enumeration. enum: - DRAFT - INVITE_CLIENT - INFO_COLLECTION - CONTRACT_APPROVAL - CONTRACT_DRAFT_APPROVAL - CONTRACT_APPROVAL_REJECTED - REVIEW - SIGN - COMPLETING - COMPLETED - TEMPLATE_PRE_SIGN_APPROVAL type: string contract_kind: title: ContractKind description: An enumeration. enum: - TEMPLATE - TEMPLATE_EDITABLE - UPLOAD_EDITABLE - UPLOAD_SIGN - UPLOAD_EXECUTED - EXPRESS_TEMPLATE - CLICKWRAP - HISTORICAL_CLICKWRAP type: string campaign_id: title: Campaign Id type: integer campaign_v3_id: title: Campaign V3 Id type: integer express_template_id: title: Express Template Id type: integer contract_data_id: title: Contract Data Id type: integer contract_editable_document_id: title: Contract Editable Document Id type: integer created: title: Created type: string format: date-time created_by_workspace_id: title: Created By Workspace Id type: integer editor_client: title: ContractEditorClient description: An enumeration. enum: - ONLY_OFFICE_NATIVE - WOPI - UNSET type: string execution_date: title: Execution Date type: string format: date-time frozen_template_id: title: Frozen Template Id type: integer workflow_id: title: Workflow Id type: string workflow_name: title: Workflow Name type: string required: - id - public_id - contract_name - contract_type_id - status - display_status - display_status_without_on_hold_check - contract_kind - created - created_by_workspace_id - editor_client - workflow_id created_by_org_user: title: Created By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who created the Task completed_by_org_user: title: Completed By Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Org User who completed the Task completed_at: title: Completed At description: The date and time when the Task got completed type: string format: date-time absolute_due_date: title: Absolute Due Date description: The date and time when the Task is due for completion type: string format: date-time created: title: Created description: The date and time when the task got created type: string format: date-time created_by_workspace: title: Created By Workspace type: object properties: id: title: Id type: integer owner_id: title: Owner Id type: integer name: title: Name type: string is_individual_org: title: Is Individual Org type: boolean show_workspace_migration: title: Show Workspace Migration type: boolean short_hand_notation: title: Short Hand Notation type: string company_email_domains: title: Company Email Domains type: array items: type: string brand_name: title: Brand Name type: string required: - id - name - is_individual_org - show_workspace_migration description: The Details of the Workspace who created the Task assignees: title: Assignees description: The Details of Assignees for the Task type: array items: title: TaskAssigneeDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer assignee_org_user: title: Assignee Org User type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id description: The Details of the Assignee Org User assignee_role: title: Assignee Role type: object properties: id: title: Id type: integer name: title: Name type: string description: title: Description type: string created: title: Created type: string format: date-time point_of_contact: title: OrganizationUserResponse type: object properties: id: title: Id type: integer first_name: title: First Name default: '' type: string last_name: title: Last Name default: '' type: string name: title: Name type: string designation: title: Designation type: string email: title: Email type: string auth_user_id: title: Auth User Id type: integer is_deleted: title: Is Deleted type: boolean is_active: title: Is Active type: boolean is_primary: title: Is Primary type: boolean organization_id: title: Organization Id type: integer invite_accepted: title: Invite Accepted type: boolean phone_number: title: Phone Number type: object identity_id: title: Identity Id type: string format: uuid required: - id - name - email - is_primary - identity_id required: - id - name - description - created description: The Details of the Role assigned to Assignee last_manual_reminder_sent_at: title: Last Manual Reminder Sent At type: string format: date-time required: - id - user_task_id status: title: UserTaskStatus description: An enumeration. enum: - COMPLETED - UPCOMING - OVERDUE - NO_DATE type: string default: NO_DATE deleted_at: title: Deleted At description: The date and time when the task got deleted type: string format: date-time task_category: title: TaskCategory description: The category of the task enum: - USER_TASK - OBLIGATION_TASK - INTAKE_TASK type: string default: USER_TASK task_associations: title: Task Associations description: List of Task Associations for the Task type: array items: title: TaskAssociationPublicResponse type: object properties: entity_id: title: Entity Id description: Entity id of the task association type: string entity_type: title: TaskAssociationEntityType description: Entity type of the task association enum: - OBLIGATION - LEGAL_INTAKE type: string association_type: title: TaskAssociationType description: Association type of the task association enum: - PRIMARY - SECONDARY type: string required: - entity_id - entity_type - association_type due_date_key_pointer_id: title: Due Date Key Pointer Id description: The ID of the key pointer that has the due date for the task type: integer reminders: title: Reminders description: List of Reminders for the Task default: '' type: array items: title: ReminderDomainModel type: object properties: id: title: Id type: integer user_task_id: title: User Task Id type: integer relative_time: title: ReminderRelativeTime type: object properties: value: title: Value description: The value of the reminder relative time type: integer type: title: DurationKind description: The type of the reminder relative time enum: - DAYS - WEEKS - MONTHS - YEARS default: DAYS days: title: Days description: The number of days for the reminder relative time type: integer required: - value - days absolute_time: title: Absolute Time type: string format: date-time required: - id - user_task_id - relative_time required: - id - title - created_by_org_user - created_by_workspace - assignees UserTaskPublicResponseStatusEnum: enum: - COMPLETED - UPCOMING - OVERDUE - NO_DATE type: string UserTaskStatus: enum: - COMPLETED - UPCOMING - OVERDUE - NO_DATE title: UserTaskStatus type: string VoidContractRequestData: title: VoidContractRequestData type: object properties: note: title: Note description: Reason shown in SpotDraft when the contract is voided. minLength: 1 type: string required: - note WebhookSecretKeyResponse: title: WebhookSecretKeyResponse type: object properties: hmac_key: title: Hmac Key description: Base64 of the secret for webhook minLength: 1 type: string required: - hmac_key examples: - hmac_key: zJDCvFUXhByUkPcQIzf+dt2W7bqm6x6Fb2o/gLhfUgXyPqvPcrZ6P9yYtoUrI4dErHzq2t+4gjZ4zH2btdpoSA== WorkflowConfig: type: object properties: auto_send_to_counterparty: type: boolean default: false api_only_contract_edits: type: boolean default: false skip_cp_info_collection: type: boolean default: false skip_creator_info_collection: type: boolean default: false WorkflowStatusEnum: enum: - DRAFT - INVITE_CLIENT - INFO_COLLECTION - CONTRACT_APPROVAL - CONTRACT_DRAFT_APPROVAL - CONTRACT_APPROVAL_REJECTED - REVIEW - SIGN - COMPLETING - COMPLETED - TEMPLATE_PRE_SIGN_APPROVAL type: string WorkflowType: enum: - TEMPLATE_WORKFLOW - UPLOAD_WORKFLOW - INTAKE_WORKFLOW title: WorkflowType type: string WorkspaceFileDownloadPublicResponse: description: Response payload for workspace file download API. examples: - signed_url: https://storage.googleapis.com/bucket/path/file.pdf?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Signature=... properties: signed_url: description: Signed URL for workspace file download minLength: 1 title: Signed Url type: string required: - signed_url title: WorkspaceFileDownloadPublicResponse type: object WorkspaceFileUploadInitiationPublicResponse: description: Bulk response payload for public upload initiation. properties: files: items: $ref: '#/components/schemas/WorkspaceFileUploadInitiationResponseItem' title: Files type: array required: - files title: WorkspaceFileUploadInitiationPublicResponse type: object WorkspaceFileUploadInitiationRequest: description: Bulk request payload for public upload initiation. properties: files: description: Files to initialize for upload. items: $ref: '#/components/schemas/WorkspaceFileUploadInitiationRequestItem' maxItems: 50 minItems: 1 title: Files type: array required: - files title: WorkspaceFileUploadInitiationRequest type: object WorkspaceFileUploadInitiationRequestItem: description: Single file entry for public upload initiation. properties: filename: description: Original file name. minLength: 1 title: Filename type: string content_type: description: MIME content type for the upload. Use a standard type/subtype value such as application/pdf, image/png, or application/vnd.openxmlformats-officedocument.wordprocessingml.document. minLength: 1 title: Content Type type: string required: - filename - content_type title: WorkspaceFileUploadInitiationRequestItem type: object WorkspaceFileUploadInitiationResponseItem: description: Single file upload instruction returned by the public API. properties: file_id: description: Unique identifier for the file. minLength: 1 title: File Id type: string filename: description: Normalized stored file name. This may differ from the requested filename when a missing extension is inferred from the content type or invalid characters are sanitized. minLength: 1 title: Filename type: string upload_url: description: URL to upload the file content. minLength: 1 title: Upload Url type: string expires_at: description: Absolute time at which the upload URL expires. format: date-time title: Expires At type: string required: - file_id - filename - upload_url - expires_at title: WorkspaceFileUploadInitiationResponseItem type: object securitySchemes: ClickwrapId: type: apiKey in: header name: clickwrap-id description: Public clickwrap identifier header. ClientId: type: apiKey name: client-id in: header ClientSecret: type: apiKey name: client-secret in: header NativeIntegrationBasic: type: http scheme: basic description: HTTP Basic auth for supported native integrations. Send base64(client_id:client_secret) in the Authorization header. OAuthBearer: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 bearer token for workspace user access. Origin: type: apiKey in: header name: Origin description: Browser origin header used for clickwrap domain validation. x-logo: url: https://cdn.spotdraft.com/assets/logo-black-new.png backgroundColor: transparent altText: SpotDraft Logo href: https://spotdraft.com servers: - url: https://api.eu.spotdraft.com description: Europe - url: https://api.in.spotdraft.com description: India - url: https://api.us.spotdraft.com description: United States - url: https://api.me.spotdraft.com description: Middle East tags: - name: V2.1 Contract APIs description: Contract creation, retrieval, updates, previews, downloads, uploads, and lifecycle actions across public API versions. - name: V2 Contract APIs description: Contract creation, retrieval, updates, previews, downloads, uploads, and lifecycle actions across public API versions. - name: V1 Contract APIs description: Contract creation, retrieval, updates, previews, downloads, uploads, and lifecycle actions across public API versions. - name: V2.1 Contract Approvals description: Review contract approvals, approvers, and approval actions across public API versions. - name: V2 Contract Approvals description: Review contract approvals, approvers, and approval actions across public API versions. - name: V2.1 Contract Activity description: Read contract comments and activity history across public API versions. - name: V2 Contract Activity description: Read contract comments and activity history across public API versions. - name: V2.1 Contract Invitations description: Invite, uninvite, and manage contract participants and invited roles across public API versions. - name: V2 Contract Invitations description: Invite, uninvite, and manage contract participants and invited roles across public API versions. - name: V2.1 Contract Metadata Definitions description: List workspace-level or contract-type-level contract metadata definitions. Legacy API paths may still use key-pointer naming. - name: V2 Contract Metadata Definitions description: List workspace-level or contract-type-level contract metadata definitions. Legacy API paths may still use key-pointer naming. - name: V2.1 Contract Metadata Values description: Read and update contract metadata values for a specific contract. Legacy API paths may still use key-pointer naming. - name: V2 Contract Metadata Values description: Read and update contract metadata values for a specific contract. Legacy API paths may still use key-pointer naming. - name: V2.1 Contract External Metadata description: Read and update integration-owned external metadata attached to a contract. - name: V2.1 Contract Notes description: Read and update contract notes across public API versions. - name: V2 Contract Notes description: Read and update contract notes across public API versions. - name: V2.1 Contract Obligations description: List and inspect obligations generated from a contract. - name: V2.1 Contract Facets description: Discover available contract search filters and facet values. - name: V2.1 Contract Versions description: Retrieve contract version history and generated artifacts such as PDF and DOCX. - name: V2 Contract Versions description: Retrieve contract version history and generated artifacts such as PDF and DOCX. - name: V2.1 Contract Types description: Browse contract types, questionnaire definitions, and contract-type metadata. - name: V2 Contract Types description: Browse contract types, questionnaire definitions, and contract-type metadata. - name: V2.1 Templates description: List templates, inspect template fields, and read template details across public API versions. - name: V2 Templates description: List templates, inspect template fields, and read template details across public API versions. - name: V1 Templates description: List templates, inspect template fields, and read template details across public API versions. - name: V2.1 Users description: List users, list roles, manage role membership, invite users, and update user access across public API versions. - name: V2 Users description: List users, list roles, manage role membership, invite users, and update user access across public API versions. - name: V1 Users description: List users, list roles, manage role membership, invite users, and update user access across public API versions. - name: V2.1 Counterparties description: Create, search, and manage counterparties across public API versions. - name: V2 Counterparties description: Create, search, and manage counterparties across public API versions. - name: V2.1 Organizations description: Organization and organization-type lookups across public API versions. - name: V2 Organizations description: Organization and organization-type lookups across public API versions. - name: V2.1 Recipients description: Recipient lookups and participant-facing contract resources across public API versions. - name: V2 Recipients description: Recipient lookups and participant-facing contract resources across public API versions. - name: V1 Obligation Types description: Legacy obligation-type reference endpoints. - name: V1 Native Integrations description: Native integration helpers for embedded SpotDraft workflows. - name: V1 Legal Intake description: Public legal intake endpoints for intake submission, detail, attachments, and tasks. - name: V2.1 Workspace Files description: Download workspace files through signed URLs. - name: V2.1 Tasks and Reminders description: Task and reminder workflows across public API versions. - name: V2 Tasks and Reminders description: Task and reminder workflows across public API versions. - name: V2.1 Webhooks description: Create webhook subscriptions, inspect sample payloads, validate deliveries, and manage webhook secrets across public API versions. - name: V1 Webhooks description: Create webhook subscriptions, inspect sample payloads, validate deliveries, and manage webhook secrets across public API versions. - name: V1 Emails description: Render stored public email audit HTML for preview and troubleshooting. - name: V2.1 Clickwrap description: Clickwrap agreement preview, consent status, and contract creation endpoints. - name: V2.1 Analytics Query description: Read-only analytics SQL execution and related analytics catalog guidance. - name: V2.1 Workspaces description: Workspace-scoped helper endpoints exposed publicly. - name: V2.1 Workspace Tags description: Create and manage workspace tags used to categorize and filter contracts. - name: V2.1 Sidebar description: Sidebar APIs for legal questions, contract query workflows, and related AI-assisted experiences. x-tagGroups: - name: Contracts tags: - V2.1 Contract APIs - V2 Contract APIs - V1 Contract APIs - V2.1 Contract Approvals - V2 Contract Approvals - V2.1 Contract Activity - V2 Contract Activity - V2.1 Contract Invitations - V2 Contract Invitations - V2.1 Contract Metadata Values - V2 Contract Metadata Values - V2.1 Contract External Metadata - V2.1 Contract Notes - V2 Contract Notes - V2.1 Contract Obligations - V2.1 Contract Facets - V2.1 Contract Versions - V2 Contract Versions - V2.1 Recipients - V2 Recipients - name: Clickwrap tags: - V2.1 Clickwrap - name: Legal Intake tags: - V1 Legal Intake - name: Workflow tags: - V2.1 Contract Metadata Definitions - V2 Contract Metadata Definitions - V2.1 Contract Types - V2 Contract Types - V2.1 Templates - V2 Templates - V1 Templates - name: Platform tags: - V2.1 Users - V2 Users - V1 Users - V2.1 Counterparties - V2 Counterparties - V2.1 Organizations - V2 Organizations - V1 Obligation Types - V1 Native Integrations - V2.1 Workspace Files - V2.1 Tasks and Reminders - V2 Tasks and Reminders - V2.1 Webhooks - V1 Webhooks - V1 Emails - V2.1 Analytics Query - V2.1 Workspaces - V2.1 Workspace Tags - name: Sidebar tags: - V2.1 Sidebar