Vault-API-Library 25.1.1 API
VAPIL Introduction and Getting Started Guide
Introduction
The Vault API Library (VAPIL) is an open-source Java library for the Vault REST API. VAPIL provides full API endpoint coverage for Vault integrations.
The VAPIL release cycle follows the Vault API release cycle, with three general releases a year. Each VAPIL release aligns with the features of the Vault API release for consistency and coverage.
- Vault API version v21.1 is released, VAPIL version v21.1.0 is released
- When defects are fixed, VAPIL version v21.1.1, v21.1.2, etc will be released
- Vault API version v21.2 is released, VAPIL version v21.2.0 is released
- One solution to develop and support
- Consistent development patterns that are similar the Vault Java SDK
- Full coverage of all platform API endpoints
- Expose API requests/responses in clearly defined Java classes, getters, setters, and methods
- Easily find API endpoints from Vault help webpage in the source or Javadoc
- One-to-one alignment between VAPIL methods and the Vault API endpoint/documentation
- Easy to start, quick to build
- Allow integration developer full control of design/implementation decisions, processing rules, exception handling
VAPIL developers are responsible for:
- Following integration best practices with Vault and related systems
- Using bulk and batch processes whenever possible
- Respecting API authentication and burst limits
- Exception handling
Support and Issue Tracking
Enhancements, Issues, and documentation update requests can be reported via the Vault for Developers community on Veeva ConnectSource Code
Source code is available on GitHub: Vault API LibraryGetting Started - Hello World
- Import VAPIL to a Maven project by adding the following to the project pom.xml file
<repositories> <repository> <id>vapil</id> <url>https://veeva.github.io/vault-api-library/maven</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> </repository> </repositories> <dependencies> <dependency> <groupId>com.veeva.vault</groupId> <artifactId>vapil</artifactId> <version>25.1.1</version> </dependency> </dependencies>
- Create a class "HelloWorld" and add the following code
public class HelloWorld { public static void main(String[] args) { // Set the Vault Client Id, which is required for all API calls String vaultClientId = "verteobiotech-vault-quality-client-myintegration"; // Instantiate the VAPIL VaultClient using user name and password authentication VaultClient vaultClient = VaultClient .newClientBuilder(VaultClient.AuthenticationType.BASIC) .withVaultDNS("verteobiotech.veevavault.com") .withVaultUsername("username@verteobiotech.com") .withVaultPassword("password") .withVaultClientId(vaultClientId) .build(); // Perform a VQL query and display the results QueryResponse resp = vaultClient.newRequest(QueryRequest.class) .query("SELECT name__v, email__sys FROM user__sys MAXROWS 3"); if (resp != null) { System.out.println("-----------------------------------------"); System.out.println("Response Status = " + resp.getResponseStatus()); System.out.println("Total Records = " + resp.getData().size()); for (QueryResponse.QueryResult row : resp.getData()) System.out.println("Name = " + row.get("name__v") + ", Email = " + row.get("email__sys")); } } }
- Run the code and verify the results
----------------------------------------- Response Status = SUCCESS Total Records = 3 Name = System, Email = System Name = Todd Taylor, Email = todd.taylor@verteobiotech.com Name = Mark Arnold, Email = mark.arnold@verteobiotech.com
- Now that you have a starting point, check out the sample code and go build your interface!
Sample Code
Instantiate the Vault Client with an Existing SessionString vaultClientId = "verteobiotech-vault-quality-client-myintegration"; String sessionId = "xxxxxxxxxxxxxxxxx"; VaultClient vaultClient = VaultClient .newClientBuilder(VaultClient.AuthenticationType.SESSION_ID) .withVaultDNS("verteobiotech.veevavault.com") .withVaultSessionId(sessionId) .withVaultClientId(vaultClientId) .build();Create a Single Document
Document doc = new Document(); doc.setName("VAPIL Single Document"); doc.setLifecycle("General Lifecycle"); doc.setType("General"); doc.setTitle("Test Upload VAPIL"); doc.set("custom_field__c", "value"); DocumentResponse documentResponse = vaultClient.newRequest(DocumentRequest.class) .setInputPath(filePath) .createSingleDocument(doc);Bulk Create Multiple Documents from CSV File
DocumentBulkResponse documentResponse = vaultClient.newRequest(DocumentRequest.class) .setInputPath(csvFilePath) .createMultipleDocuments();Bulk Update Object Records (Input CSV, JSON Response)
ObjectRecordBulkResponse objectResponse = vaultClient.newRequest(ObjectRecordRequest.class) .setContentTypeCsv() .setInputPath(localPath) .updateObjectRecords("product__v");Retrieve the Audit Trail for Documents in past 30 days
DocumentAuditResponse auditResponse = vaultClient.newRequest(LogRequest.class) .setStartDateTime(ZonedDateTime.now(ZoneId.of("UTC")).minusDays(29)) .setEndDateTime(ZonedDateTime.now(ZoneId.of("UTC")).minusDays(1)) .setLimit(4) .retrieveAuditDetails(LogRequest.AuditTrailType.DOCUMENT); AuditDetailsResponse.ResponseDetails details = auditResponse.getResponseDetails(); System.out.println("Offset = " + details.getOffset()); System.out.println("Limit = " + details.getLimit()); System.out.println("Size = " + details.getSize()); System.out.println("Total = " + details.getTotal()); System.out.println("Object/Name = " + details.getDetailsObject().getName()); System.out.println("Object/Label = " + details.getDetailsObject().getLabel()); System.out.println("Object/Url = " + details.getDetailsObject().getUrl()); System.out.println("Items ****"); for (DocumentAuditResponse.DocumentAudit audit : auditResponse.getData()) { System.out.println("\n**** Data Item **** "); System.out.println("id = " + audit.getId()); System.out.println("timestamp = " + audit.getTimestamp()); System.out.println("UserName = " + audit.getUserName()); System.out.println("Full Name = " + audit.getFullName()); System.out.println("Action = " + audit.getAction()); System.out.println("Item = " + audit.getItem()); System.out.println("Field Name = " + audit.getFieldName()); System.out.println("Workflow Name = " + audit.getWorkflowName()); System.out.println("Task Name = " + audit.getTaskName()); System.out.println("Signature Meaning = " + audit.getSignatureMeaning()); System.out.println("View License = " + audit.getViewLicense()); System.out.println("Job Instance ID = " + audit.getJobInstanceId()); System.out.println("Doc ID = " + audit.getDocId()); System.out.println("Version = " + audit.getVersion()); System.out.println("Document Url = " + audit.getDocumentUrl()); System.out.println("Event Description = " + audit.getEventDescription()); }
Packages
Package
Description
Full coverage of the Vault API including requests and responses
HTTPS Client for the Vault API
Models for all responses, metadata, and data
Builder pattern to create models
Models for Vault data such as documents, object records, users, and groups
Models for Vault metadata such as Vault Objects, Vault Object Fields, and Document Fields
Models for Vault API responses
Methods to perform Vault API calls, with each method mapping to a Vault API endpoint
Generic connector methods for Vault API