Skip navigation links

Vault-API-Library 21.1.3 API

VAPIL Introduction and Getting Started Guide

See: Description

Packages 
Package Description
com.veeva.vault.vapil.api
Full coverage of the Vault API including requests and responses
com.veeva.vault.vapil.api.client
HTTPS Client for the Vault API
com.veeva.vault.vapil.api.model
Models for all responses, metadata, and data
com.veeva.vault.vapil.api.model.builder
Builder pattern to create models
com.veeva.vault.vapil.api.model.common
Models for Vault data such as documents, object records, users, and groups
com.veeva.vault.vapil.api.model.metadata
Models for Vault metadata such as Objects, Object Fields, and Document Fields
com.veeva.vault.vapil.api.model.response
Models for Vault API responses
com.veeva.vault.vapil.api.request
Methods to perform Vault API calls, with each method mapping to a Vault API endpoint
com.veeva.vault.vapil.connector
Generic connector methods for Vault 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.

Consistent integration solution with Vault API requests/responses Dedication to documentation, available in Javadoc Developer friendly Developer Ownership

VAPIL developers are responsible for:

Support and Issue Tracking

Enhancements, Issues, and documentation update requests can be reported via the Vault Developer Community

Source Code

Source code is available on GitHub: Vault API Library

Getting Started - Hello World

  1. 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>21.1.3</version>
         </dependency>
    </dependencies>
  2. 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
                    VaultClientId vaultClientId = new VaultClientId("verteobiotech","vault","quality",true,"myintegration");
                    // Instantiate the VAPIL VaultClient using user name and password authentication
                    VaultClient vaultClient = VaultClientBuilder
                                    .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"));
                    }
            }
    }
                    
  3. 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
                    
  4. 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 Session
VaultClientId vaultClientId = new VaultClientId("verteobiotech","vault","quality",true,"myintegration");

String sessionId = "xxxxxxxxxxxxxxxxx";
VaultClient vaultClient = VaultClientBuilder
        .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)
                .setStartDate(ZonedDateTime.now(ZoneId.of("UTC")).minusDays(29))
                .setEndDate(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());
}
Skip navigation links

Copyright © 2021. All rights reserved.