Skip to main content
A document in Doodocs People is an HR order or other act created from a template or from a PDF you upload. It has subjects (subject_employee_ids — the employees the document is about), a route of approval and signing steps, and a set of files (print form, signed PDF, e-signature card). Working with documents through the Developer API means two sets of scopes: documents:read for reading and downloading files, and documents:write for creating, routing, sending, and signing.
Effective access is the intersection of the key’s scopes and the key owner’s permission profile. A scope is necessary but not sufficient: you see only what the key owner’s role sees. A single document unavailable to the key returns the same 404 DOCUMENT_NOT_FOUND as one that does not exist — the response code cannot verify whether a hidden document exists.

Lifecycle

A draft is filled in with a route (the status does not change while this happens), then launched by sending. From there the document goes through approval and/or signing and reaches completion — or is broken off by a rejection, a change request, or a revocation.

Document status transitions (DocumentStatus)

The status values live in the status field. Survive unfamiliar values — the set may grow within v1.

The document object

The full object is returned by GET /documents/{document_id} — together with files and the route. The list endpoint GET /documents returns only scalar fields (no files, no route).

Files

Each element of files[] is { "file_id": "…", "file_type": "…" }. Download a file by type via GET /documents/{document_id}/download?file_type=….

Route

route describes approval and signing: { "id", "status", "active", "steps": [] }. Each step is a step_type (STEP_TYPE_APPROVAL or STEP_TYPE_SIGNING), a rule (STEP_RULE_ALL — all are required, STEP_RULE_ANY_ONE — one is enough), and a list of participants[].
Route participants are described only by identifiers: id, employee_id, key_type, and status. The document object contains no names, IINs, or job titles — to get an employee’s data by employee_id, read it through the employees API with your key.

Visibility in the list

GET /documents shows documents by initiator and by the key owner’s permission scope. A document available to the key only through route participation (a participant grant) will not appear in the list — but GET /documents/{document_id} will return it.
Do not rely on the list as a complete registry of visible documents. If you have an identifier (for example from a webhook), fetch the document directly via GET /documents/{document_id}.

Next

Templates

Find a template and read its variable_schema.

Signing

Create → route → send → sign → download.

Events

The document.* webhooks and reacting to status changes.