PapermarkDocs

Datarooms

Create and manage virtual datarooms.

List datarooms

Paginated list of datarooms for the authenticated team.

Create a dataroom

Create a new dataroom. Documents are added separately.

Get a dataroom

Returns dataroom metadata including document and folder counts. Accepts either the internal id or the `dr_…` public id.

Update a dataroom

Partial update of dataroom metadata. Documents are managed via the dataroom-documents endpoints, not here.

Delete a dataroom

Permanently deletes a dataroom and its document/folder mapping. The underlying documents are not deleted — only the dataroom and its membership rows.

Attach an existing document to a dataroom

Add an already-uploaded document to a dataroom, optionally placing it inside a dataroom folder. The document must belong to the same team as the dataroom; cross-team attaches are refused. Frozen datarooms refuse new attachments.

List documents in a dataroom

Returns DataroomDocument rows (the join between a dataroom and an underlying Document), ordered by folder then orderIndex.

Detach a document from a dataroom

Remove a single document's attachment to this dataroom, identified by the DataroomDocument id (`ddId`) returned when the document was attached or listed. The underlying document in the team library — and any attachment to other datarooms — is left intact. Frozen datarooms refuse detaches.

Move a document to another folder within a dataroom

Move a dataroom document (identified by its DataroomDocument id `ddId`) into a different folder of the same dataroom, or to the dataroom root with `folder_id: null`. Only the attachment's placement changes — the underlying document and its attachments to other datarooms are untouched. Frozen datarooms refuse moves.

List folders in a dataroom

Returns folders inside a dataroom. Use `parent_id=root` to list top-level folders, or `parent_id=<id>` for direct children of a specific folder. Without `parent_id` returns every folder in the dataroom.

Create a dataroom folder

Create a folder inside a dataroom. Path is derived server-side from name + parent. On sibling-name collision a numeric suffix is appended. Default permissions (matching the dashboard's create flow) are applied.

Get a dataroom folder

Returns a single folder inside a dataroom.

Update a dataroom folder

Rename a folder or update its icon/color. Renaming rewrites the `path` of this folder and every descendant in a single transaction.

Delete a dataroom folder

Delete a folder inside a dataroom. Refuses non-empty folders unless `cascade=true`. Cascade deletes nested folders and detaches every dataroom-document inside them — the underlying documents in the team library are kept.

Move a dataroom folder

Reparent a folder within a dataroom. Refuses moves into the folder itself or one of its descendants, and refuses if the target parent already has a sibling with the same slug. Descendant `path`s are rewritten in a single transaction.

List dataroom groups

Paginated list of viewer groups in a dataroom. Groups define an audience (members by email or domain) and per-item view/download permissions, and are the target of group share links.

Create a dataroom group

Create a viewer group in a dataroom. Add members via POST /v1/datarooms/{id}/groups/{gid}/members, grant document/folder access via PUT .../permissions, then share it by creating a link with `audience_type: "group"`.

Get a dataroom group

Update a dataroom group

Partial update — only the fields you pass are changed. `domains` and `allow_all` control who counts as a member beyond explicit email members.

Delete a dataroom group

Deletes the group, its memberships, its permissions, AND every share link pointing at it — active group links stop resolving immediately. This matches the dashboard's behavior and cannot be undone.

List group members

Paginated list of a group's explicit email members. Viewers admitted via the group's `domains` or `allow_all` are not listed here.

Add group members

Add members by email (up to 500 per call). Viewers are created for unknown addresses; already-present members are skipped, so the call is idempotent. No invitation emails are sent. Returns the memberships for every email in the request.

Remove a group member

Removes a membership by its id (from the members list). The underlying viewer is kept — only their membership in this group is removed.

List group permissions

Paginated list of the group's per-item access controls. Items without an entry are invisible to the group's viewers.

Set group permissions

Upsert per-item view/download permissions for the group. Delta semantics (matching the dashboard): entries you send are upserted, entries you omit keep their current state. Ancestor folders of any item made visible are automatically set to `can_view: true` so the folder tree stays navigable. `item_id` is a DataroomDocument id (GET /v1/datarooms/{id}/documents) or a dataroom folder id (GET /v1/datarooms/{id}/folders).