Home
veeva
Veeva Vault Document Management
Veeva Vault Document Management
Customer workflow capability for life sciences document lifecycle management in Veeva Vault. Combines document CRUD, lifecycle actions, VQL queries, and object management for regulatory affairs teams, QMS coordinators, and clinical operations staff managing controlled documents through approval and archival workflows.
Run with Naftiko
Veeva Vault Life Sciences Pharma Document Management Regulatory QMS Clinical
What You Can Do
GET
List documents
— List all Vault documents accessible to the authenticated user
/v1/documents
POST
Create document
— Create a new Vault document record
/v1/documents
GET
Get document
— Retrieve metadata for a specific Vault document
/v1/documents/{documentId}
PUT
Update document
— Update a Vault document's field values
/v1/documents/{documentId}
DELETE
Delete document
— Delete a Vault document and all its versions
/v1/documents/{documentId}
POST
Perform document action
— Execute a lifecycle action (Approve, Submit for Review, Archive)
/v1/documents/{documentId}/actions/{actionName}
GET
List object records
— List records for a Vault business object
/v1/objects/{objectName}
POST
Create object record
— Create a new Vault object record
/v1/objects/{objectName}
GET
Get object record
— Retrieve a single Vault object record
/v1/objects/{objectName}/{recordId}
PUT
Update object record
— Update fields on a Vault object record
/v1/objects/{objectName}/{recordId}
DELETE
Delete object record
— Delete a Vault object record
/v1/objects/{objectName}/{recordId}
GET
Execute vql query
— Run a VQL query to retrieve documents, objects, or user data
/v1/query
GET
List users
— List all active users in the Vault
/v1/users
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Veeva Vault Document Management
description: Customer workflow capability for life sciences document lifecycle management in Veeva Vault. Combines document
CRUD, lifecycle actions, VQL queries, and object management for regulatory affairs teams, QMS coordinators, and clinical
operations staff managing controlled documents through approval and archival workflows.
tags:
- Veeva
- Vault
- Life Sciences
- Pharma
- Document Management
- Regulatory
- QMS
- Clinical
created: '2026-05-03'
modified: '2026-05-06'
binds:
- namespace: env
keys:
VEEVA_VAULT_SESSION_ID: VEEVA_VAULT_SESSION_ID
VEEVA_VAULT_DOMAIN: VEEVA_VAULT_DOMAIN
capability:
consumes:
- type: http
namespace: vault-api
baseUri: https://{{env.VEEVA_VAULT_DOMAIN}}/api/v25.3
description: Veeva Vault REST API v25.3
authentication:
type: apikey
key: Authorization
value: '{{env.VEEVA_VAULT_SESSION_ID}}'
placement: header
resources:
- name: authentication
path: /auth
description: Session management — authenticate and obtain Vault session IDs
operations:
- name: authenticate-user
method: POST
description: Authenticate with username and password to obtain a Vault session ID
inputParameters:
- name: username
in: body
type: string
required: true
description: Vault username (email address)
- name: password
in: body
type: string
required: true
description: Vault password
- name: vaultDNS
in: body
type: string
required: false
description: Target Vault DNS for multi-vault environments
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: documents
path: /objects/documents
description: Document lifecycle management — list, create, retrieve, update, and delete documents
operations:
- name: list-documents
method: GET
description: List all documents accessible to the authenticated user
inputParameters:
- name: limit
in: query
type: integer
required: false
description: Maximum number of results (default 200, max 1000)
- name: offset
in: query
type: integer
required: false
description: Pagination offset
- name: sort
in: query
type: string
required: false
description: Sort field and direction (e.g. name__v asc)
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: create-document
method: POST
description: Create a new document record in Vault with optional source file upload
inputParameters:
- name: name__v
in: body
type: string
required: true
description: Document name
- name: type__v
in: body
type: string
required: true
description: Document type API name
- name: lifecycle__v
in: body
type: string
required: true
description: Document lifecycle API name
- name: status__v
in: body
type: string
required: false
description: Initial lifecycle state
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: document
path: /objects/documents/{documentId}
description: Single document operations — get, update, delete
operations:
- name: get-document
method: GET
description: Retrieve metadata and properties for a specific document
inputParameters:
- name: documentId
in: path
type: integer
required: true
description: Vault document ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: update-document
method: PUT
description: Update document field values
inputParameters:
- name: documentId
in: path
type: integer
required: true
description: Vault document ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: delete-document
method: DELETE
description: Delete a document and all versions
inputParameters:
- name: documentId
in: path
type: integer
required: true
description: Vault document ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: document-actions
path: /objects/documents/{documentId}/actions/{actionName}
description: Document lifecycle actions — perform state transitions
operations:
- name: perform-document-action
method: POST
description: Execute a user action on a document to change its lifecycle state
inputParameters:
- name: documentId
in: path
type: integer
required: true
description: Vault document ID
- name: actionName
in: path
type: string
required: true
description: Lifecycle action API name (e.g. Approve, Submit for Review)
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: objects
path: /vobjects/{objectName}
description: Vault object records — list and create configurable business entities
operations:
- name: list-object-records
method: GET
description: Return records for a Vault object (studies, products, sites, etc.)
inputParameters:
- name: objectName
in: path
type: string
required: true
description: Vault object API name (e.g. study__v)
- name: limit
in: query
type: integer
required: false
description: Maximum records to return
- name: offset
in: query
type: integer
required: false
description: Pagination offset
- name: fields
in: query
type: string
required: false
description: Comma-separated list of fields to return
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: create-object-record
method: POST
description: Create a new record for the specified Vault object
inputParameters:
- name: objectName
in: path
type: string
required: true
description: Vault object API name
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: object-record
path: /vobjects/{objectName}/{recordId}
description: Single object record operations — get, update, delete
operations:
- name: get-object-record
method: GET
description: Return a single record for a Vault object
inputParameters:
- name: objectName
in: path
type: string
required: true
description: Vault object API name
- name: recordId
in: path
type: string
required: true
description: Object record ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: update-object-record
method: PUT
description: Update fields on an existing Vault object record
inputParameters:
- name: objectName
in: path
type: string
required: true
description: Vault object API name
- name: recordId
in: path
type: string
required: true
description: Object record ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: delete-object-record
method: DELETE
description: Delete a specific Vault object record
inputParameters:
- name: objectName
in: path
type: string
required: true
description: Vault object API name
- name: recordId
in: path
type: string
required: true
description: Object record ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: query
path: /query
description: VQL query execution — SQL-like queries across documents, objects, and users
operations:
- name: execute-vql-query
method: GET
description: Execute a Vault Query Language (VQL) query to retrieve Vault data
inputParameters:
- name: q
in: query
type: string
required: true
description: VQL query string (e.g. SELECT id, name__v FROM documents)
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: users
path: /objects/users
description: User management — list Vault users
operations:
- name: list-users
method: GET
description: Return all active users in the Vault
inputParameters:
- name: limit
in: query
type: integer
required: false
description: Maximum users to return
- name: offset
in: query
type: integer
required: false
description: Pagination offset
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
port: 8080
namespace: vault-document-management-api
description: Unified REST API for Veeva Vault document lifecycle management workflows.
resources:
- path: /v1/documents
name: documents
description: List and create Vault documents
operations:
- method: GET
name: list-documents
description: List all Vault documents accessible to the authenticated user
call: vault-api.list-documents
with:
limit: rest.limit
offset: rest.offset
sort: rest.sort
outputParameters:
- type: object
mapping: $.
- method: POST
name: create-document
description: Create a new Vault document record
call: vault-api.create-document
with:
name__v: rest.name__v
type__v: rest.type__v
lifecycle__v: rest.lifecycle__v
status__v: rest.status__v
outputParameters:
- type: object
mapping: $.
- path: /v1/documents/{documentId}
name: document
description: Get, update, or delete a specific Vault document
operations:
- method: GET
name: get-document
description: Retrieve metadata for a specific Vault document
call: vault-api.get-document
with:
documentId: rest.documentId
outputParameters:
- type: object
mapping: $.
- method: PUT
name: update-document
description: Update a Vault document's field values
call: vault-api.update-document
with:
documentId: rest.documentId
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: delete-document
description: Delete a Vault document and all its versions
call: vault-api.delete-document
with:
documentId: rest.documentId
outputParameters:
- type: object
mapping: $.
- path: /v1/documents/{documentId}/actions/{actionName}
name: document-actions
description: Perform lifecycle actions on a Vault document
operations:
- method: POST
name: perform-document-action
description: Execute a lifecycle action (Approve, Submit for Review, Archive)
call: vault-api.perform-document-action
with:
documentId: rest.documentId
actionName: rest.actionName
outputParameters:
- type: object
mapping: $.
- path: /v1/objects/{objectName}
name: objects
description: List and create Vault object records (studies, products, sites)
operations:
- method: GET
name: list-object-records
description: List records for a Vault business object
call: vault-api.list-object-records
with:
objectName: rest.objectName
limit: rest.limit
offset: rest.offset
fields: rest.fields
outputParameters:
- type: object
mapping: $.
- method: POST
name: create-object-record
description: Create a new Vault object record
call: vault-api.create-object-record
with:
objectName: rest.objectName
outputParameters:
- type: object
mapping: $.
- path: /v1/objects/{objectName}/{recordId}
name: object-record
description: Get, update, or delete a specific Vault object record
operations:
- method: GET
name: get-object-record
description: Retrieve a single Vault object record
call: vault-api.get-object-record
with:
objectName: rest.objectName
recordId: rest.recordId
outputParameters:
- type: object
mapping: $.
- method: PUT
name: update-object-record
description: Update fields on a Vault object record
call: vault-api.update-object-record
with:
objectName: rest.objectName
recordId: rest.recordId
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: delete-object-record
description: Delete a Vault object record
call: vault-api.delete-object-record
with:
objectName: rest.objectName
recordId: rest.recordId
outputParameters:
- type: object
mapping: $.
- path: /v1/query
name: query
description: Execute VQL queries across Vault data
operations:
- method: GET
name: execute-vql-query
description: Run a VQL query to retrieve documents, objects, or user data
call: vault-api.execute-vql-query
with:
q: rest.q
outputParameters:
- type: object
mapping: $.
- path: /v1/users
name: users
description: List Vault users
operations:
- method: GET
name: list-users
description: List all active users in the Vault
call: vault-api.list-users
with:
limit: rest.limit
offset: rest.offset
outputParameters:
- type: object
mapping: $.
- type: mcp
port: 9090
namespace: vault-document-management-mcp
transport: http
description: MCP server for AI-assisted Veeva Vault document lifecycle management.
tools:
- name: list-documents
description: List all Vault documents accessible to the authenticated user
hints:
readOnly: true
openWorld: false
call: vault-api.list-documents
with:
limit: tools.limit
offset: tools.offset
sort: tools.sort
outputParameters:
- type: object
mapping: $.
- name: create-document
description: Create a new controlled document in Vault with lifecycle and type
hints:
readOnly: false
destructive: false
idempotent: false
call: vault-api.create-document
with:
name__v: tools.name__v
type__v: tools.type__v
lifecycle__v: tools.lifecycle__v
status__v: tools.status__v
outputParameters:
- type: object
mapping: $.
- name: get-document
description: Retrieve metadata and properties for a specific Vault document by ID
hints:
readOnly: true
openWorld: false
call: vault-api.get-document
with:
documentId: tools.documentId
outputParameters:
- type: object
mapping: $.
- name: update-document
description: Update field values on an existing Vault document
hints:
readOnly: false
destructive: false
idempotent: true
call: vault-api.update-document
with:
documentId: tools.documentId
outputParameters:
- type: object
mapping: $.
- name: delete-document
description: Permanently delete a Vault document and all its versions
hints:
readOnly: false
destructive: true
idempotent: true
call: vault-api.delete-document
with:
documentId: tools.documentId
outputParameters:
- type: object
mapping: $.
- name: perform-document-action
description: Execute a lifecycle action on a document (Approve, Submit for Review, Archive)
hints:
readOnly: false
destructive: false
idempotent: false
call: vault-api.perform-document-action
with:
documentId: tools.documentId
actionName: tools.actionName
outputParameters:
- type: object
mapping: $.
- name: list-object-records
description: List records for a Vault business object (studies, products, sites, etc.)
hints:
readOnly: true
openWorld: false
call: vault-api.list-object-records
with:
objectName: tools.objectName
limit: tools.limit
offset: tools.offset
fields: tools.fields
outputParameters:
- type: object
mapping: $.
- name: create-object-record
description: Create a new Vault object record for studies, products, sites, or custom objects
hints:
readOnly: false
destructive: false
idempotent: false
call: vault-api.create-object-record
with:
objectName: tools.objectName
outputParameters:
- type: object
mapping: $.
- name: get-object-record
description: Retrieve a single Vault object record by object type and record ID
hints:
readOnly: true
openWorld: false
call: vault-api.get-object-record
with:
objectName: tools.objectName
recordId: tools.recordId
outputParameters:
- type: object
mapping: $.
- name: update-object-record
description: Update field values on a Vault object record
hints:
readOnly: false
destructive: false
idempotent: true
call: vault-api.update-object-record
with:
objectName: tools.objectName
recordId: tools.recordId
outputParameters:
- type: object
mapping: $.
- name: delete-object-record
description: Delete a Vault object record
hints:
readOnly: false
destructive: true
idempotent: true
call: vault-api.delete-object-record
with:
objectName: tools.objectName
recordId: tools.recordId
outputParameters:
- type: object
mapping: $.
- name: execute-vql-query
description: Run a VQL query to search documents, objects, users, or workflows in Vault
hints:
readOnly: true
openWorld: true
call: vault-api.execute-vql-query
with:
q: tools.q
outputParameters:
- type: object
mapping: $.
- name: list-users
description: List all active users in the Vault
hints:
readOnly: true
openWorld: false
call: vault-api.list-users
with:
limit: tools.limit
offset: tools.offset
outputParameters:
- type: object
mapping: $.