Credo GraphQL API
Professional document sealing, verification, and credential management API.
Getting Started
The Credo API uses GraphQL over a single HTTP endpoint. All requests are POST to the endpoint below. Responses are JSON.
Interactive Playground — Test queries live in GraphiQL (requires HTTP Basic Auth credentials).
Authentication
Most operations require a Bearer token in the Authorization header:
Authorization: Bearer <access_token>
Obtain tokens via the login mutation. Access tokens expire in 15 minutes. Use refreshToken to rotate before expiry. See the Authentication Flow section for details.
Rate Limits
| Scope | Limit | Applies To |
|---|---|---|
| Per-IP | 100 req/min | All requests |
| Per-user | 10 req/min | PDF operations, billing, AI, board search |
Exceeding limits returns 429 (HTTP) or BILLING_RATE_LIMIT_EXCEEDED (GraphQL).
Query Limits
| Protection | Default | Enterprise |
|---|---|---|
| Max depth | 10 levels | 10 levels |
| Query complexity | 500 | 2,000 |
| Mutation complexity | 100 | 500 |
| Request timeout | 30s | 60s |
| Max request body | 16 MB | 16 MB |
| Introspection | Disabled in prod | Disabled in prod |
Error Format
All errors follow the GraphQL spec with structured extensions:
{
"errors": [{
"message": "Human-readable message",
"extensions": {
"code": "ERROR_CODE",
"status_code": 400
}
}]
}
See the full Error Code Reference for the complete list.
File Uploads
File uploads use the GraphQL multipart request spec. Send a multipart/form-data request with operations, map, and file parts:
curl -X POST /v1/graphql \
-H "Authorization: Bearer <token>" \
-F operations='{"query":"mutation(:Upload!){uploadFile(file:){filename fileHash size contentType}}","variables":{"file":null}}' \
-F map='{"0":["variables.file"]}' \
-F 0=@document.pdf
Allowed types: PDF, PNG, JPEG, TIFF. Max size: 16 MB.
Pagination
List queries support Relay cursor-based pagination. Use *Connection queries (e.g. documentsConnection) with first/after or last/before arguments. Max page size is 100.
Automatic Persisted Queries (APQ)
Reduce bandwidth by sending a SHA-256 hash instead of the full query. Apollo iOS and Apollo Kotlin support this natively.
{
"extensions": {
"persistedQuery": {
"version": 1,
"sha256Hash": "<sha256-hex-lowercase>"
}
}
}
On cache miss, the server returns PERSISTED_QUERY_NOT_FOUND — retry with the full query body.
Contact
Credo API Support
API Endpoints
https://api.engineeringid.com/v1/graphql
Version
v1
Queries
batchSealJob
Description
Get a batch seal job by ID
Response
Returns a BatchSealJob
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
query batchSealJob($id: UUID!) {
batchSealJob(id: $id) {
id
status
totalDocuments
completedDocuments
failedDocuments
startedAt
completedAt
insertedAt
pageMode
positionX
positionY
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
items {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
progressPercent
remaining
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"batchSealJob": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 987,
"completedDocuments": 123,
"failedDocuments": 123,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 123.45,
"positionY": 987.65,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 123,
"remaining": 987
}
}
}
batchSealJobs
Description
List batch seal jobs
Response
Returns [BatchSealJob!]!
Arguments
| Name | Description |
|---|---|
status - BatchSealStatus
|
Filter by job status |
limit - Int
|
Maximum jobs to return (max 100) |
Example
Query
query batchSealJobs(
$status: BatchSealStatus,
$limit: Int
) {
batchSealJobs(
status: $status,
limit: $limit
) {
id
status
totalDocuments
completedDocuments
failedDocuments
startedAt
completedAt
insertedAt
pageMode
positionX
positionY
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
items {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
progressPercent
remaining
}
}
Variables
{"status": "PENDING", "limit": 987}
Response
{
"data": {
"batchSealJobs": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 123,
"completedDocuments": 987,
"failedDocuments": 123,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 123.45,
"positionY": 987.65,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 987,
"remaining": 987
}
]
}
}
batchSealJobsConnection
Description
Get batch seal jobs with cursor-based pagination
Response
Returns a BatchSealJobConnection!
Arguments
| Name | Description |
|---|---|
first - Int
|
Returns the first n jobs |
after - String
|
Returns jobs after the cursor |
last - Int
|
Returns the last n jobs |
before - String
|
Returns jobs before the cursor |
status - BatchSealStatus
|
Filter by job status |
Example
Query
query batchSealJobsConnection(
$first: Int,
$after: String,
$last: Int,
$before: String,
$status: BatchSealStatus
) {
batchSealJobsConnection(
first: $first,
after: $after,
last: $last,
before: $before,
status: $status
) {
edges {
node {
...BatchSealJobFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 123,
"after": "xyz789",
"last": 987,
"before": "abc123",
"status": "PENDING"
}
Response
{
"data": {
"batchSealJobsConnection": {
"edges": [BatchSealJobEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
chatMessages
Description
List messages in a chat session
Response
Returns [ChatMessage!]!
Example
Query
query chatMessages(
$sessionId: UUID!,
$limit: Int
) {
chatMessages(
sessionId: $sessionId,
limit: $limit
) {
id
sessionId
role
content
tokenCount
insertedAt
}
}
Variables
{
"sessionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"limit": 123
}
Response
{
"data": {
"chatMessages": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"sessionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "USER",
"content": "abc123",
"tokenCount": 123,
"insertedAt": "2007-12-03T10:15:30Z"
}
]
}
}
chatSessions
Description
List user's active chat sessions
Response
Returns [ChatSession!]!
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum sessions to return (max 100) |
Example
Query
query chatSessions($limit: Int) {
chatSessions(limit: $limit) {
id
title
status
documentIds
lastMessageAt
insertedAt
updatedAt
}
}
Variables
{"limit": 123}
Response
{
"data": {
"chatSessions": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"title": "xyz789",
"status": "ACTIVE",
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"lastMessageAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
]
}
}
credential
Description
Get a single credential by ID
Response
Returns a Credential
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
query credential($id: UUID!) {
credential(id: $id) {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"credential": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "abc123",
"regionCode": "xyz789",
"licenseType": "abc123",
"displayName": "xyz789",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "abc123",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "abc123",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": true,
"isExpired": true,
"canSeal": false,
"stampSvg": "xyz789"
}
}
}
credentials
Description
List user's credentials (max 100 per request)
Response
Returns [Credential!]!
Example
Query
query credentials {
credentials {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
}
Response
{
"data": {
"credentials": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "xyz789",
"regionCode": "abc123",
"licenseType": "xyz789",
"displayName": "abc123",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "abc123",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "xyz789",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": false,
"isExpired": true,
"canSeal": false,
"stampSvg": "xyz789"
}
]
}
}
credentialsConnection
Description
Get credentials with cursor-based pagination
Response
Returns a CredentialConnection!
Example
Query
query credentialsConnection(
$first: Int,
$after: String,
$last: Int,
$before: String
) {
credentialsConnection(
first: $first,
after: $after,
last: $last,
before: $before
) {
edges {
node {
...CredentialFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 987,
"after": "xyz789",
"last": 123,
"before": "xyz789"
}
Response
{
"data": {
"credentialsConnection": {
"edges": [CredentialEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
document
Description
Get a single document by ID
Example
Query
query document($id: UUID!) {
document(id: $id) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"document": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 123,
"hasVersions": false,
"downloadUrl": "xyz789"
}
}
}
documents
Description
List user's documents
Response
Returns [Document!]!
Arguments
| Name | Description |
|---|---|
status - DocumentStatus
|
Filter by document status |
folderId - UUID
|
Filter by folder ID |
limit - Int
|
Maximum documents to return (max 100) |
Example
Query
query documents(
$status: DocumentStatus,
$folderId: UUID,
$limit: Int
) {
documents(
status: $status,
folderId: $folderId,
limit: $limit
) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{
"status": "DRAFT",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"limit": 123
}
Response
{
"data": {
"documents": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 987,
"hasVersions": true,
"downloadUrl": "abc123"
}
]
}
}
documentsConnection
Description
Get documents with cursor-based pagination
Response
Returns a DocumentConnection!
Example
Query
query documentsConnection(
$first: Int,
$after: String,
$last: Int,
$before: String,
$status: DocumentStatus,
$folderId: UUID
) {
documentsConnection(
first: $first,
after: $after,
last: $last,
before: $before,
status: $status,
folderId: $folderId
) {
edges {
node {
...DocumentFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 123,
"after": "xyz789",
"last": 987,
"before": "abc123",
"status": "DRAFT",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"documentsConnection": {
"edges": [DocumentEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
encryptedMessages
Description
Fetch unacknowledged encrypted messages for the current user
Response
Returns [EncryptedMessage!]!
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum messages to return (max 500) |
Example
Query
query encryptedMessages($limit: Int) {
encryptedMessages(limit: $limit) {
id
senderId
ciphertext
messageType
insertedAt
}
}
Variables
{"limit": 123}
Response
{
"data": {
"encryptedMessages": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"senderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"ciphertext": "abc123",
"messageType": "PREKEY",
"insertedAt": "2007-12-03T10:15:30Z"
}
]
}
}
folders
Description
List user's folders
Response
Returns [DocumentFolder!]!
Arguments
| Name | Description |
|---|---|
parentId - UUID
|
Example
Query
query folders($parentId: UUID) {
folders(parentId: $parentId) {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
children {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
documents {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
documentCount
}
}
Variables
{
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"folders": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "xyz789",
"color": "abc123",
"icon": "abc123",
"position": 987,
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"parent": DocumentFolder,
"children": [DocumentFolder],
"documents": [Document],
"documentCount": 987
}
]
}
}
foldersConnection
Description
Get folders with cursor-based pagination
Response
Returns a FolderConnection!
Example
Query
query foldersConnection(
$first: Int,
$after: String,
$last: Int,
$before: String,
$parentId: UUID
) {
foldersConnection(
first: $first,
after: $after,
last: $last,
before: $before,
parentId: $parentId
) {
edges {
node {
...DocumentFolderFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 987,
"after": "xyz789",
"last": 123,
"before": "xyz789",
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"foldersConnection": {
"edges": [FolderEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
me
Description
Get the currently authenticated user
Response
Returns a User!
Example
Query
query me {
me {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
}
Response
{
"data": {
"me": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"email": "abc123",
"displayName": "xyz789",
"role": "xyz789",
"mfaEnabled": false,
"confirmedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"uiTheme": "xyz789",
"stampExportSize": "abc123",
"betaFeaturesEnabled": true,
"verificationStatus": "abc123",
"credentialCount": 123,
"trialActive": true
}
}
}
myOrganizations
Description
List all organizations the current user belongs to
Response
Returns [OrganizationMembership!]!
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum results to return (max 50) |
Example
Query
query myOrganizations($limit: Int) {
myOrganizations(limit: $limit) {
id
role
isPrimaryOrg
organization {
id
name
slug
planLevel
insertedAt
updatedAt
canSealDocuments
canUseCloudStorage
maxDocuments
maxCredentials
maxTeamMembers
}
insertedAt
}
}
Variables
{"limit": 123}
Response
{
"data": {
"myOrganizations": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "abc123",
"isPrimaryOrg": false,
"organization": Organization,
"insertedAt": "2007-12-03T10:15:30Z"
}
]
}
}
organization
Description
Get the current organization
Response
Returns an Organization!
Example
Query
query organization {
organization {
id
name
slug
planLevel
insertedAt
updatedAt
canSealDocuments
canUseCloudStorage
maxDocuments
maxCredentials
maxTeamMembers
}
}
Response
{
"data": {
"organization": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"slug": "xyz789",
"planLevel": "FREE",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"canSealDocuments": true,
"canUseCloudStorage": true,
"maxDocuments": 123,
"maxCredentials": 123,
"maxTeamMembers": 123
}
}
}
organizationMembers
Description
List members of the current organization
Response
Returns [OrganizationMember!]!
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum members to return (max 200) |
Example
Query
query organizationMembers($limit: Int) {
organizationMembers(limit: $limit) {
id
role
user {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
insertedAt
}
}
Variables
{"limit": 123}
Response
{
"data": {
"organizationMembers": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "xyz789",
"user": User,
"insertedAt": "2007-12-03T10:15:30Z"
}
]
}
}
organizationMembersConnection
Description
Get organization members with cursor-based pagination
Response
Returns an OrganizationMemberConnection!
Example
Query
query organizationMembersConnection(
$first: Int,
$after: String,
$last: Int,
$before: String
) {
organizationMembersConnection(
first: $first,
after: $after,
last: $last,
before: $before
) {
edges {
node {
...OrganizationMemberFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 987,
"after": "abc123",
"last": 123,
"before": "abc123"
}
Response
{
"data": {
"organizationMembersConnection": {
"edges": [OrganizationMemberEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
pdfDetailedPageInfo
Description
Get detailed page info (dimensions, boxes, rotation) for a specific page
Response
Returns a PdfPageInfoDetail
Example
Query
query pdfDetailedPageInfo(
$documentId: UUID!,
$page: Int!
) {
pdfDetailedPageInfo(
documentId: $documentId,
page: $page
) {
page
width
height
rotation
isLandscape
mediaBox {
x
y
width
height
}
cropBox {
x
y
width
height
}
bleedBox {
x
y
width
height
}
trimBox {
x
y
width
height
}
artBox {
x
y
width
height
}
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"page": 123
}
Response
{
"data": {
"pdfDetailedPageInfo": {
"page": 987,
"width": 987.65,
"height": 123.45,
"rotation": 987,
"isLandscape": true,
"mediaBox": PdfBox,
"cropBox": PdfBox,
"bleedBox": PdfBox,
"trimBox": PdfBox,
"artBox": PdfBox
}
}
}
pdfInfo
Description
Get PDF document info (pages, size, encryption, version)
Example
Query
query pdfInfo($documentId: UUID!) {
pdfInfo(documentId: $documentId) {
pageCount
fileSize
isEncrypted
isLinearized
version
pageSizes {
page
width
height
rotation
}
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfInfo": {
"pageCount": 987,
"fileSize": 123,
"isEncrypted": true,
"isLinearized": false,
"version": "xyz789",
"pageSizes": [PdfPageSize]
}
}
}
pdfMetadata
Description
Extract metadata from a PDF document
Response
Returns a PdfMetadata
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
query pdfMetadata($documentId: UUID!) {
pdfMetadata(documentId: $documentId) {
title
author
subject
keywords
creator
producer
creationDate
modificationDate
pageCount
pdfVersion
fileSize
isEncrypted
hasForms
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfMetadata": {
"title": "xyz789",
"author": "abc123",
"subject": "xyz789",
"keywords": "abc123",
"creator": "xyz789",
"producer": "xyz789",
"creationDate": "abc123",
"modificationDate": "xyz789",
"pageCount": 123,
"pdfVersion": "xyz789",
"fileSize": 123,
"isEncrypted": true,
"hasForms": true
}
}
}
pdfPageInfo
Description
Get page dimensions and rotation for each page of a PDF
Response
Returns [PdfPageInfoBasic!]!
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
query pdfPageInfo($documentId: UUID!) {
pdfPageInfo(documentId: $documentId) {
page
width
height
rotation
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfPageInfo": [
{"page": 987, "width": 123.45, "height": 123.45, "rotation": 123}
]
}
}
pdfSignatures
Description
Get digital signature information from a PDF
Response
Returns a PdfSignatureInfo
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
query pdfSignatures($documentId: UUID!) {
pdfSignatures(documentId: $documentId) {
isSigned
signatureCount
signatures {
signerName
signingDate
signatureType
}
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfSignatures": {
"isSigned": false,
"signatureCount": 123,
"signatures": [PdfSignature]
}
}
}
pdfText
Description
Extract text content from a PDF document
Response
Returns a PdfTextResult
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
query pdfText($documentId: UUID!) {
pdfText(documentId: $documentId) {
text
pageCount
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfText": {
"text": "abc123",
"pageCount": 987
}
}
}
pdfValidate
Description
Validate PDF structure and report any issues
Response
Returns a PdfValidationResult
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
query pdfValidate($documentId: UUID!) {
pdfValidate(documentId: $documentId) {
isValid
issues
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"pdfValidate": {
"isValid": true,
"issues": ["abc123"]
}
}
}
prekeyBundle
Description
Fetch a user's pre-key bundle for Signal Protocol session setup
Response
Returns a PrekeyBundle
Arguments
| Name | Description |
|---|---|
userId - UUID!
|
Example
Query
query prekeyBundle($userId: UUID!) {
prekeyBundle(userId: $userId) {
identityKey
registrationId
signedPrekey
signedPrekeyId
signedPrekeySignature
prekey
prekeyId
}
}
Variables
{
"userId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"prekeyBundle": {
"identityKey": "xyz789",
"registrationId": 987,
"signedPrekey": "abc123",
"signedPrekeyId": 123,
"signedPrekeySignature": "xyz789",
"prekey": "abc123",
"prekeyId": 123
}
}
}
professional
Description
Get a single professional's full profile by ID
Response
Returns a ProfessionalProfile
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
query professional($id: UUID!) {
professional(id: $id) {
id
firstName
lastName
fullName
slug
stateCode
licenseNumber
licenseStatus
headline
photoUrl
currentTitle
currentCompany
summary
linkedinUrl
websiteUrl
yearsExperience
specializations
skills
education
certifications
enrichmentConfidence
lastVerifiedAt
expirationDate
professionId
professionName
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"professional": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"firstName": "xyz789",
"lastName": "xyz789",
"fullName": "abc123",
"slug": "abc123",
"stateCode": "xyz789",
"licenseNumber": "xyz789",
"licenseStatus": "abc123",
"headline": "xyz789",
"photoUrl": "xyz789",
"currentTitle": "abc123",
"currentCompany": "abc123",
"summary": "abc123",
"linkedinUrl": "xyz789",
"websiteUrl": "abc123",
"yearsExperience": 123,
"specializations": ["abc123"],
"skills": ["xyz789"],
"education": ["xyz789"],
"certifications": ["abc123"],
"enrichmentConfidence": 987.65,
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"professionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"professionName": "abc123"
}
}
}
professions
Description
List active professions for the directory
Response
Returns [Profession!]!
Arguments
| Name | Description |
|---|---|
group - String
|
Optional profession group filter |
Example
Query
query professions($group: String) {
professions(group: $group) {
id
name
shortName
slug
titleSuffix
professionGroup
description
iconName
professionalCount
}
}
Variables
{"group": "abc123"}
Response
{
"data": {
"professions": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"shortName": "xyz789",
"slug": "abc123",
"titleSuffix": "xyz789",
"professionGroup": "abc123",
"description": "xyz789",
"iconName": "xyz789",
"professionalCount": 123
}
]
}
}
seals
Description
List user's seals
Example
Query
query seals($limit: Int) {
seals(limit: $limit) {
id
verificationCode
documentHash
sealedAt
insertedAt
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
signingCertificate {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
pkiSigned
verificationUrl
}
}
Variables
{"limit": 987}
Response
{
"data": {
"seals": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"verificationCode": "xyz789",
"documentHash": "abc123",
"sealedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"document": Document,
"credential": Credential,
"signingCertificate": SigningCertificate,
"pkiSigned": true,
"verificationUrl": "xyz789"
}
]
}
}
sealsConnection
Description
Get seals with cursor-based pagination
Response
Returns a SealConnection!
Example
Query
query sealsConnection(
$first: Int,
$after: String,
$last: Int,
$before: String
) {
sealsConnection(
first: $first,
after: $after,
last: $last,
before: $before
) {
edges {
node {
...SealFragment
}
cursor
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Variables
{
"first": 987,
"after": "abc123",
"last": 987,
"before": "abc123"
}
Response
{
"data": {
"sealsConnection": {
"edges": [SealEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
searchDocumentChunks
Description
Semantic search over document chunks
Response
Returns [SearchResult!]!
Example
Query
query searchDocumentChunks(
$query: String!,
$documentIds: [UUID!]!,
$limit: Int
) {
searchDocumentChunks(
query: $query,
documentIds: $documentIds,
limit: $limit
) {
id
content
chunkIndex
pageNumber
similarity
documentId
}
}
Variables
{
"query": "xyz789",
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"limit": 123
}
Response
{
"data": {
"searchDocumentChunks": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"content": "abc123",
"chunkIndex": 123,
"pageNumber": 987,
"similarity": 987.65,
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
]
}
}
searchProfessionals
Description
Search professionals in the directory by profession, state, and name
Response
Returns a DirectoryPage
Example
Query
query searchProfessionals(
$professionSlug: String!,
$stateCode: String,
$query: String,
$page: Int,
$perPage: Int
) {
searchProfessionals(
professionSlug: $professionSlug,
stateCode: $stateCode,
query: $query,
page: $page,
perPage: $perPage
) {
professionals {
id
firstName
lastName
fullName
slug
stateCode
licenseNumber
licenseStatus
headline
photoUrl
currentTitle
currentCompany
professionName
}
totalCount
hasMore
}
}
Variables
{
"professionSlug": "xyz789",
"stateCode": "abc123",
"query": "xyz789",
"page": 987,
"perPage": 987
}
Response
{
"data": {
"searchProfessionals": {
"professionals": [ProfessionalSummary],
"totalCount": 123,
"hasMore": true
}
}
}
searchProfessionalsBoard
Description
Search licensing board database for professionals by name and state
Response
Returns [BoardSearchResult!]!
Arguments
| Name | Description |
|---|---|
input - BoardSearchInput!
|
Example
Query
query searchProfessionalsBoard($input: BoardSearchInput!) {
searchProfessionalsBoard(input: $input) {
id
firstName
lastName
fullName
licenseNumber
stateCode
licenseType
companyName
city
expirationDate
discipline
licenseStatus
}
}
Variables
{"input": BoardSearchInput}
Response
{
"data": {
"searchProfessionalsBoard": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"firstName": "abc123",
"lastName": "xyz789",
"fullName": "xyz789",
"licenseNumber": "abc123",
"stateCode": "abc123",
"licenseType": "abc123",
"companyName": "abc123",
"city": "abc123",
"expirationDate": "2007-12-03",
"discipline": "xyz789",
"licenseStatus": "xyz789"
}
]
}
}
signingCertificate
Description
Get a single signing certificate by ID
Response
Returns a SigningCertificate
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
query signingCertificate($id: UUID!) {
signingCertificate(id: $id) {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"signingCertificate": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "abc123",
"commonName": "abc123",
"issuerCn": "xyz789",
"serialNumber": "xyz789",
"notBefore": "2007-12-03T10:15:30Z",
"expiresAt": "2007-12-03T10:15:30Z",
"fingerprintSha256": "xyz789",
"isDefault": true,
"lastUsedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"status": "ACTIVE",
"isValid": false,
"daysUntilExpiry": 123,
"hasPrivateKey": false
}
}
}
signingCertificates
Description
List user's signing certificates
Response
Returns [SigningCertificate!]!
Arguments
| Name | Description |
|---|---|
limit - Int
|
Maximum certificates to return (max 100) |
Example
Query
query signingCertificates($limit: Int) {
signingCertificates(limit: $limit) {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
}
Variables
{"limit": 987}
Response
{
"data": {
"signingCertificates": [
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "abc123",
"commonName": "xyz789",
"issuerCn": "abc123",
"serialNumber": "xyz789",
"notBefore": "2007-12-03T10:15:30Z",
"expiresAt": "2007-12-03T10:15:30Z",
"fingerprintSha256": "xyz789",
"isDefault": false,
"lastUsedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"status": "ACTIVE",
"isValid": true,
"daysUntilExpiry": 987,
"hasPrivateKey": true
}
]
}
}
subscription
Description
Get the current organization's subscription status
Response
Returns a SubscriptionStatus
Example
Query
query subscription {
subscription {
planLevel
status
currentPeriodEnd
cancelAtPeriodEnd
trialEnd
}
}
Response
{
"data": {
"subscription": {
"planLevel": "FREE",
"status": "abc123",
"currentPeriodEnd": "2007-12-03T10:15:30Z",
"cancelAtPeriodEnd": true,
"trialEnd": "2007-12-03T10:15:30Z"
}
}
}
verifySeal
Description
Verify a seal by its verification code (public, no auth required)
Response
Returns a SealVerificationResult
Arguments
| Name | Description |
|---|---|
code - String!
|
Example
Query
query verifySeal($code: String!) {
verifySeal(code: $code) {
verificationCode
documentName
sealedAt
signerName
regionCode
credentialStatus
isValid
documentHash
}
}
Variables
{"code": "abc123"}
Response
{
"data": {
"verifySeal": {
"verificationCode": "xyz789",
"documentName": "xyz789",
"sealedAt": "2007-12-03T10:15:30Z",
"signerName": "xyz789",
"regionCode": "xyz789",
"credentialStatus": "abc123",
"isValid": true,
"documentHash": "xyz789"
}
}
}
Mutations
acknowledgeMessages
Description
Acknowledge received encrypted messages
Example
Query
mutation acknowledgeMessages($messageIds: [UUID!]!) {
acknowledgeMessages(messageIds: $messageIds)
}
Variables
{
"messageIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
]
}
Response
{"data": {"acknowledgeMessages": false}}
addPdfPage
Description
Add a blank page to a PDF document
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - AddPageInput!
|
Example
Query
mutation addPdfPage($input: AddPageInput!) {
addPdfPage(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": AddPageInput}
Response
{
"data": {
"addPdfPage": {
"document": Document,
"pageCount": 987,
"operationsApplied": 987,
"fieldsFilled": 987,
"pagesWatermarked": 987
}
}
}
addPdfWatermark
Description
Add a text watermark to PDF pages
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - WatermarkInput!
|
Example
Query
mutation addPdfWatermark($input: WatermarkInput!) {
addPdfWatermark(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": WatermarkInput}
Response
{
"data": {
"addPdfWatermark": {
"document": Document,
"pageCount": 123,
"operationsApplied": 123,
"fieldsFilled": 123,
"pagesWatermarked": 123
}
}
}
cancelBatchSealJob
Description
Cancel a batch seal job
Response
Returns a BatchSealJob
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation cancelBatchSealJob($id: UUID!) {
cancelBatchSealJob(id: $id) {
id
status
totalDocuments
completedDocuments
failedDocuments
startedAt
completedAt
insertedAt
pageMode
positionX
positionY
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
items {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
progressPercent
remaining
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"cancelBatchSealJob": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 123,
"completedDocuments": 123,
"failedDocuments": 123,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 123.45,
"positionY": 123.45,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 123,
"remaining": 987
}
}
}
changePassword
Description
Change the current user's password
Response
Returns a ChangePasswordResult
Arguments
| Name | Description |
|---|---|
input - ChangePasswordInput!
|
Example
Query
mutation changePassword($input: ChangePasswordInput!) {
changePassword(input: $input) {
success
}
}
Variables
{"input": ChangePasswordInput}
Response
{"data": {"changePassword": {"success": false}}}
claimProfessional
Description
Claim a professional license and create a credential
Response
Returns a Credential
Arguments
| Name | Description |
|---|---|
professionalId - UUID!
|
Example
Query
mutation claimProfessional($professionalId: UUID!) {
claimProfessional(professionalId: $professionalId) {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
}
Variables
{
"professionalId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"claimProfessional": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "abc123",
"regionCode": "xyz789",
"licenseType": "xyz789",
"displayName": "xyz789",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "abc123",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "xyz789",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": true,
"isExpired": true,
"canSeal": true,
"stampSvg": "xyz789"
}
}
}
createBatchSealJob
Description
Create a batch seal job
Response
Returns a BatchSealJob
Arguments
| Name | Description |
|---|---|
input - CreateBatchSealInput!
|
Example
Query
mutation createBatchSealJob($input: CreateBatchSealInput!) {
createBatchSealJob(input: $input) {
id
status
totalDocuments
completedDocuments
failedDocuments
startedAt
completedAt
insertedAt
pageMode
positionX
positionY
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
items {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
progressPercent
remaining
}
}
Variables
{"input": CreateBatchSealInput}
Response
{
"data": {
"createBatchSealJob": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 987,
"completedDocuments": 123,
"failedDocuments": 987,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 123.45,
"positionY": 123.45,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 123,
"remaining": 123
}
}
}
createChatSession
Description
Create a new chat session linked to documents
Response
Returns a ChatSession
Arguments
| Name | Description |
|---|---|
input - CreateChatSessionInput!
|
Example
Query
mutation createChatSession($input: CreateChatSessionInput!) {
createChatSession(input: $input) {
id
title
status
documentIds
lastMessageAt
insertedAt
updatedAt
}
}
Variables
{"input": CreateChatSessionInput}
Response
{
"data": {
"createChatSession": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"title": "abc123",
"status": "ACTIVE",
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"lastMessageAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
}
}
createCredential
Description
Create a new credential
Response
Returns a Credential
Arguments
| Name | Description |
|---|---|
input - CreateCredentialInput!
|
Example
Query
mutation createCredential($input: CreateCredentialInput!) {
createCredential(input: $input) {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
}
Variables
{"input": CreateCredentialInput}
Response
{
"data": {
"createCredential": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "xyz789",
"regionCode": "xyz789",
"licenseType": "abc123",
"displayName": "xyz789",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "xyz789",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "xyz789",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": false,
"isExpired": false,
"canSeal": false,
"stampSvg": "abc123"
}
}
}
createCustomerSession
Description
Create a Stripe CustomerSession for managing saved payment methods
Response
Returns a CustomerSessionPayload
Example
Query
mutation createCustomerSession {
createCustomerSession {
customerId
clientSecret
}
}
Response
{
"data": {
"createCustomerSession": {
"customerId": "abc123",
"clientSecret": "abc123"
}
}
}
createDocument
Description
Create a new document
Response
Returns a Document
Arguments
| Name | Description |
|---|---|
input - CreateDocumentInput!
|
Example
Query
mutation createDocument($input: CreateDocumentInput!) {
createDocument(input: $input) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{"input": CreateDocumentInput}
Response
{
"data": {
"createDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "abc123",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 987,
"hasVersions": false,
"downloadUrl": "xyz789"
}
}
}
createFolder
Description
Create a new folder
Response
Returns a DocumentFolder
Arguments
| Name | Description |
|---|---|
input - CreateFolderInput!
|
Example
Query
mutation createFolder($input: CreateFolderInput!) {
createFolder(input: $input) {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
children {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
documents {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
documentCount
}
}
Variables
{"input": CreateFolderInput}
Response
{
"data": {
"createFolder": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "abc123",
"color": "abc123",
"icon": "abc123",
"position": 987,
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"parent": DocumentFolder,
"children": [DocumentFolder],
"documents": [Document],
"documentCount": 123
}
}
}
createPaymentIntent
Description
Create a Stripe PaymentIntent for plan checkout
Response
Returns a PaymentIntentPayload
Arguments
| Name | Description |
|---|---|
input - CreatePaymentIntentInput!
|
Example
Query
mutation createPaymentIntent($input: CreatePaymentIntentInput!) {
createPaymentIntent(input: $input) {
clientSecret
}
}
Variables
{"input": CreatePaymentIntentInput}
Response
{
"data": {
"createPaymentIntent": {
"clientSecret": "abc123"
}
}
}
createPdf
Description
Create a new blank PDF document
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - CreatePdfInput!
|
Example
Query
mutation createPdf($input: CreatePdfInput!) {
createPdf(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": CreatePdfInput}
Response
{
"data": {
"createPdf": {
"document": Document,
"pageCount": 987,
"operationsApplied": 987,
"fieldsFilled": 123,
"pagesWatermarked": 987
}
}
}
createSetupIntent
Description
Create a Stripe SetupIntent for saving a card without charging
Response
Returns a SetupIntentPayload
Example
Query
mutation createSetupIntent {
createSetupIntent {
clientSecret
}
}
Response
{
"data": {
"createSetupIntent": {
"clientSecret": "xyz789"
}
}
}
deleteAccount
Description
Delete the current user's account (requires password confirmation)
Response
Returns a DeleteAccountResult
Arguments
| Name | Description |
|---|---|
password - String!
|
Example
Query
mutation deleteAccount($password: String!) {
deleteAccount(password: $password) {
success
}
}
Variables
{"password": "abc123"}
Response
{"data": {"deleteAccount": {"success": false}}}
deleteCertificate
Description
Delete a signing certificate
Response
Returns a DeleteResult!
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation deleteCertificate($id: UUID!) {
deleteCertificate(id: $id) {
id
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"deleteCertificate": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
}
}
deleteChatSession
Description
Soft-delete a chat session
Response
Returns a DeleteResult!
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation deleteChatSession($id: UUID!) {
deleteChatSession(id: $id) {
id
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"deleteChatSession": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
}
}
deleteCredential
Description
Delete a credential
Response
Returns a DeleteResult!
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation deleteCredential($id: UUID!) {
deleteCredential(id: $id) {
id
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"deleteCredential": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
}
}
deleteDocument
Description
Delete a document
Response
Returns a DeleteResult!
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation deleteDocument($id: UUID!) {
deleteDocument(id: $id) {
id
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"deleteDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
}
}
deleteFolder
Description
Delete a folder
Response
Returns a DeleteResult!
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation deleteFolder($id: UUID!) {
deleteFolder(id: $id) {
id
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"deleteFolder": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
}
}
disableMfa
Description
Disable MFA (requires current TOTP code)
drawOnPdf
Description
Draw shapes and text on a PDF page
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - DrawOperationsInput!
|
Example
Query
mutation drawOnPdf($input: DrawOperationsInput!) {
drawOnPdf(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": DrawOperationsInput}
Response
{
"data": {
"drawOnPdf": {
"document": Document,
"pageCount": 987,
"operationsApplied": 123,
"fieldsFilled": 987,
"pagesWatermarked": 123
}
}
}
drawPdfImage
Description
Draw an image on a PDF page
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - DrawImageInput!
|
Example
Query
mutation drawPdfImage($input: DrawImageInput!) {
drawPdfImage(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": DrawImageInput}
Response
{
"data": {
"drawPdfImage": {
"document": Document,
"pageCount": 987,
"operationsApplied": 987,
"fieldsFilled": 987,
"pagesWatermarked": 987
}
}
}
enableMfa
Description
Verify code and enable MFA, returns backup codes
Response
Returns a MfaEnableResult
Arguments
| Name | Description |
|---|---|
input - EnableMfaInput!
|
Example
Query
mutation enableMfa($input: EnableMfaInput!) {
enableMfa(input: $input) {
backupCodes
enabledAt
}
}
Variables
{"input": EnableMfaInput}
Response
{
"data": {
"enableMfa": {
"backupCodes": ["xyz789"],
"enabledAt": "2007-12-03T10:15:30Z"
}
}
}
exportCredentialStamp
Description
Export a credential stamp as a file (PDF, PNG, JPEG, or TIFF)
Response
Returns a StampExport
Arguments
| Name | Description |
|---|---|
id - UUID!
|
|
format - StampExportFormat!
|
Example
Query
mutation exportCredentialStamp(
$id: UUID!,
$format: StampExportFormat!
) {
exportCredentialStamp(
id: $id,
format: $format
) {
data
filename
contentType
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"format": "PDF"
}
Response
{
"data": {
"exportCredentialStamp": {
"data": "xyz789",
"filename": "abc123",
"contentType": "abc123"
}
}
}
extractPages
Description
Extract specific pages from a PDF into a new document
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - ExtractPagesInput!
|
Example
Query
mutation extractPages($input: ExtractPagesInput!) {
extractPages(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": ExtractPagesInput}
Response
{
"data": {
"extractPages": {
"document": Document,
"pageCount": 987,
"operationsApplied": 123,
"fieldsFilled": 123,
"pagesWatermarked": 987
}
}
}
fillPdfForm
Description
Fill form fields in a PDF
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - FillFormInput!
|
Example
Query
mutation fillPdfForm($input: FillFormInput!) {
fillPdfForm(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": FillFormInput}
Response
{
"data": {
"fillPdfForm": {
"document": Document,
"pageCount": 987,
"operationsApplied": 987,
"fieldsFilled": 123,
"pagesWatermarked": 987
}
}
}
flattenPdfForm
Description
Flatten interactive form fields in a PDF
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
Example
Query
mutation flattenPdfForm($documentId: UUID!) {
flattenPdfForm(documentId: $documentId) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"flattenPdfForm": {
"document": Document,
"pageCount": 123,
"operationsApplied": 123,
"fieldsFilled": 123,
"pagesWatermarked": 123
}
}
}
login
Description
Login with email and password
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
input - LoginInput!
|
Example
Query
mutation login($input: LoginInput!) {
login(input: $input) {
accessToken
refreshToken
expiresIn
mfaPendingToken
mfaRequired
user {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
}
}
Variables
{"input": LoginInput}
Response
{
"data": {
"login": {
"accessToken": "xyz789",
"refreshToken": "xyz789",
"expiresIn": 987,
"mfaPendingToken": "abc123",
"mfaRequired": false,
"user": User
}
}
}
logout
Description
Logout (revoke refresh token)
mergePdfs
Description
Merge multiple PDF documents into one
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - MergePdfsInput!
|
Example
Query
mutation mergePdfs($input: MergePdfsInput!) {
mergePdfs(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": MergePdfsInput}
Response
{
"data": {
"mergePdfs": {
"document": Document,
"pageCount": 123,
"operationsApplied": 987,
"fieldsFilled": 987,
"pagesWatermarked": 987
}
}
}
moveDocument
Description
Move a document to a folder
Example
Query
mutation moveDocument(
$id: UUID!,
$folderId: UUID
) {
moveDocument(
id: $id,
folderId: $folderId
) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"moveDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "abc123",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 987,
"hasVersions": false,
"downloadUrl": "xyz789"
}
}
}
movePdfPage
Description
Move a page to a different position within a PDF
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - MovePdfPageInput!
|
Example
Query
mutation movePdfPage($input: MovePdfPageInput!) {
movePdfPage(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": MovePdfPageInput}
Response
{
"data": {
"movePdfPage": {
"document": Document,
"pageCount": 123,
"operationsApplied": 987,
"fieldsFilled": 987,
"pagesWatermarked": 987
}
}
}
refreshToken
Description
Refresh access token
Response
Returns a RefreshPayload
Arguments
| Name | Description |
|---|---|
refreshToken - String!
|
Example
Query
mutation refreshToken($refreshToken: String!) {
refreshToken(refreshToken: $refreshToken) {
accessToken
refreshToken
expiresIn
}
}
Variables
{"refreshToken": "abc123"}
Response
{
"data": {
"refreshToken": {
"accessToken": "abc123",
"refreshToken": "abc123",
"expiresIn": 123
}
}
}
regenerateBackupCodes
Description
Regenerate MFA backup codes (requires current TOTP code)
Response
Returns [String!]!
Arguments
| Name | Description |
|---|---|
code - String!
|
Example
Query
mutation regenerateBackupCodes($code: String!) {
regenerateBackupCodes(code: $code)
}
Variables
{"code": "xyz789"}
Response
{
"data": {
"regenerateBackupCodes": ["abc123"]
}
}
registerPrekeys
Description
Register pre-key bundle for Signal Protocol E2E encryption
Response
Returns a Boolean!
Arguments
| Name | Description |
|---|---|
input - RegisterPrekeysInput!
|
Example
Query
mutation registerPrekeys($input: RegisterPrekeysInput!) {
registerPrekeys(input: $input)
}
Variables
{"input": RegisterPrekeysInput}
Response
{"data": {"registerPrekeys": true}}
registerUser
Description
Register a new user with email and password
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
input - RegisterInput!
|
Example
Query
mutation registerUser($input: RegisterInput!) {
registerUser(input: $input) {
accessToken
refreshToken
expiresIn
mfaPendingToken
mfaRequired
user {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
}
}
Variables
{"input": RegisterInput}
Response
{
"data": {
"registerUser": {
"accessToken": "xyz789",
"refreshToken": "xyz789",
"expiresIn": 987,
"mfaPendingToken": "xyz789",
"mfaRequired": false,
"user": User
}
}
}
removePdfPage
Description
Remove a page from a PDF document
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - RemovePdfPageInput!
|
Example
Query
mutation removePdfPage($input: RemovePdfPageInput!) {
removePdfPage(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": RemovePdfPageInput}
Response
{
"data": {
"removePdfPage": {
"document": Document,
"pageCount": 123,
"operationsApplied": 987,
"fieldsFilled": 987,
"pagesWatermarked": 123
}
}
}
removePdfProtection
Description
Remove password protection from a PDF
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - RemovePdfProtectionInput!
|
Example
Query
mutation removePdfProtection($input: RemovePdfProtectionInput!) {
removePdfProtection(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": RemovePdfProtectionInput}
Response
{
"data": {
"removePdfProtection": {
"document": Document,
"pageCount": 987,
"operationsApplied": 123,
"fieldsFilled": 987,
"pagesWatermarked": 987
}
}
}
requestEmailChange
Description
Request an email address change (sends confirmation email)
Response
Returns a RequestEmailChangeResult
Arguments
| Name | Description |
|---|---|
input - RequestEmailChangeInput!
|
Example
Query
mutation requestEmailChange($input: RequestEmailChangeInput!) {
requestEmailChange(input: $input) {
success
}
}
Variables
{"input": RequestEmailChangeInput}
Response
{"data": {"requestEmailChange": {"success": true}}}
requestMagicLink
Description
Request a magic link for passwordless login
requestPasswordReset
Description
Request a password reset email
resetPassword
Description
Reset password using a token from the reset email
Response
Returns a ChangePasswordResult
Arguments
| Name | Description |
|---|---|
input - ResetPasswordInput!
|
Example
Query
mutation resetPassword($input: ResetPasswordInput!) {
resetPassword(input: $input) {
success
}
}
Variables
{"input": ResetPasswordInput}
Response
{"data": {"resetPassword": {"success": true}}}
sealDocument
Description
Seal a document
Response
Returns a Seal
Arguments
| Name | Description |
|---|---|
input - SealDocumentInput!
|
Example
Query
mutation sealDocument($input: SealDocumentInput!) {
sealDocument(input: $input) {
id
verificationCode
documentHash
sealedAt
insertedAt
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
signingCertificate {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
pkiSigned
verificationUrl
}
}
Variables
{"input": SealDocumentInput}
Response
{
"data": {
"sealDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"verificationCode": "xyz789",
"documentHash": "xyz789",
"sealedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"document": Document,
"credential": Credential,
"signingCertificate": SigningCertificate,
"pkiSigned": false,
"verificationUrl": "abc123"
}
}
}
sendChatMessage
Description
Persist a chat message (user or assistant)
Response
Returns a ChatMessage
Arguments
| Name | Description |
|---|---|
input - SendChatMessageInput!
|
Example
Query
mutation sendChatMessage($input: SendChatMessageInput!) {
sendChatMessage(input: $input) {
id
sessionId
role
content
tokenCount
insertedAt
}
}
Variables
{"input": SendChatMessageInput}
Response
{
"data": {
"sendChatMessage": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"sessionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "USER",
"content": "abc123",
"tokenCount": 987,
"insertedAt": "2007-12-03T10:15:30Z"
}
}
}
sendEncryptedMessage
Description
Send an encrypted message via Signal Protocol
Response
Returns a Boolean!
Arguments
| Name | Description |
|---|---|
input - SendEncryptedMessageInput!
|
Example
Query
mutation sendEncryptedMessage($input: SendEncryptedMessageInput!) {
sendEncryptedMessage(input: $input)
}
Variables
{"input": SendEncryptedMessageInput}
Response
{"data": {"sendEncryptedMessage": true}}
setDefaultCertificate
Description
Set a signing certificate as the default
Response
Returns a SigningCertificate
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation setDefaultCertificate($id: UUID!) {
setDefaultCertificate(id: $id) {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"setDefaultCertificate": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "xyz789",
"commonName": "xyz789",
"issuerCn": "xyz789",
"serialNumber": "xyz789",
"notBefore": "2007-12-03T10:15:30Z",
"expiresAt": "2007-12-03T10:15:30Z",
"fingerprintSha256": "abc123",
"isDefault": true,
"lastUsedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"status": "ACTIVE",
"isValid": true,
"daysUntilExpiry": 123,
"hasPrivateKey": true
}
}
}
setPdfMetadata
Description
Set PDF document metadata
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
|
metadata - PdfMetadataInput!
|
Example
Query
mutation setPdfMetadata(
$documentId: UUID!,
$metadata: PdfMetadataInput!
) {
setPdfMetadata(
documentId: $documentId,
metadata: $metadata
) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"metadata": PdfMetadataInput
}
Response
{
"data": {
"setPdfMetadata": {
"document": Document,
"pageCount": 987,
"operationsApplied": 123,
"fieldsFilled": 123,
"pagesWatermarked": 123
}
}
}
setPdfProtection
Description
Set PDF password protection and permissions
Response
Returns a PdfOperationResult
Arguments
| Name | Description |
|---|---|
input - PdfProtectionInput!
|
Example
Query
mutation setPdfProtection($input: PdfProtectionInput!) {
setPdfProtection(input: $input) {
document {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
pageCount
operationsApplied
fieldsFilled
pagesWatermarked
}
}
Variables
{"input": PdfProtectionInput}
Response
{
"data": {
"setPdfProtection": {
"document": Document,
"pageCount": 123,
"operationsApplied": 123,
"fieldsFilled": 123,
"pagesWatermarked": 123
}
}
}
setupMfa
Description
Generate MFA secret and otpauth URI for setup
Response
Returns a MfaSetup
Example
Query
mutation setupMfa {
setupMfa {
secret
otpauthUri
}
}
Response
{
"data": {
"setupMfa": {
"secret": "abc123",
"otpauthUri": "xyz789"
}
}
}
startBatchSealJob
Description
Start a batch seal job
Response
Returns a BatchSealJob
Arguments
| Name | Description |
|---|---|
id - UUID!
|
Example
Query
mutation startBatchSealJob($id: UUID!) {
startBatchSealJob(id: $id) {
id
status
totalDocuments
completedDocuments
failedDocuments
startedAt
completedAt
insertedAt
pageMode
positionX
positionY
credential {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
items {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
progressPercent
remaining
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"startBatchSealJob": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 987,
"completedDocuments": 987,
"failedDocuments": 987,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 987.65,
"positionY": 987.65,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 987,
"remaining": 987
}
}
}
submitVerification
Description
Submit government ID for verification
Response
Returns a VerificationResult
Arguments
| Name | Description |
|---|---|
input - SubmitVerificationInput!
|
Example
Query
mutation submitVerification($input: SubmitVerificationInput!) {
submitVerification(input: $input) {
id
status
}
}
Variables
{"input": SubmitVerificationInput}
Response
{
"data": {
"submitVerification": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "xyz789"
}
}
}
switchOrganization
Description
Switch active organization and get new tokens
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
organizationId - UUID!
|
Example
Query
mutation switchOrganization($organizationId: UUID!) {
switchOrganization(organizationId: $organizationId) {
accessToken
refreshToken
expiresIn
mfaPendingToken
mfaRequired
user {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
}
}
Variables
{
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"switchOrganization": {
"accessToken": "abc123",
"refreshToken": "xyz789",
"expiresIn": 987,
"mfaPendingToken": "xyz789",
"mfaRequired": true,
"user": User
}
}
}
updateCredential
Description
Update a credential
Response
Returns a Credential
Arguments
| Name | Description |
|---|---|
id - UUID!
|
|
input - UpdateCredentialInput!
|
Example
Query
mutation updateCredential(
$id: UUID!,
$input: UpdateCredentialInput!
) {
updateCredential(
id: $id,
input: $input
) {
id
licenseNumber
regionCode
licenseType
displayName
status
verificationMethod
verifiedAt
lastVerifiedAt
expirationDate
rejectionReason
insertedAt
updatedAt
certificateFingerprint
certificateIssuedAt
certificateExpiresAt
isVerified
isExpired
canSeal
stampSvg
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"input": UpdateCredentialInput
}
Response
{
"data": {
"updateCredential": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "xyz789",
"regionCode": "abc123",
"licenseType": "abc123",
"displayName": "xyz789",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "abc123",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "abc123",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": false,
"isExpired": true,
"canSeal": false,
"stampSvg": "abc123"
}
}
}
updateDocument
Description
Update a document
Response
Returns a Document
Arguments
| Name | Description |
|---|---|
id - UUID!
|
|
input - UpdateDocumentInput!
|
Example
Query
mutation updateDocument(
$id: UUID!,
$input: UpdateDocumentInput!
) {
updateDocument(
id: $id,
input: $input
) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"input": UpdateDocumentInput
}
Response
{
"data": {
"updateDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "xyz789",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 123,
"hasVersions": false,
"downloadUrl": "abc123"
}
}
}
updateFolder
Description
Update a folder
Response
Returns a DocumentFolder
Arguments
| Name | Description |
|---|---|
id - UUID!
|
|
input - UpdateFolderInput!
|
Example
Query
mutation updateFolder(
$id: UUID!,
$input: UpdateFolderInput!
) {
updateFolder(
id: $id,
input: $input
) {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
children {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
documents {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
...DocumentFolderFragment
}
versions {
...DocumentVersionFragment
}
currentVersion {
...DocumentVersionFragment
}
versionCount
hasVersions
downloadUrl
}
documentCount
}
}
Variables
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"input": UpdateFolderInput
}
Response
{
"data": {
"updateFolder": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"color": "abc123",
"icon": "abc123",
"position": 987,
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"parent": DocumentFolder,
"children": [DocumentFolder],
"documents": [Document],
"documentCount": 987
}
}
}
uploadDocument
Description
Upload a file and create a document from it
Response
Returns a Document
Arguments
| Name | Description |
|---|---|
input - UploadDocumentInput!
|
Example
Query
mutation uploadDocument($input: UploadDocumentInput!) {
uploadDocument(input: $input) {
id
name
description
status
visibility
folderId
organizationId
insertedAt
updatedAt
folder {
id
name
description
color
icon
position
parentId
insertedAt
updatedAt
parent {
...DocumentFolderFragment
}
children {
...DocumentFolderFragment
}
documents {
...DocumentFragment
}
documentCount
}
versions {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
currentVersion {
id
versionNumber
fileHash
notes
insertedAt
seal {
...SealFragment
}
createdBy {
...UserFragment
}
downloadUrl
}
versionCount
hasVersions
downloadUrl
}
}
Variables
{"input": UploadDocumentInput}
Response
{
"data": {
"uploadDocument": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 987,
"hasVersions": false,
"downloadUrl": "abc123"
}
}
}
uploadDocumentChunks
Description
Upload pre-chunked document text for embedding and storage
Response
Returns a ChunkUploadResult
Arguments
| Name | Description |
|---|---|
documentId - UUID!
|
|
chunks - [ChunkInput!]!
|
Example
Query
mutation uploadDocumentChunks(
$documentId: UUID!,
$chunks: [ChunkInput!]!
) {
uploadDocumentChunks(
documentId: $documentId,
chunks: $chunks
) {
count
errors
}
}
Variables
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"chunks": [ChunkInput]
}
Response
{
"data": {
"uploadDocumentChunks": {
"count": 123,
"errors": ["xyz789"]
}
}
}
uploadFile
Description
Upload a file and return metadata
Response
Returns an UploadResult
Arguments
| Name | Description |
|---|---|
file - Upload!
|
Example
Query
mutation uploadFile($file: Upload!) {
uploadFile(file: $file) {
filename
contentType
size
fileHash
}
}
Variables
{"file": Upload}
Response
{
"data": {
"uploadFile": {
"filename": "xyz789",
"contentType": "abc123",
"size": 123,
"fileHash": "xyz789"
}
}
}
uploadSigningCertificate
Description
Upload a PEM-encoded X.509 signing certificate
Response
Returns a SigningCertificate
Arguments
| Name | Description |
|---|---|
input - UploadCertificateInput!
|
Example
Query
mutation uploadSigningCertificate($input: UploadCertificateInput!) {
uploadSigningCertificate(input: $input) {
id
name
description
commonName
issuerCn
serialNumber
notBefore
expiresAt
fingerprintSha256
isDefault
lastUsedAt
insertedAt
updatedAt
status
isValid
daysUntilExpiry
hasPrivateKey
}
}
Variables
{"input": UploadCertificateInput}
Response
{
"data": {
"uploadSigningCertificate": {
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"commonName": "abc123",
"issuerCn": "xyz789",
"serialNumber": "xyz789",
"notBefore": "2007-12-03T10:15:30Z",
"expiresAt": "2007-12-03T10:15:30Z",
"fingerprintSha256": "abc123",
"isDefault": true,
"lastUsedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"status": "ACTIVE",
"isValid": false,
"daysUntilExpiry": 987,
"hasPrivateKey": true
}
}
}
verifyMfa
Description
Verify MFA code
Response
Returns an AuthPayload
Arguments
| Name | Description |
|---|---|
input - MfaVerifyInput!
|
Example
Query
mutation verifyMfa($input: MfaVerifyInput!) {
verifyMfa(input: $input) {
accessToken
refreshToken
expiresIn
mfaPendingToken
mfaRequired
user {
id
email
displayName
role
mfaEnabled
confirmedAt
insertedAt
updatedAt
uiTheme
stampExportSize
betaFeaturesEnabled
verificationStatus
credentialCount
trialActive
}
}
}
Variables
{"input": MfaVerifyInput}
Response
{
"data": {
"verifyMfa": {
"accessToken": "xyz789",
"refreshToken": "abc123",
"expiresIn": 987,
"mfaPendingToken": "xyz789",
"mfaRequired": true,
"user": User
}
}
}
Subscriptions
batchSealProgress
Description
Subscribe to batch seal job progress
Response
Returns a BatchSealProgress
Arguments
| Name | Description |
|---|---|
jobId - UUID!
|
Example
Query
subscription batchSealProgress($jobId: UUID!) {
batchSealProgress(jobId: $jobId) {
jobId
status
completedDocuments
failedDocuments
totalDocuments
progressPercent
latestItem {
id
status
errorMessage
processingStartedAt
processingCompletedAt
document {
...DocumentFragment
}
seal {
...SealFragment
}
}
}
}
Variables
{
"jobId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Response
{
"data": {
"batchSealProgress": {
"jobId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"completedDocuments": 987,
"failedDocuments": 987,
"totalDocuments": 987,
"progressPercent": 987,
"latestItem": BatchSealItem
}
}
}
Types
AddPageInput
Description
Input for adding a page
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"width": 123.45,
"height": 123.45,
"insertAt": 987
}
AuthPayload
Description
Authentication response payload.
This type serves two authentication branches:
- Full auth (
mfa_required: false):access_token,refresh_token,expires_in, anduserare all populated.mfa_pending_tokenis nil. - MFA pending (
mfa_required: true): Onlymfa_pending_tokenis populated. Token and user fields are nil until MFA is completed viaverifyMfa.
Clients MUST check mfa_required before accessing token fields.
Fields
| Field Name | Description |
|---|---|
accessToken - String
|
Access token (JWT) for API calls. Nil when mfa_required is true. |
refreshToken - String
|
Refresh token for obtaining new access tokens. Nil when mfa_required is true. |
expiresIn - Int
|
Token expiration time in seconds. Nil when mfa_required is true. |
mfaPendingToken - String
|
Short-lived token for completing MFA verification. Nil when mfa_required is false. |
mfaRequired - Boolean!
|
Whether MFA verification is required before tokens are issued |
user - User
|
The authenticated user. Nil when mfa_required is true. |
Example
{
"accessToken": "abc123",
"refreshToken": "abc123",
"expiresIn": 123,
"mfaPendingToken": "xyz789",
"mfaRequired": true,
"user": User
}
BatchSealItem
Description
A single item in a batch seal job
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique item identifier |
status - BatchSealItemStatus!
|
Current item status |
errorMessage - String
|
Error message if the item failed |
processingStartedAt - DateTime
|
When processing started for this item |
processingCompletedAt - DateTime
|
When processing completed for this item |
document - Document
|
The document being sealed |
seal - Seal
|
The resulting seal (if successful) |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"errorMessage": "abc123",
"processingStartedAt": "2007-12-03T10:15:30Z",
"processingCompletedAt": "2007-12-03T10:15:30Z",
"document": Document,
"seal": Seal
}
BatchSealItemStatus
Description
Batch seal item status
Values
| Enum Value | Description |
|---|---|
|
|
Item waiting to be processed |
|
|
Item currently being sealed |
|
|
Item successfully sealed |
|
|
Item failed to seal |
|
|
Item skipped (job cancelled) |
Example
"PENDING"
BatchSealJob
Description
A batch seal job
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique job identifier |
status - BatchSealStatus!
|
Current job status |
totalDocuments - Int!
|
Total number of documents in the batch |
completedDocuments - Int!
|
Number of documents successfully sealed |
failedDocuments - Int!
|
Number of documents that failed to seal |
startedAt - DateTime
|
When processing began |
completedAt - DateTime
|
When the job finished |
insertedAt - DateTime!
|
When the job was created |
pageMode - BatchSealPageMode!
|
Which pages to seal |
positionX - Float!
|
Horizontal seal position in points |
positionY - Float!
|
Vertical seal position in points |
credential - Credential
|
The credential used for sealing |
items - [BatchSealItem]
|
Individual items in the batch |
progressPercent - Int!
|
Completion percentage (0-100) |
remaining - Int!
|
Number of documents remaining to process |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"totalDocuments": 987,
"completedDocuments": 987,
"failedDocuments": 123,
"startedAt": "2007-12-03T10:15:30Z",
"completedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"pageMode": "FIRST",
"positionX": 987.65,
"positionY": 987.65,
"credential": Credential,
"items": [BatchSealItem],
"progressPercent": 123,
"remaining": 987
}
BatchSealJobConnection
Description
A connection to a list of batch seal jobs
Fields
| Field Name | Description |
|---|---|
edges - [BatchSealJobEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of batch seal jobs |
Example
{
"edges": [BatchSealJobEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
BatchSealJobEdge
Description
An edge in a batch seal job connection
Fields
| Field Name | Description |
|---|---|
node - BatchSealJob!
|
The batch seal job at the end of the edge |
cursor - String!
|
A cursor for use in pagination |
Example
{
"node": BatchSealJob,
"cursor": "abc123"
}
BatchSealPageMode
Description
Which pages to apply the seal to
Values
| Enum Value | Description |
|---|---|
|
|
Seal only the first page |
|
|
Seal only the last page |
|
|
Seal every page |
|
|
Seal odd-numbered pages |
|
|
Seal even-numbered pages |
|
|
Seal specific pages (requires specific_pages) |
Example
"FIRST"
BatchSealProgress
Description
Real-time progress update for batch sealing
Fields
| Field Name | Description |
|---|---|
jobId - UUID!
|
ID of the batch seal job |
status - BatchSealStatus!
|
Current job status |
completedDocuments - Int!
|
Number of documents successfully sealed so far |
failedDocuments - Int!
|
Number of documents that failed so far |
totalDocuments - Int!
|
Total number of documents in the batch |
progressPercent - Int!
|
Completion percentage (0-100) |
latestItem - BatchSealItem
|
The most recently completed item |
Example
{
"jobId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"status": "PENDING",
"completedDocuments": 987,
"failedDocuments": 123,
"totalDocuments": 123,
"progressPercent": 987,
"latestItem": BatchSealItem
}
BatchSealStatus
Description
Batch seal job status
Values
| Enum Value | Description |
|---|---|
|
|
Job created but not started |
|
|
Job is currently processing |
|
|
Job completed (may have some failures) |
|
|
Job failed (unrecoverable error) |
|
|
Job was cancelled |
Example
"PENDING"
BillingInterval
Description
Subscription billing cycle
Values
| Enum Value | Description |
|---|---|
|
|
Monthly billing cycle |
|
|
Annual billing cycle |
Example
"MONTHLY"
BoardSearchInput
Description
Input for searching licensing board database
Fields
| Input Field | Description |
|---|---|
firstName - String!
|
First name to search |
lastName - String!
|
Last name to search |
stateCodes - [String!]!
|
State codes to search in |
discipline - String
|
Optional discipline filter |
Example
{
"firstName": "xyz789",
"lastName": "abc123",
"stateCodes": ["abc123"],
"discipline": "xyz789"
}
BoardSearchResult
Description
A licensed professional from the board database (returned by board search)
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique identifier |
firstName - String
|
Professional's first name |
lastName - String
|
Professional's last name |
fullName - String
|
Full name (first + last) |
licenseNumber - String
|
License number issued by the board |
stateCode - String
|
State or province code (e.g., CA, TX, ON) |
licenseType - String
|
Type of license (e.g., PE, RA, PLS) |
companyName - String
|
Company or firm name |
city - String
|
City of practice |
expirationDate - Date
|
License expiration date |
discipline - String
|
Practice discipline or specialty |
licenseStatus - String!
|
Current license status (active, inactive, expired, etc.) |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"firstName": "abc123",
"lastName": "xyz789",
"fullName": "xyz789",
"licenseNumber": "xyz789",
"stateCode": "xyz789",
"licenseType": "xyz789",
"companyName": "xyz789",
"city": "abc123",
"expirationDate": "2007-12-03",
"discipline": "abc123",
"licenseStatus": "xyz789"
}
Boolean
Description
The Boolean scalar type represents true or false.
CertificateStatus
Description
Certificate status
Values
| Enum Value | Description |
|---|---|
|
|
Certificate is valid and can be used |
|
|
Certificate has expired |
|
|
Certificate has been revoked |
Example
"ACTIVE"
ChangePasswordInput
ChangePasswordResult
Description
Result of a password change
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the password was successfully changed |
Example
{"success": true}
ChatMessage
Description
A single message in a chat session
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique message identifier |
sessionId - UUID!
|
ID of the parent chat session |
role - ChatMessageRole!
|
Who sent this message |
content - String!
|
Message text content |
tokenCount - Int
|
Token count for billing/context window tracking |
insertedAt - DateTime!
|
When the message was sent |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"sessionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "USER",
"content": "abc123",
"tokenCount": 987,
"insertedAt": "2007-12-03T10:15:30Z"
}
ChatMessageRole
Description
Role of a chat message sender
Values
| Enum Value | Description |
|---|---|
|
|
Message sent by the user |
|
|
Message generated by the AI assistant |
Example
"USER"
ChatSession
Description
A persistent AI chat session linked to documents
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique session identifier |
title - String
|
User-assigned or auto-generated session title |
status - ChatSessionStatus!
|
Current session status |
documentIds - [UUID!]!
|
IDs of documents linked to this session for context (empty list if none) |
lastMessageAt - DateTime
|
Timestamp of the most recent message |
insertedAt - DateTime!
|
When the session was created |
updatedAt - DateTime!
|
When the session was last updated |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"title": "xyz789",
"status": "ACTIVE",
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"lastMessageAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z"
}
ChatSessionStatus
Description
Chat session lifecycle status
Values
| Enum Value | Description |
|---|---|
|
|
Session is active and accepting messages |
|
|
Session has been archived |
Example
"ACTIVE"
ChunkInput
Description
A pre-chunked piece of document text for server-side embedding
Example
{
"content": "xyz789",
"chunkIndex": 123,
"pageNumber": 123
}
ChunkUploadResult
CreateBatchSealInput
Description
Input for creating a batch seal job
Fields
| Input Field | Description |
|---|---|
documentIds - [UUID!]!
|
IDs of documents to seal |
credentialId - UUID!
|
ID of the credential to seal with |
signingCertificateId - UUID
|
Optional PKI signing certificate ID |
pageMode - BatchSealPageMode
|
Which pages to seal (default: first) |
positionX - Float
|
Horizontal seal position in points (default: 75.0) |
positionY - Float
|
Vertical seal position in points (default: 75.0) |
Example
{
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"credentialId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"signingCertificateId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"pageMode": "FIRST",
"positionX": 123.45,
"positionY": 123.45
}
CreateChatSessionInput
CreateCredentialInput
Description
Input for creating a credential
Fields
| Input Field | Description |
|---|---|
licenseNumber - LicenseNumber!
|
License number from the issuing authority (3–50 alphanumeric characters or hyphens) |
regionCode - String!
|
Region/state code (e.g. CA, TX, ON) |
licenseType - String!
|
License type (e.g. PE, RA, CPA) |
displayName - String!
|
Display name for the credential |
expirationDate - Date
|
License expiration date |
Example
{
"licenseNumber": LicenseNumber,
"regionCode": "abc123",
"licenseType": "xyz789",
"displayName": "abc123",
"expirationDate": "2007-12-03"
}
CreateDocumentInput
Description
Input for creating a document (use upload_document to create from a file upload)
Fields
| Input Field | Description |
|---|---|
name - String!
|
Document name |
description - String
|
Optional document description |
folderId - UUID
|
Folder to place the document in |
visibility - DocumentVisibility
|
Document visibility (defaults to private) |
Example
{
"name": "xyz789",
"description": "xyz789",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"visibility": "PRIVATE"
}
CreateFolderInput
Description
Input for creating a folder
Example
{
"name": "abc123",
"description": "xyz789",
"color": "abc123",
"icon": "xyz789",
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
CreatePaymentIntentInput
Description
Input for creating a Stripe PaymentIntent for plan checkout
Fields
| Input Field | Description |
|---|---|
planLevel - PlanLevel!
|
Plan tier to purchase |
interval - BillingInterval!
|
Billing cycle frequency |
Example
{"planLevel": "FREE", "interval": "MONTHLY"}
CreatePdfInput
Description
Input for creating a new blank PDF
Fields
| Input Field | Description |
|---|---|
name - String
|
Document name (default: Untitled.pdf) |
pages - Int
|
Number of blank pages (default: 1) |
folderId - UUID
|
Folder to place the new document in |
visibility - DocumentVisibility
|
Document visibility setting |
Example
{
"name": "abc123",
"pages": 123,
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"visibility": "PRIVATE"
}
Credential
Description
A professional credential (license, certification)
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique credential identifier |
licenseNumber - String!
|
License number from the issuing authority |
regionCode - String!
|
Region/state code where the license is valid (e.g. CA, TX, ON) |
licenseType - String!
|
Type of license (e.g. PE, RA, CPA) |
displayName - String!
|
User-facing display name for this credential |
status - CredentialStatus!
|
Current verification status |
verificationMethod - VerificationMethod
|
Method used to verify this credential. Null until the credential has been verified. |
verifiedAt - DateTime
|
When the credential was first verified. Null if the credential has never been verified. |
lastVerifiedAt - DateTime
|
When the credential was last re-verified. Null if verified only once or never verified. |
expirationDate - Date
|
License expiration date |
rejectionReason - String
|
Reason for rejection (if status is not verified) |
insertedAt - DateTime!
|
When the credential was created |
updatedAt - DateTime!
|
When the credential was last updated |
certificateFingerprint - String
|
SHA-256 fingerprint of the associated signing certificate. Null if no signing certificate is linked. |
certificateIssuedAt - DateTime
|
When the associated signing certificate was issued. Null if no signing certificate is linked. |
certificateExpiresAt - DateTime
|
When the associated signing certificate expires. Null if no signing certificate is linked. |
isVerified - Boolean!
|
Whether the credential has been verified |
isExpired - Boolean!
|
Whether the credential has expired |
canSeal - Boolean!
|
Whether this credential can be used to seal documents |
stampSvg - String
|
SVG markup for the credential stamp |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"licenseNumber": "xyz789",
"regionCode": "xyz789",
"licenseType": "abc123",
"displayName": "abc123",
"status": "CLAIMED",
"verificationMethod": "VENDOR_API",
"verifiedAt": "2007-12-03T10:15:30Z",
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"rejectionReason": "abc123",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"certificateFingerprint": "xyz789",
"certificateIssuedAt": "2007-12-03T10:15:30Z",
"certificateExpiresAt": "2007-12-03T10:15:30Z",
"isVerified": true,
"isExpired": true,
"canSeal": false,
"stampSvg": "abc123"
}
CredentialConnection
Description
A connection to a list of credentials
Fields
| Field Name | Description |
|---|---|
edges - [CredentialEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of credentials |
Example
{
"edges": [CredentialEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
CredentialEdge
Description
An edge in a credential connection
Fields
| Field Name | Description |
|---|---|
node - Credential!
|
The credential at the end of the edge |
cursor - String!
|
A cursor for use in pagination |
Example
{
"node": Credential,
"cursor": "xyz789"
}
CredentialStatus
Description
Credential verification status
Values
| Enum Value | Description |
|---|---|
|
|
Credential has been claimed but not yet verified |
|
|
Verification is in progress |
|
|
Credential has been verified |
|
|
Credential has expired |
|
|
Credential has been suspended |
Example
"CLAIMED"
CustomerSessionPayload
Date
Description
ISO 8601 date string (YYYY-MM-DD)
Example
"2007-12-03"
DateTime
Description
ISO 8601 datetime string
Example
"2007-12-03T10:15:30Z"
DeleteAccountResult
Description
Result of account deletion
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the account was successfully deleted |
Example
{"success": false}
DeleteResult
Description
Result of a resource deletion — returns the deleted record's ID
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
The ID of the deleted record |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
DirectoryPage
Description
Paginated directory search results
Fields
| Field Name | Description |
|---|---|
professionals - [ProfessionalSummary]
|
List of matching professionals for the current page |
totalCount - Int!
|
Total number of matching professionals across all pages |
hasMore - Boolean!
|
Whether more pages exist beyond the current one |
Example
{
"professionals": [ProfessionalSummary],
"totalCount": 987,
"hasMore": false
}
Document
Description
A document in the system
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique document identifier |
name - String!
|
Document name |
description - String
|
Optional document description |
status - DocumentStatus!
|
Current document status |
visibility - DocumentVisibility!
|
Document visibility within the organization |
folderId - UUID
|
ID of the folder containing this document |
organizationId - UUID!
|
ID of the owning organization (always set — every document belongs to an organization) |
insertedAt - DateTime!
|
When the document was created |
updatedAt - DateTime!
|
When the document was last modified |
folder - DocumentFolder
|
The folder containing this document |
versions - [DocumentVersion]
|
All sealed versions of this document, ordered by version number |
currentVersion - DocumentVersion
|
The most recent sealed version of this document |
versionCount - Int
|
Number of sealed versions |
hasVersions - Boolean!
|
Whether the document has any sealed versions |
downloadUrl - String
|
Authenticated download URL for the document file (requires bearer token) |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"status": "DRAFT",
"visibility": "PRIVATE",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"folder": DocumentFolder,
"versions": [DocumentVersion],
"currentVersion": DocumentVersion,
"versionCount": 123,
"hasVersions": false,
"downloadUrl": "abc123"
}
DocumentConnection
Description
A connection to a list of documents
Fields
| Field Name | Description |
|---|---|
edges - [DocumentEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of documents matching the query |
Example
{
"edges": [DocumentEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
DocumentEdge
DocumentFolder
Description
A folder for organizing documents
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique folder identifier |
name - String!
|
Folder display name |
description - String
|
Optional folder description |
color - String
|
Color for UI display |
icon - String
|
Icon name for UI display |
position - Int
|
Sort position among siblings |
parentId - UUID
|
Parent folder ID (null for root-level folders) |
insertedAt - DateTime!
|
When the folder was created |
updatedAt - DateTime!
|
When the folder was last updated |
parent - DocumentFolder
|
Parent folder (null for root-level folders) |
children - [DocumentFolder]
|
Child folders nested under this folder |
documents - [Document]
|
Documents contained in this folder |
documentCount - Int!
|
Number of documents in this folder |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"description": "xyz789",
"color": "abc123",
"icon": "abc123",
"position": 987,
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"parent": DocumentFolder,
"children": [DocumentFolder],
"documents": [Document],
"documentCount": 123
}
DocumentStatus
Description
Document status
Values
| Enum Value | Description |
|---|---|
|
|
Document is a draft, can be edited |
|
|
Document has been sealed at least once |
Example
"DRAFT"
DocumentVersion
Description
A sealed version of a document
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique version identifier |
versionNumber - Int!
|
Sequential version number (1, 2, 3, ...) |
fileHash - String!
|
SHA-256 hash of the sealed file |
notes - String
|
Optional notes attached to this version |
insertedAt - DateTime!
|
When this version was sealed |
seal - Seal
|
The seal associated with this version. Nullable because draft versions exist before sealing. |
createdBy - User
|
The user who created this version. Nullable because the user account may have been deleted. |
downloadUrl - String!
|
Authenticated download URL for this version's file (requires bearer token) |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"versionNumber": 123,
"fileHash": "xyz789",
"notes": "xyz789",
"insertedAt": "2007-12-03T10:15:30Z",
"seal": Seal,
"createdBy": User,
"downloadUrl": "abc123"
}
DocumentVisibility
Description
Document visibility
Values
| Enum Value | Description |
|---|---|
|
|
Only the owner can see the document |
|
|
All organization members can see the document |
Example
"PRIVATE"
DrawImageInput
Description
Input for drawing an image on a page
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
imageDocumentId - UUID!
|
Document ID of the image file |
page - Int
|
1-based page number (default: 1) |
x - Float
|
X position in points from left edge |
y - Float
|
Y position in points from bottom edge |
width - Float
|
Image display width in points |
height - Float
|
Image display height in points |
opacity - Float
|
Image opacity (0.0 = transparent, 1.0 = opaque) |
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"imageDocumentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"page": 987,
"x": 123.45,
"y": 987.65,
"width": 123.45,
"height": 123.45,
"opacity": 987.65
}
DrawOperationInput
Description
A single draw operation
Fields
| Input Field | Description |
|---|---|
type - DrawOperationType!
|
Operation type |
x - Float
|
X position in points from left edge |
y - Float
|
Y position in points from bottom edge |
opacity - Float
|
Opacity (0.0 = transparent, 1.0 = opaque) |
color - String
|
Named color (red, blue, etc.) |
text - String
|
Text content to draw |
fontSize - Float
|
Font size in points for text operations |
maxWidth - Float
|
Maximum text width before wrapping (in points) |
lineHeight - Float
|
Line height multiplier for wrapped text |
width - Float
|
Shape width in points |
height - Float
|
Shape height in points |
borderColor - String
|
Border color name (e.g., black, red) |
borderWidth - Float
|
Border width in points |
radius - Float
|
Circle radius in points |
startX - Float
|
Line start X position in points |
startY - Float
|
Line start Y position in points |
endX - Float
|
Line end X position in points |
endY - Float
|
Line end Y position in points |
thickness - Float
|
Line thickness in points |
path - String
|
SVG path data string (e.g., M0,0 L100,100) |
scale - Float
|
Scale factor for the SVG path |
Example
{
"type": "TEXT",
"x": 987.65,
"y": 123.45,
"opacity": 987.65,
"color": "xyz789",
"text": "abc123",
"fontSize": 123.45,
"maxWidth": 123.45,
"lineHeight": 987.65,
"width": 987.65,
"height": 123.45,
"borderColor": "abc123",
"borderWidth": 123.45,
"radius": 123.45,
"startX": 123.45,
"startY": 987.65,
"endX": 987.65,
"endY": 987.65,
"thickness": 123.45,
"path": "abc123",
"scale": 987.65
}
DrawOperationType
Description
Type of drawing operation
Values
| Enum Value | Description |
|---|---|
|
|
Draw text at a position |
|
|
Draw a rectangle |
|
|
Draw a circle |
|
|
Draw a line between two points |
|
|
Draw an SVG path |
Example
"TEXT"
DrawOperationsInput
Description
Input for drawing operations on a page
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
page - Int!
|
1-based page number |
operations - [DrawOperationInput!]!
|
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"page": 123,
"operations": [DrawOperationInput]
}
EnableMfaInput
EncryptedMessage
Description
An encrypted message relayed through the server
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique message identifier |
senderId - UUID!
|
ID of the sender |
ciphertext - String!
|
Base64-encoded ciphertext |
messageType - SignalMessageType!
|
Signal Protocol message type |
insertedAt - DateTime!
|
When the message was stored on the server |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"senderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"ciphertext": "abc123",
"messageType": "PREKEY",
"insertedAt": "2007-12-03T10:15:30Z"
}
ExtractPagesInput
Description
Input for extracting pages from a PDF
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
pages - [Int!]!
|
1-based page numbers to extract |
name - String
|
Name for extracted document |
folderId - UUID
|
Folder to place the extracted document in |
visibility - DocumentVisibility
|
Document visibility setting |
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"pages": [123],
"name": "abc123",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"visibility": "PRIVATE"
}
FillFormInput
Description
Input for filling form fields
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
fields - [FormFieldInput!]!
|
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"fields": [FormFieldInput]
}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
FolderConnection
Description
A connection to a list of folders
Fields
| Field Name | Description |
|---|---|
edges - [FolderEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of folders |
Example
{
"edges": [FolderEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
FolderEdge
Description
An edge in a folder connection
Fields
| Field Name | Description |
|---|---|
node - DocumentFolder!
|
The folder at the end of the edge |
cursor - String!
|
A cursor for use in pagination |
Example
{
"node": DocumentFolder,
"cursor": "xyz789"
}
FormFieldInput
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
LicenseNumber
Description
A professional license number (3–50 alphanumeric characters or hyphens)
Example
LicenseNumber
LoginInput
Description
Login input
Example
{
"email": "abc123",
"password": "abc123",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
MergePdfsInput
Description
Input for merging multiple PDFs
Fields
| Input Field | Description |
|---|---|
documentIds - [UUID!]!
|
|
name - String
|
Name for merged document |
folderId - UUID
|
Folder to place the merged document in |
visibility - DocumentVisibility
|
Document visibility setting |
Example
{
"documentIds": [
"e62e7364-b824-4611-88df-75f2f8e4b81c"
],
"name": "xyz789",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"visibility": "PRIVATE"
}
MfaEnableResult
Description
Result of enabling MFA
Fields
| Field Name | Description |
|---|---|
backupCodes - [String!]!
|
Backup codes for account recovery |
enabledAt - DateTime!
|
When MFA was enabled |
Example
{
"backupCodes": ["xyz789"],
"enabledAt": "2007-12-03T10:15:30Z"
}
MfaSetup
MfaVerifyInput
Description
MFA verification input
Example
{
"mfaPendingToken": "abc123",
"code": "xyz789",
"organizationId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
MovePdfPageInput
Organization
Description
An organization
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique organization identifier |
name - String!
|
Organization display name |
slug - String!
|
URL-safe slug for the organization |
planLevel - PlanLevel!
|
Current subscription plan level |
insertedAt - DateTime!
|
When the organization was created |
updatedAt - DateTime!
|
When the organization was last updated |
canSealDocuments - Boolean!
|
Whether the plan allows document sealing |
canUseCloudStorage - Boolean!
|
Whether the plan includes cloud storage integrations |
maxDocuments - Int
|
Maximum documents allowed (null means unlimited) |
maxCredentials - Int
|
Maximum credentials allowed (null means unlimited) |
maxTeamMembers - Int
|
Maximum team members allowed (null means unlimited) |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"slug": "abc123",
"planLevel": "FREE",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"canSealDocuments": false,
"canUseCloudStorage": false,
"maxDocuments": 987,
"maxCredentials": 123,
"maxTeamMembers": 123
}
OrganizationMember
Description
An organization member (user + membership info)
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "abc123",
"user": User,
"insertedAt": "2007-12-03T10:15:30Z"
}
OrganizationMemberConnection
Description
A connection to a list of organization members
Fields
| Field Name | Description |
|---|---|
edges - [OrganizationMemberEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of members in the organization |
Example
{
"edges": [OrganizationMemberEdge],
"pageInfo": PageInfo,
"totalCount": 987
}
OrganizationMemberEdge
Description
An edge in an organization member connection
Fields
| Field Name | Description |
|---|---|
node - OrganizationMember!
|
The organization member at the end of the edge |
cursor - String!
|
A cursor for use in pagination |
Example
{
"node": OrganizationMember,
"cursor": "xyz789"
}
OrganizationMembership
Description
A user's membership in an organization
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Membership record identifier |
role - String!
|
Member's role within the organization (owner, admin, member, guest) |
isPrimaryOrg - Boolean!
|
Whether this is the user's primary organization |
organization - Organization!
|
The organization |
insertedAt - DateTime!
|
When the user joined the organization |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "xyz789",
"isPrimaryOrg": false,
"organization": Organization,
"insertedAt": "2007-12-03T10:15:30Z"
}
PageInfo
Description
Information about pagination in a connection
Example
{
"hasNextPage": false,
"hasPreviousPage": true,
"startCursor": "xyz789",
"endCursor": "xyz789"
}
PaymentIntentPayload
Description
Stripe PaymentIntent for collecting a payment via PaymentSheet SDK
Fields
| Field Name | Description |
|---|---|
clientSecret - String!
|
Pass to Stripe's PaymentSheet SDK to present the payment UI |
Example
{"clientSecret": "xyz789"}
PdfBox
Description
PDF page box dimensions (in points from bottom-left origin)
Example
{"x": 987.65, "y": 987.65, "width": 987.65, "height": 123.45}
PdfInfo
Description
PDF document info from libpdf worker
Fields
| Field Name | Description |
|---|---|
pageCount - Int!
|
Total number of pages |
fileSize - Int!
|
File size in bytes |
isEncrypted - Boolean!
|
Whether the PDF is password-protected |
isLinearized - Boolean
|
Whether the PDF is linearized (optimized for web) |
version - String
|
PDF specification version |
pageSizes - [PdfPageSize]
|
Dimensions for each page |
Example
{
"pageCount": 987,
"fileSize": 123,
"isEncrypted": false,
"isLinearized": true,
"version": "abc123",
"pageSizes": [PdfPageSize]
}
PdfMetadata
Description
PDF document metadata
Fields
| Field Name | Description |
|---|---|
title - String
|
Document title |
author - String
|
Document author |
subject - String
|
Document subject |
keywords - String
|
Document keywords |
creator - String
|
Application that created the document |
producer - String
|
PDF producer (library that generated the file) |
creationDate - String
|
When the document was created |
modificationDate - String
|
When the document was last modified |
pageCount - Int!
|
Total number of pages |
pdfVersion - String
|
PDF specification version (e.g., 1.7) |
fileSize - Int!
|
File size in bytes |
isEncrypted - Boolean!
|
Whether the PDF is password-protected |
hasForms - Boolean!
|
Whether the PDF contains form fields |
Example
{
"title": "abc123",
"author": "xyz789",
"subject": "xyz789",
"keywords": "abc123",
"creator": "abc123",
"producer": "abc123",
"creationDate": "abc123",
"modificationDate": "xyz789",
"pageCount": 123,
"pdfVersion": "xyz789",
"fileSize": 987,
"isEncrypted": true,
"hasForms": false
}
PdfMetadataInput
Description
Input for setting PDF metadata via libpdf
Fields
| Input Field | Description |
|---|---|
title - String
|
Document title |
author - String
|
Document author |
subject - String
|
Document subject |
keywords - String
|
Comma-separated keywords |
creator - String
|
Application that created the document |
producer - String
|
PDF producer identifier |
creationDate - String
|
Creation date (ISO 8601) |
modificationDate - String
|
Last modification date (ISO 8601) |
language - String
|
Document language (e.g., en-US) |
Example
{
"title": "abc123",
"author": "xyz789",
"subject": "xyz789",
"keywords": "abc123",
"creator": "abc123",
"producer": "xyz789",
"creationDate": "xyz789",
"modificationDate": "abc123",
"language": "abc123"
}
PdfOperationResult
Description
Result of a PDF mutation that produces a document
Example
{
"document": Document,
"pageCount": 123,
"operationsApplied": 987,
"fieldsFilled": 123,
"pagesWatermarked": 987
}
PdfPageInfoBasic
Description
Basic page dimensions from NIF metadata extraction
Example
{"page": 123, "width": 987.65, "height": 987.65, "rotation": 987}
PdfPageInfoDetail
Description
Detailed page information including all PDF boxes
Fields
| Field Name | Description |
|---|---|
page - Int!
|
1-based page number |
width - Float!
|
Page width in points |
height - Float!
|
Page height in points |
rotation - Int!
|
Page rotation in degrees (0, 90, 180, 270) |
isLandscape - Boolean!
|
Whether the page is wider than it is tall |
mediaBox - PdfBox
|
Media box (physical page boundary) |
cropBox - PdfBox
|
Crop box (visible page area) |
bleedBox - PdfBox
|
Bleed box (print bleed area) |
trimBox - PdfBox
|
Trim box (final trimmed page size) |
artBox - PdfBox
|
Art box (meaningful content area) |
Example
{
"page": 987,
"width": 987.65,
"height": 123.45,
"rotation": 987,
"isLandscape": true,
"mediaBox": PdfBox,
"cropBox": PdfBox,
"bleedBox": PdfBox,
"trimBox": PdfBox,
"artBox": PdfBox
}
PdfPageSize
PdfPermissionsInput
Description
PDF permission flags
Fields
| Input Field | Description |
|---|---|
printing - Boolean
|
Allow printing |
modifyContents - Boolean
|
Allow modifying page contents |
copy - Boolean
|
Allow copying text and images |
modifyAnnotations - Boolean
|
Allow adding or editing annotations |
fillForms - Boolean
|
Allow filling form fields |
extractContent - Boolean
|
Allow extracting text and images |
assemble - Boolean
|
Allow assembling (insert, rotate, delete pages) |
printHighQuality - Boolean
|
Allow high-quality printing |
Example
{
"printing": false,
"modifyContents": true,
"copy": false,
"modifyAnnotations": false,
"fillForms": false,
"extractContent": true,
"assemble": false,
"printHighQuality": true
}
PdfProtectionInput
Description
Input for setting PDF protection
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
userPassword - String
|
|
ownerPassword - String
|
|
permissions - PdfPermissionsInput
|
|
algorithm - String
|
Encryption algorithm |
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"userPassword": "abc123",
"ownerPassword": "abc123",
"permissions": PdfPermissionsInput,
"algorithm": "abc123"
}
PdfSignature
Description
A single digital signature on a PDF
Example
{
"signerName": "abc123",
"signingDate": "abc123",
"signatureType": "abc123"
}
PdfSignatureInfo
Description
Digital signature information for a PDF
Fields
| Field Name | Description |
|---|---|
isSigned - Boolean!
|
Whether the PDF has any digital signatures |
signatureCount - Int!
|
Number of digital signatures |
signatures - [PdfSignature!]!
|
Individual signature details |
Example
{
"isSigned": true,
"signatureCount": 987,
"signatures": [PdfSignature]
}
PdfTextResult
PdfValidationResult
Description
PDF structural validation result
Fields
| Field Name | Description |
|---|---|
isValid - Boolean!
|
Whether the PDF structure is valid |
issues - [String!]!
|
List of structural issues found (empty if valid) |
Example
{"isValid": true, "issues": ["abc123"]}
PlanLevel
Description
Organization plan level
Values
| Enum Value | Description |
|---|---|
|
|
Free tier with basic features |
|
|
Professional tier for individual practitioners |
|
|
Team tier for small firms |
|
|
Enterprise tier with SSO, cloud storage, and custom roles |
Example
"FREE"
PrekeyBundle
Description
A user's pre-key bundle for establishing a Signal Protocol session
Fields
| Field Name | Description |
|---|---|
identityKey - String!
|
Base64-encoded identity public key |
registrationId - Int!
|
Registration ID for the device |
signedPrekey - String
|
Base64-encoded signed pre-key public key |
signedPrekeyId - Int
|
Signed pre-key ID |
signedPrekeySignature - String
|
Base64-encoded signature of the signed pre-key |
prekey - String
|
Base64-encoded one-time pre-key public key (consumed on use) |
prekeyId - Int
|
One-time pre-key ID |
Example
{
"identityKey": "xyz789",
"registrationId": 123,
"signedPrekey": "abc123",
"signedPrekeyId": 123,
"signedPrekeySignature": "xyz789",
"prekey": "abc123",
"prekeyId": 123
}
PrekeyInput
Profession
Description
A profession category in the directory (e.g. Civil Engineer, Architect)
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique profession identifier |
name - String!
|
Full profession name |
shortName - String
|
Abbreviated name for compact display |
slug - String!
|
URL-safe slug used in directory paths |
titleSuffix - String
|
Professional title suffix (e.g. PE, RA, CPA) |
professionGroup - String!
|
Profession group for categorization (e.g. engineer, architect, lawyer) |
description - String
|
Description of the profession |
iconName - String
|
Icon name for UI display |
professionalCount - Int
|
Count of active professionals in this profession |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "abc123",
"shortName": "abc123",
"slug": "xyz789",
"titleSuffix": "xyz789",
"professionGroup": "xyz789",
"description": "abc123",
"iconName": "abc123",
"professionalCount": 987
}
ProfessionalProfile
Description
Full professional profile for individual profile pages
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique professional identifier |
firstName - String!
|
First name |
lastName - String!
|
Last name |
fullName - String
|
Full display name |
slug - String
|
URL-safe slug |
stateCode - String!
|
State or province code where licensed |
licenseNumber - String!
|
License number from the issuing authority |
licenseStatus - String
|
Current license status |
headline - String
|
Professional headline or tagline |
photoUrl - String
|
URL to profile photo |
currentTitle - String
|
Current job title |
currentCompany - String
|
Current employer |
summary - String
|
Professional summary or bio |
linkedinUrl - String
|
LinkedIn profile URL |
websiteUrl - String
|
Personal or company website URL |
yearsExperience - Int
|
Years of professional experience |
specializations - [String]
|
Areas of specialization |
skills - [String]
|
Professional skills |
education - [String]
|
Education history |
certifications - [String]
|
Professional certifications held |
enrichmentConfidence - Float
|
Confidence score of enriched profile data (0.0 to 1.0) |
lastVerifiedAt - DateTime
|
When the license was last verified against the issuing board |
expirationDate - Date
|
License expiration date |
professionId - UUID
|
ID of the profession this professional belongs to |
professionName - String
|
Name of the profession |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"firstName": "abc123",
"lastName": "abc123",
"fullName": "abc123",
"slug": "abc123",
"stateCode": "abc123",
"licenseNumber": "abc123",
"licenseStatus": "abc123",
"headline": "abc123",
"photoUrl": "xyz789",
"currentTitle": "abc123",
"currentCompany": "xyz789",
"summary": "xyz789",
"linkedinUrl": "abc123",
"websiteUrl": "xyz789",
"yearsExperience": 987,
"specializations": ["abc123"],
"skills": ["xyz789"],
"education": ["xyz789"],
"certifications": ["abc123"],
"enrichmentConfidence": 123.45,
"lastVerifiedAt": "2007-12-03T10:15:30Z",
"expirationDate": "2007-12-03",
"professionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"professionName": "xyz789"
}
ProfessionalSummary
Description
Summary view of a professional for directory listings
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique professional identifier |
firstName - String!
|
First name |
lastName - String!
|
Last name |
fullName - String
|
Full display name |
slug - String
|
URL-safe slug for profile links |
stateCode - String!
|
State or province code where licensed |
licenseNumber - String!
|
License number from the issuing authority |
licenseStatus - String
|
Current license status |
headline - String
|
Professional headline or tagline |
photoUrl - String
|
URL to profile photo |
currentTitle - String
|
Current job title |
currentCompany - String
|
Current employer |
professionName - String
|
Name of the profession this professional belongs to |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"firstName": "abc123",
"lastName": "xyz789",
"fullName": "abc123",
"slug": "abc123",
"stateCode": "xyz789",
"licenseNumber": "xyz789",
"licenseStatus": "abc123",
"headline": "abc123",
"photoUrl": "abc123",
"currentTitle": "xyz789",
"currentCompany": "xyz789",
"professionName": "xyz789"
}
RefreshPayload
Description
Refresh token response (token rotation always issues a new refresh token)
Example
{
"accessToken": "xyz789",
"refreshToken": "abc123",
"expiresIn": 987
}
RegisterInput
RegisterPrekeysInput
Description
Input for registering Signal Protocol pre-keys
Fields
| Input Field | Description |
|---|---|
identityKey - String!
|
Base64-encoded identity public key |
registrationId - Int!
|
Device registration ID |
signedPrekey - String!
|
Base64-encoded signed pre-key public key |
signedPrekeyId - Int!
|
Signed pre-key ID |
signedPrekeySignature - String!
|
Base64-encoded signature of the signed pre-key |
prekeys - [PrekeyInput!]
|
One-time pre-keys to register (typically 10–100 keys per batch) |
Example
{
"identityKey": "xyz789",
"registrationId": 123,
"signedPrekey": "xyz789",
"signedPrekeyId": 123,
"signedPrekeySignature": "xyz789",
"prekeys": [PrekeyInput]
}
RemovePdfPageInput
RemovePdfProtectionInput
RequestEmailChangeInput
RequestEmailChangeResult
Description
Result of an email change request
Fields
| Field Name | Description |
|---|---|
success - Boolean!
|
Whether the confirmation email was sent |
Example
{"success": true}
ResetPasswordInput
Seal
Description
A seal on a document
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique seal identifier |
verificationCode - String!
|
Public verification code for this seal |
documentHash - String!
|
SHA-256 hash of the sealed document |
sealedAt - DateTime!
|
When the document was sealed |
insertedAt - DateTime!
|
When the seal record was created |
document - Document
|
The sealed document |
credential - Credential
|
The credential used to seal |
signingCertificate - SigningCertificate
|
The PKI certificate used for digital signing (if any) |
pkiSigned - Boolean!
|
Whether this seal includes a PKI digital signature |
verificationUrl - String!
|
Public URL for verifying this seal |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"verificationCode": "xyz789",
"documentHash": "abc123",
"sealedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"document": Document,
"credential": Credential,
"signingCertificate": SigningCertificate,
"pkiSigned": false,
"verificationUrl": "abc123"
}
SealConnection
Description
A connection to a list of seals
Fields
| Field Name | Description |
|---|---|
edges - [SealEdge!]!
|
A list of edges |
pageInfo - PageInfo!
|
Information to aid in pagination |
totalCount - Int!
|
Total number of seals |
Example
{
"edges": [SealEdge],
"pageInfo": PageInfo,
"totalCount": 123
}
SealDocumentInput
Description
Input for sealing a single document
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"credentialId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"signingCertificateId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
SealEdge
SealVerificationResult
Description
Result of a public seal verification lookup
Fields
| Field Name | Description |
|---|---|
verificationCode - String!
|
The verification code that was looked up |
documentName - String
|
Name of the sealed document |
sealedAt - DateTime!
|
When the document was sealed |
signerName - String
|
Name of the signer |
regionCode - String
|
Signer's licensing region |
credentialStatus - String
|
Current status of the signer's credential |
isValid - Boolean!
|
Whether the seal is currently valid |
documentHash - String!
|
SHA-256 hash for integrity verification |
Example
{
"verificationCode": "xyz789",
"documentName": "xyz789",
"sealedAt": "2007-12-03T10:15:30Z",
"signerName": "abc123",
"regionCode": "abc123",
"credentialStatus": "xyz789",
"isValid": false,
"documentHash": "xyz789"
}
SearchResult
Description
A semantically matched document chunk from vector search
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Chunk identifier |
content - String!
|
Text content of the chunk |
chunkIndex - Int!
|
Position of this chunk within the document |
pageNumber - Int
|
Source page number (if available) |
similarity - Float!
|
Similarity score (0.0 to 1.0, higher is more relevant) |
documentId - UUID!
|
ID of the source document |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"content": "xyz789",
"chunkIndex": 987,
"pageNumber": 987,
"similarity": 987.65,
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
SendChatMessageInput
Description
Input for sending a chat message
Fields
| Input Field | Description |
|---|---|
sessionId - UUID!
|
Chat session ID |
role - ChatMessageRole!
|
Message role (user or assistant) |
content - String!
|
Message content |
tokenCount - Int
|
Optional token count for the message |
Example
{
"sessionId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"role": "USER",
"content": "xyz789",
"tokenCount": 987
}
SendEncryptedMessageInput
Description
Input for sending an encrypted message via Signal Protocol
Fields
| Input Field | Description |
|---|---|
recipientId - UUID!
|
ID of the message recipient |
ciphertext - String!
|
Base64-encoded ciphertext (max 256KB) |
messageType - SignalMessageType!
|
Signal Protocol message type |
Example
{
"recipientId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"ciphertext": "xyz789",
"messageType": "PREKEY"
}
SetupIntentPayload
Description
Stripe SetupIntent for saving a payment method without charging
Fields
| Field Name | Description |
|---|---|
clientSecret - String!
|
Pass to Stripe's SetupIntent confirmation flow |
Example
{"clientSecret": "abc123"}
SignalMessageType
Description
Signal Protocol message type
Values
| Enum Value | Description |
|---|---|
|
|
Pre-key message for initial session setup |
|
|
Regular message in an established session |
Example
"PREKEY"
SigningCertificate
Description
A signing certificate (X.509) for PKI signatures
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique certificate identifier |
name - String!
|
User-assigned name for this certificate |
description - String
|
Optional description of the certificate's purpose |
commonName - String
|
Subject common name from the X.509 certificate |
issuerCn - String
|
Issuer common name from the certificate authority |
serialNumber - String
|
Certificate serial number |
notBefore - DateTime
|
Certificate validity start date |
expiresAt - DateTime
|
Certificate expiration date (alias for not_after) |
fingerprintSha256 - String
|
SHA-256 fingerprint of the certificate |
isDefault - Boolean!
|
Whether this is the default certificate for sealing operations |
lastUsedAt - DateTime
|
When this certificate was last used for sealing |
insertedAt - DateTime!
|
When the certificate was uploaded |
updatedAt - DateTime!
|
When the certificate record was last updated |
status - CertificateStatus!
|
Current certificate status (active, expired, or revoked) |
isValid - Boolean!
|
Whether the certificate is currently valid for signing |
daysUntilExpiry - Int
|
Days remaining until expiration (nil if no expiry set) |
hasPrivateKey - Boolean!
|
Whether a private key is stored for this certificate |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"name": "xyz789",
"description": "xyz789",
"commonName": "abc123",
"issuerCn": "abc123",
"serialNumber": "xyz789",
"notBefore": "2007-12-03T10:15:30Z",
"expiresAt": "2007-12-03T10:15:30Z",
"fingerprintSha256": "abc123",
"isDefault": true,
"lastUsedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"status": "ACTIVE",
"isValid": true,
"daysUntilExpiry": 987,
"hasPrivateKey": false
}
StampExport
Description
Exported stamp file with base64-encoded data
Example
{
"data": "abc123",
"filename": "abc123",
"contentType": "abc123"
}
StampExportFormat
Description
Export format for credential stamps
Values
| Enum Value | Description |
|---|---|
|
|
PDF document |
|
|
PNG image |
|
|
JPEG image |
|
|
TIFF image |
Example
"PDF"
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
SubmitVerificationInput
Description
Input for submitting a government ID for verification
Example
{
"documentData": "abc123",
"documentType": "abc123",
"filename": "xyz789"
}
SubscriptionStatus
Description
Current subscription state for the organization
Fields
| Field Name | Description |
|---|---|
planLevel - PlanLevel!
|
Plan tier: free, pro, team, or enterprise |
status - String!
|
Stripe subscription status (active, trialing, past_due, canceled, etc.) |
currentPeriodEnd - DateTime
|
When the current billing period ends |
cancelAtPeriodEnd - Boolean!
|
Whether the subscription is scheduled to cancel at period end |
trialEnd - DateTime
|
Trial end date, present only when the subscription is trialing |
Example
{
"planLevel": "FREE",
"status": "xyz789",
"currentPeriodEnd": "2007-12-03T10:15:30Z",
"cancelAtPeriodEnd": true,
"trialEnd": "2007-12-03T10:15:30Z"
}
UUID
Description
UUID in standard 8-4-4-4-12 format
Example
"e62e7364-b824-4611-88df-75f2f8e4b81c"
UpdateCredentialInput
UpdateDocumentInput
Description
Input for updating a document
Fields
| Input Field | Description |
|---|---|
name - String
|
New document name |
description - String
|
New document description |
visibility - DocumentVisibility
|
New visibility setting |
Example
{
"name": "abc123",
"description": "xyz789",
"visibility": "PRIVATE"
}
UpdateFolderInput
Description
Input for updating a folder
Example
{
"name": "xyz789",
"description": "abc123",
"color": "xyz789",
"icon": "xyz789",
"parentId": "e62e7364-b824-4611-88df-75f2f8e4b81c"
}
Upload
Description
A file upload scalar type.
Represents a file uploaded via multipart form request. Contains the filename, content_type, and path to the temp file.
Example
Upload
UploadCertificateInput
Description
Input for uploading a PEM-encoded X.509 signing certificate
Fields
| Input Field | Description |
|---|---|
name - String!
|
User-assigned name for the certificate |
description - String
|
Optional description |
certificatePem - String!
|
PEM-encoded X.509 certificate (max 32KB) |
privateKeyPem - String
|
PEM-encoded private key (max 32KB, encrypted at rest) |
isDefault - Boolean
|
Set as default certificate for sealing |
Example
{
"name": "abc123",
"description": "xyz789",
"certificatePem": "xyz789",
"privateKeyPem": "xyz789",
"isDefault": true
}
UploadDocumentInput
Description
Input for uploading a document
Fields
| Input Field | Description |
|---|---|
file - Upload!
|
The file to upload |
name - String
|
Optional document name (defaults to filename) |
description - String
|
Optional description |
folderId - UUID
|
Folder ID to place the document in |
visibility - DocumentVisibility
|
Document visibility |
Example
{
"file": Upload,
"name": "xyz789",
"description": "xyz789",
"folderId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"visibility": "PRIVATE"
}
UploadResult
Description
Result of a successful file upload
Example
{
"filename": "abc123",
"contentType": "abc123",
"size": 987,
"fileHash": "abc123"
}
User
Description
A user in the system
Fields
| Field Name | Description |
|---|---|
id - UUID!
|
Unique user identifier |
email - String!
|
User's email address |
displayName - String
|
User's display name |
role - String!
|
User's system role |
mfaEnabled - Boolean!
|
Whether the user has MFA enabled |
confirmedAt - DateTime
|
When the user confirmed their email. Null until the user clicks the confirmation link sent at registration. |
insertedAt - DateTime!
|
When the account was created |
updatedAt - DateTime!
|
When the account was last updated |
uiTheme - String!
|
UI theme preference (light, dark, system) |
stampExportSize - String!
|
Default stamp export size |
betaFeaturesEnabled - Boolean!
|
Whether beta features are enabled for this user |
verificationStatus - String
|
Identity verification status (unverified, pending, verified) |
credentialCount - Int!
|
Number of credentials owned by this user (0 for other users) |
trialActive - Boolean!
|
Whether the user's free trial is currently active |
Example
{
"id": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"email": "abc123",
"displayName": "xyz789",
"role": "xyz789",
"mfaEnabled": false,
"confirmedAt": "2007-12-03T10:15:30Z",
"insertedAt": "2007-12-03T10:15:30Z",
"updatedAt": "2007-12-03T10:15:30Z",
"uiTheme": "abc123",
"stampExportSize": "xyz789",
"betaFeaturesEnabled": false,
"verificationStatus": "xyz789",
"credentialCount": 987,
"trialActive": false
}
VerificationMethod
Description
How the credential was verified
Values
| Enum Value | Description |
|---|---|
|
|
Verified via licensing board vendor API |
|
|
Verified via direct board database lookup |
|
|
Manually verified by admin review |
Example
"VENDOR_API"
VerificationResult
WatermarkInput
Description
Input for adding a watermark
Fields
| Input Field | Description |
|---|---|
documentId - UUID!
|
|
text - String!
|
|
fontSize - Int
|
Font size in points (default: 48) |
color - String
|
Text color name (default: gray) |
opacity - Float
|
Opacity (0.0 = transparent, 1.0 = opaque, default: 0.3) |
rotation - Float
|
Rotation in degrees (default: -45) |
pages - [Int!]
|
1-based page numbers (default: all) |
Example
{
"documentId": "e62e7364-b824-4611-88df-75f2f8e4b81c",
"text": "abc123",
"fontSize": 123,
"color": "xyz789",
"opacity": 123.45,
"rotation": 123.45,
"pages": [123]
}