+
+## Step 3: Manage and Generate API Keys
+ - In the **Settings page**, select the **API Keys** tab.
+ - The API Keys section displays all previously generated API keys, including their **creation date, expiration date, and status.**
+ - To generate a new key, click the **Generate API Key** button.
+ - A new API key will be created automatically for your account and added to the list.
+
+
+
+---
+
+# **Client Management APIs**
+
+The **Client Management APIs** provide endpoints to create, update, retrieve, search, and manage client information efficiently. They enable secure and structured handling of client data throughout the complete client lifecycle.
+
+
+**Base URL:** https://api.doculandemo.com/client-docs
+
+---
+
+
-### **Request Body Example**
+
-### **Tags**
+
-### **Request Body Example**
+
-### **Tags**
+
-### **Request Body Example**
+
-### **Tags**
+
-## ๐น 4 Resend Verification Email
+
-### **Request Body Example**
+
-### **Tags**
+
-## ๐น 5 Create Api Key
+
-### **Request Body Example**
+
-### **Tags**
+
## **Files Operation APIs**
@@ -332,15 +359,16 @@ The Files Operation **APIs allow you to retrieve individual files or list all av
---
-## ๐น 1 Get Document
+## ๐น 1 Create Folder
+
+Create a new folder in the document management system.
+Optionally, you can specify parent folder details, custom metadata, or access permissions while creating the folder.
-Retrieve a specific file using its document ID.
-Optionally, you can return the actual PDF file or just the file metadata.
### **Endpoint**
````
-GET api/v1/documents/
+POST /api/v1/documents/folder/
````
-
+### **Request Body**
+
+````
+json
+
+{
+ "new_folder": "string",
+ "folder_mapping_id": "string"
+}
+
+````
### **Response Body Example**
@@ -369,17 +406,9 @@ GET api/v1/documents/
json
{
- "document_id": "682c5804-f860-4p08-802f-d5538j5aabd8",
- "file_path": "example.com/files/dev/OnePageContract.pdf",
- "metadata_path": "example.com/metadata/682c5804.json",
- "fileName": "OnePageContract.pdf",
- "size": 35599,
- "last_modified": "2025-12-26T16:19:53.484243+00:00",
- "created_by": {
- "name": "Jane Smith",
- "email": "jane.smith@example.com"
- }
+ "status": "'Acme Technologies' folder created successfully."
}
+
````
-### **Path Parameters**
-| Name | Type | Required | Description |
-|-----|------|----------|-------------|
-| `document_id` | string | โ
Yes | Unique identifier of the document |
-
+
-### **Request Body**
-> _Not required_ -->
-### **Response Body Example**
+### **Query Parameters**
+| Name | Type | Required | Description |
+| ------------------- | ------------------ | -------- | ---------------------------------------------------------- |
+
+| `folder_mapping_id`|string \| (string \| null) | โ
Yes | Specifies the destination folder |
+
+
+
+
+
+### **Response Body Example**
+
````
+json
+
+{
+ "status": 200,
+ "detail": "Folder 'Documents' deleted successfully",
+ "folder_name": "Documents"
+}
+````
-### **Response Format**
-- Content-Type: `application/json`
-- Returns an array of file objects with associated metadata.
-
### Tags
`Files Operation`
---
-Got it โ hereโs the **corrected Markdown section** based on your actual API and response. You can directly append this to your doc:
-
----
-
-## ๐น 5 Redirect URL (PDF Editor)
+## ๐น 3 Upload Documents
-The **Redirect URL API** is used to securely generate a session for accessing the third-party PDF editor.
-This API uses **API Key authentication only (no login required)** and returns a scoped bearer token along with the editor UI URL.
-
----
+Upload a document for storage and management.
### **Endpoint**
-```
-
-POST /api/v1/documents/auth/redirect
+````
+POST /api/v1/documents/upload/
+````
-```
----
-
---- -->
+
### **Request Body**
-> _Not required_
-
----
-
-### **Response Body Example**
-
-```
-
-json
-
-{
- "client_id": "client_xxxxxxxxxxx1bb23c0a105316",
- "email": "sample@example.com",
- "role": "admin",
- "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.samplePayload.signature",
- "ui_url": "https://demo.doculandemo.com/pdf-editor",
- "token_type": "bearer"
-}
-
-```
-
----
-
-### **Response Fields**
-
-| Field | Type | Description |
-|---------------|--------|----------------------------------------------------------|
-| client_id | string | Unique identifier for the client |
-| email | string | Associated client email |
-| role | string | Role assigned to the client (e.g., admin) |
-| access_token | string | Bearer token used for authentication in editor session |
-| ui_url | string | Third-party PDF editor URL |
-| token_type | string | Token type (always `bearer`) |
-
----
-
-### **Usage Flow**
-
-1. Call the API using your **X-API-Key**
-2. Receive:
- - `access_token`
- - `ui_url`
-3. Load `ui_url` inside an iframe or browser
-4. Pass the following data to the editor via `postMessage`
+| Name | Type | Required | Description |
+| ------------------- | ------------------ | -------- | ---------------------------------------------------------- |
+| `files` | array+ + ๐ Download Sample PDF + +
- - ### **Query Parameters** -| Name | Type | Required | Default | Description | -|-----|------|----------|-------------|-------------| -| `Scope` | string | โ No | `Myself` | Filter for a specific document scope | - +| Name | Type | Required | Description | +| ------------------- | ------------------ | -------- | ---------------------------------------------------------- | +| `folder_mapping_id`|string \| (string \| null) | โ No | Specifies the destination folder | | +| `Content type`|string \| (string \| null) | โ No | Specifies the destination folder | +| `Page` | intiger | โ No | Valid page values are integers starting from 1 | +| `Limit` | intiger | โ No | Limit must be a positive integer within the range of 1โ500 | - ### **Response Body Example** -```` +``` json { - "local": { - "ATTESTATION AND AGREEMENT": { - "fields": [ - { - "id": "1766830885432-signature", - "type": "signature", - "x": 429, - "y": 902, - "width": 362, - "height": 36, - "page": 1, - "color": "hsl(196, 100%, 90%)", - "style": "both", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [] - }, - { - "id": "1766830532236-text", - "type": "text", - "x": 501, - "y": 980, - "width": 310, - "height": 28, - "page": 1, - "color": "hsl(196, 100%, 90%)", - "style": "", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [] - } ], - "parties": [ - { - "id": "1", - "name": "Party 1", - "email": "user@example.com", - "color": "hsl(196, 100%, 90%)", - "priority": 0 - } - ], - "document_id": "e1j8k49c-b726-4c9e-b168-m487cfaf6bcc" - } - }, - "global": { - "Demo2-Temp": { - "fields": [ - { - "id": "1765457294716-text", - "type": "text", - "x": 252, - "y": 188, - "width": 100, - "height": 25, - "page": 1, - "color": "hsl(196, 100%, 90%)", - "style": "both", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [] - }, - { - "id": "1765457303824-date", - "type": "date", - "x": 555, - "y": 245, - "width": 100, - "height": 25, - "page": 1, - "color": "hsl(196, 100%, 90%)", - "style": "both", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [] - } - ], - "parties": [ - { - "id": "1", - "name": "Party 1", - "email": "user@example.com", - "color": "hsl(196, 100%, 90%)", - "priority": 0 - } - ], - "document_id": "daac0bba-130b-4eeb-83fd-bi794882e972" - } - } + "files": { + "offset": 0, + "limit": 10, + "total_records": 6, + "next_offset": null, + "data": [ + { + "index": 6, + "type": "folder", + "name": "Sample Company", + "folderMappingId": "FMpX9aQz1K", + "items": [], + "created_by_name": "John Doe", + "created_by_email": "john.doe@sample.com", + "created_at": "2026-05-22T10:15:11.278619+00:00" + }, + { + "index": 5, + "type": "file", + "name": "I-9 Employment Verification.pdf", + "document_id": "11111111-aaaa-4fc4-bb96-a1503f9b9a1b", + "created_by_name": "John Doe", + "created_by_email": "john.doe@sample.com", + "created_at": "2026-05-21T12:23:16.767928+00:00" + }, + { + "index": 4, + "type": "folder", + "name": "HR Documents", + "folderMappingId": "HRxC7UM7xZ", + "items": [], + "created_by_name": "Jane Smith", + "created_by_email": "jane.smith@sample.com", + "created_at": "2026-05-19T14:00:37.429864+00:00" + }, + { + "index": 3, + "type": "file", + "name": "Tax_Form_1040.pdf", + "document_id": "22222222-bbbb-4d87-bc8c-7a1a5b5ae559", + "created_by_name": "Jane Smith", + "created_by_email": "jane.smith@sample.com", + "created_at": "2026-05-05T07:52:36.017015+00:00" + }, + { + "index": 2, + "type": "folder", + "name": "API Integration Docs", + "folderMappingId": "APIb9UxBQQ", + "items": [], + "created_by_name": "Alex Johnson", + "created_by_email": "alex.j@sample.com", + "created_at": "2026-04-29T15:04:00.116660+00:00" + }, + { + "index": 1, + "type": "folder", + "name": "Demo Workspace", + "folderMappingId": "DMoK7oQSB7B", + "items": [], + "created_by_name": "Admin User", + "created_by_email": "admin@sample.com", + "created_at": "2026-03-19T16:09:19.326984Z" + } + ] + } } -```` - - - +``` + +### Tags +`Files Operation` - +--- -### **Tags** -`Document Template` +# **ESign Editor APIs** + +Use ESign Editor APIs to create, edit, and manage electronic signature documents and workflows. --- -## ๐น2 Get Specific Document Template +## ๐น 1 Redirect URL (E-sign Editor) -Retrieve a specific template from the list of available document templates. +The **Redirect URL API** is used to securely generate a session for accessing the third-party PDF editor. +This API uses **API Key authentication only (no login required)** and returns a scoped bearer token along with the editor UI URL. + +--- ### **Endpoint** -```` -GET api/v1/documents/templates/{template_name} -```` - +GET /api/v1/documents/auth/redirect -### **Path Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `template_name` | string | โ Yes | Specifies the template name | +``` -### **Query Parameters** -| Name | Type | Required | Default | Description | -|-----|------|----------|-------------|-------------| -| `Scope` | string | โ No | `Myself` | Filter for a specific document scope | +--- + -> _Not required_ --> +### **Request Body** +> _Not required_ +--- ### **Response Body Example** -```` +``` + json { - "document_id": "doc-12345-demo", + "client_id": "client_xxxxxxxxxxx1bb23c0a105316", + "email": "sample@example.com", + "role": "admin", + "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.samplePayload.signature", + "ui_url": "https://demo.doculandemo.com/esign-editor", + "token_type": "bearer" +} - "parties": [ - { - "id": "party-1", - "name": "User One", - "email": "userone@example.com", - "color": "hsl(200, 80%, 85%)", - "priority": 1 - }, - { - "id": "party-2", - "name": "User Two", - "email": "usertwo@example.com", - "color": "hsl(120, 70%, 85%)", - "priority": 2 - } - ], +``` - "fields": [ - { - "id": "field-full-name", - "label": "Full Name", - "type": "text", - "value": "User One", - "position": { "x": 600, "y": 880 }, - "size": { "width": 350, "height": 40 }, - "page": 4, - "style": {}, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-address", - "label": "Address", - "type": "text", - "value": "123 Demo Street", - "position": { "x": 510, "y": 960 }, - "size": { "width": 520, "height": 40 }, - "page": 4, - "style": {}, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-date", - "label": "Date", - "type": "date", - "value": "2026-03-29", - "position": { "x": 520, "y": 1215 }, - "size": { "width": 490, "height": 40 }, - "page": 4, - "style": {}, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-email", - "label": "Email", - "type": "email", - "value": "userone@example.com", - "position": { "x": 580, "y": 1050 }, - "size": { "width": 370, "height": 45 }, - "page": 4, - "style": {}, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-signature", - "label": "Signature", - "type": "signature", - "value": "signature-placeholder", - "position": { "x": 570, "y": 1130 }, - "size": { "width": 390, "height": 65 }, - "page": 4, - "style": { - "mode": "draw-and-type" - }, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-initial-page-1", - "label": "Initial", - "type": "initial", - "value": "U1", - "position": { "x": 1080, "y": 1630 }, - "size": { "width": 100, "height": 30 }, - "page": 1, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-initial-page-2", - "label": "Initial", - "type": "initial", - "value": "U1", - "position": { "x": 1080, "y": 1620 }, - "size": { "width": 100, "height": 30 }, - "page": 2, - "assignedTo": "party-1", - "required": true - }, - { - "id": "field-initial-page-3", - "label": "Initial", - "type": "initial", - "value": "U1", - "position": { "x": 1070, "y": 1620 }, - "size": { "width": 100, "height": 30 }, - "page": 3, - "assignedTo": "party-1", - "required": true - } - ] +--- + +### **Response Fields** + +| Field | Type | Description | +|---------------|--------|----------------------------------------------------------| +| client_id | string | Unique identifier for the client | +| email | string | Associated client email | +| role | string | Role assigned to the client (e.g., admin) | +| access_token | string | Bearer token used for authentication in editor session | +| ui_url | string | Third-party PDF editor URL | +| token_type | string | Token type (always `bearer`) | + +--- + +### **Usage Flow** + +1. Call the API using your **X-API-Key** +2. Receive: + - `access_token` + - `ui_url` +3. Load `ui_url` inside an iframe or browser +4. Pass the following data to the editor via `postMessage` + +--- + +### **PostMessage Payload** + +``` + +json + +{ + "type": "INIT_DATA", + "payload": { + "document_id": "string", + "access_token": "string" + } } -```` - +--- -### **Tags** -`Document Template` +### **Important Notes** + +- No user login is required โ authentication is handled via API Key +- The `access_token` is **short-lived and scoped to the client** +- Ensure secure communication by restricting `postMessage` origin in production + +Example: + +``` + +postMessage(data, "https://demo.doculandemo.com"); + +``` + +--- + +### **Error Handling** + +- If the API call fails, retry with a valid API key +- Ensure the iframe is fully loaded before sending data +- Handle cases where `access_token` is not yet available + +--- + +### **Required Parameters** + +| Parameter | Required | Description | +|--------------|----------|----------------------------| +| document_id | โ Yes | Document to be edited | +| access_token | โ Yes | Bearer token for authenticating the session | +--- + +### Tags +`Files Operation` --- -## ๐น 3 Create Template + +## **Document Template APIs** + +This section describes the APIs used to retrieve document templates from the system. + +--- + +## ๐น 1 Create Template The Create Template API is used to create a reusable document template for workflows such as E-Sign and document generation. ### **Endpoint** ```` -GET api/v1/documents/status +POST /api/v1/documents/templates/ ```` --- @@ -1209,17 +1060,122 @@ json --- -## ๐น 4 Delete Template +## ๐น 2 Get All Templates -The **Delete Template API** is used to permanently remove a document template from the system. +Retrieve a list of all available document templates. ### **Endpoint** + ```` -DELETE /api/v1/documents/templates/{template_name} +GET /api/v1/documents/templates/all/ +```` + + + + + +### **Query Parameters** +| Name | Type | Required | Default | Description | +|-----|------|----------|-------------|-------------| +| `Scope` | string | โ No | `Myself` | Filter for a specific document scope | +| `Page` | intiger | โ No | Valid page values are integers starting from 1 | +| `Limit` | intiger | โ No | Limit must be a positive integer within the range of 1โ500 | +| `search`|string \| (string \| null) | โ No | Specifies the template name | + + + + + +### **Response Body Example** + +```` +json + +{ + "total": 7, + "page": 1, + "limit": 10, + "count": 7, + "data": [ + { + "template_name": "Employee Onboarding Agreement", + "document_id": "a1111111-8104-4c13-b292-c522096644ea" + }, + { + "template_name": "Vendor Contract Template", + "document_id": "b2222222-8104-4c13-b292-c522096644ea" + }, + { + "template_name": "Attestation & Compliance Form", + "document_id": "c3333333-ac77-4348-b952-8c2d3ad0ef17" + }, + { + "template_name": "Tax Form 1040", + "document_id": "d4444444-72f1-4d87-bc8c-7a1a5b5ae559" + }, + { + "template_name": "Dual Party Agreement", + "document_id": "e5555555-72f1-4d87-bc8c-7a1a5b5ae559" + }, + { + "template_name": "Internal Policy Template", + "document_id": "f6666666-72f1-4d87-bc8c-7a1a5b5ae559" + }, + { + "template_name": "F1040 Standard Template", + "document_id": "g7777777-72f1-4d87-bc8c-7a1a5b5ae559" + } + ] +} + +```` + + + + + + + + + + +### **Tags** +`Document Template` + +--- + +## ๐น3 Get Specific Template + +Retrieve a specific template from the list of available document templates. + +### **Endpoint** +```` +GET api/v1/documents/templates/{template_name} ```` + ### **Response Body Example** -``` +```` json { - "message": "Template 'Name of the Template' deleted." + "fields": [ + { + "id": "2000000000001-signature", + "type": "signature", + "x": 320, + "y": 880, + "width": 210, + "height": 60, + "page": 1, + "color": "hsl(210, 100%, 90%)", + "style": "both", + "label": null, + "partyId": "1", + "required": true, + "record": false, + "timestamp": true, + "imageMode": null, + "value": null, + "options": [], + "variable_registry": null + }, + { + "id": "2000000000002-text", + "type": "text", + "x": 410, + "y": 960, + "width": 180, + "height": 40, + "page": 1, + "color": "hsl(210, 100%, 90%)", + "style": "", + "label": null, + "partyId": "1", + "required": false, + "record": false, + "timestamp": true, + "imageMode": null, + "value": null, + "options": [], + "variable_registry": null + }, + { + "id": "2000000000003-date", + "type": "date", + "x": 370, + "y": 1040, + "width": 110, + "height": 32, + "page": 1, + "color": "hsl(210, 100%, 90%)", + "style": "", + "label": null, + "partyId": "1", + "required": false, + "record": false, + "timestamp": true, + "imageMode": null, + "value": null, + "options": [ + "MM/DD/YYYY", + "true" + ], + "variable_registry": null + } + ], + "parties": [ + { + "id": "1", + "name": "Signer One", + "email": "signer.one@example.com", + "color": "hsl(210, 100%, 90%)", + "priority": 0 + } + ], + "document_id": "c1111111-ac77-4348-b952-8c2d3ad0ef17" } -``` +```` + +### **Path Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `template_name` | string | โ Yes | Specifies the template name | + +### **Query Parameters** +| Name | Type | Required | Default | Description | +|-----|------|----------|-------------|-------------| +| `Scope` | string | โ No | `Myself` | Filter for a specific document scope | + + + + +### **Response Body Example** + +``` +json + +{ + "message": "Template 'Name of the Template' deleted." +} + +``` + + +### **Tags** +`Document Template` + +--- + + ## **Variable Registry APIs** The **Variable Registry APIs** are used to manage dynamic variables that can be applied to documents, templates, and E-Sign workflows. --- -## ๐น 1 Create Variable Registry +## ๐น 1 Create Variable The **Create Variable Registry API** is used to create and store variables that can be dynamically applied to documents, templates, and E-Sign workflows. @@ -1394,7 +1483,7 @@ json { "variable": "string", - "scope": "Current", + "scope": "Globla", "fields": [ { "type": "string", @@ -1416,7 +1505,7 @@ json { "message": "variables saved successfully", "variable": "string", - "scope": "Current" + "scope": "Global" } ``` -### **Path Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `variable` | string | โ Yes | Specifies the variable name | - ### **Query Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `Scope` | string | โ Yes | Filter for a specific document scope | -| `template_name` | string \| null | โ No | templateName is required only if scope=local | +| Name | Type | Required | Description | +| ------------------- | ------------------ | -------- | ---------------------------------------------------------- | +| `Scope`|string | โ Yes | Available values : Global, Local, Current | +| `variable`|string \| (string \| null) | โ No | If provided, only the matching field will be displayed. | +| `Page` | intiger | โ No | Valid page values are integers starting from 1 | +| `Limit` | intiger | โ No | Limit must be a positive integer within the range of 1โ500 | @@ -1474,17 +1560,78 @@ POST /api/v1/documents/variable-registry/{variable} json { - "variable": "Organization", - "scope": "Global", - "fields": [ + "total": 1, + "page": 1, + "limit": 10, + "variable_registry": [ { - "type": "Text", - "style": "string", - "label": "Name", - "value": "Virtualan Software" + "variable": "Organization", + "fields": [ + { + "type": "text", + "style": "", + "label": "Full-Name", + "value": "Acme Technologies Inc" + }, + { + "type": "text", + "style": "", + "label": "Address", + "value": "San Francisco, CA" + }, + { + "type": "text", + "style": "", + "label": "Address-1", + "value": "456 Market Street" + }, + { + "type": "text", + "style": "", + "label": "Address-2", + "value": "Suite 800, CA 94105" + }, + { + "type": "date", + "style": "", + "label": "Lease Start Date:", + "value": "January 1, 2026" + }, + { + "type": "date", + "style": "", + "label": "Lease End Date:", + "value": "December 31, 2026" + }, + { + "type": "text", + "style": "", + "label": "Monthly Rent:", + "value": "$3,500" + }, + { + "type": "text", + "style": "", + "label": "Security Deposit:", + "value": "$3,500" + }, + { + "type": "text", + "style": "", + "label": "Utilities:", + "value": "Internet, Electricity" + }, + { + "type": "text", + "style": "", + "label": "Name", + "value": "Acme Technologies LLC" + } + ] } ] } + ``` +### **Query Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `Scope` | string | โ Yes | Filter for a specific document scope | +| `template_name` | string \| null | โ No | templateName is required only if scope=local | + -### **Request Body** +### **Response Body Example** ``` json { - "variable": "string", + "variable": "Organization", "scope": "Global", "fields": [ { - "type": "string", + "type": "Text", "style": "string", - "label": "string", - "value": "string" + "label": "Name", + "value": "Acme Technologies" } - ], - "template_name": "string" -} -``` - -### **Response Body Example** - -``` -json - -{ - "message": "Variable fields replaced successfully", - "variable": "Organization Name", - "scope": "Global", - "replaced_fields": 1, - "total_fields": 1 + ] } ``` @@ -1581,14 +1718,14 @@ json --- -## ๐น 4 Delete Variable Registry +## ๐น 4 Update Variable -This API is used to **delete** an existing variable registry from the system. Once deleted, the variable and its associated data will no longer be available. +The **Update Variable Registry API** is used to modify existing variables in the registry, such as updating their name, value, or scope. ### **Endpoint** ```` -DELETE /api/v1/documents/variable-registry/{variable} +PUT /api/v1/documents/variable-registry/{variable} ```` --- @@ -1603,14 +1740,29 @@ DELETE /api/v1/documents/variable-registry/{variable} |-----|------|----------|-------------| | `variable` | string | โ Yes | Specifies the variable name | -### **Query Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `scope` | string | โ Yes | Filter for a specific document scope | -| `leable` | string \| null | โ No | entire variable registry file will be deleted. | + - + +### **Request Body** + +``` +json + +{ + "variable": "string", + "scope": "Global", + "fields": [ + { + "type": "string", + "style": "string", + "label": "string", + "value": "string" + } + ], + "template_name": "string" +} +``` ### **Response Body Example** @@ -1618,9 +1770,11 @@ DELETE /api/v1/documents/variable-registry/{variable} json { - "message": "variable field deleted", + "message": "Variable fields replaced successfully", "variable": "Organization Name", - "scope": "Global" + "scope": "Global", + "replaced_fields": 1, + "total_fields": 1 } ``` @@ -1641,14 +1795,14 @@ json --- -## ๐น 5 Get All Variable Registry +## ๐น 5 Delete Variable -This API retrieves a **list of all variable registries** available in the system. It can be used to view, manage, and reference variables across templates or workflows. +This API is used to **delete** an existing variable registry from the system. Once deleted, the variable and its associated data will no longer be available. ### **Endpoint** ```` -GET /api/v1/documents/variable-registry +DELETE /api/v1/documents/variable-registry/{variable} ```` --- @@ -1658,11 +1812,16 @@ GET /api/v1/documents/variable-registry | `x-api-key` | string | โ Yes | API key used to authenticate the request | | `Content type` | application/json | โ Yes | Specifies that the API response is returned in JSON format | --> +### **Path Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `variable` | string | โ Yes | Specifies the variable name | + ### **Query Parameters** | Name | Type | Required | Description | |-----|------|----------|-------------| | `scope` | string | โ Yes | Filter for a specific document scope | -| `variable` | string \| null | โ No | entire variable registry file will be deleted. | +| `leable` | string \| null | โ No | entire variable registry file will be deleted. | @@ -1673,111 +1832,9 @@ GET /api/v1/documents/variable-registry json { - "variable_registry": [ - { - "variable": "Company Details", - "fields": [ - { - "type": "text", - "style": "", - "label": "Name", - "value": "User Company One" - }, - { - "type": "email", - "style": "", - "label": "Email", - "value": "contact@companyone.com" - }, - { - "type": "text", - "style": "", - "label": "Company Name", - "value": "Company One Pvt Ltd" - } - ] - }, - { - "variable": "Company Details 2", - "fields": [ - { - "type": "text", - "style": "", - "label": "Company Name", - "value": "Company Two Pvt Ltd" - } - ] - }, - { - "variable": "Company Details 3", - "fields": [ - { - "type": "text", - "style": "", - "label": "Company Name", - "value": "Company Three LLC" - } - ] - }, - { - "variable": "Company", - "fields": [ - { - "type": "dropdown", - "style": "", - "label": "Global Dropdown", - "value": "Option One" - }, - { - "type": "date", - "style": "", - "label": "Global Date", - "value": "2026-12-12" - }, - { - "type": "email", - "style": "", - "label": "Global Personal Email", - "value": "userone@example.com" - }, - { - "type": "number", - "style": "", - "label": "Global Phone Number", - "value": "9876543210" - } - ] - }, - { - "variable": "Employee Info", - "fields": [ - { - "type": "text", - "style": "", - "label": "Name", - "value": "User One" - }, - { - "type": "email", - "style": "", - "label": "Official Email ID", - "value": "userone@companyone.com" - }, - { - "type": "date", - "style": "", - "label": "Start Date", - "value": "2025-12-25" - }, - { - "type": "dropdown", - "style": "", - "label": "Gender", - "value": "Option One" - } - ] - } - ] + "message": "variable field deleted", + "variable": "Organization Name", + "scope": "Global" } ``` @@ -1798,7 +1855,10 @@ json --- -## ๐น 6 Get Variable Registry Values + +--- + + -### **Path Parameters** + -### **Response Body Example** + -### **Tags** + ## **Document Tracker APIs** This API allows clients to retrieve the current status of a document using its tracking and document identifiers. --- +## ๐น 1 Send Document -## ๐น 1 Get Over All Status - -Retrieves a list of all document statuses. +Send a document to one or more parties for review or signing. ### **Endpoint** -```` -GET api/v1/documents/status + +```` +POST api/v1/documents/send ```` ---- + - -### **Response Body Example** +### **Request Body Example** ```` json { - "total_documents": 7, - "status_counts": { - "completed": 1, - "cancelled": 1, - "expired": 1, - "in_progress": 1, - "declined": 1, - "shared": 1, - "scheduled": 1 + "document_id": "string", + "fields": [ + { + "id": "string", + "type": "string", + "x": 0, + "y": 0, + "width": 0, + "height": 0, + "page": 0, + "color": "string", + "style": "string", + "label": "string", + "partyId": "string", + "required": false, + "record": false, + "timestamp": false, + "options": [ + "string" + ], + "variable_registry": { + "variable": "", + "label": "string", + "scope": "string", + "type": "string", + "value": "" + } + } + ], + "pages": [ + { + "page_number": 0, + "page_width": 0, + "page_height": 0 + } + ], + "parties": [ + { + "id": "string", + "name": "string", + "email": "string", + "color": "string", + "priority": 0 + } + ], + "holder": { + "name": "string", + "email": "string" }, - "documents": [ + "cc_emails": [ + "user@example.com" + ], + "client_info": { + "ip": "string", + "city": "string", + "region": "string", + "country": "string", + "timezone": "string", + "timestamp": "string", + "browser": "string", + "device": "string", + "os": "string" + }, + "email_response": [ { - "document_id": "00f3435b-460a-40e0-a2a9-5547450b82f1", - "tracking_id": "0254861d-bc0c-463f-9ab5-76007a852811", - "validity_date": "2025-12-12T18:29:59.000Z", - "status": "completed", - "datetime": "2025-12-12T16:12:49.689499+00:00", - "parties": [ - { - "id": "1", - "name": "User One", - "email": "user.one@example.test", - "color": "hsl(196, 100%, 90%)", - "status": { - "sent": [ - { - "isSent": true, - "dateTime": "2025-12-12T16:00:50.797238+00:00", - "party_name": "User One", - "party_email": "user.one@example.test", - "ip": "34.201.55.91", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "New York", - "region": "New York", - "country": "US", - "timestamp": "2025-12-12T16:00:31.616Z", - "timezone": "America/New_York" - } - } - ], - "opened": [ - { - "isOpened": true, - "dateTime": "2025-12-12T16:11:04.313365+00:00", - "party_name": "User One", - "party_email": "user.one@example.test", - "ip": "34.201.45.91", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "New York", - "region": "New York", - "country": "US", - "timestamp": "2025-12-12T16:10:46.089Z", - "timezone": "America/New_York" - } - } - ], - "signed": [ - { - "isSigned": true, - "dateTime": "2025-12-12T16:12:49.689499+00:00", - "party_name": "User One", - "party_email": "user.one@example.test", - "ip": "34.201.45.91", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "New York", - "region": "New York", - "country": "US", - "timestamp": "2025-12-12T16:12:29.632Z", - "timezone": "America/New_York" - } - } - ] - } - } - ] - }, - { - "document_id": "011baa59-f55b-4fed-b15c-d1653fb72e46", - "tracking_id": "0e3bc8c4-b7b2-4471-bcf4-03756c17dae7", - "validity_date": "2026-02-28T18:29:59.000Z", - "status": "cancelled", - "datetime": "2025-12-31T21:48:44.275476+00:00", - "parties": [ - { - "id": "1", - "name": "User Two", - "email": "user.two@example.test", - "color": null, - "status": { - "cancelled": [ - { - "isCancelled": true, - "reason": "Invalid document format", - "dateTime": "2025-12-31T21:48:44.275476+00:00", - "party_name": "User Two", - "party_email": "user.two@example.test", - "ip": "18.211.90.44", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "Austin", - "region": "Texas", - "country": "US", - "timestamp": "2025-12-31T21:48:38.999Z", - "timezone": "America/Chicago" - } - } - ] - } - } - ] - }, - { - "document_id": "92c79f09-76c5-4cf8-bab6-9b98721ncefc", - "tracking_id": "ac532311-6c71-4f65-aea6-a6chnj77faefa", - "validity_date": "2026-12-12T18:29:59.000Z", - "status": "scheduled", - "datetime": "2026-01-06T13:42:49.000600+00:00", - "parties": [ - { - "id": "1", - "name": "Signer One", - "email": "signer.one@example.test", - "color": "hsl(196, 100%, 90%)", - "status": { - "scheduled": [ - { - "isScheduled": true, - "dateTime": "2026-01-06T13:42:49.000600+00:00", - "party_name": "Signer One", - "party_email": "signer.one@example.test", - "ip": "34.228.4.221", - "browser": "HeadlessChrome", - "os": "Linux", - "device": "PC/Laptop", - "location": { - "city": "Ashburn", - "region": "Virginia", - "country": "US", - "timestamp": "2026-01-06T13:42:48.584Z", - "timezone": "America/New_York" - } - } - ] - } - }, - { - "id": "2", - "name": "Signer Two", - "email": "signer.two@example.test", - "color": "hsl(80, 70%, 90%)", - "status": {} - } - ] - }, - { - "document_id": "021fc34b-b267-43ba-a7af-455286ebe90b", - "tracking_id": "0e8aa699-9114-4cbb-a479-m50cf693f988", - "validity_date": "2025-12-10T23:59:59.000Z", - "status": "in_progress", - "datetime": "2025-12-10T16:42:15.133172+00:00", - "parties": [ - { - "id": "1", - "name": "User Three", - "email": "user.three@example.test", - "color": "hsl(196, 100%, 90%)", - "status": {} - } - ] - }, - { - "document_id": "92c79f09-76c5-4cf8-bab6-9b9523565acefc", - "tracking_id": "05433b6b-3f7e-4d7f-a333-8c4b258gf598a8", - "validity_date": "2026-03-01T18:29:59.000Z", - "status": "shared", - "datetime": "2026-01-06T13:15:29.208286+00:00", - "parties": [ - { - "id": "1", - "name": "User Four", - "email": "user.four@example.test", - "color": "#ccf1ffff", - "status": { - "shared": [ - { - "isShared": true, - "dateTime": "2026-01-06T13:15:29.208286+00:00", - "party_name": "User Four", - "party_email": "user.four@example.test", - "ip": "44.193.15.98", - "browser": "Chrome", - "os": "Linux", - "device": "PC/Laptop", - "location": { - "city": "Ashburn", - "region": "Virginia", - "country": "US", - "timestamp": "2026-01-06T13:15:25.699Z", - "timezone": "America/New_York" - } - } - ] - } - } - ] + "email_subject": "Request for Electronic Signature โ Action Required", + "email_body": "\nDear [Fullname],\n\nYou have received a document that requires your electronic signature.\n\nPlease review the attached document carefully and complete the e-signature process at your earliest convenience. The electronic signature is legally valid and securely recorded in compliance with applicable regulations.\n[Document Link]\nIf you have any questions or require clarification, please contact the sender directly.\n\nThank you for your prompt attention to this matter.\n\nBest regards,\nYour Organization Name\n" } - ] + ], + "signing_order": "ordered", + "otp_enabled": true, + "certificate_enabled": true, + "wet_sign": false, + "validityDate": "string", + "scheduled_datetime": "2026-05-22T18:38:34.753Z", + "remainder": 0, + "is_variable_registry": false } +```` + +### **Response Body Example** + +```` +json + +{ + "tracking_id": "036589d1-45c7-4c7f-b83c-cde17bg5yhj72c", + "status": "sent" +} ```` - - - - ### **Tags** + `Document Tracker` --- -## ๐น 2 Get Document Status By Party +## ๐น 2 Sign Document -Retrieve the document status for an individual party using tracking, document, and party identifiers. +Submit **signed field values** for a document by a specific party. -### **Endpoint** +### **Endpoint** ```` -GET api/v1/documents/party-status +POST /api/v1/documents/sign ```` - - +| `Content type` | application/json | โ Yes | Specifies that the API response is returned in JSON format | ### **Query Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | -| `document_id` | string | โ Yes | Unique identifier of the document | -| `party_id` | string | โ Yes | Unique identifier of the party | +> _None_ --> +### **Request Body Example** +```` +json +{ + "document_id": "string", + "tracking_id": "string", + "party_id": "string", + "fields": [ + { + "fields_ids": [ + { + "field_id": "string", + "font": "string", + "style": "string", + "value": "string" + } + ] + } + ], + "client_info": { + "ip": "string", + "city": "string", + "region": "string", + "country": "string", + "timezone": "string", + "timestamp": "string", + "browser": "string", + "device": "string", + "os": "string" + } +} - +```` ### **Response Body Example** @@ -2179,137 +2126,17 @@ GET api/v1/documents/party-status json { - "tracking_id": "09aa3a64-fd50-4afa-a79e-e70ek5cea2a6", - "document_id": "form-doc-dded726c-a117-42e3-9df9-a3a3c5hg91b2", - "validity_date": "2025-12-11T18:29:59.000Z", - "tracking_status": { "status": "completed", - "dateTime": "2025-12-11T14:29:10.596474+00:00", - "ip": "34.102.136.180", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "San Francisco", - "region": "California", - "country": "US", - "timestamp": "2025-12-11T14:29:09.599Z", - "timezone": "America/Los_Angeles" - } - }, - "party_id": "1", - "party_info": { - "id": "1", - "name": "John Doe", - "email": "john.doe@example.com", - "color": "hsl(196, 100%, 90%)", - "status": { - "sent": [ - { - "isSent": true, - "dateTime": "2025-12-11T14:26:25.598788+00:00", - "party_name": "John Doe", - "party_email": "john.doe@example.com", - "ip": "34.102.136.180", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "San Francisco", - "region": "California", - "country": "US", - "timestamp": "2025-12-11T14:26:22.091Z", - "timezone": "America/Los_Angeles" - } - } - ], - "opened": [ - { - "isOpened": true, - "dateTime": "2025-12-11T14:28:46.051332+00:00", - "party_name": "John Doe", - "party_email": "john.doe@example.com", - "ip": "34.102.136.180", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "San Francisco", - "region": "California", - "country": "US", - "timestamp": "2025-12-11T14:28:46.738Z", - "timezone": "America/Los_Angeles" - } - } - ], - "signed": [ - { - "isSigned": true, - "dateTime": "2025-12-11T14:29:10.596474+00:00", - "party_name": "John Doe", - "party_email": "john.doe@example.com", - "ip": "34.102.136.180", - "browser": "Chrome", - "os": "Windows 11", - "device": "PC/Laptop", - "location": { - "city": "San Francisco", - "region": "California", - "country": "US", - "timestamp": "2025-12-11T14:29:09.599Z", - "timezone": "America/Los_Angeles" - } - } - ] - } - }, - "fields": [ - { - "id": "176544595874381-date", - "type": "date", - "x": 545, - "y": 852, - "width": 100, - "height": 25, - "page": 0, - "color": "hsl(196, 100%, 90%)", - "style": "both", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [], - "signed": true, - "value": "12/11/2025", - "signed_at": "2025-12-11T14:29:08.922733+00:00" - }, - { - "id": "1765446872111-date", - "type": "date", - "x": 625, - "y": 297, - "width": 100, - "height": 25, - "page": 0, - "color": "hsl(196, 100%, 90%)", - "style": "both", - "partyId": "1", - "required": false, - "record": false, - "timestamp": false, - "options": [], - "signed": true, - "value": "12/11/2025", - "signed_at": "2025-12-11T14:29:08.922758+00:00" - } - ], - "otp_enabled": null, - "wet_sign": false + "message": "Signature processed and metadata updated", + "document_id": "nhy67e1e-5d05-4cf8-99ba-e62994f3ceb0", + "tracking_id": "u7y6b7c1-c683-4299-8eb6-7806e8ac59a0", + "signed": true } ```` - - -### **Example** - -> tracking_id=13c34dd9-7f31-4s3d-9b1c-b006ehy587f - -> document_id=e1bfqwe9-a677-43ad-b211-0b4afbj55a77 - -> party_id=1 - ### **Tags** -`Document Tracker` +`Document Tracker` --- -## ๐น 3 Resend E-Sign +## ๐น 3 Resend Document Link Resend the document access or signing link for an existing document using its document and tracking identifiers. @@ -2352,10 +2169,10 @@ POST api/v1/documents/resend | `Content type` | application/json | โ Yes | Specifies that the API response is returned in JSON format | --> -### **Query Parameters** + ### **Request Body Example** @@ -2406,9 +2223,9 @@ json | 200 | Successful response | | 422 | Validation error | --> -### **Example** + ### **Tags** @@ -2417,80 +2234,16 @@ json --- -## ๐น 4 Download Signed Document - -Retrieve the final signed PDF document. - -### **Endpoint** - -```` -GET api/v1/documents/signed-pdf -```` - - - -### **Query Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | -| `document_id` | string | โ Yes | Unique identifier of the document | - - - - -### **Response Example** - -This API returns the **signed document** in **PDF format.** - - A **sample signed document** is provided below for reference. - - You may **download** the sample PDF for structure and content of the response. - - -- - ๐ Download Sample PDF - -
- - - - -### **Example** - - -> tracking_id=a2bfeeb9-a677-43ad-b211-0b4afby76a77 - -> document_id=fyo50e1e-5d05-4cf8-99ba-e62994y7ceb0 - -### **Tags** - -`Document Tracker` - ---- +## ๐น 4 Log Action API -## ๐น 5 Download Certificate +Log document-related actions such as Cancel, Decline, and other workflow events for tracking and audit purposes. -Retrieve the completion certificate for a fully processed document. +### Log Action Cancel ### **Endpoint** ```` -GET api/v1/documents/complete-certificates +POST api/v1/documents/log-action ```` + +### **Request Body Example** -### **Query Parameters** -| Name | Type | Required | Description | -|-----|------|----------|-------------| -| `document_id` | string | โ Yes | Unique identifier of the document | -| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | - +```` +json +{ + "document_id": "687u5804-d360-4e98-802f-d5531htyrf675abd8", + "tracking_id": "7054eab3-c0f2-40e2-9b9e-731c1444df6d", + "action": "CANCELLED", + "party_id": "1", + "reason": "User requested cancellation", + "client_info": { + "ip": "3.128.94.52", + "city": "Lisle", + "region": "Illinois", + "country": "US", + "timezone": "America/Chicago", + "timestamp": "2025-12-21T04:14:01.699Z", + "browser": "Chrome", + "device": "PC/Laptop", + "os": "Windows 10" + }, + "holder": { + "name": "John Doe", + "email": "johndoe@virtualansoftware.com", + "address": { + "address_line_1": "3333 Warrenville Road", + "address_line_2": "Suite 200", + "city": "Lisle", + "country": "USA", + "state": "IL", + "zipcode": "60532" + } + } +} - -### **Response Example** +```` - This API returns **Certificate of Completion** in **PDF** format, serving as proof of the completed signing process. - - A sample certificate is attached below for reference. +### **Response Body Example** - You may **download** the sample PDF for detailed information. +```` +json - -- - ๐ Download Sample PDF - -
+{ + "message": "Action 'CANCELLED' logged successfully." +} +```` - - -### **Example** - -> document_id=fce50e1e-5d05-4cf8-99ba-b6797y6tceb0 - -> tracking_id=e1bfeeb9-a677-43ad-f411-0b4afbj71a77 + ### **Tags** @@ -2552,9 +2323,7 @@ GET api/v1/documents/complete-certificates --- -## ๐น 6 Log Action - -Log a document-related action such as cancellation, rejection, or other workflow events. +### Log Action Decline ### **Endpoint** @@ -2579,7 +2348,7 @@ json { "document_id": "687u5804-d360-4e98-802f-d5531htyrf675abd8", "tracking_id": "7054eab3-c0f2-40e2-9b9e-731c1444df6d", - "action": "CANCELLED", + "action": "DECLINED", "party_id": "1", "reason": "User requested cancellation", "client_info": { @@ -2616,7 +2385,7 @@ json json { - "message": "Action 'CANCELLED' logged successfully." + "message": "Action 'DECLINED' logged successfully." } ```` @@ -2639,102 +2408,520 @@ json --- -## ๐น 7 Send E-Sign - -Send a document to one or more parties for review or signing. +## ๐น 5 Get Tracking Ids -### **Endpoint** +Use the **Tracking ID** to fetch the current status of a document and track its progress through the E-Sign workflow. +### **Endpoint** ```` -POST api/v1/documents/send +GET api/v1/documents/tracking-ids/ ```` ### **Query Parameters** -| Name | Type | Required | Default | Description | -|-----|------|----------|---------|-------------| -| `store_as_default` | boolean | โ No | `false` | Store configuration as default | +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `document_id` | string | โ Yes | Unique identifier of the document | +| `status`|string \| (string \| null) | โ No | Retrieve document tracking IDs based on the specified status | +| `page` | intiger | โ No | Specifies the page number | +| `limit` | intiger | โ No | Specifies the number of records per page | -### **Request Body Example** +### **Response Body Example** -```` +``` json { - "document_id": "fct60e1e-5d05-4cf8-99ja-e65258f3ceb0", - "validityDate": "2025-12-31T18:29:59.000Z", - "remainder": 0, - "parties": - [ - { - "id": "1", - "name": "Sarah Williams", - "email": "sarah.williams@virtualansoftware.com" - } - ], - "email_response": [ + "page": 1, + "limit": 10, + "total": 4, + + "tracking_ids": [ { - "email_subject": ": Summary of Your API Integration Check", - "email_body": "Hi [Fullname], We have completed the...[Documnet Link]" - } - ], - "cc_emails": [ - "jason.brown@virtualansoftware.com" - ], - "client_info": { - "ip": "3.156.94.85", - "city": "Lisle", - "region": "Illinois", - "country": "US", - "timezone": "America/Chicago", - "timestamp": "2025-12-21T04:14:01.699Z", - "aws_region": "us-east-2", - "browser": "Chrome", - "device": "PC/Laptop", - "os": "Windows 10" - }, - "holder": { - "name": "John Doe", - "email": "johndoe@virtualansoftware.com", - "address": { - "address_line_1": "3333 Warrenville Road", - "address_line_2": "Suite 200", - "city": "Lisle", - "country": "USA", - "state": "IL", - "zipcode": "60532" + "tracking_id": "track-001", + "status": "expired", + "updated_at": "2026-01-06T15:08:28Z", + "parties": [ + { + "party_id": "party-1", + "name": "User One", + "email": "userone@example.com" + } + ] + }, + { + "tracking_id": "track-002", + "status": "expired", + "updated_at": "2026-01-06T15:08:28Z", + "parties": [ + { + "party_id": "party-2", + "name": "User Two", + "email": "usertwo@example.com" + } + ] + }, + { + "tracking_id": "track-003", + "status": "cancelled", + "updated_at": "2025-10-14T14:26:49Z", + "parties": [ + { + "party_id": "party-3", + "name": "User Three", + "email": "userthree@example.com" + } + ] + }, + { + "tracking_id": "track-004", + "status": "expired", + "updated_at": "2025-10-18T04:59:59Z", + "parties": [ + { + "party_id": "party-4", + "name": "User Four", + "email": "userfour@example.com" + } + ] } + ] +} + +``` + + + + +### **Tags** + +`Document Tracker` + +--- + +## ๐น 6 Get Document Status + +Retrieves a list of all document statuses. + +### **Endpoint** + +```` +GET api/v1/documents/status/ +```` +--- + + + +### **Query Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `document_id` | string | โ Yes | Unique identifier of the document | +| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | + + + +### **Response Body Example** + +```` +json + +{ + "total_documents": 7, + "status_counts": { + "completed": 1, + "cancelled": 1, + "expired": 1, + "in_progress": 1, + "declined": 1, + "shared": 1, + "scheduled": 1 }, - "otp_enabled": false, - "template_info": { - "template_type": "Myself", - "template_name": "Testing-template" - } + "documents": [ + { + "document_id": "00f3435b-460a-40e0-a2a9-5547450b82f1", + "tracking_id": "0254861d-bc0c-463f-9ab5-76007a852811", + "validity_date": "2025-12-12T18:29:59.000Z", + "status": "completed", + "datetime": "2025-12-12T16:12:49.689499+00:00", + "parties": [ + { + "id": "1", + "name": "User One", + "email": "user.one@example.test", + "color": "hsl(196, 100%, 90%)", + "status": { + "sent": [ + { + "isSent": true, + "dateTime": "2025-12-12T16:00:50.797238+00:00", + "party_name": "User One", + "party_email": "user.one@example.test", + "ip": "34.201.55.91", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "New York", + "region": "New York", + "country": "US", + "timestamp": "2025-12-12T16:00:31.616Z", + "timezone": "America/New_York" + } + } + ], + "opened": [ + { + "isOpened": true, + "dateTime": "2025-12-12T16:11:04.313365+00:00", + "party_name": "User One", + "party_email": "user.one@example.test", + "ip": "34.201.45.91", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "New York", + "region": "New York", + "country": "US", + "timestamp": "2025-12-12T16:10:46.089Z", + "timezone": "America/New_York" + } + } + ], + "signed": [ + { + "isSigned": true, + "dateTime": "2025-12-12T16:12:49.689499+00:00", + "party_name": "User One", + "party_email": "user.one@example.test", + "ip": "34.201.45.91", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "New York", + "region": "New York", + "country": "US", + "timestamp": "2025-12-12T16:12:29.632Z", + "timezone": "America/New_York" + } + } + ] + } + } + ] + }, + { + "document_id": "011baa59-f55b-4fed-b15c-d1653fb72e46", + "tracking_id": "0e3bc8c4-b7b2-4471-bcf4-03756c17dae7", + "validity_date": "2026-02-28T18:29:59.000Z", + "status": "cancelled", + "datetime": "2025-12-31T21:48:44.275476+00:00", + "parties": [ + { + "id": "1", + "name": "User Two", + "email": "user.two@example.test", + "color": null, + "status": { + "cancelled": [ + { + "isCancelled": true, + "reason": "Invalid document format", + "dateTime": "2025-12-31T21:48:44.275476+00:00", + "party_name": "User Two", + "party_email": "user.two@example.test", + "ip": "18.211.90.44", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "Austin", + "region": "Texas", + "country": "US", + "timestamp": "2025-12-31T21:48:38.999Z", + "timezone": "America/Chicago" + } + } + ] + } + } + ] + }, + { + "document_id": "92c79f09-76c5-4cf8-bab6-9b98721ncefc", + "tracking_id": "ac532311-6c71-4f65-aea6-a6chnj77faefa", + "validity_date": "2026-12-12T18:29:59.000Z", + "status": "scheduled", + "datetime": "2026-01-06T13:42:49.000600+00:00", + "parties": [ + { + "id": "1", + "name": "Signer One", + "email": "signer.one@example.test", + "color": "hsl(196, 100%, 90%)", + "status": { + "scheduled": [ + { + "isScheduled": true, + "dateTime": "2026-01-06T13:42:49.000600+00:00", + "party_name": "Signer One", + "party_email": "signer.one@example.test", + "ip": "34.228.4.221", + "browser": "HeadlessChrome", + "os": "Linux", + "device": "PC/Laptop", + "location": { + "city": "Ashburn", + "region": "Virginia", + "country": "US", + "timestamp": "2026-01-06T13:42:48.584Z", + "timezone": "America/New_York" + } + } + ] + } + }, + { + "id": "2", + "name": "Signer Two", + "email": "signer.two@example.test", + "color": "hsl(80, 70%, 90%)", + "status": {} + } + ] + }, + { + "document_id": "021fc34b-b267-43ba-a7af-455286ebe90b", + "tracking_id": "0e8aa699-9114-4cbb-a479-m50cf693f988", + "validity_date": "2025-12-10T23:59:59.000Z", + "status": "in_progress", + "datetime": "2025-12-10T16:42:15.133172+00:00", + "parties": [ + { + "id": "1", + "name": "User Three", + "email": "user.three@example.test", + "color": "hsl(196, 100%, 90%)", + "status": {} + } + ] + }, + { + "document_id": "92c79f09-76c5-4cf8-bab6-9b9523565acefc", + "tracking_id": "05433b6b-3f7e-4d7f-a333-8c4b258gf598a8", + "validity_date": "2026-03-01T18:29:59.000Z", + "status": "shared", + "datetime": "2026-01-06T13:15:29.208286+00:00", + "parties": [ + { + "id": "1", + "name": "User Four", + "email": "user.four@example.test", + "color": "#ccf1ffff", + "status": { + "shared": [ + { + "isShared": true, + "dateTime": "2026-01-06T13:15:29.208286+00:00", + "party_name": "User Four", + "party_email": "user.four@example.test", + "ip": "44.193.15.98", + "browser": "Chrome", + "os": "Linux", + "device": "PC/Laptop", + "location": { + "city": "Ashburn", + "region": "Virginia", + "country": "US", + "timestamp": "2026-01-06T13:15:25.699Z", + "timezone": "America/New_York" + } + } + ] + } + } + ] + } + ] } + +```` + + + + +**Example** + + +> tracking_id=e1ewaec4-a667-43dd-b221-0b4qwbh54a77 + +> document_id=13n25bd9-70p1-4c8d-9b1c-a9066eda140f + + +### **Tags** +`Document Tracker` + +--- + +## ๐น 7 Get Party Status + +Retrieve the document status for an individual party using tracking, document, and party identifiers. + +### **Endpoint** + +```` +GET api/v1/documents/party-status/ ```` + + + + +### **Query Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | +| `document_id` | string | โ Yes | Unique identifier of the document | +| `party_id` | string | โ Yes | Unique identifier of the party | + + + + + + + ### **Response Body Example** ```` json { - "tracking_id": "036589d1-45c7-4c7f-b83c-cde17bg5yhj72c", - "status": "sent" + "tracking_id": "f1234567-abcd-4e89-9123-456789abcdef", + "document_id": "d9876543-1234-4abc-8def-1234567890ab", + "validity_date": "2027-12-31T23:59:59.000Z", + "tracking_status": { + "status": "completed", + "dateTime": "2026-06-15T10:45:12.123456+00:00", + "ip": "203.0.113.45", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "Chicago", + "region": "Illinois", + "country": "US", + "timestamp": "2026-06-15T10:45:08.000Z", + "timezone": "America/Chicago" + } + }, + "party_info": { + "id": "1", + "name": "Jane Smith", + "email": "jane.smith@example.com", + "color": "hsl(210, 100%, 90%)", + "priority": 1, + "status": { + "sent": [ + { + "isSent": true, + "dateTime": "2026-06-15T10:30:00.000000+00:00", + "party_name": "Jane Smith", + "party_email": "jane.smith@example.com", + "ip": "203.0.113.40", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "Chicago", + "region": "Illinois", + "country": "US", + "timestamp": "2026-06-15T10:29:55.000Z", + "timezone": "America/Chicago" + } + } + ], + "opened": [ + { + "isOpened": true, + "dateTime": "2026-06-15T10:35:15.000000+00:00", + "party_name": "Jane Smith", + "party_email": "jane.smith@example.com", + "ip": "203.0.113.45", + "browser": "Chrome", + "os": "Windows 11", + "device": "PC/Laptop", + "location": { + "city": "Chicago", + "region": "Illinois", + "country": "US", + "timestamp": "2026-06-15T10:35:10.000Z", + "timezone": "America/Chicago" + } + } + ], + "signed": [ + { + "isSigned": true, + "dateTime": "2026-06-15T10:40:30.000000+00:00", + "ip": "203.0.113.45", + "browser": "Chrome", + "os": "Windows 11", + "location": { + "city": "Chicago", + "region": "Illinois", + "country": "US", + "timestamp": "2026-06-15T10:40:25.000Z", + "timezone": "America/Chicago" + }, + "party_name": "Jane Smith", + "party_email": "jane.smith@example.com", + "device": "PC/Laptop" + } + ] + } + } } ```` -### **Tags** + +### **Example** + +> tracking_id=13c34dd9-7f31-4s3d-9b1c-b006ehy587f + +> document_id=e1bfqwe9-a677-43ad-b211-0b4afbj55a77 + +> party_id=1 + +### **Tags** `Document Tracker` ---- -## ๐น 8 Sign API +--- -Submit **signed field values** for a document by a specific party. +## ๐น 8 Get Signed Pdf +Retrieve the final signed PDF document. ### **Endpoint** + ```` -POST api/v1/documents/sign +GET api/v1/documents/signed-pdf/ ```` - - -### **Request Body Example** +| `Content type` | application/json | โ Yes | Specifies that the API response is returned in JSON format | --> -```` -json -{ - "tracking_id": "98258l97c-56f6-4ffa-9c6e-62efbae24b36", - "document_id": "fchgt56yhje1e-5d05-4cf8-99ba-e62994f3ceb0", - "party_id": "1", - "fields": [ - { - "fields_ids": [ - { - "field_id": "1766751979232-text", - "value": "Maxin", - "font": "", - "style": "" - } - ] - } - ], - "client_info": { - "ip": "3.128.94.52", - "city": "Lisle", - "region": "Illinois", - "country": "US", - "timezone": "America/Chicago", - "timestamp": "2025-12-27T04:02:59.239Z", - "aws_region": "us-east-2", - "browser": "Chrome", - "device": "PC/Laptop", - "os": "Windows 10" - } -} +### **Query Parameters** +| Name | Type | Required | Description | +|-----|------|----------|-------------| +| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | +| `document_id` | string | โ Yes | Unique identifier of the document | -```` + -### **Response Body Example** +### **Response Example** -```` -json +This API returns the **signed document** in **PDF format.** -{ - "status": "completed", - "message": "Signature processed and metadata updated", - "document_id": "nhy67e1e-5d05-4cf8-99ba-e62994f3ceb0", - "tracking_id": "u7y6b7c1-c683-4299-8eb6-7806e8ac59a0", - "signed": true -} + A **sample signed document** is provided below for reference. + + You may **download** the sample PDF for structure and content of the response. -```` + ++ + ๐ Download Sample PDF + +
+ +### **Example** + + +> tracking_id=a2bfeeb9-a677-43ad-b211-0b4afby76a77 + +> document_id=fyo50e1e-5d05-4cf8-99ba-e62994y7ceb0 + ### **Tags** `Document Tracker` --- -## ๐น 9 Tracking IDs API - -Use the **Tracking ID** to fetch the current status of a document and track its progress through the E-Sign workflow. +## ๐น 9 Get Completed Certificate +Retrieve the completion certificate for a fully processed document. ### **Endpoint** + ```` -POST api/v1/documents/tracking-ids/ +GET api/v1/documents/complete-certificates/ ```` + + ### **Query Parameters** | Name | Type | Required | Description | |-----|------|----------|-------------| | `document_id` | string | โ Yes | Unique identifier of the document | -| `page` | intiger | โ Yes | Specifies the page number | -| `limit` | intiger | โ Yes | Specifies the number of records per page | +| `tracking_id` | string | โ Yes | Unique tracking identifier of the document | -### **Response Body Example** -``` -json + -{ - "page": 1, - "limit": 10, - "total": 4, +### **Response Example** - "tracking_ids": [ - { - "tracking_id": "track-001", - "status": "expired", - "updated_at": "2026-01-06T15:08:28Z", - "parties": [ - { - "party_id": "party-1", - "name": "User One", - "email": "userone@example.com" - } - ] - }, - { - "tracking_id": "track-002", - "status": "expired", - "updated_at": "2026-01-06T15:08:28Z", - "parties": [ - { - "party_id": "party-2", - "name": "User Two", - "email": "usertwo@example.com" - } - ] - }, - { - "tracking_id": "track-003", - "status": "cancelled", - "updated_at": "2025-10-14T14:26:49Z", - "parties": [ - { - "party_id": "party-3", - "name": "User Three", - "email": "userthree@example.com" - } - ] - }, - { - "tracking_id": "track-004", - "status": "expired", - "updated_at": "2025-10-18T04:59:59Z", - "parties": [ - { - "party_id": "party-4", - "name": "User Four", - "email": "userfour@example.com" - } - ] - } - ] -} + This API returns **Certificate of Completion** in **PDF** format, serving as proof of the completed signing process. + + A sample certificate is attached below for reference. -``` + You may **download** the sample PDF for detailed information. + + ++ + ๐ Download Sample PDF + +
+ +### **Example** + +> document_id=fce50e1e-5d05-4cf8-99ba-b6797y6tceb0 + +> tracking_id=e1bfeeb9-a677-43ad-f411-0b4afbj71a77 + ### **Tags** `Document Tracker` @@ -2948,3 +3083,6 @@ json --- + + + diff --git a/docs/E_Sign/Contract-Lifecycle.md b/docs/E_Sign/Contract-Lifecycle.md new file mode 100644 index 0000000..e85a9ea --- /dev/null +++ b/docs/E_Sign/Contract-Lifecycle.md @@ -0,0 +1,218 @@ +# How to use contract Lifecycle Management? + +**Contract Lifecycle Management (CLM)** helps organizations create, review, approve, sign, store, and manage contracts throughout their entire lifecycle. It streamlines contract processes, improves visibility, and ensures compliance by keeping all contract-related activities in a centralized system. + +--- + +## Step 1: Open the Signed Document + +1. Navigate to the appropriate folder containing the signed document. +2. Locate the required document. +3. Click the **Action** Menu (โฎ) associated with the document. +4. Select **View** to open and review the signed document. + +
+
+---
+
+## Step 2: Configure the Contract Document
+
+1. From the left-side navigation menu, click Contracts.
+2. Select the signed document that you want to convert into a contract record.
+3. The AI-powered contract engine automatically extracts key information from the document and generates the contract details.
+4. Review the extracted information before proceeding to the next step.
+
+
+
+---
+
+## Step 3: Review and Validate Contract Details
+
+Once the AI completes the contract extraction process, review all generated information carefully before final approval. Ensure the extracted details are accurate, complete, and aligned with organizational and legal requirements.
+
+
+
+## Review Party Information
+
+Verify the details of all parties involved in the contract.
+Ensure the following information is accurate:
+* Party names
+* Roles and responsibilities
+* Contact details
+* Organization or company information
+
+
+
+Update any incorrect or missing information before proceeding.
+
+---
+
+## Review Financial Information
+
+Validate all financial details extracted from the contract.
+Review and confirm:
+* Total contract value
+* Payment terms and conditions
+* Pricing and rate information
+* Billing schedules and invoicing obligations
+* Currency and frequency details
+
+
+
+Ensure all financial calculations and payment structures are correct.
+
+---
+
+## Review Signatories
+
+Verify that all required parties are properly assigned in the Signatories section before approving the contract.
+
+### Steps
+
+1. Navigate to the **Signatories** tab.
+2. Review all listed signatories.
+3. Confirm the accuracy of:
+ * Signer names
+ * Roles and assignments
+ * Signing status
+ * Signature dates
+ * Execution details
+4. Ensure all mandatory signatories are included.
+5. Update or correct any missing or inaccurate information.
+
+
+
+---
+
+## Configure Contract Alerts and Expiry Notifications
+
+Set up reminders and expiration alerts to ensure important contract milestones are not missed.
+
+### Steps
+
+1. Verify the **Contract Expiry Date**.
+2. Review the automatically generated reminder schedule.
+3. Configure reminder notifications based on business requirements.
+
+### Recommended Reminder Intervals
+
+* 30 Days Before Expiry
+* 14 Days Before Expiry
+* 7 Days Before Expiry
+* 3 Days Before Expiry
+* 1 Day Before Expiry
+
+### Additional Actions
+
+* Add new reminder intervals if required.
+* Modify or remove existing reminders.
+* Save alert configurations to enable automated notifications.
+
+
+
+Ensure all required reminders are configured before contract approval.
+
+---
+
+## Review Red Lines and Risk Analysis
+
+Review AI-generated clause analysis and risk indicators to identify contractual concerns or missing legal protections.
+
+### Steps
+
+1. Navigate to the **Red Lines** tab.
+2. Review highlighted clauses and associated risk levels:
+ * Low Risk
+ * Medium Risk
+ * High Risk
+3. Verify the inclusion of critical legal provisions, including:
+ * Limitation of Liability
+ * Termination Clauses
+ * Indemnification Clauses
+ * Confidentiality Obligations
+ * Other required legal protections
+4. Review AI-generated recommendations and risk explanations.
+5. Modify, add, or update clauses as needed to comply with organizational policies and legal standards.
+6. Resolve all high-risk or missing clauses before approval.
+
+
+
+---
+
+## Approve and Save the Contract
+
+After completing the review and validation process:
+1. Make any necessary updates to the contract information.
+2. Click **Approve & Save**.
+3. The contract will be successfully created and added to the **Contracts Dashboard** for future tracking, management, and reporting.
+
+
+
+---
+
+## Step 4: Manage Contract Renewals
+
+1. Navigate to the **Contracts Dashboard**.
+
+
+
+2. Select the contract you want to manage.
+3. Click **Renewals** to open the Renewal Tracking page.
+
+
+
+4. Review upcoming renewal dates and reminder schedules.
+5. Update renewal information and reminder dates as needed.
+6. Save the changes to keep renewal tracking up to date.
+
+
+
+7. Use this option to cancel the selected contract permanently.
+
+
+
+---
+
+## Key Benefits of CLM
+
+- Centralized contract repository
+- Automated data extraction using AI
+- Simplified contract review and approval process
+- Renewal and expiration tracking
+- Automated reminders and alerts
+- Improved compliance and contract visibility
+- Secure storage and lifecycle management
+
+---
+
+**Demo Video:**
+
+
+
+
+
+---
+
+## Step 2: Add an Image Field
+
+- Select the **Image Field** option from the toolbar or field panel on the right.
+- Drag and place the image field in the required section of the document.
+- Open the **Field Settings** to configure who is responsible for uploading the image (sender or a specific recipient).
+- Resize and reposition the field as needed by dragging its corners or edges.
+- Both the sender and recipients can access the **Images & Underlines Fields** feature based on their assigned permissions.
+
+
+
+
+---
+
+## Step 3: Upload an Image
+
+- Click on the inserted image field to activate it.
+- Click the **Upload** icon or button that appears within the field.
+- Browse and select the required image from your device (supported formats: PNG, JPG, JPEG, GIF).
+- The image will be embedded directly into the document at the designated position.
+- Users can add **logos**, **signatures**, **stamps**, or other supporting visuals directly into the document.
+
+
+
+> **Tip:** Ensure the image is clear and properly sized before uploading for the best visual result in the final signed document.
+
+---
+
+## Step 4: Add an Underline Field
+
+- Select the **Underline Field** option from the toolbar or field panel.
+- Drag and place the underline field in the required section of the document.
+- Adjust the width of the underline field to match the area where the recipient needs to sign or annotate.
+- Open the **Field Settings** to assign the underline field to the appropriate recipient.
+- You can add a label or placeholder text to guide the recipient on what is expected in that field.
+
+
+
+---
+
+## Step 5: Assign Fields to Recipients
+
+- After placing the image field, assign each field to the appropriate recipient.
+- Click on the field and use the **Assign To** dropdown to select the intended recipient.
+- This ensures each party fills in only the fields assigned to them during the signing workflow.
+
+
+
+---
+
+## Step 6: Save and Send the Document
+
+- Once all image and underline fields are placed and assigned, click **Save** to preserve your configuration.
+- Click **Send** to dispatch the document to the recipients for their action.
+- Recipients will receive an email notification with a link to access and complete the document.
+
+
+
+---
+
+## Step 7: Recipient Fills in the Fields
+
+- The recipient opens the document via the link provided in the email.
+- They click on the **Image Field** to upload their image (e.g., signature or stamp).
+- Once all required fields are completed, the recipient clicks **Submit** or **Sign** to finalize their action.
+
+

+
+## Step 8: Review the Completed Document
+- Click **View Document** to review the completed document and verify all signatures, fields, and information before downloading or sharing it.
+
+
+
+---
+
+## Key Benefits
+
+| Feature | Benefit |
+|---|---|
+| Image Field | Allows embedding of logos, stamps, and visual signatures |
+| Underline Field | Provides a structured area for written signatures or annotations |
+| Permission-Based Access | Controls who can add or edit fields based on role |
+| Multi-Recipient Support | Assign different fields to different signers in a single workflow |
+
+---
+
+## Notes
+
+- Only users with appropriate permissions can add or modify image and underline fields.
+- Uploaded images are securely stored and associated with the document.
+- The underline field supports both typed and drawn input depending on the configuration.
+- All changes are tracked and logged for audit purposes.
+
+---
+
+**Demo Video:**
+
+
+
+
+
+---
+
+## Step 2: Verify the Inbox Table Columns
+
+1. The Inbox page displays a table with the following columns.
+ - Name
+ - Party Details
+ - Last Modified
+ - Status
+ - Actions
+
+
+
+---
+
+## Step 3: Review Document Records
+Documents are organized by the originating organization or sender.
+Click the expand arrow (โพ) beside an organization name to display the associated documents.
+Each document entry includes:
+Document ID / File Name
+Recipient Information
+Last Modified Date and Time
+Current Status
+
+This hierarchical view makes it easier to manage multiple documents from the same sender.
+
+
+
+
+
+---
+
+## Step 4: Filter Documents by Status
+
+To locate specific documents more efficiently:
+
+1. Click the Status: All dropdown menu in the upper-right corner.
+2. Select one of the available status filters:
+ - Pending
+ - Completed
+ - Cancelled
+ - Expired
+ - Declined
+ - Shared
+3. Click Filter to apply the selected criteria.
+
+
+
+> Filtering allows users to focus on documents that require immediate attention or review.
+
+## Sign Pending Documents
+
+Users can complete signing requests directly from the Inbox without navigating to another module.
+
+- Locate a document with the Pending status.
+- Open the Actions menu for the document.
+- Click Sign.
+- The system redirects you to the signing page where you can review and complete the signing process.
+
+
+
+
+
+## View and Download Completed Documents
+
+Completed documents remain accessible through the Inbox for future reference and record keeping.
+
+- Locate a document with the Completed status.
+- Open the Actions menu.
+- Select View to review the finalized document.
+- Select Download to save a copy of the document to your local device.
+
+
+
+
+
+## View and Download Shared Documents
+
+Documents shared with you can be accessed directly from the Inbox at any time.
+
+- Locate a document with the Shared status.
+- Open the Actions menu.
+- Click View to open and review the shared document.
+- Click Download to save a copy of the document for offline access.
+
+
+
+
+
+> This functionality ensures quick and convenient access to shared documents whenever required.
+
+---
+
+**Demo Video:**
+
+
+
+
+
+---
+
+## Step 2: Add Required Fields
+
+* Drag and drop required signing fields into the document.
+* Common fields include:
+
+ * Signature
+ * Date
+ * Name / Initials
+* Place each field at the appropriate location.
+
+
+
+---
+
+## Step 3: Enable Self Sign Mode
+
+* Click the **Actions Window** of the document.
+* Select **E-Sign / Self Sign** option.
+* The document will open in the signing editor.
+
+
+
+---
+
+## Step 4: Fill and Review Fields
+
+* Complete all required fields assigned for self-signing.
+* Verify that all information is accurate and properly placed.
+* Ensure no mandatory fields are left empty.
+
+
+
+---
+
+## Step 5: Complete Self Signing
+
+* Click **Finish / Submit / Complete Signing**.
+* The system will process and lock the signed document.
+* A confirmation message will appear once signing is successful.
+
+
+
+---
+
+## Step 6: View Completed Document
+
+* Navigate to **Completed Documents** section.
+* Open the signed file to review the final version.
+* You can download or share the document if required.
+
+
+
+---
+
+## Key Notes
+
+* Self Sign Mode is intended for single-user signing only.
+* Once completed, the document becomes read-only.
+* Ensure all fields are correctly filled before submission, as edits may not be allowed afterward.
+
+---
+
+**Demo Video:**
+
+
+
+
+
+> After configuring the form, click Generate Link to continue.
+
+---
+
+## Step 2: Configure Public Access Settings
+
+- After clicking **Generate Link**, the system automatically opens the anonymous form management page.
+- Navigate to the **Manage Link** tab available in the top section of the page.
+- If no expiry date is configured, the form link remains active indefinitely.
+- Click **Generate Public Link** to create the anonymous form URL.
+
+### Configure the following options:
+
+| Option | Description |
+|--------|-------------|
+| Expiry Date | Set the date and time when the form link should expire |
+| Never Expire | Keeps the form link active permanently |
+| Allow Resubmit | Allows the same email address to submit multiple responses |
+| Redirect URL | Redirects users to another page after submission |
+
+
+
+ >โAnyone with this link can fill and submit the form without logging in.โ
+
+---
+
+## Step 3: Generate and Share the Public Link
+
+- Once the link is generated, the system displays:
+ - Public Form URL
+ - Link Status *(Active / Inactive)*
+ - Expiry Date and Time *(if configured)*
+
+- Users can:
+ - Open the form directly
+ - Copy the public link
+ - Share the form through email, chat, or social media
+ - Activate or deactivate the form link anytime
+
+
+
+> The above screenshot represents how to manage and share the generated anonymous form link.
+
+---
+
+## Step 4: Share the Form Using QR Code
+
+- Navigate to the **QR Code** tab.
+- A QR code is automatically generated for the anonymous form.
+- Users can scan the QR code using mobile devices to directly open the form.
+- Click **Download QR Code** to save the QR image for sharing.
+
+
+
+> The above screenshot represents how to generate and share the anonymous form QR code.
+
+---
+
+## Step 5: Fill and Submit the Anonymous Form
+
+- The users opens the public form link or scans the QR code.
+- The anonymous form page displays all configured fields.
+
+### The respondent:
+- Enters their email address
+- Fills all required fields
+- Completes the reCAPTCHA verification
+- Clicks **Submit Form**
+
+
+
+> The above screenshot represents how users fill and submit anonymous forms.
+
+---
+
+## Step 6: Successful Submission
+
+- After clicking **Submit Form**, the system processes the submission successfully.
+- If a **Redirect URL** is configured, the respondent is redirected automatically.
+- A success confirmation message is displayed after submission.
+
+
+
+> The above screenshot represents a successful anonymous form submission.
+
+---
+
+## Step 7: Review Form Submissions
+
+- Navigate to the **Forms** section and open the required anonymous form.
+- Click the **Submissions** tab.
+- Click **Refresh** to load the latest responses.
+
+### The submissions table displays:
+
+| Column | Description |
+|--------|-------------|
+| Email | Submitter email address |
+| Last Submission | Latest submission date and time |
+| Submissions | Number of submissions from the same email |
+
+
+
+> The above screenshot represents how to review anonymous form submissions inside the system.
+
+---
+## Step 8: Access Anonymous Form Management Options
+
+- After creating a anonymous form, the form will appear in the **Forms List** with an **Anonymous** label beside the form name.
+- Click the **Actions (โฎ)** menu of the anonymous form.
+
+### The Actions menu contains:
+- **View** โ Open the form details
+- **Clone** โ Create a duplicate copy of the form
+- **Public Link** โ Access public form management options
+
+
+
+- Click **Public Link** to access:
+ - Public Form Link
+ - QR Code
+ - Submissions
+ - Integration Settings
+
+ 
+
+> The above screenshot represents how anonymous forms are displayed in the Forms List and how to access public form management options from the Actions menu.
+
+---
+## Step 9: Integration via API (Optional)
+
+- Navigate to the **Integration** tab.
+- Developers can integrate anonymous forms into external systems using API support.
+
+### Integration Details
+
+| Item | Value |
+|------|------|
+| FORM ID | 278c39b0-07a3-44c7-adcf-65325bc6a0f0 |
+| API ENDPOINT | POST https://api.doculan.ai/v1/external/forms/submit |
+
+### API Usage
+- Use the **FORM ID** to identify the anonymous form.
+- Submit form responses using the provided API endpoint.
+- Send data through a **POST request**.
+- Submitted responses will appear in the **Submissions** section.
+
+
+
+> The above screenshot represents how to integrate anonymous forms using API support.
+
+---
+
+ **Demo Video:**
+
+
+
+
+
+**Screenshot 2**
+
+
+
+---
+
+## Step 2: Upload PDF Files
+
+* Click **Upload Files** or drag and drop PDFs into the upload area.
+* Select multiple PDF files from your device.
+* Ensure the files are in the correct order if sequencing is required.
+
+**Screenshot 3**
+
+
+
+**Screenshot 4**
+
+
+
+---
+
+## Step 3: Configure Merge PDF Files
+
+The Merge PDF process provides two methods to combine PDF documents based on your requirements.
+
+### Option 1: Full Document Merge
+
+* Use this option to merge complete PDF documents into a single file.
+* All pages from the selected documents will be combined in the uploaded order.
+
+**Screenshot 5**
+
+
+
+
+
+### Option 2: Selected Page-wise Merge
+
+* Use this option to merge only specific pages from multiple PDF files.
+* Select the required pages and arrange them in your preferred order before merging.
+
+**Screenshot 6**
+
+
+
+---
+
+## Step 4: Merge PDF Files
+
+* Click the **Merge PDF** button.
+* The system will process and combine all selected files into a single document.
+* Wait for the processing to complete.
+
+**Screenshot 7**
+
+
+
+---
+
+## Step 5: Preview and Download
+
+* Click **Download** to save the final PDF to your device.
+* Open the file to preview the merged document.
+
+**Screenshot 8**
+
+
+
+---
+
+## Step 6: Upload Doculan Feature
+
+* Click **Upload** to save the file in the Doculan folder.
+* Select the destination folder where you want to store it.
+
+**Screenshot 9**
+
+
+
+**Screenshot 10**
+
+
+
+## Step 7: View the Merge Document in Doculan
+
+* Open the file action menu.
+* Click the **View** option to preview the document.
+* You can also use the **Merge option** during the **view** process from the left side menu to merge documents again.
+
+**Screenshot 11**
+
+
+
+**Screenshot 12**
+
+
+
+---
+
+## Key Notes
+
+* Ensure all PDFs are valid and not corrupted before merging.
+* Large files may take additional processing time.
+* File order cannot be changed after mergingโverify before execution.
+
+---
+
+**Demo Video:**
+
+
+
+
+
+**Screenshot 2**
+
+
+
+---
+
+## Step 2: Select the Split Option
+
+The Split PDF tool provides multiple methods to split PDF documents based on your requirements.
+
+
+### Option 1: By Individual Pages
+
+* Use this option to split each page of the PDF into separate individual files.
+* Every page will be generated as an individual PDF documents.
+
+**Screenshot 3**
+
+
+
+### Option 2: Custom Ranges
+
+* Use this option to create multiple PDF files from a single document using custom page ranges.
+* Define multiple page ranges based on your required document structure.
+* Enter page numbers or ranges (e.g., 1โ3,5,6โ10).
+
+**Screenshot 4**
+
+
+
+**Screenshot 5**
+
+
+
+### Option 3: Select Page-wise
+
+* Use this option to select specific pages from the PDF document.
+* Arrange the selected pages in the required order before splitting or creating the new PDF structure.
+* The system will process the document and generate separate files based on your configuration.
+
+**Screenshot 6**
+
+
+
+**Screenshot 7**
+
+
+
+---
+
+
+
+
+
+
+
+
+
+
+
+## Step 4: Preview and Download
+
+* Click **Download** to save individual PDF files to your device.
+* Review the downloaded split document.
+
+**Screenshot 8**
+
+
+
+---
+
+## Step 5: Upload Doculan Feature
+
+* Click **Upload** to save the file in the Doculan folder.
+* Select the destination folder where you want to store it.
+
+**Screenshot 9**
+
+
+
+**Screenshot 10**
+
+
+
+---
+
+## Step 6: View the Split Document in Doculan
+
+* Open the file action menu.
+* Click the **View** option to preview the document.
+* You can also use the **Split option** during the **view** process from the left side menu to merge documents again.
+
+**Screenshot 11**
+
+
+
+**Screenshot 12**
+
+
+
+---
+
+## Key Notes
+
+* Ensure the uploaded PDF is not corrupted or password-protected.
+* Large documents may take additional processing time.
+* Always verify page ranges before splitting to avoid data loss.
+
+---
+
+**Demo Video:**
+
+
+
+
+
+The Subdomain Settings page will appear.
+
+---
+
+## Step 2: Create the Organization Subdomain
+
+- Locate the **Create New Subdomain** section.
+
+
+
+- Enter your preferred subdomain name in the input field.
+
+**Example:**
+
+```
+organization-name
+```
+
+- Review the generated URL preview shown below the input field.
+- Click **Save Changes** to confirm and activate the subdomain.
+
+
+### Subdomain URL Structure
+
+The platform automatically generates a dedicated URL in the following format:
+
+```
+https://
+
+---
+
+## Step 3: Access the Dedicated Login Page
+
+- Copy the generated subdomain URL.
+- Open the URL in a browser.
+- The organization-specific login page will be displayed.
+- Enter your user credentials:
+ - **Email Address** โ use your organization email
+ - **Password**
+ - Complete the **CAPTCHA** verification if prompted.
+- Click **Sign In**.
+
+
+
+---
+
+## Step 4: Successful Login
+
+After successful authentication:
+
+- Users will be redirected to the **organization dashboard**.
+- Organization-specific data and workflows will become accessible.
+- Workspace access will remain isolated to the configured organization.
+
+
+
+---
+
+## Additional Information
+
+
+
+
+> **Important:** Only users with an email address belonging to the configured organization domain can access this portal. External domain users (e.g., Gmail or other organization emails) will not be granted access.
+
+
+| Aspect | Details |
+|---|---|
+| Access Restriction | Only authorized organization domain users can log in |
+| URL Format | `https://
+
+- The **Folder Added to VDR** popup will appear; click **Go to VDR** to continue.
+
+
+
+> You will be redirected automatically to the VDR User List page.
+
+---
+
+## Step 2: Add the user to the VDR.
+
+- Click the dropdown and select the folder you want to share.
+- Then click the **Add User** button in the top-right corner of the page.
+
+
+
+---
+
+## Step 3: Configure sharing details:
+
+Once you click Share, a popup or side panel will appear with fields for:
+
+- **Recipient Name**
+- **Recipient Email Address**
+
+
+
+- **Expiry Date:** Specify how long the shared link should remain active.
+- **Reminder:** Optionally schedule an email reminder before the link expires.
+
+
+
+- **Email body:** Add a personalized message to provide context for the recipient.
+- Optionally, click **AI Assist** to generate a professional and well-structured email message automatically.
+
+
+
+
+- Click **Send** to deliver the document.
+
+---
+
+## Step 4: Recipient Access via Email
+
+After the folder is shared:
+
+* The recipient will receive an email containing the **folder access link**.
+
+* An OTP verification popup will appear; the OTP will be sent via emailโcopy the code and enter it to complete the verification.
+
+
+
+
+* Click the link to open and view the shared folder (no login required).
+
+
+
+* Access is subject to the defined **permissions** and **expiry period** set by the sender.
+* The recipient can view and download all shared files within the folder, based on the assigned access permissions.
+
+**View** the files within the Folder.
+
+
+
+**Download** the files within the Folder.
+
+
+
+---
+
+## Step 5: The sender can monitor and track user activities.
+
+- The sender can open the VDR page and view the number of folders available in the Room Explorer section.
+
+
+
+- The Analytics option is used to view user activities in graphical chart formats.
+
+
+
+- The User page also displays user activities in a detailed format.
+
+- The VDR page tracks detailed user activities, including the number of times each document is viewed and downloaded, providing clear usage insights.
+
+
+
+## step 6: Revoke and Unshare Folder Access
+
+You can revoke access or unshare the folder at any time from the folder settings.
+
+### Click **Revoke** to remove folder access.
+
+- In the User page, open the folder action menu and click **Revoke** to remove access.
+- A confirmation popup will appear; click *Revoke Access* to confirm.
+
+
+
+### Unshare Folder from VDR Page
+
+Unshare the folder from the VDR page to remove it from the room.
+
+- Go to the Shared folder, open the folder action menu.
+- Enter the folder name and click **Confirm**.
+
+
+
+---
+
+**Demo Video:**
+
+
+
+