- Partitioned access: Users, templates, and activity are scoped to a single workspace.
- Usage tracking: See envelopes sent per workspace for clean reporting.
- Security by design: No cross-workspace exposure of documents or data.
Core Endpoints
Core endpoints (see the API reference for full details):- POST
/workspaces
— create a workspace - GET
/workspaces/{workspace_id}
— retrieve workspace details - PUT
/workspaces/{workspace_id}
— update workspace - GET
/workspaces
— list workspaces (pagination)
api-reference/workspaces
:
api-reference/workspaces/create-workspace
api-reference/workspaces/get-workspace
api-reference/workspaces/list-workspaces
api-reference/workspaces/update-workspace
Create a workspace
Endpoint: POST/workspacess
Required body: { "name": "string" }
Example (curl):
Workspaces
resource with id
, name
, and timestamps. Example shape:
Retrieve a workspace
Endpoint: GET/workspaces/{workspace_id}
Example (curl):
Workspace
resource (see example above).
Update a workspace
Endpoint: PUT/workspaces/{workspace_id}
— full resource replacement. Required body same as CreateWorkspace
(e.g., { "name": "New name" }
).
Example (curl):
List workspaces
Endpoint: GET/workspaces
Supports page
and page_size
query parameters. Example:
results
(array of Workspace
) and pagination
metadata.
RBAC and API key best practices
- Use scoped API keys where possible: keep a server-only master API key and create per-workspace API keys for integration partners if your platform supports it.
- Never return API keys to the browser. For operations initiated by end users, call your backend which performs the API call to Firma.
- Use idempotency where supported (for endpoints that accept
Idempotency-Key
) to avoid double-creation from retries.
Edge cases & troubleshooting
- Duplicate names: workspace names are display-friendly and may not be unique; use the
id
for programmatic references. - Protected workspaces: the
protected
flag indicates system-owned workspaces that cannot be deleted or modified by normal flows. - Rate limits & errors: inspect non-2xx responses for
{ error, code }
and surface meaningful messages to operators.