Compare commits

...

18 Commits

Author SHA1 Message Date
797553bcde chore: add translations 2025-11-13 14:04:16 +00:00
47466a2db9 chore: Update README.md (#2188)
We are launching Documenso 2.0 on Product Hunt, come say hi!
2025-11-13 20:52:34 +11:00
e4e04cdddc feat: simplify billing ux (#2117) 2025-11-13 15:58:16 +11:00
74a03077b7 fix: placeholders translations (#2020) 2025-11-13 14:26:19 +11:00
58bff33275 fix: add context to signature pad translations (#2051) 2025-11-13 13:35:23 +11:00
0cb23be27a chore: add question mark to message (#2176) 2025-11-13 12:08:39 +11:00
4304fc1d35 chore: add envelope docs (#2186) 2025-11-13 11:50:06 +11:00
ce53bcea8c v2.0.11 2025-11-13 10:56:58 +11:00
5a3d5b8b4a fix: persist missed meta values for envelopes (#2185) 2025-11-13 10:44:59 +11:00
3d1fe85d62 fix: add foreign key indexes (#2184)
Can't believe we missed some of these ☠️
2025-11-13 10:43:11 +11:00
1772c3ee36 v2.0.10 2025-11-12 18:57:24 +11:00
f55b902a01 fix: openapi path for envelope item download 2025-11-12 18:57:03 +11:00
50db4e39be v2.0.9 2025-11-12 18:22:46 +11:00
2802813c76 fix: add default values for envelope field meta (#2181)
🙏
2025-11-12 18:22:30 +11:00
29d40f1cca v2.0.8 2025-11-12 17:19:53 +11:00
d67f32eae2 chore: add translations (#2166)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2025-11-12 17:17:44 +11:00
a33233443b chore: extract translations (#2179) 2025-11-12 17:09:50 +11:00
68a3608aee fix: handle bracket notation arrays (#2178)
Co-authored-by: David Nguyen <davidngu28@gmail.com>
2025-11-12 16:38:06 +11:00
191 changed files with 1790 additions and 1959 deletions

View File

@ -1,3 +1,6 @@
> 🚨 🚨 🚨
> Documenso 2.0.0 is live on Product Hunt 🎉 <a href="https://documen.so/launch" target="_blank" rel="noopener noreferrer" style="text-decoration: underline;">Join us to celebrate the best Documenso yet 🪩</a>
<img src="https://github.com/documenso/documenso/assets/13398220/a643571f-0239-46a6-a73e-6bef38d1228b" alt="Documenso Logo"> <img src="https://github.com/documenso/documenso/assets/13398220/a643571f-0239-46a6-a73e-6bef38d1228b" alt="Documenso Logo">
<p align="center" style="margin-top: 20px"> <p align="center" style="margin-top: 20px">

View File

@ -44,7 +44,7 @@ Before using the `EmbedCreateDocument` component, you'll need to obtain a presig
You can create a presign token by making a request to: You can create a presign token by making a request to:
``` ```
POST /api/v2-beta/embedding/create-presign-token POST /api/v2/embedding/create-presign-token
``` ```
This API endpoint requires authentication with your Documenso API key. The token has a default expiration of 1 hour, but you can customize this duration based on your security requirements. This API endpoint requires authentication with your Documenso API key. The token has a default expiration of 1 hour, but you can customize this duration based on your security requirements.
@ -134,7 +134,7 @@ import { unstable_EmbedCreateDocument as EmbedCreateDocument } from '@documenso/
function DocumentCreator() { function DocumentCreator() {
// In a real application, you would fetch this token from your backend // In a real application, you would fetch this token from your backend
// using your API key at /api/v2-beta/embedding/create-presign-token // using your API key at /api/v2/embedding/create-presign-token
const presignToken = 'YOUR_PRESIGN_TOKEN'; const presignToken = 'YOUR_PRESIGN_TOKEN';
const [documentId, setDocumentId] = useState<number | null>(null); const [documentId, setDocumentId] = useState<number | null>(null);

View File

@ -9,11 +9,11 @@ Documenso uses API keys for authentication. An API key is a unique token that is
## Creating an API Key ## Creating an API Key
To create an API key, navigate to the user settings page. Click on your avatar in the top right corner of the dashboard and select "**[User settings](https://app.documenso.com/settings)**" from the dropdown menu. To create an API key, navigate to the user settings page. Click on your avatar in the top right corner of the dashboard and select "Team Settings" from the dropdown menu.
![A screenshot of the Documenso's dashboard that shows the dropdown menu when you click on your user avatar](/public-api-images/documenso-user-dropdown-menu.webp) ![A screenshot of the Documenso's dashboard that shows the dropdown menu when you click on your user avatar](/public-api-images/documenso-user-dropdown-menu.webp)
Once you're on the user settings page, navigate to the "**[API Tokens](https://app.documenso.com/settings/tokens)**" tab. The "API Token" page lists your existing keys and enables you to create new ones. Once you're on the settings page, navigate to the **API Tokens** tab. This page lists your existing keys and enables you to create new ones.
![A screenshot of the Documenso's user settings page that shows the API Tokens page](/public-api-images/api-tokens-page-documenso.webp) ![A screenshot of the Documenso's user settings page that shows the API Tokens page](/public-api-images/api-tokens-page-documenso.webp)
@ -37,31 +37,17 @@ You must include the API key in the `Authorization` request header to authentica
Here's a sample API request using cURL: Here's a sample API request using cURL:
```bash ```bash
curl --location 'https://app.documenso.com/api/v1/documents?page=1&perPage=1' \ curl --location 'https://app.documenso.com/api/v2/envelope/create' \
--header 'Authorization: api_xxxxxxxxxxxxxxxx' --header 'Authorization: api_xxxxxxxxxxxxxxxx' \
--form 'payload={ "title": "Some Title", "type": "DOCUMENT" }'
``` ```
Here's a sample response from the API based on the above cURL request: Here's a sample response from the API based on the above cURL request:
```json ```json
{ {
"documents": [ "id": "envelope_xxxxxxxxxxxxx"
{
"id": 11,
"userId": 2,
"teamId": null,
"title": "documenso",
"status": "PENDING",
"documentDataId": "ab2ecm1npk11rt5sp398waf7h",
"createdAt": "2024-04-25T11:05:18.420Z",
"updatedAt": "2024-04-25T11:05:36.328Z",
"completedAt": null
}
],
"totalPages": 1
} }
``` ```
![A screenshot of a cURL request to the Documenso public API with the API key in the Authorization header](/public-api-images/documenso-api-authorization.webp) The API key has access to your account and all its resources. Please keep it secure and do not share it with others. If you suspect your key has been compromised, you can revoke it from the same page you created it from.
The API key has access to your account and all its resources. Please keep it secure and do not share it with others. If you suspect your key has been compromised, you can revoke it from the "API Tokens" page in your user settings.

View File

@ -9,19 +9,13 @@ import { Callout, Steps } from 'nextra/components';
Documenso provides a public REST API enabling you to interact with your documents programmatically. The API exposes various HTTP endpoints that allow you to perform operations such as: Documenso provides a public REST API enabling you to interact with your documents programmatically. The API exposes various HTTP endpoints that allow you to perform operations such as:
- retrieving, uploading, deleting, and sending documents for signing - Retrieving, uploading, deleting, and sending documents for signing
- creating, updating, and deleting recipients - Creating, updating, and deleting recipients
- creating, updating, and deleting document fields - Creating, updating, and deleting document fields
The documentation walks you through creating API keys and using them to authenticate your API requests. You'll also learn about the available endpoints, request and response formats, and how to use the API. The documentation walks you through creating API keys and using them to authenticate your API requests. You'll also learn about the available endpoints, request and response formats, and how to use the API.
## API V1 - Stable ## API V2 - Stable
Check out the [API V1 documentation](https://app.documenso.com/api/v1/openapi) for details about the API endpoints, request parameters, response formats, and authentication methods.
## API V2 - Beta
<Callout type="warning">API V2 is currently beta, and will be subject to breaking changes</Callout>
Check out the [API V2 documentation](https://documen.so/api-v2-docs) for details about the API endpoints, request parameters, response formats, and authentication methods. Check out the [API V2 documentation](https://documen.so/api-v2-docs) for details about the API endpoints, request parameters, response formats, and authentication methods.
@ -32,18 +26,15 @@ Our new API V2 supports the following typed SDKs:
- [Go](https://github.com/documenso/sdk-go) - [Go](https://github.com/documenso/sdk-go)
<Callout type="info"> <Callout type="info">
For the staging API, please use the following base URL: For the staging API, please use the following base URL: `https://stg-app.documenso.com/api/v2/`
`https://stg-app.documenso.com/api/v2-beta/`
</Callout> </Callout>
🚀 [V2 Announcement](https://documen.so/sdk-blog) ## API V1 - Deprecated
Check out the [API V1 documentation](https://app.documenso.com/api/v1/openapi) for details about the API endpoints, request parameters, response formats, and authentication methods.
📖 [Documentation](https://documen.so/api-v2-docs) 📖 [Documentation](https://documen.so/api-v2-docs)
💬 [Leave Feedback](https://documen.so/sdk-feedback)
🔔 [Breaking Changes](https://documen.so/sdk-breaking)
## Availability ## Availability
The API is available to individual users, teams and higher plans. [Fair Use](https://documen.so/fair) applies. The API is available to individual users, teams and higher plans. [Fair Use](https://documen.so/fair) applies.

View File

@ -7,550 +7,246 @@ import { Callout, Steps } from 'nextra/components';
# API Reference # API Reference
The Swagger UI for the API is available at [/api/v1/openapi](https://app.documenso.com/api/v1/openapi). This page provides detailed information about the API endpoints, request and response formats, and authentication requirements. On this page we will refer to both Documents and Templates as Envelopes for convenience, unless otherwise specified.
## Upload a Document
Uploading a document to your Documenso account requires a two-step process.
<Steps>
### Create Document
First, you need to make a `POST` request to the `/api/v1/documents` endpoint, which takes a JSON payload with the following fields:
```json
{
"title": "string",
"externalId": "string",
"recipients": [
{
"name": "string",
"email": "user@example.com",
"role": "SIGNER",
"signingOrder": 0
}
],
"meta": {
"subject": "string",
"message": "string",
"timezone": "Etc/UTC",
"dateFormat": "yyyy-MM-dd hh:mm a",
"redirectUrl": "string",
"signingOrder": "PARALLEL"
},
"authOptions": {
"globalAccessAuth": "ACCOUNT",
"globalActionAuth": "ACCOUNT"
},
"formValues": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
```
- `title` _(required)_ - This represents the document's title.
- `externalId` - This is an optional field that you can use to store an external identifier for the document. This can be useful for tracking the document in your system.
- `recipients` _(required)_ - This is an array of recipient objects. Each recipient object has the following fields:
- `name` - The name of the recipient.
- `email` - The email address of the recipient.
- `role` - The role of the recipient. See the [available roles](/users/signing-documents#roles).
- `signingOrder` - The order in which the recipient should sign the document. This is an integer value starting from 0.
- `meta` - This object contains additional metadata for the document. It has the following fields:
- `subject` - The subject of the email that will be sent to the recipients.
- `message` - The message of the email that will be sent to the recipients.
- `timezone` - The timezone in which the document should be signed.
- `dateFormat` - The date format that should be used in the document.
- `redirectUrl` - The URL to which the user should be redirected after signing the document.
- `signingOrder` - The signing order for the document. This can be either `SEQUENTIAL` or `PARALLEL`.
- `authOptions` - This object contains authentication options for the document. It has the following fields:
- `globalAccessAuth` - The authentication level required to access the document. This can be either `ACCOUNT` or `null`.
- If the document is set to `ACCOUNT`, all recipients must authenticate with their Documenso account to access it.
- The document can be accessed without a Documenso account if it's set to `null`.
- `globalActionAuth` - The authentication level required to perform actions on the document. This can be `ACCOUNT`, `PASSKEY`, `TWO_FACTOR_AUTH`, or `null`.
- If the document is set to `ACCOUNT`, all recipients must authenticate with their Documenso account to perform actions on the document.
- If it's set to `PASSKEY`, all recipients must have the passkey active to perform actions on the document.
- If it's set to `TWO_FACTOR_AUTH`, all recipients must have the two-factor authentication active to perform actions on the document.
- If it's set to `null`, all the recipients can perform actions on the document without any authentication.
- `formValues` - This object contains additional form values for the document. This property only works with native PDF fields and accepts three types: number, text and boolean.
<Callout type="info"> <Callout type="info">
The `globalActionAuth` property is only available for Enterprise accounts. This page is used to demonstrate some of the endpoints and how to use them. For the full API
reference, please see the [API Reference](https://openapi.documenso.com/).
</Callout> </Callout>
Here's an example of the JSON payload for uploading a document: ## Get Envelope
```json For the vast majority of use cases, you will need to retrieve the envelope to get details for further operations.
{
"title": "my-document.pdf", The main details you generally want to extract are the following:
"externalId": "12345",
"recipients": [ - **Recipients** - The individuals who will be signing the document
{ - **Fields** - The fields the user will sign
"name": "Alex Blake", - **Items** - The PDF files the user will see and sign
"email": "alexblake@email.com",
"role": "SIGNER", This is done by doing a the following GET [request](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/create)
"signingOrder": 1
}, ```sh
{ curl -X GET "https://app.documenso.com/api/v2/envelope/envelope_xxxxxxxxxxxxx" \
"name": "Ash Drew", -H "Authorization: api_xxxxxxxxxxxxxx"
"email": "ashdrew@email.com",
"role": "SIGNER",
"signingOrder": 0
}
],
"meta": {
"subject": "Sign the document",
"message": "Hey there, please sign this document.",
"timezone": "Europe/London",
"dateFormat": "Day, Month Year",
"redirectUrl": "https://mysite.com/welcome",
"signingOrder": "SEQUENTIAL"
},
"authOptions": {
"globalAccessAuth": "ACCOUNT",
"globalActionAuth": "PASSKEY"
}
}
``` ```
### Upload to S3
A successful API call to the `/api/v1/documents` endpoint returns a JSON response containing the upload URL, document ID, and recipient information.
The upload URL is a pre-signed S3 URL that you can use to upload the document to the Documenso (or your) S3 bucket. You need to make a `PUT` request to this URL to upload the document.
```json
{
"uploadUrl": "https://<url>/<bucket-name>/<id>/my-document.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=<credentials>&X-Amz-Date=<date>&X-Amz-Expires=3600&X-Amz-Signature=<signature>&X-Amz-SignedHeaders=host&x-id=PutObject",
"documentId": 51,
"recipients": [
{
"recipientId": 11,
"name": "Alex Blake",
"email": "alexblake@email.com",
"token": "<unique-signer-token>",
"role": "SIGNER",
"signingOrder": 1,
"signingUrl": "https://app.documenso.com/sign/<unique-signer-token>"
},
{
"recipientId": 12,
"name": "Ash Drew",
"email": "ashdrew@email.com",
"token": "<unique-signer-token>",
"role": "SIGNER",
"signingOrder": 0,
"signingUrl": "https://app.documenso.com/sign/<unique-signer-token>"
}
]
}
```
When you make the `PUT` request to the pre-signed URL, you need to include the document file you want to upload. The image below shows how to upload a document to the S3 bucket via Postman.
![Upload document to S3](/api-reference/upload-document-to-s3.webp)
Here's an example of how to upload a document using cURL:
```bash
curl --location --request PUT 'https://<url>/<bucket-name>/<id>/my-document.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=<credentials>&X-Amz-Date=<date>&X-Amz-Expires=3600&X-Amz-Signature=<signature>&X-Amz-SignedHeaders=host&x-id=PutObject' \
--form '=@"/Users/my-user/Documents/documenso.pdf"'
```
Once the document is successfully uploaded, you can access it in your Documenso account dashboard. The screenshot below shows the document that was uploaded via the API.
![Uploaded Document](/api-reference/document-uploaded-to-documenso-via-api.webp)
</Steps>
## Generate Document From Template
Documenso allows you to generate documents from templates. This is useful when you have a standard document format you want to reuse.
The API endpoint for generating a document from a template is `/api/v1/templates/{templateId}/generate-document`, and it takes a JSON payload with the following fields:
```json
{
"title": "string",
"externalId": "string",
"recipients": [
{
"id": 0,
"name": "string",
"email": "user@example.com",
"signingOrder": 0
}
],
"meta": {
"subject": "string",
"message": "string",
"timezone": "string",
"dateFormat": "string",
"redirectUrl": "string",
"signingOrder": "PARALLEL"
},
"authOptions": {
"globalAccessAuth": "ACCOUNT",
"globalActionAuth": "ACCOUNT"
},
"formValues": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
```
The JSON payload is identical to the payload for uploading a document, so you can read more about the fields in the [Create Document](/developers/public-api/reference#create-document) step. For this API endpoint, the `recipients` property is required.
<Steps>
### Grab the Template ID
The first step is to retrieve the template ID from the Documenso dashboard. You can find the template ID in the URL by navigating to the template details page.
![Template ID](/api-reference/documenso-template-id.webp)
In this case, the template ID is "99999".
### Retrieve the Recipient(s) ID(s)
Once you have the template ID, the next step involves retrieving the ID(s) of the recipient(s) from the template. You can do this by making a GET request to `/api/v1/templates/{template-id}`.
A successful response looks as follows: A successful response looks as follows:
```json ```json
{ {
"id": 0, "internalVersion": 2,
"externalId": "string", "type": "TEMPLATE",
"type": "PUBLIC",
"title": "string",
"userId": 0,
"teamId": 0,
"templateDocumentDataId": "string",
"createdAt": "2024-10-11T08:46:58.247Z",
"updatedAt": "2024-10-11T08:46:58.247Z",
"templateMeta": {
"id": "string",
"subject": "string",
"message": "string",
"timezone": "string",
"dateFormat": "string",
"templateId": 0,
"redirectUrl": "string",
"signingOrder": "PARALLEL"
},
"directLink": {
"token": "string",
"enabled": true
},
"templateDocumentData": {
"id": "string",
"type": "S3_PATH",
"data": "string"
},
"Field": [
{
"id": 0,
"recipientId": 0,
"type": "SIGNATURE",
"page": 0,
"positionX": "string",
"positionY": "string",
"width": "string",
"height": "string"
}
],
"Recipient": [
{
"id": 0,
"email": "user@example.com",
"name": "string",
"signingOrder": 0,
"authOptions": "string",
"role": "CC"
}
]
}
```
You'll need the recipient(s) ID(s) for the next step.
### Generate the Document
To generate a document from the template, you need to make a POST request to the `/api/v1/templates/{template-id}/generate-document` endpoint.
At the minimum, you must provide the `recipients` array in the JSON payload. Here's an example of the JSON payload:
```json
{
"recipients": [
{
"id": 0,
"name": "Ash Drew",
"email": "ashdrew@email.com",
"signingOrder": 0
}
]
}
```
Filling the `recipients` array with the corresponding recipient for each template placeholder recipient is recommended. For example, if the template has two placeholders, you should provide at least two recipients in the `recipients` array. Otherwise, the document will be sent to inexistent recipients such as `<recipient.1@documenso.com>`. However, the recipients can always be edited via the API or the web app.
A successful response will contain the document ID and recipient(s) information.
```json
{
"documentId": 999,
"recipients": [
{
"recipientId": 0,
"name": "Ash Drew",
"email": "ashdrew@email.com",
"token": "<signing-token>",
"role": "SIGNER",
"signingOrder": null,
"signingUrl": "https://app.documenso.com/sign/<signing-token>"
}
]
}
```
You can now access the document in your Documenso account dashboard. The screenshot below shows the document that was generated from the template.
![Generated Document](/api-reference/document-generated-from-template.webp)
</Steps>
## Add Fields to Document
The API allows you to add fields to a document via the `/api/v1/documents/{documentId}/fields` endpoint. This is useful when you want to add fields to a document before sending it to recipients.
To add fields to a document, you need to make a `POST` request with a JSON payload containing the field(s) information.
```json
{
"recipientId": 0,
"type": "SIGNATURE",
"pageNumber": 0,
"pageX": 0,
"pageY": 0,
"pageWidth": 0,
"pageHeight": 0,
"fieldMeta": {
"label": "string",
"placeholder": "string",
"required": true,
"readOnly": true,
"type": "text",
"text": "string",
"characterLimit": 0
}
}
// or
[
{
"recipientId": 0,
"type": "SIGNATURE",
"pageNumber": 0,
"pageX": 0,
"pageY": 0,
"pageWidth": 0,
"pageHeight": 0
},
{
"recipientId": 0,
"type": "TEXT",
"pageNumber": 0,
"pageX": 0,
"pageY": 0,
"pageWidth": 0,
"pageHeight": 0,
"fieldMeta": {
"label": "string",
"placeholder": "string",
"required": true,
"readOnly": true,
"type": "text",
"text": "string",
"characterLimit": 0
}
}
]
```
<Callout type="info">This endpoint accepts either one field or an array of fields.</Callout>
Before adding fields to a document, you need each recipient's ID. If the document already has recipients, you can query the document to retrieve the recipient's details. If the document has no recipients, you need to add a recipient via the UI or API before adding a field.
<Steps>
### Retrieve the Recipient(s) ID(s)
Perform a `GET` request to the `/api/v1/documents/{id}` to retrieve the details of a specific document, including the recipient's information.
An example response would look like this:
```json
{
"id": 137,
"externalId": null,
"userId": 3,
"teamId": null,
"title": "documenso.pdf",
"status": "DRAFT", "status": "DRAFT",
"documentDataId": "<document-data-id>", "source": "TEMPLATE",
"createdAt": "2024-10-11T12:29:12.725Z", "visibility": "EVERYONE",
"updatedAt": "2024-10-11T12:29:12.725Z", "templateType": "PRIVATE",
"id": "envelope_xxxxxxxxxxxxxxxx",
"secondaryId": "template_9",
"externalId": null,
"createdAt": "2025-11-12T11:36:38.391Z",
"updatedAt": "2025-11-12T11:36:55.648Z",
"completedAt": null, "completedAt": null,
"deletedAt": null,
"title": "Title",
"recipients": [ "recipients": [
{ {
"id": 55, "envelopeId": "envelope_xxxxxxxxxxxxxxxx",
"documentId": 137,
"email": "ashdrew@email.com",
"name": "Ash Drew",
"role": "SIGNER", "role": "SIGNER",
"signingOrder": null,
"token": "<signing-token>",
"signedAt": null,
"readStatus": "NOT_OPENED", "readStatus": "NOT_OPENED",
"signingStatus": "NOT_SIGNED", "signingStatus": "NOT_SIGNED",
"sendStatus": "NOT_SENT", "sendStatus": "NOT_SENT",
"signingUrl": "https://app.documenso.com/sign/<signing-token>" "id": 0,
"email": "recipient+1@documenso.com",
"name": "",
"token": "cxH2Ss79Hj94M1U3PxRAG",
"documentDeletedAt": null,
"expired": null,
"signedAt": null,
"authOptions": {
"accessAuth": [],
"actionAuth": []
},
"signingOrder": 1,
"rejectionReason": null
} }
] ]
"envelopeItems": [
{
"envelopeId": "envelope_xxxxxxxxxxxxxxxx",
"id": "envelope_item_xxxxxxxxxxxxxxxxx",
"title": "FileOne",
"order": 1
}
],
// Other attributes
} }
``` ```
From this response, you'll only need the recipient ID, which is `55` in this case. ## Create Envelope
### (OR) Add a Recipient This example request will create a document with the following:
If the document doesn't already have recipient(s), you can add recipient(s) via the API. Make a `POST` request to the `/api/v1/documents/{documentId}/recipients` endpoint with the recipient information. This endpoint takes the following JSON payload: - Two PDF files
- Two recipients with one field each
```json You will need to:
- Replace api_xxxxxxxxxxxxxx with your API key
- Replace the file paths with the actual paths to your files
Note that the identifier on a field is linking to the files you upload. It can either be the index of the file or the filename. In this example it uses the index of the file.
```sh
curl -X POST "https://app.documenso.com/api/v2/envelope/create" \
-H "Authorization: api_xxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
"type": "DOCUMENT",
"title": "Envelope Full Field Test",
"recipients": [
{ {
"name": "string", "email": "recipient+1@example.com",
"email": "user@example.com", "name": "Recipient One",
"role": "SIGNER", "role": "SIGNER",
"signingOrder": 0, "fields": [
"authOptions": {
"actionAuth": "ACCOUNT"
}
}
```
<Callout type="info">The `authOptions` property is only available for Enterprise accounts.</Callout>
Here's an example of the JSON payload for adding a recipient:
```json
{ {
"name": "Ash Drew", "identifier": 0,
"email": "ashdrew@email.com",
"role": "SIGNER",
"signingOrder": 0
}
```
A successful request will return a JSON response with the newly added recipient. You can now use the recipient ID to add fields to the document.
### Add Field(s)
Now you can make a `POST` request to the `/api/v1/documents/{documentId}/fields` endpoint with the field(s) information. Here's an example:
```json
[
{
"recipientId": 55,
"type": "SIGNATURE", "type": "SIGNATURE",
"pageNumber": 1, "page": 1,
"pageX": 50, "positionX": 0,
"pageY": 20, "positionY": 0,
"pageWidth": 25, "width": 50,
"pageHeight": 5 "height": 50
}
]
}, },
{ {
"recipientId": 55, "email": "recipient-2@example.com",
"type": "TEXT", "name": "Recipient Two",
"pageNumber": 1, "role": "SIGNER",
"pageX": 20, "fields": [
"pageY": 50, {
"pageWidth": 30, "identifier": 1,
"pageHeight": 7.5, "type": "SIGNATURE",
"fieldMeta": { "page": 1,
"label": "Address", "positionX": 0,
"placeholder": "32 New York Street, 41241", "positionY": 0,
"required": true, "width": 50,
"readOnly": false, "height": 50
"type": "text",
"text": "32 New York Street, 41241",
"characterLimit": 40
}
} }
] ]
}
]
}' \
-F "files=@./field-font-alignment.pdf;type=application/pdf" \
-F "files=@./field-meta.pdf;type=application/pdf"
``` ```
<Callout type="info"> <Callout type="info">
The `text` field represents the default value of the field. If the user doesn't provide any other See the full request and response formats for the create endpoint
value, this is the value that will be used to sign the field. [here](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/create)
</Callout> </Callout>
<Callout type="warning"> ## Use Template
It's important to pass the `type` in the `fieldMeta` property for the advanced fields. [Read more
here](#a-note-on-advanced-fields) Documenso allows you to generate documents from templates. This is useful when you have a standard document format you want to reuse.
The API endpoint for generating a document from a template is `/api/v2/envelopes/use`, and it takes a JSON payload with the following fields:
<Callout type="info">
See the full request and response formats for the use endpoint
[here](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/use)
</Callout> </Callout>
A successful request will return a JSON response with the newly added fields. The image below illustrates the fields added to the document via the API. <Steps>
![A screenshot of the document in the Documenso editor](/api-reference/fields-added-via-api.webp) ### Grab the Template ID
</Steps> The first step is to retrieve the ID of the template you want to use. This can be done via the API or from the Documenso UI.
#### A Note on Advanced Fields You can get the ID by navigating to the template page and looking at the URL. The ID is the last part of the URL which looks like this "envelope_xxxxxxxx"
The advanced fields are: text, checkbox, radio, number, and select. Whenever you append any of these advanced fields to a document, you need to pass the `type` in the `fieldMeta` property: ### Retrieve the Recipient(s) ID(s)
```json Once you have the template ID, you will want to retrieve the full template so you can see the recipients.
...
"fieldMeta": { This is optional, and you only will want to do this if you want to modify the recipient details prior to creating the new document.
"type": "text",
See the [Get Envelope](#get-envelope) section for more details on how to retrieve the envelope.
### Generate the Document
To generate a document from the template, you need to make a POST request to the [`/api/v2/envelope/use`](https://openapi.documenso.com/reference#tag/envelope/POST/envelope/use) endpoint.
You will need to replace the following:
- `api_xxxxxxxxxxxxxx` with your API key
- `envelope_xxxxxxxxxxxxxxx` with the template ID
- `RECIPIENT_ID_HERE` with the recipient ID you want to modify prior to sending
- `RECIPIENT_EMAIL_HERE` with the new recipient email you want to use
- `RECIPIENT_NAME_HERE` with the new recipient name you want to use
If you want to send the document immediately, you can add the `distributeDocument` parameter to the payload.
```sh
curl -X POST "https://app.documenso.com/api/v2/envelope/use" \
-H "Authorization: api_xxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
"envelopeId": "envelope_xxxxxxxxxxxxxxx",
"recipients": [
{
"id": RECIPIENT_ID_HERE,
"email": "RECIPIENT_EMAIL_HERE",
"name": "RECIPIENT_NAME_HERE"
} }
... ]
}'
``` ```
Replace the `text` value with the corresponding field type: #### Generate the Document with Custom Files
- For the `TEXT` field it should be `text`. You can also generate a document from a template using custom PDF files to replace the template's default PDF files.
- For the `CHECKBOX` field it should be `checkbox`.
- For the `RADIO` field it should be `radio`.
- For the `NUMBER` field it should be `number`.
- For the `SELECT` field it should be `select`. (check this before merge)
You must pass this property at all times, even if you don't need to set any other properties. If you don't, the endpoint will throw an error. To do this, you will need to grab the `envelopeItemId` of the item you want to replace, this is found in the GET request in the previous step.
## Pre-fill Fields On Document Creation You will need to replace the following:
- `CUSTOM_FILE_NAME_HERE.pdf` with the custom file name
- `envelope_item_xxxxxxxxxxxxxxxxx` with the `envelopeItemId` of the item you want to replace
```sh
curl -X POST "https://app.documenso.com/api/v2/envelope/use" \
-H "Authorization: api_xxxxxxxxxxxxxx" \
-H "Content-Type: multipart/form-data" \
-F 'payload={
"envelopeId": "envelope_xxxxxxxxxxxxxxx",
"recipients": [
{
"id": RECIPIENT_ID_HERE,
"email": "RECIPIENT_EMAIL_HERE",
"name": "RECIPIENT_NAME_HERE"
}
],
"customDocumentData": [
{
"identifier": "CUSTOM_FILE_NAME_HERE.pdf",
"envelopeItemId": "envelope_item_xxxxxxxxxxxxxxxxx"
}
]
}' \
-F "files=@./CUSTOM_FILE_NAME_HERE.pdf;type=application/pdf"
```
You can now access the document in your Documenso account dashboard.
#### Pre-fill Fields On Document Creation
The API allows you to pre-fill fields on document creation. This is useful when you want to create a document from an existing template and pre-fill the fields with specific values. The API allows you to pre-fill fields on document creation. This is useful when you want to create a document from an existing template and pre-fill the fields with specific values.
To pre-fill a field, you need to make a `POST` request to the `/api/v1/templates/{templateId}/generate-document` endpoint with the field information. Here's an example:
```json ```json
{ {
"title": "my-document.pdf",
"recipients": [
{
"id": 3,
"name": "Example User",
"email": "example@documenso.com",
"signingOrder": 1,
"role": "SIGNER"
}
],
"prefillFields": [ "prefillFields": [
{ {
"id": 21, "id": 21,
@ -574,51 +270,96 @@ To pre-fill a field, you need to make a `POST` request to the `/api/v1/templates
"value": ["option-1", "option-2"] "value": ["option-1", "option-2"]
} }
] ]
// Other payload properties...
} }
``` ```
Check out the endpoint in the [API V1 documentation](https://app.documenso.com/api/v1/openapi#:~:text=/%7BtemplateId%7D/-,generate,-%2Ddocument). </Steps>
### API V2 ## Add Recipients
For API V2, you need to make a `POST` request to the `/api/v2-beta/template/use` endpoint with the field(s) information. Here's an example: The API allows you to add recipients to an envelope via the [`/api/v2/envelope/recipient/create-many`](https://openapi.documenso.com/reference#tag/envelope-recipients/POST/envelope/recipient/create-many) endpoint.
```json The following is an example of a request which creates 2 new recipients on the envelope.
```sh
curl https://app.documenso.com/api/v2/envelope/recipient/create-many \
--request POST \
--header 'Authorization: api_xxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"envelopeId": "envelope_brxkyaxywuxkyeuv",
"data": [
{ {
"templateId": 111, "name": "Recipient Name",
"recipients": [
{
"id": 3,
"name": "Example User",
"email": "example@documenso.com", "email": "example@documenso.com",
"signingOrder": 1,
"role": "SIGNER" "role": "SIGNER"
}
],
"prefillFields": [
{
"id": 21,
"type": "text",
"label": "my-label",
"placeholder": "my-placeholder",
"value": "my-value"
}, },
{ {
"id": 22, "name": "Recipient Two",
"type": "number", "email": "example+2@documenso.com",
"label": "my-label", "role": "APPROVER"
"placeholder": "my-placeholder",
"value": "123"
},
{
"id": 23,
"type": "checkbox",
"label": "my-label",
"placeholder": "my-placeholder",
"value": ["option-1", "option-2"]
} }
] ]
} }'
``` ```
Check out the endpoint in the [API V2 documentation](https://openapi.documenso.com/reference#tag/template/POST/template/use). ## Add Fields
The API allows you to add fields to an envelope via the [`/api/v2/envelope/field/create-many`](https://openapi.documenso.com/reference#tag/envelope-fields/POST/envelope/field/create-many) endpoint.
Before adding fields to an envelope, you will need the following details:
- **Envelope ID** - Which envelope the field will be added to
- **Recipient ID** - Which recipient the field will be added to
- **Envelope Item ID** - Which file the field will be added to. If blank, the field will be added to the first file.
See the [Get Envelope](#get-envelope) section for more details on how to retrieve these details.
The following is an example of a request which creates 2 new fields on the first page of the envelope.
Note that width, height, positionX and positionY are percentage numbers between 0 and 100, which scale the field relative to the size of the PDF.
```sh
curl https://app.documenso.com/api/v2/envelope/field/create-many \
--request POST \
--header 'Authorization: api_xxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"envelopeId": "envelope_xxxxxxxxxx",
"data": [
{
"recipientId": recipient_id_here,
"envelopeItemId": "envelope_item_id_here",
"type": "TEXT",
"page": 1,
"positionX": 0,
"positionY": 0,
"width": 50,
"height": 50,
"fieldMeta": {
"type": "text",
"label": "First test field"
}
},
{
"recipientId": recipient_id_here,
"envelopeItemId": "envelope_item_id_here",
"type": "TEXT",
"page": 1,
"positionX": 50,
"positionY": 50,
"width": 50,
"height": 50,
"fieldMeta": {
"type": "text",
"label": "Second test field"
}
}
]
}'
```
Field meta allows you to further configure fields, for example it will allow you to add multiple items for checkboxes or radios.
A successful request will return a JSON response with the newly added fields.

View File

@ -9,9 +9,9 @@ import { Callout } from 'nextra/components';
Documenso uses API versioning to manage changes to the public API. This allows us to introduce new features, fix bugs, and make other changes without breaking existing integrations. Documenso uses API versioning to manage changes to the public API. This allows us to introduce new features, fix bugs, and make other changes without breaking existing integrations.
<Callout type="info">The current version of the API is `v1`.</Callout> <Callout type="info">The current version of the API is `v2`.</Callout>
The API version is specified in the URL. For example, the base URL for the `v1` API is `https://app.documenso.com/api/v1`. The API version is specified in the URL. For example, the base URL for the `v2` API is `https://app.documenso.com/api/v2`.
We may make changes to the API without incrementing the version number. We will always try to avoid breaking changes, but in some cases, it may be necessary to make changes that are not backward compatible. In these cases, we will increment the version number and provide information about the changes in the release notes. We may make changes to the API without incrementing the version number. We will always try to avoid breaking changes, but in some cases, it may be necessary to make changes that are not backward compatible. In these cases, we will increment the version number and provide information about the changes in the release notes.

View File

@ -11,120 +11,76 @@ Learn about the different fields you can add to your documents in Documenso and
The signature field collects the signer's signature. It's required for each recipient with the "Signer" role. The signature field collects the signer's signature. It's required for each recipient with the "Signer" role.
### Document Editor View
The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign.
![The signature field in the Documenso document editor](/document-signing/signature-field-document-editor-view.webp) ![The signature field in the Documenso document editor](/document-signing/signature-field-document-editor-view.webp)
### Document Signing View The signature field settings include:
The recipient will see the signature field when they open the document to sign. - **Font size** - The typed signature font size. You can disable typed signatures in the document settings.
The recipient must click on the signature field to open the signing view, where they can sign using their mouse, touchpad, or touchscreen.
![The signature field in the Documenso document signing view](/document-signing/signature-field-document-signing-view.webp)
The image below shows the signature field signed by the recipient.
![The signature field signed by the user in the Documenso document signing view](/document-signing/signed-signature-field.webp)
After signing, the recipient can click the "Complete" button to complete the signing process.
## Email Field ## Email Field
The email field is used to collect the signer's email address. The email field is used to collect the signer's email address. This will be the email address you entered when you created the recipients.
### Document Editor View
The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign.
![The email field in the Documenso document editor](/document-signing/email-field-document-editor-view.webp) ![The email field in the Documenso document editor](/document-signing/email-field-document-editor-view.webp)
### Document Signing View The email field settings include:
When the recipient opens the document to sign, they will see the email field. - **Font Size** - The font size of the email address.
- **Text Align** - The horizontal text alignment of the email address.
The recipient must click on the email field to automatically sign the field with the email associated with their account.
![The email field in the Documenso document signing view](/document-signing/email-field-document-signing-view.webp)
The image below shows the email field signed by the recipient.
![The email field signed by the user in the Documenso document signing view](/document-signing/signed-email-field.webp)
After entering their email address, the recipient can click the "Complete" button to complete the signing process.
## Name Field ## Name Field
The name field is used to collect the signer's name. The name field is used to collect the signer's name.
### Document Editor View
The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign.
![The name field in the Documenso document editor](/document-signing/name-field-document-editor-view.webp) ![The name field in the Documenso document editor](/document-signing/name-field-document-editor-view.webp)
### Document Signing View The name field settings include:
When the recipient opens the document to sign, they will see the name field. - **Font Size** - The font size of the name.
- **Text Align** - The horizontal text alignment of the name.
The recipient must click on the name field, which will automatically sign the field with the name associated with their account. ## Initials Field
![The name field in the Documenso document signing view](/document-signing/name-field-document-signing-view.webp) The initials field is used to collect the signer's initials. This is generally the first and last name initials.
The image below shows the name field signed by the recipient. ![The initials field in the Documenso document editor](/document-signing/initials-field-document-editor-view.webp)
![The name field signed by the user in the Documenso document signing view](/document-signing/name-field-signed.webp) The initials field settings include:
After entering their name, the recipient can click the "Complete" button to complete the signing process. - **Font Size** - The font size of the initials.
- **Text Align** - The horizontal text alignment of the initials.
## Date Field ## Date Field
The date field is used to collect the date of the signature. The date field is used to collect the date of the signature. You can change the date format in the document settings.
### Document Editor View
The field doesn't have any additional settings. You just need to place it on the document where you want the signer to sign.
![The date field in the Documenso document editor](/document-signing/date-field-document-editor-view.webp) ![The date field in the Documenso document editor](/document-signing/date-field-document-editor-view.webp)
### Document Signing View The date field settings include:
When the recipient opens the document to sign, they will see the date field. - **Font Size** - The font size of the date.
- **Text Align** - The horizontal text alignment of the date.
The recipient must click on the date field to automatically sign the field with the current date and time.
![The date field in the Documenso document signing view](/document-signing/date-field-document-signing-view.webp)
The image below shows the date field signed by the recipient.
![The date field signed by the user in the Documenso document signing view](/document-signing/date-field-signed.webp)
After entering the date, the recipient can click the "Complete" button to complete the signing process.
## Text Field ## Text Field
The text field is used to collect text input from the signer. The text field is used to collect text input from the signer.
### Document Editor View
Place the text field on the document where you want the signer to enter text. The text field comes with additional settings that can be configured. Place the text field on the document where you want the signer to enter text. The text field comes with additional settings that can be configured.
![The text field in the Documenso document editor](/document-signing/text-field-document-editor-view.webp) ![The text field in the Documenso document editor](/document-signing/text-field-document-editor-view.webp)
To open the settings, click on the text field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen.
![The text field settings in the Documenso document editor](/document-signing/text-field-advanced-settings-document-editor-view.webp)
The text field settings include: The text field settings include:
- **Label** - The label displayed in the field. - **Label** - The label displayed in the field when the user opens the document to sign
- **Placeholder** - The placeholder text displayed in the field. - **Placeholder** - The placeholder text displayed in the field. The signer will see this prior to signing.
- **Text** - The default text displayed in the field. - **Text** - The text which will be prefilled into the field. The signer can change this text unless the field is read-only.
- **Character limit** - The maximum number of characters allowed in the field. - **Character limit** - The maximum number of characters allowed in the field.
- **Required** - Whether the field is required or not. - **Required** - Whether the field is required or not.
- **Read only** - Whether the field is read-only or not. - **Read only** - Whether the field is read-only or not.
- **Text Align** - The horizontal text alignment of the text in the field.
- **Vertical Align** - The vertical text alignment of the text in the field.
- **Line height** - The line height of the text in the field. Useful for multi-line text fields.
- **Letter spacing** - The spacing between each character in the text in the field.
It also comes with a couple of rules: It also comes with a couple of rules:
@ -133,71 +89,26 @@ It also comes with a couple of rules:
- The signer must fill out a required field. - The signer must fill out a required field.
- The text field characters count can't exceed the character limit. - The text field characters count can't exceed the character limit.
- The signer can't modify a read-only field. - The signer can't modify a read-only field.
- The field auto-signs if there is a default text value. - The field will be inserted automatically into the document if there is a default text value.
Let's look at the following example.
![A text field with the settings configured by the user in the Documenso document editor](/document-signing/text-field-with-filled-advanced-settings.webp)
The field is configured as follows:
- Label: "Address"
- Placeholder: "Your office address"
- Default Text: "Signing Street 1, 241245"
- Character Limit: 35
- Required: False
- Read Only: False
Since the field has a label set, the label is displayed instead of the default text field value - "Add text".
### Document Signing View
What the recipient sees when they open the document to sign depends on the settings configured by the sender.
In this case, the recipient sees the text field signed with the default value.
![Text field with the default value signed by the user in the Documenso document signing view](/document-signing/text-field-autosigned.webp)
The recipient can modify the text field value since the field is not read-only. To change the value, the recipient must click the field to un-sign it.
Once it's unsigned, the field uses the label set by the sender.
![Unsigned text field in the Documenso document signing view](/document-signing/text-field-unsigned.webp)
To sign the field with a different value, the recipient needs to click on the field and enter the new value.
![Text field with the text input in the Documenso document signing view](/document-signing/text-field-input-modal.webp)
Since the text field has a character limit, the recipient must enter a value that doesn't exceed the limit. Otherwise, an error message will appear, and the field will not be signed.
The image below illustrates the text field signed with a new value.
![Text field signed with a new value](/document-signing/text-field-new-value-signed.webp)
After signing the field, the recipient can click the "Complete" button to complete the signing process.
## Number Field ## Number Field
The number field is used for collecting a number input from the signer. The number field is used for collecting a number input from the signer.
### Document Editor View
Place the number field on the document where you want the signer to enter a number. The number field comes with additional settings that can be configured.
![The number field in the Documenso document editor](/document-signing/number-field-document-editor.webp)
To open the settings, click on the number field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen.
![The number field in the Documenso document editor](/document-signing/number-field-document-editor-view.webp) ![The number field in the Documenso document editor](/document-signing/number-field-document-editor-view.webp)
The number field settings include: The number field settings include:
- **Label** - The label displayed is the field. - **Label** - The label displayed is the field.
- **Placeholder** - The placeholder text displayed in the field. - **Placeholder** - The placeholder text displayed in the field.
- **Value** - The default number displayed in the field. - **Value** - The value which will be prefilled into the field. The signer can change this value unless the field is read-only.
- **Number format** - The format of the number. - **Number format** - The format of the number.
- **Required** - Whether the field is required or not. - **Required** - Whether the field is required or not.
- **Read only** - Whether the field is read-only or not. - **Read only** - Whether the field is read-only or not.
- **Text Align** - The horizontal text alignment of the number in the field.
- **Vertical Align** - The vertical text alignment of the number in the field.
- **Line height** - The line height of the number in the field. Useful for multi-line number fields.
- **Letter spacing** - The spacing between each character in the number in the field.
- **Validation** - The validation rules for the field. - **Validation** - The validation rules for the field.
It also comes with a couple of rules: It also comes with a couple of rules:
@ -210,66 +121,18 @@ It also comes with a couple of rules:
- If the default number and a min value are set, the default number must be greater than the min value. - If the default number and a min value are set, the default number must be greater than the min value.
- The value must match the number format if a number format is set. - The value must match the number format if a number format is set.
In this example, the number field is configured as follows:
- Label: "Quantity"
- Placeholder: "Enter the preferred quantity"
- Default Value: 12
- Number Format: "123,456,789.00"
- Required: False
- Read Only: False
- Validation:
- Min value: 5, Max value: 50
![A number field with the label configured by the user in the Documenso document editor](/document-signing/number-field-label.webp)
Since the field has a label set, the label is displayed instead of the default number field value - "Add number".
### Document Signing View
What the recipient sees when they open the document to sign depends on the settings configured by the sender.
The recipient sees the number field signed with the default value in this case.
![Number field with the default value signed by the user in the Documenso document signing view](/document-signing/number-field-autosigned.webp)
Since the number field is not read-only, the recipient can modify its value. To change the value, the recipient must click the field to un-sign it.
Once it's unsigned, the field uses the label set by the sender.
![Unsigned number field in the Documenso document signing view](/document-signing/number-field-unsigned.webp)
To sign the field with a different value, the recipient needs to click on the field and enter the new value.
![Number field with the number input in the Documenso document signing view](/document-signing/number-field-input-modal.webp)
Since the number field has a validation rule set, the recipient must enter a value that meets the rules. In this example, the value needs to be between 5 and 50. Otherwise, an error message will appear, and the field will not be signed.
The image below illustrates the text field signed with a new value.
![Number field signed with a new value](/document-signing/number-field-signed-with-another-value.webp)
After signing the field, the recipient can click the "Complete" button to complete the signing process.
## Radio Field ## Radio Field
The radio field is used to collect a single choice from the signer. The radio field is used to collect a single choice from the signer.
### Document Editor View
Place the radio field on the document where you want the signer to select a choice. The radio field comes with additional settings that can be configured.
![The radio field in the Documenso document editor](/document-signing/radio-field-document-editor-view.webp) ![The radio field in the Documenso document editor](/document-signing/radio-field-document-editor-view.webp)
To open the settings, click on the radio field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen.
![The radio field advanced settings in the Documenso document editor](/document-signing/radio-field-advanced-settings-document-editor-view.webp)
The radio field settings include: The radio field settings include:
- **Required** - Whether the field is required or not. - **Required** - Whether the field is required or not.
- **Read only** - Whether the field is read-only or not. - **Read only** - Whether the field is read-only or not.
- **Values** - The list of choices for the field. - **Values** - The list of choices for the field.
- **Direction** - The direction of the radio field. Can be "Vertical" or "Horizontal".
It also comes with a couple of rules: It also comes with a couple of rules:
@ -282,57 +145,22 @@ It also comes with a couple of rules:
- It should contain at least one option. - It should contain at least one option.
- The field can't have more than one option selected. - The field can't have more than one option selected.
In this example, the radio field is configured as follows:
- Required: False
- Read Only: False
- Options:
- Option 1
- Option 2
- Empty value
- Empty value
- Option 3
![The radio field with the settings configured by the user in the Documenso document editor](/document-signing/radio-field-options-document-editor-view.webp)
Since the field contains radio options, it displays them instead of the default radio field value, "Radio".
### Document Signing View
What the recipient sees when they open the document to sign depends on the settings configured by the sender.
In this case, the recipient sees the radio field unsigned because the sender didn't select a value.
![Radio field with no value selected in the Documenso document signing view](/document-signing/radio-field-unsigned.webp)
The recipient can select one of the options by clicking on the radio button next to the option.
![Radio field with the value selected by the user in the Documenso document signing view](/document-signing/radio-field-signed.webp)
After signing the field, the recipient can click the "Complete" button to complete the signing process.
## Checkbox Field ## Checkbox Field
The checkbox field is used to collect multiple choices from the signer. The checkbox field is used to collect multiple choices from the signer.
### Document Editor View
Place the checkbox field on the document where you want the signer to select choices. The checkbox field comes with additional settings that can be configured. Place the checkbox field on the document where you want the signer to select choices. The checkbox field comes with additional settings that can be configured.
![The checkbox field in the Documenso document editor](/document-signing/checkbox-document-editor-view.webp) ![The checkbox field in the Documenso document editor](/document-signing/checkbox-field-document-editor-view.webp)
To open the settings, click on the checkbox field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen.
![The checkbox field settings in the Documenso document editor](/document-signing/checkbox-advanced-settings.webp)
The checkbox field settings include the following: The checkbox field settings include the following:
- **Validation** - The validation rules for the field.
- **Rule** - The rule specifies "At least", "At most", and "Exactly".
- **Number** - The number of choices that must be selected.
- **Required** - Whether the field is required or not. - **Required** - Whether the field is required or not.
- **Read only** - Whether the field is read-only or not. - **Read only** - Whether the field is read-only or not.
- **Options** - The list of choices for the field. - **Options** - The list of choices for the field.
- **Direction** - The direction of the checkbox field. Can be "Vertical" or "Horizontal".
- **Validation Rule** - The rule specifies "At least", "At most", and "Exactly".
- **Validation Number** - The number of choices that must be selected.
It also comes with a couple of rules: It also comes with a couple of rules:
@ -344,67 +172,20 @@ It also comes with a couple of rules:
- The signer can't modify the field if it's read-only. - The signer can't modify the field if it's read-only.
- It should contain at least one option. - It should contain at least one option.
In this example, the checkbox field is configured as follows:
- No validation rules
- Required: True
- Read Only: False
- Options:
- Option 1
- Empty value (checked)
- Option 2
- Option 3 (checked)
- Empty value
![The checkbox field with the settings configured by the user in the Documenso document editor](/document-signing/checkbox-advanced-settings-document-editor-view.webp)
Since the field contains checkbox options, it displays them instead of the default checkbox field value, "Checkbox".
### Document Signing View
What the recipient sees when they open the document to sign depends on the settings configured by the sender.
In this case, the recipient sees the checkbox field signed with the values selected by the sender.
![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-document-signing-view.webp)
Since the field is required, the recipient can either sign with the values selected by the sender or modify the values.
The values can be modified in 2 ways:
- Click on the options you want to select or deselect.
- Hover over the field and click the "X" button to clear all the selected values.
The image below illustrates the checkbox field with the values cleared by the recipient. Since the field is required, it has a red border instead of the yellow one (non-required fields).
![Checkbox field the values cleared by the user in the Documenso document signing view](/document-signing/checkbox-field-unsigned.webp)
Then, the recipient can select values other than the ones chosen by the sender.
![Checkbox field with the values selected by the user in the Documenso document signing view](/document-signing/checkbox-field-custom-sign.webp)
After signing the field, the recipient can click the "Complete" button to complete the signing process.
## Dropdown/Select Field ## Dropdown/Select Field
The dropdown/select field collects a single choice from a list of options. The dropdown/select field collects a single choice from a list of options.
### Document Editor View
Place the dropdown/select field on the document where you want the signer to select a choice. The dropdown/select field comes with additional settings that can be configured. Place the dropdown/select field on the document where you want the signer to select a choice. The dropdown/select field comes with additional settings that can be configured.
![The dropdown/select field in the Documenso document editor](/document-signing/select-field-sliders.webp) ![The dropdown/select field in the Documenso document editor](/document-signing/dropdown-field-document-editor-view.webp)
To open the settings, click on the dropdown/select field and then on the "Sliders" icon. That opens the settings panel on the right side of the screen.
![The dropdown/select field settings in the Documenso document editor](/document-signing/select-field-advanced-settings-panel.webp)
The dropdown/select field settings include: The dropdown/select field settings include:
- **Required** - Whether the field is required or not. - **Required** - Whether the field is required or not.
- **Read only** - Whether the field is read-only or not. - **Read only** - Whether the field is read-only or not.
- **Options** - The list of choices for the field. - **Options** - The list of choices for the field.
- **Default** value - The default value selected in the field. - **Default Value** - The default value selected in the field.
It also comes with a couple of rules: It also comes with a couple of rules:
@ -416,31 +197,3 @@ It also comes with a couple of rules:
- The field can't be signed with a value not in the options list. - The field can't be signed with a value not in the options list.
- The signer can't modify the field if it's read-only. - The signer can't modify the field if it's read-only.
- It should contain at least one option. - It should contain at least one option.
In this example, the dropdown/select field is configured as follows:
- Required: False
- Read Only: False
- Default Value: None
- Options:
- Document
- Template
- Other
### Document Signing View
What the recipient sees when they open the document to sign depends on the settings configured by the sender.
In this case, the recipient sees the dropdown/select field with the default label, "-- Select ---" since the sender has not set a default value.
![Dropdown/select field in the Documenso document signing view](/document-signing/select-field-unsigned.webp)
The recipient can modify the dropdown/select field value since the field is not read-only. To change the value, the recipient must click on the field for the dropdown list to appear.
![Dropdown/select field with the dropdown list in the Documenso document signing view](/document-signing/select-field-unsigned-dropdown.webp)
The recipient can select one of the options from the list. The image below illustrates the dropdown/select field signed with a new value.
![Dropdown/select field signed with a value](/document-signing/select-field-signed.webp)
After signing the field, the recipient can click the "Complete" button to complete the signing process.

View File

@ -9,90 +9,85 @@ import { Callout, Steps } from 'nextra/components';
This guide will walk you through the process of sending a document out for signing. You will learn how to upload a document, add recipients, place signature fields, and send the document for signing. This guide will walk you through the process of sending a document out for signing. You will learn how to upload a document, add recipients, place signature fields, and send the document for signing.
## Uploading a Document
<Steps> <Steps>
### Login Into Your Account ### Log In to Your Account
The guide assumes you have a Documenso account. If you don't, you can create a free account [here](https://documen.so/free-docs). The guide assumes you have a Documenso account. If you don't, you can create a free account [here](https://documen.so/free-docs).
### Upload Document ### Upload Document
Navigate to the [Documenso dashboard](https://app.documenso.com/documents) and click on the "Add a document" button. Select the document you want to upload and wait for the upload to complete. Navigate to the [Documenso dashboard](https://app.documenso.com/documents) and click on the "Upload Document" button located at the top right of the page. Select the documents you want to upload and wait for the upload to complete.
<Callout type="info"> <Callout type="info">
The maximum file size for uploaded documents is 150MB in production. In staging, the limit is The maximum file size for uploaded documents is 150MB in production. You can upload up to 5
50MB. documents at a time on standard plans. In staging, the limit is 50MB.
</Callout> </Callout>
![Documenso dashboard](/document-signing/documenso-documents-dashboard.webp) ![Documenso dashboard](/document-signing/documenso-documents-dashboard.webp)
After the upload is complete, you will be redirected to the document's page. You can configure the document's settings and add recipients and fields here. After the upload is complete, you will be redirected to the editor. You can configure the document's settings and add recipients and fields here.
![Documenso document overview](/document-signing/documenso-uploaded-document.webp) </Steps>
### (Optional) Advanced Options ## Configuring and Sending Document
Click on the "Advanced options" button to access additional settings for the document. You can set an external ID, date format, time zone, and the redirect URL. The Documenso editor allows you to create and configure documents or templates. The editor consists of three sections that guide you through the process of preparing your document.
![Advanced settings for a document uploaded in the Documenso dashboard](/document-signing/documenso-uploaded-document-advanced-options.webp) 1. **Document & Recipients** - Upload files and add recipients
2. **Add Fields** - Add fields to the document
3. **Preview** - Preview the document before sending
The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s). You can click each section to navigate to it, and the current section will be highlighted in the sidebar.
The date format and time zone settings allow you to customize how the date and time are displayed in the document. ![Editor page in the Documenso dashboard](/document-signing/editor-overview.webp)
The redirect URL allows you to specify a URL where the signer will be redirected after signing the document. There is also a quick actions section on the left-hand side which allows you to:
### (Optional) Document Access - **Document Settings** - Configure general settings, emails, or security settings for the document
- **Send Document** - Send the document to the recipients
- **Duplicate** - Duplicate the document
- **Download** - Download the document PDF
- **Delete** - Delete the document
Documenso enables you to set up access control for your documents. You can require authentication for viewing the document. The header contains some notable items:
The available options are: - **Title** - You can edit the title in the top-left corner of the header by clicking on the text
- **Status** - You can see the current status of the document next to the title
- **Attachments** - You can configure the attachments on the right-hand side of the header
- **Require account** - The recipient must be signed in to view the document. <Steps>
- **None** - The document can be accessed directly by the URL sent to the recipient.
![Document access settings in the Documenso dashboard](/document-signing/documenso-enterprise-document-access.webp) ### Upload Documents and Add Recipients
The first step in the editor is to upload your document and add recipients.
![Upload and add recipients page in the Documenso editor](/document-signing/editor-upload-recipients.webp)
#### Upload Document
You can upload documents by either clicking the "Add a document" dropzone, or dragging and dropping files into the dropzone.
<Callout type="info"> <Callout type="info">
The "Document Access" feature is only available for Enterprise accounts. The maximum file size for uploaded documents is 150MB in production. You can upload up to 5
documents at a time on standard plans. In staging, the limit is 50MB.
</Callout> </Callout>
### (Optional) Recipient Authentication #### Add Recipients
The "Recipient Authentication" feature allows you to specify the authentication method required for recipients to sign the signature field. Click the "+ Add Signer" button to add a new recipient. For each recipient you can configure the following:
The available options are: - **Email address** - The recipient's email address
- **Name** - The recipient's name
- **Order** - The sequence in which the recipient should sign the document. Only available if the "Enable Signing Order" checkbox is enabled
- **Role** - As seen below
- **Require passkey** - The recipient must have an account and passkey configured via their settings. Documenso has 5 roles for recipients with different permissions and actions.
- **Require 2FA** - The recipient must have an account and 2FA enabled via their settings.
- **None** - No authentication required.
![Document recipient action authentication in the Documenso dashboard](/document-signing/document-enterprise-recipient-action-authentication.webp)
This can be overridden by setting the authentication requirements directly for each recipient in the next step.
<Callout type="info">
The "Recipient Authentication" feature is only available for Enterprise accounts.
</Callout>
### Recipients
Click the "+ Add Signer" button to add a new recipient. You can configure the recipient's email address, name, role, and authentication method on this page.
You can choose any option from the ["Recipient Authentication"](#optional-recipient-authentication) section, or you can set it to "Inherit authentication method" to use the global action signing authentication method configured in the "General Settings" step.
![The required authentication method for a recipient](/document-signing/documenso-document-recipient-authentication-method.webp)
You can also set the recipient's role, which determines their actions and permissions in the document.
![The recipient role](/document-signing/documenso-document-recipient-role.webp)
#### Roles
Documenso has 4 roles for recipients with different permissions and actions.
| Role | Function | Action required | Signature | | Role | Function | Action required | Signature |
| :-------: | :-----------------------------------------------------------------------------: | :-------------: | :-------: | | :-------: | :-----------------------------------------------------------------------------: | :-------------: | :-------: |
| Signer | Needs to sign signatures fields assigned to them. | Yes | Yes | | Signer | Needs to sign signature fields assigned to them. | Yes | Yes |
| Approver | Needs to approve the document as a whole. Signature optional. | Yes | Optional | | Approver | Needs to approve the document as a whole. Signature optional. | Yes | Optional |
| Viewer | Needs to confirm they viewed the document. | Yes | No | | Viewer | Needs to confirm they viewed the document. | Yes | No |
| Assistant | Can help prepare the document by filling in fields on behalf of other signers. | Yes | No | | Assistant | Can help prepare the document by filling in fields on behalf of other signers. | Yes | No |
@ -100,15 +95,20 @@ Documenso has 4 roles for recipients with different permissions and actions.
### Fields ### Fields
Documenso supports 9 different field types that can be added to the document. Each field type collects various information from the recipients when they sign the document. Documenso supports 10 different field types that can be added to the document. Each field type collects various information from the recipients when they sign the document.
To create a field, you can either click and drag to draw a field on the document or drag and drop the field type from the sidebar.
![The available field types in the Documenso dashboard](/document-signing/documenso-document-fields.webp) ![The available field types in the Documenso dashboard](/document-signing/documenso-document-fields.webp)
The field created will be assigned to the currently selected recipient. You can change the recipient by clicking on the recipient's name in the right sidebar.
The available field types are: The available field types are:
- **Signature** - Collects the signer's signature - **Signature** - Collects the signer's signature
- **Email** - Collects the signer's email address - **Email** - Collects the signer's email address
- **Name** - Collects the signer's name - **Name** - Collects the signer's name
- **Initials** - Collects the signer's initials
- **Date** - Collects the date of the signature - **Date** - Collects the date of the signature
- **Text** - Collects text input from the signer - **Text** - Collects text input from the signer
- **Number** - Collects a number input from the signer - **Number** - Collects a number input from the signer
@ -123,11 +123,11 @@ All fields can be placed anywhere on the document and resized as needed.
page](/users/documents/fields). page](/users/documents/fields).
</Callout> </Callout>
#### Signature Required ### Preview
Signer Roles require at least 1 signature field. You will get an error message if you try to send a document without a signature field. In this section, you can preview what the document will look like once it is fully signed. This uses placeholder data for the fields.
![Error message when trying to send a document without a signature field](/document-signing/documenso-no-signature-field-found.webp) ![Preview section in the Documenso editor](/document-signing/documenso-editor-preview.webp)
### Email Settings ### Email Settings
@ -156,3 +156,54 @@ https://app.documenso.com/sign/12ACP777zxQLO52hjj_vCB
``` ```
</Steps> </Steps>
## Document Settings
To access the document settings, click the "Document Settings" button in the quick actions section.
### General Settings
![General Documenso editor settings](/document-signing/documenso-editor-general-settings.webp)
- **Language** - The language that the emails will be sent in
- **Allowed Signature Types** - The signature types that the recipient will be allowed to use
- **Date Format** - The date format that will be used for date fields
- **Time Zone** - The time zone that will be used for date fields
- **External ID** - A custom ID for the document that can be used to identify the document in your external system(s)
- **Redirect URL** - The URL where the signer will be redirected after signing the document
- **Document Distribution Method** - Whether to use emails to send the document, or none (which we will generate signing links for manual distribution)
### Email Settings
![Email Documenso editor settings](/document-signing/documenso-editor-email-settings.webp)
- **Reply To** - The email address that will be used as the reply to email address
- **Subject** - The subject of the email
- **Message** - The message of the email
- **Checkboxes** - You can select which emails should be sent during the document signing process
### Security Settings
Documenso enables you to set up access control for your documents. You can require authentication for viewing the document.
The available options are:
- **Require account** - The recipient must be signed in to view the document.
- **Require 2FA** - The recipient must use 2FA to sign the document.
- **None** - The document can be accessed directly by the URL sent to the recipient.
![Security Documenso editor settings](/document-signing/documenso-editor-security-settings.webp)
The "Recipient Authentication" feature allows you to specify the authentication method required for recipients to sign the signature field.
The available options are:
- **Require passkey** - The recipient must have an account and passkey configured via their settings.
- **Require 2FA** - The recipient must have an account and 2FA enabled via their settings.
- **None** - No authentication required.
This can be overridden by setting the authentication requirements directly for each recipient in the next step.
<Callout type="info">
The "Recipient Authentication" feature is only available for Enterprise accounts.
</Callout>

View File

@ -8,82 +8,43 @@ Documenso allows you to create templates, which are reusable documents. Template
### Create New Template ### Create New Template
To create a new template, navigate to the ["Templates" page](https://app.documenso.com/templates) and click on the "New Template" button. To create a new template, navigate to the "Templates" page and click on the "Upload Template" button.
![Documenso template page](/templates/documenso-template-page.webp) ![Documenso template page](/templates/documenso-template-page.webp)
Clicking on the "New Template" button opens a new modal to upload the document you want to use as a template. Select the document and wait for Documenso to upload it to your account. You can select multiple files at once to upload into the template. Once the upload is complete you will be redirected to the editor.
![Upload a new template document in the Documenso dashboard](/templates/documenso-template-page-upload-document.webp) ![A successfully uploaded document in the Documenso dashboard](/templates/documenso-template-page-uploaded-document.webp)
Once the upload is complete, Documenso opens the template configuration page. See the [documents](/users/documents/sending-documents) page for more information on how to use the editor.
![A successfuly uploaded document in the Documenso dashboard](/templates/documenso-template-page-uploaded-document.webp)
You can then configure the template by adding recipients, fields, and other options. You can then configure the template by adding recipients, fields, and other options.
### (Optional) Email options
When you send a document for signing, Documenso emails the recipients with a link to the document. The email contains a subject, message, and the document.
Documenso uses a generic subject and message but also allows you to customize them for each document and template.
![Configuring the email options for the Documenso template](/templates/documenso-template-page-uploaded-document-email-options.webp)
To configure the email options, click the "Email Options" tab and fill in the subject and message fields. Every time you use this template for signing, Documenso will use the custom subject and message you provided. They can also be overridden before sending the document.
### (Optional) Advanced Options
The template also has advanced options that you can configure. These options include settings such as the external ID, date format, time zone and the redirect URL.
![Configuring the advanced options for the Documenso template](/templates/documenso-template-page-uploaded-document-advanced-options.webp)
The external ID allows you to set a custom ID for the document that can be used to identify the document in your external system(s).
The date format and time zone settings allow you to customize how the date and time are displayed in the document.
The redirect URL allows you to specify a URL where the signer will be redirected after signing the document.
### Add Placeholders or Recipients ### Add Placeholders or Recipients
You can add placeholders for the template recipients. Placeholders specify where the recipient's name, email, and other information should be in the document. When adding recipients, you can use dummy recipients which can be replaced with actual recipients when you use a template, which we will explain in the next section.
You can also add recipients directly to the template. Recipients are the people who will receive the document for signing. For example, the following has two recipients:
- placeholder@documenso.com
- me@documenso.com
![Adding placeholder recipients for the Documenso template](/templates/documenso-template-recipients.webp) ![Adding placeholder recipients for the Documenso template](/templates/documenso-template-recipients.webp)
If you add placeholders to the template, you must replace them with actual recipients when creating a document from it. See the modal from the ["Use a Template"](#use-a-template) section. You can then place fields for each recipient.
### Add Fields
The last step involves adding fields to the document. These fields collect information from the recipients when they sign the document.
Documenso provides the following field types:
- **Signature** - Collects the signer's signature
- **Email** - Collects the signer's email address
- **Name** - Collects the signer's name
- **Date** - Collects the date of the signature
- **Text** - Collects text input from the signer
- **Number** - Collects a number input from the signer
- **Radio** - Collects a single choice from the signer
- **Checkbox** - Collects multiple choices from the signer
- **Dropdown/Select** - Collects a single choice from a list of choices
![Adding fields for the Documenso template](/templates/documenso-template-page-fields.webp)
After adding the fields, press the "Save Template" button to save the template.
<Callout type="info"> <Callout type="info">
Learn more about the available field types and how to use them on the [Fields Learn more about the available field types and how to use them on the [Fields
page](signing-documents/fields). page](/users/documents/fields).
</Callout> </Callout>
### Use a Template ### Use a Template
Click on the "Use Template" button to create a new document from the template. Before creating the document, you are asked to fill in the recipients for the placeholders you added to the template. Once you're ready to use the template, you can click the "Use Template" button in the top right corner.
After filling in the recipients, click the "Create Document" button to create the document in your account. Here you can choose to use the template as is, or you can replace the emails or names with different recipients as you require.
You can now decide whether to create the document as a draft, or immediately send it to the recipients for signing.
![Use an available Documenso template](/templates/documenso-use-template.webp) ![Use an available Documenso template](/templates/documenso-use-template.webp)
@ -91,7 +52,7 @@ You can also send the document straight to the recipients for signing by checkin
### (Optional) Create A Direct Signing Link ### (Optional) Create A Direct Signing Link
A direct signing link allows you to create a shareable link for document signing, where recipients can fill in their information and sign the document. See the "Create Direct Link" button in the image from [step 4](#add-placeholders-or-recipients). A direct signing link allows you to create a shareable link for document signing, where recipients can fill in their information and sign the document.
<Callout type="info"> <Callout type="info">
Check out the [Direct Signing Links](/users/direct-links) section for more information. Check out the [Direct Signing Links](/users/direct-links) section for more information.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -1,7 +1,7 @@
import { useState } from 'react'; import { useState } from 'react';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import { Trans } from '@lingui/react/macro'; import { Trans, useLingui } from '@lingui/react/macro';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import { z } from 'zod'; import { z } from 'zod';
@ -57,6 +57,7 @@ export function AssistantConfirmationDialog({
allowDictateNextSigner = false, allowDictateNextSigner = false,
defaultNextSigner, defaultNextSigner,
}: ConfirmationDialogProps) { }: ConfirmationDialogProps) {
const { t } = useLingui();
const [isEditingNextSigner, setIsEditingNextSigner] = useState(false); const [isEditingNextSigner, setIsEditingNextSigner] = useState(false);
const form = useForm<TNextSignerFormSchema>({ const form = useForm<TNextSignerFormSchema>({
@ -146,7 +147,7 @@ export function AssistantConfirmationDialog({
<Input <Input
{...field} {...field}
className="mt-2" className="mt-2"
placeholder="Enter the next signer's name" placeholder={t`Enter the next signer's name`}
/> />
</FormControl> </FormControl>
@ -168,7 +169,7 @@ export function AssistantConfirmationDialog({
{...field} {...field}
type="email" type="email"
className="mt-2" className="mt-2"
placeholder="Enter the next signer's email" placeholder={t`Enter the next signer's email`}
/> />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />

View File

@ -1,8 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import { useLingui } from '@lingui/react/macro'; import { Trans, useLingui } from '@lingui/react/macro';
import { Trans } from '@lingui/react/macro';
import type * as DialogPrimitive from '@radix-ui/react-dialog'; import type * as DialogPrimitive from '@radix-ui/react-dialog';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import type { z } from 'zod'; import type { z } from 'zod';
@ -149,7 +148,7 @@ export const OrganisationEmailCreateDialog = ({
<Trans>Display Name</Trans> <Trans>Display Name</Trans>
</FormLabel> </FormLabel>
<FormControl> <FormControl>
<Input {...field} placeholder="Support" /> <Input {...field} placeholder={t`Support`} />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
<FormDescription> <FormDescription>
@ -175,7 +174,7 @@ export const OrganisationEmailCreateDialog = ({
onChange={(e) => { onChange={(e) => {
field.onChange(e.target.value + '@' + emailDomain.domain); field.onChange(e.target.value + '@' + emailDomain.domain);
}} }}
placeholder="support" placeholder={t`support`}
/> />
<div className="bg-muted text-muted-foreground absolute bottom-0 right-0 top-0 flex items-center rounded-r-md border px-3 py-2 text-sm"> <div className="bg-muted text-muted-foreground absolute bottom-0 right-0 top-0 flex items-center rounded-r-md border px-3 py-2 text-sm">
@{emailDomain.domain} @{emailDomain.domain}

View File

@ -1,8 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import { useLingui } from '@lingui/react/macro'; import { Trans, useLingui } from '@lingui/react/macro';
import { Trans } from '@lingui/react/macro';
import type * as DialogPrimitive from '@radix-ui/react-dialog'; import type * as DialogPrimitive from '@radix-ui/react-dialog';
import { useForm } from 'react-hook-form'; import { useForm } from 'react-hook-form';
import type { z } from 'zod'; import type { z } from 'zod';
@ -134,7 +133,7 @@ export const OrganisationEmailUpdateDialog = ({
<Trans>Display Name</Trans> <Trans>Display Name</Trans>
</FormLabel> </FormLabel>
<FormControl> <FormControl>
<Input {...field} placeholder="Support" /> <Input {...field} placeholder={t`Support`} />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
<FormDescription> <FormDescription>

View File

@ -1,9 +1,7 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { zodResolver } from '@hookform/resolvers/zod'; import { zodResolver } from '@hookform/resolvers/zod';
import { msg } from '@lingui/core/macro'; import { Plural, Trans, useLingui } from '@lingui/react/macro';
import { useLingui } from '@lingui/react';
import { Plural, Trans } from '@lingui/react/macro';
import type * as DialogPrimitive from '@radix-ui/react-dialog'; import type * as DialogPrimitive from '@radix-ui/react-dialog';
import { startRegistration } from '@simplewebauthn/browser'; import { startRegistration } from '@simplewebauthn/browser';
import { KeyRoundIcon } from 'lucide-react'; import { KeyRoundIcon } from 'lucide-react';
@ -54,7 +52,7 @@ export const PasskeyCreateDialog = ({ trigger, onSuccess, ...props }: PasskeyCre
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const [formError, setFormError] = useState<string | null>(null); const [formError, setFormError] = useState<string | null>(null);
const { _ } = useLingui(); const { t } = useLingui();
const { toast } = useToast(); const { toast } = useToast();
const form = useForm<TCreatePasskeyFormSchema>({ const form = useForm<TCreatePasskeyFormSchema>({
@ -83,7 +81,7 @@ export const PasskeyCreateDialog = ({ trigger, onSuccess, ...props }: PasskeyCre
}); });
toast({ toast({
description: _(msg`Successfully created passkey`), description: t`Successfully created passkey`,
duration: 5000, duration: 5000,
}); });
@ -176,7 +174,7 @@ export const PasskeyCreateDialog = ({ trigger, onSuccess, ...props }: PasskeyCre
<Trans>Passkey name</Trans> <Trans>Passkey name</Trans>
</FormLabel> </FormLabel>
<FormControl> <FormControl>
<Input className="bg-background" placeholder="eg. Mac" {...field} /> <Input className="bg-background" placeholder={t`eg. Mac`} {...field} />
</FormControl> </FormControl>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>

Some files were not shown because too many files have changed in this diff Show More