Skip to content

Documents

Upload, list, filter, download, and manage documents.

Endpoint summary

Method Path Summary
POST /document/v1 (multipart) Upload a document
PUT /document/v1/{docId} (multipart) Replace a document's file
PUT /document/v1/{docId} (JSON) Rename a document
PUT /document/v1/sequence/{workflowId} Set signing order mode
GET /document/v1 List documents (paginated, filterable)
GET /document/v1/{docId} Get one document
GET /document/v1/docs-detail/{workflowId} Get all documents attached to one workflow
GET /document/v1/count/documents-status Counts by status (feeds the status-filter pills)
GET /document/v1/download/{workflowId} Download signed document(s) / certificate of completion
DELETE /document/v1, /{workflowId}, /workflows Delete document(s)
PUT /document/v1/{workflowId}/change-sequence Reorder documents within a workflow

Upload

POST /document/v1?sequence=UNORDERED&signType=COUNTERSIGN
Content-Type: multipart/form-data

file: <binary PDF>
Query param Type Notes
workflowId long, optional Attach to an existing draft workflow instead of creating a new one
sequence string, optional SELF, ORDERED, UNORDERED, SURVEY — only meaningful when creating a new one
signType string, optional SELFSIGN, COUNTERSIGN, POWERSURVEY
folderId long, optional Target folder — see Folders
timeZone string, optional Recipient-facing display timezone

Accepted formats: .pdf, .doc, .docx — Word files are converted to PDF server-side on upload. Max 25 MB.

Success (201 Created):

{ "id": 1200, "workflowId": 887, "thumbnailBase64": "iVBORw0KGgoAAAANSUhEUgAA..." }

Rejections:

Condition Error
Extension other than pdf/doc/docx INVALID_DOCUMENT_TYPE
Empty file INVALID_DOCUMENT_SIZE
PDF already carrying a signature DOCUMENT_ALREADY_SIGNED

PUT /document/v1/{docId} (multipart) replaces the file — only while still in draft and owned by the caller. Replacement accepts PDF only, unlike the initial upload which also takes Word files. A separate JSON-body PUT /document/v1/{docId} ({ "name": "..." }, 1-50 chars) renames it.

This is step 1 of the full send flow — continue with Sending & Signing to add recipients, place fields, and send.


Listing and filtering

GET /document/v1

Paginated (see Pagination), filters: status, folderID, searchValue.

{
  "content": [
    {
      "workflowId": 887,
      "documentCount": 1,
      "recipientCount": 2,
      "name": "NDA - Acme Corp",
      "ownerName": "Jane Doe",
      "status": "SENT",
      "anyDigitalSignature": true,
      "isPowerSurvey": false,
      "isPowerSurveyChild": false
    }
  ],
  "totalElements": 42
}

When the caller is a recipient rather than the owner, recipientId/recipientRole/enforceIdentity are populated for their own row.

Status-filter pills

The Documents page's filter pills (All, Signed, Sent, Pending, Draft, Completed, Approved, Viewed, Void) work off this same list, passing the pill's value as status. Draft/Sent/Completed/Approved/Void map to the workflow's own status; Signed, Pending, and Viewed are not workflow statuses — see Concepts for what they actually reflect.

GET /document/v1/{docId}, GET /document/v1/docs-detail/{workflowId}

Single-document and all-documents-for-a-workflow detail views — same shape as the list item above plus size, pages, isViewed.

GET /document/v1/count/documents-status

{ "draftDocCount": 3, "pendingDocCount": 5, "sentDocCount": 12, "signedDocCount": 8, "completedDocCount": 40, "voidDocCount": 2 }

Downloading

GET /document/v1/download/887?selectedOption=downloadDocument&documentId=1200

selectedOption (required): downloadDocument (one document), downloadAll (all documents in the workflow, zipped), downloadCoc (certificate of completion / evidence report as PDF). documentId required only for downloadDocument.


Deleting and reordering

DELETE /document/v1 (body: { "ids": [1, 2] }), DELETE /document/v1/{workflowId}, and DELETE /document/v1/workflows (body: { "workflowIds": "1,2,3" }) cover single/bulk deletion at different granularities. PUT /document/v1/{workflowId}/change-sequence reorders multiple documents attached to one workflow (body: [{ "documentId": 1200, "order": 1 }, ...]).