Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/API/Deliverable-API.md
Original file line number Diff line number Diff line change
Expand Up @@ -268,10 +268,14 @@ This endpoint requires one of these roles: **administrator**, **contributor**, o
| ------------- | ------ | -------- | ------------------------------------------ |
| `name` | String | **Yes** | Deliverable name (3–255 characters) |
| `templateId` | String | **Yes** | Template ID to generate from. A PDF (signature-only) template returns `400 SignatureOnlyTemplate` |
| `variables` | Array | **Yes** | Array of variable objects for substitution |
| `variables` | Array | **Yes** | Array of variable objects for substitution. May be empty (`[]`) |
| `description` | String | No | Description (up to 65,535 characters) |
| `tags` | Array | No | Array of tag strings to associate |

:::note Empty or partial `variables`
`variables` must be sent, but it can be an empty array. `"variables": []` generates the document and returns `200`. Any placeholder you don't supply a value for renders blank in the document.
:::

### Variable Object Structure

Each variable in the `variables` array represents a placeholder in the template to be substituted:
Expand Down
13 changes: 13 additions & 0 deletions docs/Integrations/Wrike/document-generation-automation.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ keywords:
- wrike generate document
- wrike template automation
- wrike automated documents
- wrike output filename
- wrike id in file name
---

# How to Setup Document Generation Automation
Expand Down Expand Up @@ -47,6 +49,17 @@ Click the **Select Template** button at the bottom-right corner of the dialog to

![Confirm Selected Template](/img/wrike-integration/Step14-ConfirmTemplate.png)

### Optional: Name the Generated File

On the same step, the **Output Filename** section builds the name of the generated file. Leave it empty to name the file after the template.

- Click **Insert Field** to add a value from the triggering Wrike item: **Task Title**, **Folder Name** (the parent folder or project), **Status**, **Assignee** (the first assigned user), **Date** (today, in your organization's date format), **Wrike ID**, or one of your Wrike custom fields.
- Click **Add Separator** or **Add Text** to put your own text between the fields. Drag the chips to reorder them.

**Wrike ID** is the number in the item's Wrike link. For a task at `https://www.wrike.com/open.htm?id=1234567890`, it is `1234567890`. On a task trigger it is the task's own number, and on a folder or project trigger it is that folder's or project's number. If the link has no number, TurboDocx uses the item's Wrike API ID instead.

For example, **Wrike ID**, the text ` - ` and **Task Title** name the file `1234567890 - Acme Q2 Proposal`.

### Step 6: Proceed to Final Configuration

Click the **Next** button to advance to the final configuration step.
Expand Down
24 changes: 19 additions & 5 deletions docs/Pipelines/Pipeline-Notifications.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Pipeline Notifications
sidebar_position: 3
description: Choose who is notified when a pipeline run succeeds or fails, override recipients per routing store, and customize the completion email and ZIP.
description: Choose who is notified when a pipeline run succeeds or fails, set per-store recipients, customize the completion email, and add a note to failure emails.
keywords:
- pipeline notifications
- signed and delivered email
Expand All @@ -13,6 +13,7 @@ keywords:
- attach signed document zip
- routing store notifications
- pipeline email recipients
- failure email note
---

# Pipeline Notifications
Expand All @@ -27,7 +28,7 @@ Pipelines are an **Enterprise** feature. If you don't see the option to create o

<br/>

You set **default notifications** on the **Destination** step (labeled **Deliver** in the wizard's progress rail), and **per-store overrides** on the **Extract & Route** step. If you haven't built a pipeline yet, start with **[Creating an E-Signature Pipeline](./Creating-an-E-Signature-Pipeline)** and come back here to fine-tune the alerts.
You set **default notifications** on the **Destination** step (labeled **Deliver** in the wizard's progress rail), and **per-store overrides** on the **Extract & Route** step. If you haven't built a pipeline yet, start with **[Creating an E-Signature Pipeline](./Creating-an-E-Signature-Pipeline.md)** and come back here to fine-tune the alerts.

<br/>

Expand Down Expand Up @@ -72,6 +73,19 @@ If the ZIP attachment is too large to email, the completion email is still sent

<br/>

## Add a Note to Failure Emails

You can add a short note of your own to every failure email the pipeline sends, for example what the recipient should do next. Under the **Failed** list, click **Add a note to the email** and type it in **Note for failure emails**.

- The note appears under **Note from your administrator**, above the error details, in every failure email for this pipeline.
- It is sent as plain text, as typed. Line breaks are kept. Insert-field chips are not available here.
- The limit is 1,000 characters. A longer paste is cut to the limit and the wizard tells you.
- Clear the box to stop adding a note.

Once a note is saved, the button reads **Edit failure note**.

<br/>

## Per-Store Notifications

If your pipeline uses routing rules on the **Extract & Route** step, each routing rule is a "store" (for example, one region or one business unit). You can give any store its own recipients instead of the pipeline defaults.
Expand Down Expand Up @@ -101,6 +115,6 @@ Per-store notifications are useful when different regions, branches, or departme

## What's Next?

- **[Creating an E-Signature Pipeline](./Creating-an-E-Signature-Pipeline)**: build the pipeline these notifications belong to.
- **[Field Extraction](./Field-Extraction)**: define the routing fields that create per-store rules.
- **[Cloud Connectors](./Cloud-Connectors)**: resolve signers from your own internal systems.
- **[Creating an E-Signature Pipeline](./Creating-an-E-Signature-Pipeline.md)**: build the pipeline these notifications belong to.
- **[Field Extraction](./Field-Extraction.md)**: define the routing fields that create per-store rules.
- **[Cloud Connectors](./Cloud-Connectors.md)**: resolve signers from your own internal systems.
4 changes: 4 additions & 0 deletions docs/SDKs/deliverable.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ The official TurboDocx Deliverable SDK for Java applications. Generate documents

## Installation {#installation}

To have an AI coding agent scaffold the integration, install the TurboDocx Quickstart skill with `npx skills add TurboDocx/quickstart` and run `/turbodocx-sdk deliverable` in the agent. To install the SDK yourself:

<Tabs groupId="language" queryString>
<TabItem value="js" label="JavaScript / TypeScript" attributes={{className: 'tab-lang tab-lang--js'}}>

Expand Down Expand Up @@ -2142,6 +2144,8 @@ Files.write(Paths.get("report.pdf"), pdfData);
</TabItem>
</Tabs>

A `templateId` that points to a [PDF signature template](/docs/TurboDocx-Templating/API-Templates#pdf-signature-templates) can't generate a document. The API answers `400` with the code `SignatureOnlyTemplate` and the message `PDF templates can only be used to collect signatures, not to generate documents.`, which the SDK raises as its validation error (`ValidationError` or `ValidationException`). Send a PDF template for signature with [TurboSign](/docs/SDKs/turbosign) instead.

### Handling Errors {#handling-errors}

<Tabs groupId="language" queryString>
Expand Down
176 changes: 175 additions & 1 deletion docs/TurboSign/API-Signatures.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ keywords:
- resend signature
- signer roles
- template signature setup
- update signature setup settings
- delete signature setup
---

import ScriptLoader from '@site/src/components/ScriptLoader';
Expand Down Expand Up @@ -133,6 +135,8 @@ Now that you've seen the whole thing, let's dive into the details...

## Prerequisites

To have an AI coding agent scaffold the integration, install the TurboDocx Quickstart skill with `npx skills add TurboDocx/quickstart` and run `/turbodocx-sdk turbosign` in the agent.

Before you begin, ensure you have:

- **API Access Token**: Bearer token for authentication
Expand Down Expand Up @@ -405,6 +409,7 @@ How a role send behaves:
- **Template defaults fill the gaps.** The template's saved CC emails, document description, document name and reminder and expiration settings apply to anything the request leaves out. Values in the request always win.
- **Identity verification.** A role's saved verification choice applies unless the recipient sets its own `identityVerification`. A role saved with SMS verification needs the recipient's `phone`. If your organization no longer allows a role's saved choice (for example SMS was turned off), the organization default applies instead of failing the send. A choice you set on the recipient yourself is still checked as usual. See [the recipient](/docs/TurboSign/embedded-signing/reference#the-recipient) in the embedded signing reference for those fields.
- **Every signer needs a field.** A role send where a signer ends up with no fields fails with `SignerHasNoFields` (Prepare for Review skips this check, because you place fields in the review screen afterwards).
- **Without roles nothing changes.** `fields` is still required when no recipient names a role.

#### Claiming a role with a different signer {#claiming-a-role-with-a-different-signer}

Expand All @@ -421,7 +426,6 @@ What changes for the new signer:
- **A field set to keep its own default value** in TurboDocx keeps that value.
- **Identity verification** keeps the role's saved choice unless the recipient sets its own. The saved person's phone is never used: a role saved with SMS verification needs the new recipient's `phone`, or the send fails with `OtpPhoneRequired`.
- **Email addresses** must stay unique. If the new signer's email matches another role's signer, or a recipient without a role, the send fails with `DuplicateRoleEmail`.
- **Without roles nothing changes.** `fields` is still required when no recipient names a role.

#### Signer role errors

Expand Down Expand Up @@ -1280,6 +1284,146 @@ User-Agent: TurboDocx API Client
- The same role keys are shown in the app under **Use via API** on the template page when **Dev Mode** is on.
- Roles saved before keys existed are returned with keys `signer_1`, `signer_2` and so on.

## Endpoint 9: Update Template Signature Settings {#endpoint-9-update-template-signature-settings}

Change the settings of a template's saved signature setup: CC recipients, the email message, reminders and expiration, and the document name. The signer roles, their keys and the fields are never changed, so integrations that send the template by role keep working. This is what **Edit** next to **Email to signers** or **Reminders & expiration** does on the template's page in TurboDocx (see [Change or remove the setup](./Signature-Setups-on-Templates.md#change-or-remove-the-setup)).

### Endpoint

```http
PATCH https://api.turbodocx.com/turbosign/templates/{templateId}/signature-setup/settings
```

### Headers

```http
Authorization: Bearer YOUR_API_TOKEN
x-rapiddocx-org-id: YOUR_ORGANIZATION_ID
Content-Type: application/json
User-Agent: TurboDocx API Client
```

### Path Parameters

| Parameter | Type | Required | Description |
| ---------- | ------------- | -------- | ------------------------------------- |
| templateId | String (UUID) | Yes | The unique identifier of the template |

### Request Body (JSON)

Send at least one of these. A setting you leave out keeps its saved value.

| Field | Type | Description |
| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------- |
| ccEmails | Array | CC email addresses copied on every document sent from the template. Up to 15, no duplicates. Replaces the saved list; `[]` clears it |
| documentDescription | String | The message in the signature email (max 1000 chars). `""` clears it |
| scheduleOverrides | Object | Reminder and expiration settings for this template, using the same eight fields as the [schedule fields](#endpoint-1-prepare-for-review) at send time (no `expiresAt`). Replaces the saved overrides; `{}` follows your organization's defaults |
| documentName | String | The name documents are sent under (max 255 chars). PDF signature templates only; ignored for a Word or PowerPoint template. `""` uses the template's name |

Any other key, such as `roles` or `fields`, is rejected with `400`.

```bash
curl -X PATCH https://api.turbodocx.com/turbosign/templates/TEMPLATE_ID/signature-setup/settings \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "x-rapiddocx-org-id: YOUR_ORGANIZATION_ID" \
-H "Content-Type: application/json" \
-d '{
"ccEmails": ["legal@acme.com"],
"documentDescription": "Please review and sign the attached agreement.",
"scheduleOverrides": {
"remindersEnabled": true,
"reminderDelay": { "value": 3, "unit": "days" }
}
}'
```

### Response

```json
{
"data": {
"templateId": "TEMPLATE_ID",
"setup": {
"roles": [ ... ],
"fields": [ ... ],
"ccEmails": ["legal@acme.com"],
"documentDescription": "Please review and sign the attached agreement.",
"scheduleOverrides": {
"remindersEnabled": true,
"reminderDelay": { "value": 3, "unit": "days" }
},
"savedOn": "2026-10-20T14:30:00.000Z"
}
}
}
```

`data.setup` is the template's whole saved signature setup after the change, including its unchanged roles and fields.

### Error Responses

Errors return `{ "message": "...", "type": "...", "error": "...", "code": "..." }`, where `type` and `code` hold the same value.

| Status | `type` | Cause |
| ------ | ------------------------ | --------------------------------------------------------------------------------------- |
| 400 | | No setting was sent (`Send at least one of ccEmails, documentDescription, scheduleOverrides, documentName`), an unknown key was sent, or a value is invalid |
| 400 | `CcMatchesSigner` | A CC address is also a saved signer on the template |
| 404 | `SignatureSetupNotFound` | The template has no saved signature setup |
| 404 | `TemplateNotFound` | The template doesn't exist in your organization |
| 423 | | Someone is editing the template in TurboDocx. Retry once they have finished |

### Usage Notes

- Requires the administrator or contributor role.
- Your organization's own reminder and expiration settings are never changed. `scheduleOverrides` only applies to documents sent from this template.

## Endpoint 10: Delete Template Signature Setup {#endpoint-10-delete-template-signature-setup}

Remove a template's saved signature setup: its signer roles, fields, CC recipients, message, reminders and document name. Documents already sent are not affected. New sends from the template start with no signers or fields, and a role send fails with `TemplateHasNoSignerRoles`.

### Endpoint

```http
DELETE https://api.turbodocx.com/turbosign/templates/{templateId}/save-signature-setup
```

### Headers

```http
Authorization: Bearer YOUR_API_TOKEN
x-rapiddocx-org-id: YOUR_ORGANIZATION_ID
User-Agent: TurboDocx API Client
```

### Path Parameters

| Parameter | Type | Required | Description |
| ---------- | ------------- | -------- | ------------------------------------- |
| templateId | String (UUID) | Yes | The unique identifier of the template |

### Response

```json
{
"data": {
"templateId": "TEMPLATE_ID"
}
}
```

### Error Responses

| Status | Body | Cause |
| ------ | ------------------------------------------------------------ | ------------------------------------------------------------------- |
| 404 | `{ "error": "Template not found", "code": "TemplateNotFound" }` | The template doesn't exist in your organization |
| 423 | `{ "error": "Resource is locked", ... }` | Someone is editing the template in TurboDocx. Retry once they have finished |

### Usage Notes

- Requires the administrator or contributor role.
- Deleting a template that has no saved setup also returns `200`.
- To change only the settings and keep the roles and fields, use [Update Template Signature Settings](#endpoint-9-update-template-signature-settings) instead.

## Send a template set up in TurboDocx {#send-a-template-set-up-in-turbodocx}

When the signers and fields are already set up on a template in TurboDocx, an integration only needs to say who fills each role.
Expand Down Expand Up @@ -2016,6 +2160,36 @@ formData.Add(new StringContent(recipients), "recipients");
| `429` | Too Many Requests | Implement rate limiting and retry logic |
| `500` | Internal Server Error | Contact support if persistent |

### Error Codes for Sending and Updating Recipients {#error-codes-for-sending-and-updating-recipients}

`POST /turbosign/single/prepare-for-review`, `POST /turbosign/single/prepare-for-signing` and `PATCH /turbosign/documents/{id}/update-with-recipients` return signature errors with a specific HTTP status and a machine-readable code. The body includes `error` (human-readable text) and `code` (the machine-readable value). It also repeats them as `message` and `type`, and may include a `data` object with details, so read the fields you need and ignore the rest:

```json
{
"message": "This organization does not allow changing the identity-verification method. Omit otpChannel or set it to 'email'.",
"type": "OtpOverrideNotAllowed",
"error": "This organization does not allow changing the identity-verification method. Omit otpChannel or set it to 'email'.",
"code": "OtpOverrideNotAllowed"
}
```

| Status | `code` | Meaning |
| ------ | ------ | ------- |
| `400` | Any `code` not listed below, for example `OtpPhoneRequired`, `OtpPhoneInvalid`, `IdentityConfigInvalid`, `DuplicateExternalId` | The request is invalid. Fix the input and retry. |
| `402` | `OtpNotEntitled`, `SmsOtpLimitExceeded` | The plan does not include this verification, or the SMS allowance is used up. |
| `403` | `ExternalIdvNotAllowed`, `IdentityOverrideNotAllowed`, `OtpOverrideNotAllowed`, `EmbeddedSigningNotEnabled`, `SmsOtpNotEnabled` | The organization has not turned on the feature or mode the request uses, or has locked the passcode method. |
| `404` | `DocumentNotFound`, `RecipientNotFound` | The document or recipient does not exist, was deleted, or belongs to another organization. On `update-with-recipients`, a document ID that does not exist returns `404` with only `{ "error": "Document not found" }`. |
| `409` | `DocumentNotSignable`, `RecipientAlreadySigned`, `RecipientNotInTurn`, `NotSignersTurn`, `SmsProviderNotConfigured`, `RecipientRequiresSingleUseUrl` | The document or recipient is not in a state that allows the request, or the organization has no SMS provider saved. |
| `410` | `SigningUrlNotRedeemable` | A single-use signing URL was already used or has expired. |

None of these signature errors return a `5xx` status. A `500` from these endpoints means an unexpected server problem, not a problem with your request.

:::note Changed in v1.132.0
`DocumentNotFound` and `RecipientNotFound` returned `400` from these endpoints before v1.132.0. Since v1.132.0 they return `404`. If your integration checks for `400` to detect a missing document or recipient, check for `404` or read `code` instead.
:::

For what each identity and passcode code means and how to fix it, see [Embedded signing errors](./embedded-signing/reference.md#errors).

### Common Issues

#### JSON String Formatting Errors
Expand Down
Loading
Loading