Claude-code-plugins-plus veeva-install-auth

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/veeva-pack/skills/veeva-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-veeva-install-auth && rm -rf "$T"
manifest: plugins/saas-packs/veeva-pack/skills/veeva-install-auth/SKILL.md
source content

Veeva Vault Install & Auth

Overview

Authenticate with Veeva Vault REST API using session-based auth. Base URL:

https://{vault}.veevavault.com/api/{version}/
. All requests require a session ID obtained via username/password or OAuth 2.0.

Instructions

Step 1: Install VAPIL (Java) or HTTP Client

# Java (VAPIL - Vault API Library)
# Add to pom.xml or gradle
# https://github.com/veeva/vault-api-library

# Python/Node.js -- use HTTP client
pip install requests
# or
npm install axios

Step 2: Obtain Session ID

import requests

vault_url = "https://myvault.veevavault.com/api/v24.1"
auth_response = requests.post(f"{vault_url}/auth", data={
    "username": os.environ["VEEVA_USERNAME"],
    "password": os.environ["VEEVA_PASSWORD"],
})
session_id = auth_response.json()["sessionId"]
print(f"Session ID: {session_id[:20]}...")

Step 3: Make Authenticated Request

headers = {"Authorization": session_id}
response = requests.get(f"{vault_url}/metadata/objects", headers=headers)
print(f"Objects: {len(response.json()['objects'])}")

Step 4: VQL Query

query = "SELECT id, name__v, status__v FROM documents WHERE status__v = 'Approved'"
response = requests.post(f"{vault_url}/query", headers=headers, data={"q": query})
for doc in response.json().get("data", []):
    print(f"  {doc['name__v']} (ID: {doc['id']})")

Error Handling

ErrorCauseSolution
INVALID_SESSION_ID
Session expiredRe-authenticate
INSUFFICIENT_ACCESS
Missing permissionsCheck security profile
INVALID_DATA
Bad VQL syntaxValidate query syntax

Resources

Next Steps

Proceed to

veeva-hello-world
for document operations.