Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/api-catalog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> Compact provider slug catalog for agents. Use the slug to reconstruct provider-specific docs URLs only when needed.

Provider count: 893
Provider count: 894

URL patterns:
- Main provider page: https://nango.dev/docs/integrations/all/{slug}.md or https://nango.dev/docs/api-integrations/{slug}.md
Expand Down Expand Up @@ -836,6 +836,7 @@ URL patterns:
| `vanta` | Vanta | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/vanta.md) | [connect](https://nango.dev/docs/api-integrations/vanta/connect.md) | | dev-tools |
| `veed` | VEED (via fal.ai) | API_KEY | [docs](https://nango.dev/docs/api-integrations/veed.md) | [connect](https://nango.dev/docs/api-integrations/veed/connect.md) | | video, dev-tools |
| `veeva-vault` | Veeva Vault | TWO_STEP | [docs](https://nango.dev/docs/api-integrations/veeva-vault.md) | [connect](https://nango.dev/docs/api-integrations/veeva-vault/connect.md) | | crm |
| `veeva-vault-oauth` | Veeva Vault (OAuth 2.0 / OIDC) | TWO_STEP | [docs](https://nango.dev/docs/api-integrations/veeva-vault-oauth.md) | [connect](https://nango.dev/docs/api-integrations/veeva-vault-oauth/connect.md) | | crm |
| `vercel` | Vercel | API_KEY | [docs](https://nango.dev/docs/api-integrations/vercel.md) | [connect](https://nango.dev/docs/api-integrations/vercel/connect.md) | | dev-tools |
| `vercel-mcp` | Vercel (MCP) | MCP_OAUTH2 | [docs](https://nango.dev/docs/api-integrations/vercel-mcp.md) | | [setup](https://nango.dev/docs/api-integrations/vercel-mcp/how-to-register-your-own-vercel-mcp-oauth-app.md) | dev-tools, mcp |
| `videoask` | VideoAsk | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/videoask.md) | | [setup](https://nango.dev/docs/api-integrations/videoask/how-to-register-your-own-videoask-api-oauth-app.md) | video |
Expand Down
85 changes: 85 additions & 0 deletions docs/api-integrations/veeva-vault-oauth.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
title: 'Veeva Vault (OAuth 2.0 / OIDC)'
sidebarTitle: 'Veeva Vault (OAuth 2.0 / OIDC)'
description: 'Integrate your application with the Veeva Vault API using OAuth 2.0 / OpenID Connect'
---

## 🚀 Quickstart

Connect to Veeva Vault with Nango and see data flow in 2 minutes.

<Steps>
<Step id="create-integration" title="Create the integration">
In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Veeva Vault (OAuth 2.0 / OIDC)_.
</Step>
<Step id="authorize-veeva-vault" title="Authorize Veeva Vault">
Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then enter your identity provider's token endpoint, client ID, client secret, OAuth 2.0 / OpenID Connect profile ID, and Vault DNS (subdomain). Later, you'll let your users do the same directly from your app.
</Step>
<Step id="call-veeva-vault-api" title="Call the Veeva Vault API">
Let's make your first request to the Veeva Vault API (fetch a list of users). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
<Tabs>
<Tab title="cURL">

```bash
curl "https://api.nango.dev/proxy/metadata/objects/users" \
-H "Authorization: Bearer <NANGO-SECRET-KEY>" \
-H "Provider-Config-Key: <INTEGRATION-ID>" \
-H "Connection-Id: <CONNECTION-ID>"
```

</Tab>

<Tab title="Node">

Install Nango's backend SDK with `npm i @nangohq/node`. Then run:

```typescript
import { Nango } from '@nangohq/node';

const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });

const res = await nango.get({
endpoint: '/metadata/objects/users',
providerConfigKey: '<INTEGRATION-ID>',
connectionId: '<CONNECTION-ID>'
});

console.log(res.data);
```
</Tab>

</Tabs>
Or fetch credentials with the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).

✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.
</Step>

<Step id="implement-nango" title="Implement Nango in your app">
Follow our [Auth implementation guide](/guides/primitives/auth) to integrate Nango in your app.

To obtain your own production credentials, follow the setup guide linked below.
</Step>
</Steps>

## 📚 Veeva Vault (OAuth 2.0 / OIDC) Integration Guides

Nango-maintained guides for common use cases.

- [How do I link my account?](/api-integrations/veeva-vault-oauth/connect)
Connect your Veeva Vault account via OAuth 2.0 / OpenID Connect using the Connect UI

Official docs: [Veeva Vault OAuth 2.0 / OpenID Connect](https://general.veevavault.dev/vault-api/api-reference), [Vault Help: OAuth 2.0 / OpenID Connect Profiles](https://platform.veevavault.help/en/gr/43329)

<Note>
This integration authenticates by exchanging client credentials with your external identity provider (PingFederate, ADFS 4.0, or Okta — see the [connect guide](/api-integrations/veeva-vault-oauth/connect) for supported providers) for an access token, then exchanging that access token for a Vault session ID via Vault's OAuth session endpoint. If your Veeva Vault account only uses username/password authentication, use the [Veeva Vault](/api-integrations/veeva-vault) integration instead.
</Note>

## 🧩 Pre-built syncs & actions for Veeva Vault (OAuth 2.0 / OIDC)

Enable them in your dashboard. Extend and customize to fit your needs.

import PreBuiltUseCases from "/snippets/generated/veeva-vault-oauth/PreBuiltUseCases.mdx"

<PreBuiltUseCases />

---
60 changes: 60 additions & 0 deletions docs/api-integrations/veeva-vault-oauth/connect.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: Veeva Vault (OAuth 2.0 / OIDC) - How do I link my account?
sidebarTitle: Veeva Vault (OAuth 2.0 / OIDC)
---

# Overview

To authenticate with Veeva Vault via OAuth 2.0 / OpenID Connect, you will need:
1. **Client ID** and **Client Secret** - Credentials for a client credentials application configured in your identity provider.
2. **Identity Provider Token Endpoint** - The OAuth 2.0 token endpoint URL of your identity provider.
3. **OAuth 2.0 / OpenID Connect Profile ID** - The ID of the profile configured in Veeva Vault that trusts your identity provider.
4. **Vault DNS (subdomain)** - The subdomain of your Veeva Vault instance.
5. **OAuth Scope** (optional) - Only needed if your Vault profile has strict audience restriction validation enabled. See Step 1.

This guide walks you through configuring these on your identity provider and in Veeva Vault.

### Prerequisites:

- You must have administrator access to both your identity provider and your Veeva Vault instance.
- Vault's OAuth 2.0 / OpenID Connect profiles support PingFederate, ADFS 4.0, and Okta authorization servers. Vault's Authorization Server Provider dropdown also lists an Azure AD (Microsoft Entra ID) option since version 20R2.2 — confirm with Veeva support that it's supported for your Vault version before relying on it.

### Instructions:

#### Step 1: Configuring a client credentials application in your identity provider

1. In your identity provider, register a new application using the **client credentials** OAuth 2.0 grant type. Nango authenticates to the token endpoint using HTTP Basic authentication (client ID and secret in the `Authorization` header) — make sure your application is configured to accept this method.
2. Note the application's **Client ID** and **Client Secret**.
3. Note the identity provider's **OAuth 2.0 token endpoint** (e.g. `https://{your-okta-domain}/oauth2/default/v1/token` for Okta).

<Tip>If your Vault OAuth 2.0 / OpenID Connect profile has **Perform strict Audience Restriction validation** enabled, Vault checks the access token's `aud` claim against the profile's Resource Server URI (its Vault Session ID URL) or a Client Applications mapping entry, and rejects the token otherwise. If your identity provider needs a `scope` or `resource` parameter to stamp the correct `aud` claim, provide it in the optional **OAuth Scope** field.</Tip>

#### Step 2: Configuring an OAuth 2.0 OpenID Connect profile in Veeva Vault

1. In Veeva Vault, go to **Admin > Settings > OAuth 2.0 / OpenID Connect Profiles**.
2. Click **Create**, enter a **Label** and **Name**, and select the **Authorization Server Provider** that matches your identity provider.
3. Upload your identity provider's AS Metadata (JSON file or URL) under **OAuth 2.0 / OpenID Connect Configuration**.
4. Provision a Vault **service account user** for this integration, then set the profile's **Identity Claim** to map to that service account rather than an individual human user. A client credentials token represents the application, not a person, so it typically has no meaningful `sub` claim — select **Identity is in another claim** and enter the claim your identity provider uses to identify the client application (e.g. `azp` or `client_id`), and make sure the corresponding **User ID Type** (Vault User Name or Federated ID) resolves to that service account.
5. Save the profile, then note its **profile ID** — this is the identifier used in the profile's session URL (e.g. `.../auth/oauth/session/{oauth_oidc_profile_id}`).

<Warning>This profile is normally used for human SSO login, where the Identity Claim maps a real user's `sub` claim to their Vault account. Since Nango authenticates with a client credentials grant instead, skipping this service-account mapping step will cause Vault to reject the token at the session endpoint with no indication from Nango's side of why.</Warning>

<Tip>See [Vault Help: Configuring OAuth 2.0 / OpenID Connect Profiles](https://vaulthelp.veeva.com/doc/Content/VaultHelp/OpenIDConnect/ConfiguringOAuthOIDCProfiles.htm) for full configuration details, including audience restriction validation and client ID mapping.</Tip>

#### Step 3: Finding your Vault DNS (subdomain)

1. Log in to your Veeva Vault instance.
2. Check the URL in your browser's address bar. Your Vault URL will typically be in the format: `https://<my-vault>.veevavault.com`
3. Your **Vault DNS (subdomain)** is the subdomain part of your Vault URL (e.g., `my-vault`). This is the portion before `.veevavault.com`.

#### Step 4: Enter credentials in the Connect UI

Once you have your **Client ID**, **Client Secret**, **Identity Provider Token Endpoint**, **OAuth 2.0 / OpenID Connect Profile ID**, **Vault DNS (subdomain)**, and (if needed) **OAuth Scope**:

1. Open the form where you need to authenticate with Veeva Vault.
2. Enter each value in its respective field.
3. Submit the form, and you should be successfully authenticated.

<img src="/api-integrations/veeva-vault-oauth/form.png" style={{maxWidth: "450px" }}/>

You are now connected to Veeva Vault.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1736,6 +1736,7 @@
"api-integrations/vanta",
"api-integrations/veed",
"api-integrations/veeva-vault",
"api-integrations/veeva-vault-oauth",
"api-integrations/vercel",
"api-integrations/vercel-mcp",
"api-integrations/videoask",
Expand Down
1 change: 1 addition & 0 deletions docs/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15129,6 +15129,7 @@ Use these slugs to construct provider-specific docs URLs only when needed.
| `vanta` | Vanta | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/vanta.md) | [connect](https://nango.dev/docs/api-integrations/vanta/connect.md) | | dev-tools |
| `veed` | VEED (via fal.ai) | API_KEY | [docs](https://nango.dev/docs/api-integrations/veed.md) | [connect](https://nango.dev/docs/api-integrations/veed/connect.md) | | video, dev-tools |
| `veeva-vault` | Veeva Vault | TWO_STEP | [docs](https://nango.dev/docs/api-integrations/veeva-vault.md) | [connect](https://nango.dev/docs/api-integrations/veeva-vault/connect.md) | | crm |
| `veeva-vault-oauth` | Veeva Vault (OAuth 2.0 / OIDC) | TWO_STEP | [docs](https://nango.dev/docs/api-integrations/veeva-vault-oauth.md) | [connect](https://nango.dev/docs/api-integrations/veeva-vault-oauth/connect.md) | | crm |
| `vercel` | Vercel | API_KEY | [docs](https://nango.dev/docs/api-integrations/vercel.md) | [connect](https://nango.dev/docs/api-integrations/vercel/connect.md) | | dev-tools |
| `vercel-mcp` | Vercel (MCP) | MCP_OAUTH2 | [docs](https://nango.dev/docs/api-integrations/vercel-mcp.md) | | [setup](https://nango.dev/docs/api-integrations/vercel-mcp/how-to-register-your-own-vercel-mcp-oauth-app.md) | dev-tools, mcp |
| `videoask` | VideoAsk | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/videoask.md) | | [setup](https://nango.dev/docs/api-integrations/videoask/how-to-register-your-own-videoask-api-oauth-app.md) | video |
Expand Down
2 changes: 1 addition & 1 deletion docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ Use provider URLs by replacing `{slug}` with a slug from the API catalog:

## APIs and integrations

- [API catalog](https://nango.dev/docs/api-catalog.txt): 893 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
- [API catalog](https://nango.dev/docs/api-catalog.txt): 894 provider slugs with canonical docs routes, auth modes, setup guides, and connect guides.
- Provider-specific pages are intentionally not expanded here so core Nango guides remain easy for agents to find.

## Resources
Expand Down
40 changes: 40 additions & 0 deletions docs/snippets/generated/ids-fulfillment/PreBuiltTooling.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## Pre-built tooling
<AccordionGroup>
<Accordion title="✅ Authorization">
| Tools | Status |
| - | - |
| Pre-built authorization (API Key) | ✅ |
| Pre-built authorization UI | ✅ |
| Custom authorization UI | ✅ |
| End-user authorization guide | ✅ |
| Expired credentials detection | ✅ |
</Accordion>
<Accordion title="✅ Read & write data">
| Tools | Status |
| - | - |
| Pre-built integrations | 🚫 (time to contribute: &lt;48h) |
| API unification | ✅ |
| 2-way sync | ✅ |
| Webhooks from Nango on data modifications | ✅ |
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: &lt;48h) |
| Proxy requests | ✅ |
</Accordion>
<Accordion title="✅ Observability & data quality">
| Tools | Status |
| - | - |
| HTTP request logging | ✅ |
| End-to-end type safety | ✅ |
| Data runtime validation | ✅ |
| OpenTelemetry export | ✅ |
| Slack alerts on errors | ✅ |
| Integration status API | ✅ |
</Accordion>
<Accordion title="✅ Customization">
| Tools | Status |
| - | - |
| Create or customize use-cases | ✅ |
| Pre-configured pagination | 🚫 (time to contribute: &lt;48h) |
| Pre-configured rate-limit handling | 🚫 (time to contribute: &lt;48h) |
| Per-customer configurations | ✅ |
</Accordion>
</AccordionGroup>
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
_No pre-built syncs or actions available yet._

<Tip>Not seeing the integration you need? [Build your own](https://nango.dev/docs/guides/functions/functions-guide) independently.</Tip>
<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>
40 changes: 40 additions & 0 deletions docs/snippets/generated/mandrill/PreBuiltTooling.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## Pre-built tooling
<AccordionGroup>
<Accordion title="✅ Authorization">
| Tools | Status |
| - | - |
| Pre-built authorization (API Key) | ✅ |
| Pre-built authorization UI | ✅ |
| Custom authorization UI | ✅ |
| End-user authorization guide | ✅ |
| Expired credentials detection | ✅ |
</Accordion>
<Accordion title="✅ Read & write data">
| Tools | Status |
| - | - |
| Pre-built integrations | 🚫 (time to contribute: &lt;48h) |
| API unification | ✅ |
| 2-way sync | ✅ |
| Webhooks from Nango on data modifications | ✅ |
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: &lt;48h) |
| Proxy requests | ✅ |
</Accordion>
<Accordion title="✅ Observability & data quality">
| Tools | Status |
| - | - |
| HTTP request logging | ✅ |
| End-to-end type safety | ✅ |
| Data runtime validation | ✅ |
| OpenTelemetry export | ✅ |
| Slack alerts on errors | ✅ |
| Integration status API | ✅ |
</Accordion>
<Accordion title="✅ Customization">
| Tools | Status |
| - | - |
| Create or customize use-cases | ✅ |
| Pre-configured pagination | 🚫 (time to contribute: &lt;48h) |
| Pre-configured rate-limit handling | 🚫 (time to contribute: &lt;48h) |
| Per-customer configurations | ✅ |
</Accordion>
</AccordionGroup>
2 changes: 1 addition & 1 deletion docs/snippets/generated/mandrill/PreBuiltUseCases.mdx
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
_No pre-built syncs or actions available yet._

<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>
<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>
40 changes: 40 additions & 0 deletions docs/snippets/generated/veeva-vault-oauth/PreBuiltTooling.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
## Pre-built tooling
<AccordionGroup>
<Accordion title="✅ Authorization">
| Tools | Status |
| - | - |
| Pre-built authorization (Two Step) | ✅ |
| Pre-built authorization UI | ✅ |
| Custom authorization UI | ✅ |
| End-user authorization guide | ✅ |
| Expired credentials detection | ✅ |
</Accordion>
<Accordion title="✅ Read & write data">
| Tools | Status |
| - | - |
| Pre-built integrations | 🚫 (time to contribute: &lt;48h) |
| API unification | ✅ |
| 2-way sync | ✅ |
| Webhooks from Nango on data modifications | ✅ |
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: &lt;48h) |
| Proxy requests | ✅ |
</Accordion>
<Accordion title="✅ Observability & data quality">
| Tools | Status |
| - | - |
| HTTP request logging | ✅ |
| End-to-end type safety | ✅ |
| Data runtime validation | ✅ |
| OpenTelemetry export | ✅ |
| Slack alerts on errors | ✅ |
| Integration status API | ✅ |
</Accordion>
<Accordion title="✅ Customization">
| Tools | Status |
| - | - |
| Create or customize use-cases | ✅ |
| Pre-configured pagination | 🚫 (time to contribute: &lt;48h) |
| Pre-configured rate-limit handling | 🚫 (time to contribute: &lt;48h) |
| Per-customer configurations | ✅ |
</Accordion>
</AccordionGroup>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_No pre-built syncs or actions available yet._

<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>
Loading