diff --git a/docs-v2/integrations/all/ashby.mdx b/docs-v2/integrations/all/ashby.mdx
index 600cfecbbb3..d8a5a7d8a18 100644
--- a/docs-v2/integrations/all/ashby.mdx
+++ b/docs-v2/integrations/all/ashby.mdx
@@ -29,4 +29,4 @@ API configuration: [`ashby`](https://nango.dev/providers.yaml)
- Ashby gives you only an `API Key` but uses Basic auth for the API. Pass the `API Key` as the username to Nango and leave the password blank.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/gong.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/ashby.mdx)
diff --git a/docs-v2/integrations/all/freshdesk.mdx b/docs-v2/integrations/all/freshdesk.mdx
index 35dbe0b505f..fc9ea3edb95 100644
--- a/docs-v2/integrations/all/freshdesk.mdx
+++ b/docs-v2/integrations/all/freshdesk.mdx
@@ -48,4 +48,4 @@ For more details, see the [docs here](/integrate/guides/authorize-an-api#apis-re
- For Basic Auth, Freshdesk uses API key as a username and dummy characters as a password.
- API calls are directed to your subdomain of Freshdesk.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/freshservice.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/freshdesk.mdx)
diff --git a/docs-v2/integrations/all/greenhouse.mdx b/docs-v2/integrations/all/greenhouse.mdx
index f1d2d2b29c5..ecf679a279e 100644
--- a/docs-v2/integrations/all/greenhouse.mdx
+++ b/docs-v2/integrations/all/greenhouse.mdx
@@ -33,4 +33,4 @@ Greenhouse offers both `Basic` and `OAuth` as authentication and Nango implement
- For `Basic` auth pass Greenhouse API token as username and the password should be blank.
- If you need to use the proxy, it is important to provide the resource that you will be calling in the config (as green house has many forms for API resource). Please see [here](https://developers.greenhouse.io/) for different types of resources. Once confirmed, you have to add `resource` as a config.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/gorgias.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/greenhouse.mdx)
diff --git a/docs-v2/integrations/all/guru.mdx b/docs-v2/integrations/all/guru.mdx
index fccebe3bd9a..b02f54d1d7a 100644
--- a/docs-v2/integrations/all/guru.mdx
+++ b/docs-v2/integrations/all/guru.mdx
@@ -29,4 +29,4 @@ API configuration: [`guru`](https://nango.dev/providers.yaml)
- For Basic Auth, Guru uses USER or COLLECTION ID as the username and either User token Collection token as the password.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/getguru.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/guru.mdx)
diff --git a/docs-v2/integrations/all/intercom.mdx b/docs-v2/integrations/all/intercom.mdx
index 39dec1162a8..07091eaa903 100644
--- a/docs-v2/integrations/all/intercom.mdx
+++ b/docs-v2/integrations/all/intercom.mdx
@@ -32,4 +32,4 @@ API configuration: [`intercom`](https://nango.dev/providers.yaml)
- Intercom access tokens do not expire. Logically, Intercom doesn't return a refresh token along with the access token.
- You do not need to pass API scopes/permissions during the authorization request. Permissions are only set in the Intercom Developer Portal.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/instagram.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/intercom.mdx)
diff --git a/docs-v2/integrations/all/servicenow.mdx b/docs-v2/integrations/all/servicenow.mdx
index cde2d1d4ea4..4f2ce932d74 100644
--- a/docs-v2/integrations/all/servicenow.mdx
+++ b/docs-v2/integrations/all/servicenow.mdx
@@ -29,4 +29,4 @@ API configuration: [`servicenow`](https://nango.dev/providers.yaml)
- For security purposes, access tokens will expire after 30 minutes by default, when this happens you can use `nango.getConnection()` to generate a new set of tokens.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/okta.mdx)
\ No newline at end of file
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/servicenow.mdx)
\ No newline at end of file
diff --git a/docs-v2/integrations/all/stripe-app.mdx b/docs-v2/integrations/all/stripe-app.mdx
index 594e6370865..d7abbf2d9af 100644
--- a/docs-v2/integrations/all/stripe-app.mdx
+++ b/docs-v2/integrations/all/stripe-app.mdx
@@ -38,3 +38,5 @@ nango.auth('stripe-app-sandbox', '', {params: {appDomain: 'Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/stripe-app.mdx)
\ No newline at end of file
diff --git a/docs-v2/integrations/all/stripe-express.mdx b/docs-v2/integrations/all/stripe-express.mdx
index 30730f07b2d..b464a5779f5 100644
--- a/docs-v2/integrations/all/stripe-express.mdx
+++ b/docs-v2/integrations/all/stripe-express.mdx
@@ -27,4 +27,4 @@ API configuration: [`stripe-express`](https://nango.dev/providers.yaml)
## API gotchas
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/stripe.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/stripe-express.mdx)
diff --git a/docs-v2/integrations/all/teamwork.mdx b/docs-v2/integrations/all/teamwork.mdx
index 659156472ab..a405e3bb804 100644
--- a/docs-v2/integrations/all/teamwork.mdx
+++ b/docs-v2/integrations/all/teamwork.mdx
@@ -27,7 +27,7 @@ API configuration: [`teamwork`](https://nango.dev/providers.yaml)
## API gotchas
- There are no scopes needed in the authorization, hence, you can keep the scope field empty.
-- Teamwork uses [different domain extensions](https://apidocs.teamwork.com/docs/teamwork/df5a63302d729-getting-started-with-the-teamwork-com-api#getting-your-url) for different regions, i.e `eu` for EU Hosted Customers. For US based clients leave `extension` blank but for EU based customers add `.eu` as your `extension`.
-- Also, provide your `yourSiteName` as your connection `subdomain`. If you're using a custom domain, you can override the set `base_url` using `baseUrlOverride`.
+- Teamwork utilizes [distinct subdomain extensions and site names](https://apidocs.teamwork.com/guides/teamwork/getting-started-with-the-teamwork-com-api#getting-your-url) tailored to different regions. For instance, European customers are assigned a subdomain with the `.eu` extension, such as `yourSiteName.eu`, whereas US-based clients are provided with a subdomain without any additional extension, like `yourSiteName`. Remember to use the appropriate subdomain for your specific region.
+- If you're using a custom domain, you can override the set `base_url` using `baseUrlOverride`.
Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/teamwork.mdx)
diff --git a/docs-v2/integrations/all/tiktok-ads.mdx b/docs-v2/integrations/all/tiktok-ads.mdx
index 26dec4fcbf6..29e50913255 100644
--- a/docs-v2/integrations/all/tiktok-ads.mdx
+++ b/docs-v2/integrations/all/tiktok-ads.mdx
@@ -28,4 +28,4 @@ API configuration: [`tiktok-ads`](https://nango.dev/providers.yaml)
## API gotchas
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/tiktok-accounts.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/tiktok-ads.mdx)
diff --git a/docs-v2/integrations/all/workable.mdx b/docs-v2/integrations/all/workable.mdx
index dd12676f4f0..6d1a3a3f163 100644
--- a/docs-v2/integrations/all/workable.mdx
+++ b/docs-v2/integrations/all/workable.mdx
@@ -55,4 +55,4 @@ nango.auth('workable', '', {
- The API base URL in Nango is set to `https://{subdomain}.workable.com` for future forward compatability. To call endpoints of the V3 API, prefix the endpoint with `/spi/v3/`, e.g. `/spi/v3/candidates`.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/gong.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/workable.mdx)
diff --git a/docs-v2/integrations/all/zoho-inventory.mdx b/docs-v2/integrations/all/zoho-inventory.mdx
index 71916c3bab8..4c6b03f10c5 100644
--- a/docs-v2/integrations/all/zoho-inventory.mdx
+++ b/docs-v2/integrations/all/zoho-inventory.mdx
@@ -28,7 +28,7 @@ API configuration: [`zoho-inventory`](https://nango.dev/providers.yaml)
## Connection configuration in Nango
-Zoho uses [different domain extensions](https://www.zoho.com/crm/developer/docs/api/v3/multi-dc.html) for different regions.
+Zoho uses [different domain extensions](https://www.zoho.com/crm/developer/docs/api/v3/multi-dc.html) for different regions.
You need to pass the domain extension to use to Nango in the `nango.auth()` call:
@@ -41,4 +41,4 @@ For more details, see the [docs here](/integrate/guides/authorize-an-api#apis-re
## API gotchas
- You can make your OAuth app cross-data-centers with [these instructions](https://www.zoho.com/crm/developer/docs/api/v3/multi-dc.html). This means that a single OAuth app will be able to query the Zoho API for Zoho accounts from the US, EU, etc.
-Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/zoho-books.mdx)
+Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/zoho-inventory.mdx)
diff --git a/integration-templates/asana/nango.yaml b/integration-templates/asana/nango.yaml
index af4d7b56065..ef5e6bcb5c3 100644
--- a/integration-templates/asana/nango.yaml
+++ b/integration-templates/asana/nango.yaml
@@ -4,14 +4,12 @@ integrations:
asana-tasks:
runs: every 30min
description: |
- Continuously fetches Asana tasks. This is just a trivial example:
- it will only get tasks from the first project of the first workspace.
- Details: full refresh, doesn't support deletes, sync goes to all time,
- metadata is not required.
- scopes: default
+ Fetches a list of tasks from Asana, retrieving tasks from only the first project of the first workspace
+ scopes:
+ - default
output: AsanaTask
sync_type: full
- endpoint: /asana/asana-tasks
+ endpoint: /asana/tasks
models:
AsanaTask:
id: string
diff --git a/integration-templates/ashby/ashby-create-application.ts b/integration-templates/ashby/ashby-create-application.ts
index 2b718f5af56..d16898f27c0 100644
--- a/integration-templates/ashby/ashby-create-application.ts
+++ b/integration-templates/ashby/ashby-create-application.ts
@@ -1,13 +1,4 @@
-import type { NangoAction, AshbyCreateApplicationResponse } from './models';
-
-interface AshbyCreateCandidateInput {
- candidateId: string;
- jobId: string;
- interviewPlanId?: string;
- interviewStageId?: string;
- sourceId?: string;
- creditedToUserId?: string;
-}
+import type { NangoAction, AshbyCreateApplicationResponse, AshbyCreateCandidateInput } from './models';
export default async function runAction(nango: NangoAction, input: AshbyCreateCandidateInput): Promise {
if (!input.candidateId) {
@@ -67,6 +58,8 @@ export default async function runAction(nango: NangoAction, input: AshbyCreateCa
appliedViaJobPostingId
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/ashby/ashby-create-note.ts b/integration-templates/ashby/ashby-create-note.ts
index 96f1d3c0ef5..770564c4d4a 100644
--- a/integration-templates/ashby/ashby-create-note.ts
+++ b/integration-templates/ashby/ashby-create-note.ts
@@ -1,23 +1,13 @@
-import type { NangoAction, AshbyCreateNoteResponse } from './models';
-
-interface AshbyCreateNoteInput {
- candidateId: string;
- note: string | NoteObject;
- sendNotifications?: boolean;
-}
-
-interface NoteObject {
- value: string;
- type: string;
-}
+import type { NangoAction, AshbyCreateNoteResponse, AshbyCreateNoteInput, NoteObject } from './models';
export default async function runAction(nango: NangoAction, input: AshbyCreateNoteInput): Promise {
+ //input validation
if (!input.candidateId) {
throw new nango.ActionError({
message: 'candidateId is a required field'
});
} else if (typeof input.note === 'object') {
- const noteObject = input.note;
+ const noteObject: NoteObject = input.note;
if (!noteObject.value || !noteObject.type) {
throw new nango.ActionError({
message: 'When note is an object, it must have "value" and "type" properties, both of which are required'
@@ -45,6 +35,8 @@ export default async function runAction(nango: NangoAction, input: AshbyCreateNo
return { id, createdAt, content, author };
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/ashby/ashby-jobs.ts b/integration-templates/ashby/ashby-jobs.ts
index 8ba67ce26da..a9f4ad83f2a 100644
--- a/integration-templates/ashby/ashby-jobs.ts
+++ b/integration-templates/ashby/ashby-jobs.ts
@@ -41,8 +41,8 @@ async function saveAllJobs(nango: NangoSync, jobslastsyncToken: string) {
const metadata = (await nango.getMetadata()) || {};
metadata['jobslastsyncToken'] = jobslastsyncToken;
await nango.setMetadata(metadata);
- } catch (error) {
- console.error('Error occurred while fetching and saving jobs:', error);
+ } catch (error: any) {
+ throw new Error(`Error in saveAllJobs: ${error.message}`);
}
}
diff --git a/integration-templates/ashby/nango.yaml b/integration-templates/ashby/nango.yaml
index b721cb93a85..43a7c00514d 100644
--- a/integration-templates/ashby/nango.yaml
+++ b/integration-templates/ashby/nango.yaml
@@ -1,29 +1,41 @@
integrations:
ashby:
- ashby-candidates:
- runs: every hour
- returns:
- - AshbyCandidate
- description: |
- Fetch a list of all candidates from your ashby account.
- Details: Increamental sync, doesn't track deletes, metadata is required.
- ashby-jobs:
- runs: every hour
- returns:
- - AshbyJob
- description: |
- Fetch a list of all jobs from your ashby account.
- Details: Increamental sync, doesn't track deletes, metadata is required.
- ashby-create-application:
- type: action
- returns: AshbyCreateApplicationResponse
- description: |
- Action to consider a candidate for a job.
- ashby-create-note:
- type: action
- returns: AshbyCreateNoteResponse
- description: |
- Action to create a note on a candidate.
+ syncs:
+ ashby-candidates:
+ runs: every hour
+ output: AshbyCandidate
+ description: |
+ Fetches a list of all candidates from your ashby account
+ metadata:
+ description: |
+ We need to save a candidatelastsyncToken to track and update candidates' synchronizations
+ scopes: candidatelastsyncToken
+ sync_type: incremental
+ endpoint: /ashby/candidates
+ ashby-jobs:
+ runs: every hour
+ output: AshbyJob
+ description: |
+ Fetches a list of all jobs from your ashby account
+ metadata:
+ description: |
+ We need to save a jobslastsyncToken to track and update jobs' synchronizations
+ scopes: jobslastsyncToken
+ sync_type: incremental
+ endpoint: /ashby/jobs
+ actions:
+ ashby-create-application:
+ output: AshbyCreateApplicationResponse
+ input: AshbyCreateCandidateInput
+ description: |
+ Action to consider a candidate for a job
+ endpoint: POST /ashby/create-application
+ ashby-create-note:
+ output: AshbyCreateNoteResponse
+ input: AshbyCreateNoteInput
+ description: |
+ Action to create a note on a candidate.
+ endpoint: POST /ashby/create-note
models:
AshbyCandidate:
id: string
@@ -154,3 +166,17 @@ models:
firstName: string
lastName: string
email: string
+ AshbyCreateCandidateInput:
+ candidateId: string
+ jobId: string
+ interviewPlanId: string | undefined
+ interviewStageId: string | undefined
+ sourceId: string | undefined
+ creditedToUserId: string | undefined
+ AshbyCreateNoteInput:
+ candidateId: string
+ note: string | NoteObject
+ sendNotifications: boolean | undefined
+ NoteObject:
+ value: string
+ type: string
diff --git a/integration-templates/bamboohr-basic/bamboohr-create-employee.ts b/integration-templates/bamboohr-basic/bamboohr-create-employee.ts
index 52ca3aa4a4e..191620f0ffe 100644
--- a/integration-templates/bamboohr-basic/bamboohr-create-employee.ts
+++ b/integration-templates/bamboohr-basic/bamboohr-create-employee.ts
@@ -53,6 +53,8 @@ export default async function runAction(nango: NangoAction, input: BamboohrEmplo
status: response.statusText
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/bamboohr-basic/nango.yaml b/integration-templates/bamboohr-basic/nango.yaml
index 917ebd03763..8bf4a850fbc 100644
--- a/integration-templates/bamboohr-basic/nango.yaml
+++ b/integration-templates/bamboohr-basic/nango.yaml
@@ -4,19 +4,17 @@ integrations:
bamboohr-employees:
runs: every 6 hours
description: |
- Fetches employees from bamboohr.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of current employees from bamboohr
output: BamboohrEmployee
sync_type: incremental
endpoint: /bamboohr/employees
- scopes:
- - default
actions:
bamboohr-create-employee:
description: |
- Action to create a new employee.
+ Action to create a new employee
output: BamboohrCreateEmployeeResponse
- endpoint: /bamboohr/create-employee
+ input: BamboohrEmployee
+ endpoint: POST /bamboohr/create-employee
models:
BamboohrEmployee:
id: string
diff --git a/integration-templates/clari-copilot/nango.yaml b/integration-templates/clari-copilot/nango.yaml
index c298b49da48..ea2d0e6e182 100644
--- a/integration-templates/clari-copilot/nango.yaml
+++ b/integration-templates/clari-copilot/nango.yaml
@@ -1,12 +1,13 @@
integrations:
clari-copilot:
- clari-copilot-call:
- runs: every hour
- returns:
- - ClariCopilotCall
- description: |
- Fetches calls from your account. For the first sync, it will go back to the past one year.
- Details: incremental sync, doesn't track deletes, metadata is not required.
+ syncs:
+ clari-copilot-call:
+ runs: every hour
+ output: ClariCopilotCall
+ description: |
+ Fetches a list of calls from your account. For the first sync, it will go back to the past one year
+ sync_type: incremental
+ endpoint: /clari-copilot/call
models:
ClariCopilotCall:
id: string
diff --git a/integration-templates/confluence/confluence-pages.ts b/integration-templates/confluence/confluence-pages.ts
index d6343669a20..746c0c8883d 100644
--- a/integration-templates/confluence/confluence-pages.ts
+++ b/integration-templates/confluence/confluence-pages.ts
@@ -9,7 +9,7 @@ export default async function fetchData(nango: NangoSync) {
baseUrlOverride: `https://api.atlassian.com/ex/confluence/${cloudId}`,
endpoint: `/wiki/api/v2/pages`,
paginate: {
- limit: 250
+ limit: 100
}
};
for await (const pageBatch of nango.paginate(proxyConfig)) {
diff --git a/integration-templates/confluence/confluence-spaces.ts b/integration-templates/confluence/confluence-spaces.ts
index 2a1d83009b8..b5ce4f32fdd 100644
--- a/integration-templates/confluence/confluence-spaces.ts
+++ b/integration-templates/confluence/confluence-spaces.ts
@@ -18,7 +18,7 @@ export default async function fetchData(nango: NangoSync) {
endpoint: `/wiki/api/v2/spaces`,
retries: 10,
paginate: {
- limit: 250
+ limit: 100
}
};
for await (const spaceBatch of nango.paginate(proxyConfig)) {
diff --git a/integration-templates/confluence/nango.yaml b/integration-templates/confluence/nango.yaml
index fe392be84a6..793bdd422cc 100644
--- a/integration-templates/confluence/nango.yaml
+++ b/integration-templates/confluence/nango.yaml
@@ -4,11 +4,15 @@ integrations:
confluence-spaces:
runs: every 4 hours
output: ConfluenceSpace
+ description: |
+ Fetches a list of spaces from confluence
sync_type: full
endpoint: /confluence/spaces
confluence-pages:
runs: every 4 hours
output: ConfluencePage
+ description: |
+ Fetches a list of pages from confluence
sync_type: full
endpoint: /confluence/pages
models:
diff --git a/integration-templates/evaluagent/nango.yaml b/integration-templates/evaluagent/nango.yaml
index ff0f3853673..0cea4d0d915 100644
--- a/integration-templates/evaluagent/nango.yaml
+++ b/integration-templates/evaluagent/nango.yaml
@@ -4,16 +4,22 @@ integrations:
evaluagent-users:
runs: every day
output: EvaluAgentUser
+ description: |
+ Fetches a list of users from evaluagent
sync_type: full
endpoint: /evaluagent/users
evaluagent-groups:
runs: every day
output: EvaluAgentGroup
+ description: |
+ Fetches a list of groups from evaluagent
sync_type: full
endpoint: /evaluagent/groups
evaluagent-roles:
runs: every day
output: EvaluAgentRole
+ description: |
+ Fetches a list of roles from evaluagent
sync_type: full
endpoint: /evaluagent/roles
models:
diff --git a/integration-templates/github/github-write-file.ts b/integration-templates/github/github-write-file.ts
index f7d3110d816..fa3517ef9e4 100644
--- a/integration-templates/github/github-write-file.ts
+++ b/integration-templates/github/github-write-file.ts
@@ -1,21 +1,6 @@
-import type { NangoSync } from './models';
+import type { NangoSync, GithubWriteFileInput, GithubWriteFileActionResult } from './models';
-interface FileActionInput {
- owner: string; // Owner of the repository
- repo: string; // Name of the repository
- path: string; // File path including the name, e.g. 'README.md'
- message: string; // Commit message
- content: string; // Content to be saved, should be Base64 encoded
- sha?: string; // SHA of the file to update, required if updating
-}
-
-interface GithubWriteFileActionResult {
- url: string; // URL of the file
- status: string; // 'success' or 'failure'
- sha: string; // SHA of the file to update, required if updating
-}
-
-export default async function runAction(nango: NangoSync, input: FileActionInput): Promise {
+export default async function runAction(nango: NangoSync, input: GithubWriteFileInput): Promise {
const endpoint = `/repos/${input.owner}/${input.repo}/contents/${input.path}`;
let fileSha: string | undefined = undefined;
diff --git a/integration-templates/github/nango.yaml b/integration-templates/github/nango.yaml
index 9b8438eacb8..82ffd1b84b7 100644
--- a/integration-templates/github/nango.yaml
+++ b/integration-templates/github/nango.yaml
@@ -7,8 +7,7 @@ integrations:
sync_type: full
scopes: public_repo
description: |
- Fetches the Github issues from all a user's repositories.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches Github issues from all a user's repositories
endpoint: /github/issues
github-issues-lite:
runs: every day
@@ -17,20 +16,17 @@ integrations:
output: Issue
scopes: public_repo
description: |
- Fetches the Github issues but up to a maximum of 15 for demo
- purposes.
- Details: limited sync, doesn't track deletes, metadata is not required.
- endpoint: /github/lite-issues
+ Fetches Github issues but up to a maximum of 15
+ endpoint: /github/issues-lite
github-list-files:
runs: every hour
description: |
- Lists all the files of a Github repo given a specific branch.
- Details: doesn't track deletes, metadata is required.
+ Lists all the files of a Github repo given a specific branch
sync_type: incremental
auto_start: false
input: GithubIssueRepoInput
output: GithubRepoFile
- endpoint: /github/files
+ endpoint: /github/list-files
scopes: repo
github-issues-demo:
runs: every 5 minutes
@@ -46,15 +42,14 @@ integrations:
scopes: repo
input: GithubWriteFileInput
output: GithubWriteFileActionResult
- endpoint: PUT /github/file
+ endpoint: PUT /github/write-file
description: |
Write content to a particular github file within a repo. If
- the file doesn't exist it creates and then writes to it.
+ the file doesn't exist it creates and then writes to it
github-list-repos:
scopes: read:org
- endpoint: GET /github/repos
- output:
- - GithubRepo
+ endpoint: GET /github/list-repos
+ output: GithubRepo
description: |
List github repos from an organization.
github-create-demo-issue:
diff --git a/integration-templates/google-calendar/nango.yaml b/integration-templates/google-calendar/nango.yaml
index 39e5e58dbe8..f1b06c9ed32 100644
--- a/integration-templates/google-calendar/nango.yaml
+++ b/integration-templates/google-calendar/nango.yaml
@@ -4,9 +4,7 @@ integrations:
google-calendar-events:
description: |
Sync calendar events on the primary calendar going back one month and
- save the entire object as specified by the Google API.
- Details: partial sync, doesn't support deletes, sync goes back one
- month, metadata is not required.
+ save the entire object as specified by the Google API
runs: every 5 minutes
output: GoogleCalendarEvent
sync_type: incremental
@@ -14,10 +12,7 @@ integrations:
scopes: https://www.googleapis.com/auth/calendar.readonly
google-calendars:
description: |
- Sync the calendars list of the user.
- Details: full sync, does support deletes. Sync goes back all time,
- metadata not required.
- Required scope(s): https://www.googleapis.com/auth/calendar.readonly
+ Sync the calendars list of the user
track_deletes: true
runs: every hour
output: GoogleCalendar
diff --git a/integration-templates/google-drive/nango.yaml b/integration-templates/google-drive/nango.yaml
index 48cd1c20e8c..fb4a16de8fc 100644
--- a/integration-templates/google-drive/nango.yaml
+++ b/integration-templates/google-drive/nango.yaml
@@ -29,7 +29,7 @@ integrations:
into a buffer and return a base64 encoded string that can later
be converted into a PDF using an external tool.
output: string
- endpoint: /google-drive/fetch-pdf
+ endpoint: POST /google-drive/fetch-pdf
scopes: https://www.googleapis.com/auth/drive.readonly
models:
DocumentMetadata:
diff --git a/integration-templates/google-mail/nango.yaml b/integration-templates/google-mail/nango.yaml
index 19130c03689..45f0f29bffd 100644
--- a/integration-templates/google-mail/nango.yaml
+++ b/integration-templates/google-mail/nango.yaml
@@ -3,6 +3,8 @@ integrations:
syncs:
gmail-emails:
runs: every hour
+ description: |
+ Fetches a list of emails from gmail
output: GmailEmail
sync_type: incremental
endpoint: /google-mail/emails
diff --git a/integration-templates/google-workspace/nango.yaml b/integration-templates/google-workspace/nango.yaml
index c8133b27706..40572d753b3 100644
--- a/integration-templates/google-workspace/nango.yaml
+++ b/integration-templates/google-workspace/nango.yaml
@@ -7,7 +7,9 @@ integrations:
output: OrganizationalUnit
sync_type: full
endpoint: /google/workspace-org-unit
- scopes: https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly
+ scopes:
+ - https://www.googleapis.com/auth/admin.directory.orgunit.readonly
+ - https://www.googleapis.com/auth/admin.directory.user.readonly
google-workspace-users:
runs: every hour
output: User
@@ -18,7 +20,9 @@ integrations:
output: GoogleWorkspaceUserToken
sync_type: full
endpoint: /google/workspace-user-access-tokens
- scopes: https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.user.security
+ scopes:
+ - https://www.googleapis.com/auth/admin.directory.user.readonly
+ - https://www.googleapis.com/auth/admin.directory.user.security
models:
OrganizationalUnit:
id: string
diff --git a/integration-templates/greenhouse-basic/nango.yaml b/integration-templates/greenhouse-basic/nango.yaml
index e4f1a2992ae..225e99410e0 100644
--- a/integration-templates/greenhouse-basic/nango.yaml
+++ b/integration-templates/greenhouse-basic/nango.yaml
@@ -4,36 +4,24 @@ integrations:
greenhouse-applications:
runs: every 6 hours
description: |
- Fetches all organization's applications from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's applications from greenhouse
output: GreenhouseApplication
sync_type: incremental
endpoint: /greenhouse-basic/applications
- scopes:
- - default
greenhouse-candidates:
runs: every 6 hours
description: |
- Fetches all organization's candidates from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's candidates from greenhouse
output: GreenhouseCandidate
sync_type: incremental
endpoint: /greenhouse-basic/candidates
- scopes:
- - default
greenhouse-jobs:
runs: every 6 hours
description: |
- Fetches all organization's jobs from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's jobs from greenhouse
output: GreenhouseJob
sync_type: incremental
endpoint: /greenhouse-basic/jobs
- scopes:
- - default
models:
GreenhouseApplication:
id: string
diff --git a/integration-templates/hackerrank-work/hackerrank-work-create-interview.ts b/integration-templates/hackerrank-work/hackerrank-work-create-interview.ts
index c792cbeb6ed..bdfd39eb629 100644
--- a/integration-templates/hackerrank-work/hackerrank-work-create-interview.ts
+++ b/integration-templates/hackerrank-work/hackerrank-work-create-interview.ts
@@ -50,6 +50,8 @@ export default async function runAction(nango: NangoAction, input: HackerRankWor
report_url: resp.data.report_url
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.data}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/hackerrank-work/hackerrank-work-create-test.ts b/integration-templates/hackerrank-work/hackerrank-work-create-test.ts
index b11406e3fd2..f184d48eee7 100644
--- a/integration-templates/hackerrank-work/hackerrank-work-create-test.ts
+++ b/integration-templates/hackerrank-work/hackerrank-work-create-test.ts
@@ -1,36 +1,4 @@
-import type { NangoAction, HackerRankWorkTest } from './models';
-
-interface HackerRankWorkCreateTestInput {
- name: string;
- starttime: Date;
- endtime: Date;
- duration: number;
- instructions: string;
- locked: boolean;
- draft: string;
- languages: string[];
- candidate_details: string[];
- custom_acknowledge_text: string;
- cutoff_score: number;
- master_password: string;
- hide_compile_test: boolean;
- tags: string[];
- role_ids: string[];
- experience: string[];
- questions: string[];
- mcq_incorrect_score: number;
- mcq_correct_score: number;
- secure: boolean;
- shuffle_questions: boolean;
- test_admins: string[];
- hide_template: boolean;
- enable_acknowledgement: boolean;
- enable_proctoring: boolean;
- candidate_tab_switch: boolean;
- track_editor_paste: boolean;
- show_copy_paste_prompt: boolean;
- ide_config: string;
-}
+import type { NangoAction, HackerRankWorkTest, HackerRankWorkCreateTestInput } from './models';
const mapInputToPostData = (input: HackerRankWorkCreateTestInput): Record => {
return { ...input };
@@ -74,6 +42,8 @@ export default async function runAction(nango: NangoAction, input: HackerRankWor
permission: resp.data.permission
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/hackerrank-work/nango.yaml b/integration-templates/hackerrank-work/nango.yaml
index 261547cce75..62eb673128d 100644
--- a/integration-templates/hackerrank-work/nango.yaml
+++ b/integration-templates/hackerrank-work/nango.yaml
@@ -4,54 +4,44 @@ integrations:
hackerrank-work-interviews:
runs: every 6 hours
description: |
- Fetches interviews from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of interviews from hackerrank work
output: HackerRankWorkInterview
sync_type: incremental
endpoint: /hackerrank-work/interviews
- scopes:
- - default
hackerrank-work-teams:
runs: every 6 hours
description: |
- Fetches teams from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of teams from hackerrank work
output: HackerRankWorkTeam
sync_type: incremental
endpoint: /hackerrank-work/teams
- scopes:
- - default
hackerrank-work-tests:
runs: every 6 hours
description: |
- Fetches tests from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of tests from hackerrank work
output: HackerRankWorkTest
sync_type: incremental
endpoint: /hackerrank-work/tests
- scopes:
- - default
hackerrank-work-users:
runs: every 6 hours
description: |
- Fetches users from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of users from hackerrank work
output: HackerRankWorkUser
sync_type: incremental
endpoint: /hackerrank-work/users
- scopes:
- - default
actions:
+ hackerrank-work-create-test:
+ description: |
+ Action to create a test on hackerrank work
+ input: HackerRankWorkCreateTestInput
+ output: HackerRankWorkTest
+ endpoint: POST /hackerrank-work/create-test
hackerrank-work-create-interview:
description: |
- Action to create an interview on hackerrank work.
+ Action to create an interview on hackerrank work
input: HackerRankWorkCreateInterviewInput
output: HackerRankWorkInterview
- endpoint: /hackerrank-work/create-interview
+ endpoint: POST /hackerrank-work/create-interview
models:
HackerRankWorkCreateInterviewInput:
__extends: HackerRankWorkInterview
@@ -143,3 +133,33 @@ models:
teams: []
activated: boolean
last_activity_time: date
+ HackerRankWorkCreateTestInput:
+ name: string
+ starttime: Date
+ endtime: Date
+ duration: number
+ instructions: string
+ locked: boolean
+ draft: string
+ languages: string[]
+ candidate_details: string[]
+ custom_acknowledge_text: string
+ cutoff_score: number
+ master_password: string
+ hide_compile_test: boolean
+ tags: string[]
+ role_ids: string[]
+ experience: string[]
+ questions: string[]
+ mcq_incorrect_score: number
+ mcq_correct_score: number
+ secure: boolean
+ shuffle_questions: boolean
+ test_admins: string[]
+ hide_template: boolean
+ enable_acknowledgement: boolean
+ enable_proctoring: boolean
+ candidate_tab_switch: boolean
+ track_editor_paste: boolean
+ show_copy_paste_prompt: boolean
+ ide_config: string
diff --git a/integration-templates/hibob-service-user/nango.yaml b/integration-templates/hibob-service-user/nango.yaml
index 2dbc4d934d5..d0603ca7510 100644
--- a/integration-templates/hibob-service-user/nango.yaml
+++ b/integration-templates/hibob-service-user/nango.yaml
@@ -4,8 +4,7 @@ integrations:
hibob-employees:
runs: every hour
description: |
- Returns a list of all active employees.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all active employees
output: HibobEmployee
sync_type: full
endpoint: /hibob-service-user/hibob-employees
diff --git a/integration-templates/hubspot/nango.yaml b/integration-templates/hubspot/nango.yaml
index 0db081e58c0..7debd6eb57f 100644
--- a/integration-templates/hubspot/nango.yaml
+++ b/integration-templates/hubspot/nango.yaml
@@ -3,26 +3,36 @@ integrations:
syncs:
hubspot-service-tickets:
runs: every half hour
+ description: |
+ Fetches a list of service tickets from Hubspot
output: HubspotServiceTicket
sync_type: incremental
endpoint: /hubspot/service-tickets
hubspot-contacts:
runs: every day
+ description: |
+ Fetches a list of contacts from Hubspot
output: HubspotContact
sync_type: full
endpoint: /hubspot/contacts
hubspot-owners:
runs: every day
+ description: |
+ Fetches a list of owners from Hubspot
output: HubspotOwner
sync_type: full
endpoint: /hubspot/owner
hubspot-users:
runs: every day
+ description: |
+ Fetches a list of users from Hubspot
output: HubspotUser
sync_type: full
endpoint: /hubspot/user
hubspot-knowledge-base:
runs: every day
+ description: |
+ Fetches a list of knowledge base from Hubspot
output: HubspotKnowledgeBase
sync_type: full
endpoint: /hubspot/knowledge-base
diff --git a/integration-templates/intercom/nango.yaml b/integration-templates/intercom/nango.yaml
index 5dd19b6199a..88cc39724a6 100644
--- a/integration-templates/intercom/nango.yaml
+++ b/integration-templates/intercom/nango.yaml
@@ -3,11 +3,19 @@ integrations:
syncs:
intercom-conversations:
runs: every 6 hours
- output: IntercomConversation
+ description: |
+ Fetches a list of conversations from Intercom
+ output:
+ - IntercomConversation
+ - IntercomConversationMessage
sync_type: incremental
- endpoint: /intercom/conversations
+ endpoint:
+ - /intercom/conversations
+ - /intercom/conversations-message
intercom-contacts:
runs: every 6 hours
+ description: |
+ Fetches a list of contacts from Intercom
output: IntercomContact
sync_type: full
endpoint: /intercom/contacts
diff --git a/integration-templates/jira/nango.yaml b/integration-templates/jira/nango.yaml
index da713282a28..71659818ff8 100644
--- a/integration-templates/jira/nango.yaml
+++ b/integration-templates/jira/nango.yaml
@@ -3,6 +3,8 @@ integrations:
syncs:
jira-issues:
runs: every 5mins
+ description: |
+ Fetches a list of issues from Jira
output: JiraIssue
sync_type: incremental
endpoint: /jira/issues
diff --git a/integration-templates/lever/lever-create-note.ts b/integration-templates/lever/lever-create-note.ts
index 602d54f5bcb..eb0c8efd028 100644
--- a/integration-templates/lever/lever-create-note.ts
+++ b/integration-templates/lever/lever-create-note.ts
@@ -1,15 +1,4 @@
-import type { NangoAction, LeverOpportunityNote } from './models';
-
-interface LeverCreateNoteInput {
- opportunityId: string;
- perform_as?: string;
- note_id?: string;
- value: string;
- secret?: boolean;
- score?: number;
- notifyFollowers?: boolean;
- createdAt?: number;
-}
+import type { NangoAction, LeverOpportunityNote, LeverCreateNoteInput } from './models';
export default async function runAction(nango: NangoAction, input: LeverCreateNoteInput): Promise {
if (!input.opportunityId) {
@@ -58,6 +47,8 @@ export default async function runAction(nango: NangoAction, input: LeverCreateNo
deletedAt: resp.data.data.deletedAt
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/lever/lever-create-opportunity.ts b/integration-templates/lever/lever-create-opportunity.ts
index 0b71ff0f530..1db08f72532 100644
--- a/integration-templates/lever/lever-create-opportunity.ts
+++ b/integration-templates/lever/lever-create-opportunity.ts
@@ -1,36 +1,6 @@
-import type { NangoAction, LeverOpportunity } from './models';
+import type { NangoAction, LeverOpportunity, LeverCreateOpportunityInput } from './models';
-interface PhoneEntry {
- value?: string;
- type?: string;
-}
-interface ArchievedEntry {
- archivedAt?: number;
- reason?: string;
-}
-interface LeverCreateNoteInput {
- perform_as: string;
- parse?: boolean;
- perform_as_posting_owner?: boolean;
- name?: string;
- headline?: string;
- stage?: string;
- location?: string;
- phones?: PhoneEntry[];
- emails?: string;
- links?: string[];
- tags?: string[];
- sources?: string[];
- origin?: string;
- owner?: string;
- followers?: string[];
- postings?: string[];
- createdAt?: number;
- archived?: ArchievedEntry;
- contact?: string[];
-}
-
-export default async function runAction(nango: NangoAction, input: LeverCreateNoteInput): Promise {
+export default async function runAction(nango: NangoAction, input: LeverCreateOpportunityInput): Promise {
if (!input.perform_as) {
throw new nango.ActionError({
message: 'perform_as is the only required field'
@@ -108,6 +78,8 @@ export default async function runAction(nango: NangoAction, input: LeverCreateNo
opportunityLocation: resp.data.data.opportunityLocation
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/lever/lever-opportunities-offers.ts b/integration-templates/lever/lever-opportunities-offers.ts
index 02e6410abda..5c576521776 100644
--- a/integration-templates/lever/lever-opportunities-offers.ts
+++ b/integration-templates/lever/lever-opportunities-offers.ts
@@ -1,6 +1,6 @@
import type { LeverOpportunityOffer, NangoSync } from './models';
-const LIMIT = 100000;
+const LIMIT = 100;
export default async function fetchData(nango: NangoSync) {
let totalRecords = 0;
diff --git a/integration-templates/lever/lever-opportunities.ts b/integration-templates/lever/lever-opportunities.ts
index 1c017ab5f7a..e81000a04c0 100644
--- a/integration-templates/lever/lever-opportunities.ts
+++ b/integration-templates/lever/lever-opportunities.ts
@@ -1,5 +1,7 @@
import type { LeverOpportunity, NangoSync } from './models';
+const LIMIT = 100;
+
export default async function fetchData(nango: NangoSync) {
let totalRecords = 0;
@@ -13,7 +15,7 @@ export default async function fetchData(nango: NangoSync) {
cursor_name_in_request: 'offset',
limit_name_in_request: 'limit',
response_path: 'data',
- limit: 100
+ limit: LIMIT
}
};
for await (const opportunity of nango.paginate({ ...config, endpoint })) {
diff --git a/integration-templates/lever/lever-postings.ts b/integration-templates/lever/lever-postings.ts
index c9341a24c45..10dc25696f7 100644
--- a/integration-templates/lever/lever-postings.ts
+++ b/integration-templates/lever/lever-postings.ts
@@ -1,5 +1,7 @@
import type { LeverPosting, NangoSync } from './models';
+const LIMIT = 100;
+
export default async function fetchData(nango: NangoSync) {
let totalRecords = 0;
@@ -12,7 +14,7 @@ export default async function fetchData(nango: NangoSync) {
cursor_name_in_request: 'offset',
limit_name_in_request: 'limit',
response_path: 'data',
- limit: 100
+ limit: LIMIT
}
};
for await (const posting of nango.paginate({ ...config, endpoint })) {
diff --git a/integration-templates/lever/lever-stage.ts b/integration-templates/lever/lever-stage.ts
index 498e747a426..303f55d8679 100644
--- a/integration-templates/lever/lever-stage.ts
+++ b/integration-templates/lever/lever-stage.ts
@@ -1,5 +1,7 @@
import type { LeverStage, NangoSync } from './models';
+const LIMIT = 100;
+
export default async function fetchData(nango: NangoSync) {
let totalRecords = 0;
@@ -12,7 +14,7 @@ export default async function fetchData(nango: NangoSync) {
cursor_name_in_request: 'offset',
limit_name_in_request: 'limit',
response_path: 'data',
- limit: 100
+ limit: LIMIT
}
};
for await (const stage of nango.paginate({ ...config, endpoint })) {
diff --git a/integration-templates/lever/nango.yaml b/integration-templates/lever/nango.yaml
index 82165b56eb1..e6ecbfa636b 100644
--- a/integration-templates/lever/nango.yaml
+++ b/integration-templates/lever/nango.yaml
@@ -1,19 +1,27 @@
integrations:
lever-basic:
actions:
+ lever-create-note:
+ description: |
+ Action to create a note and add it to a candidate profile in Lever
+ output: LeverOpportunityNote
+ input: LeverCreateNoteInput
+ endpoint: POST /lever/create-note
+ scopes:
+ - notes:write:admin
lever-create-opportunity:
description: |
- Create candidates and opportunities in your Lever account.
+ Action to create candidates and opportunities in Lever
output: LeverOpportunity
- endpoint: /lever/create-opportunity
- scopes: opportunities:write:admin
+ input: LeverCreateOpportunityInput
+ endpoint: POST /lever/create-opportunity
+ scopes:
+ - opportunities:write:admin
syncs:
lever-opportunities:
runs: every 6 hours
description: |
- Fetch all pipeline Opportunities for Contacts in your Lever account.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all pipeline opportunities for contacts in Lever
output: LeverOpportunity
sync_type: incremental
endpoint: /lever/opportunities
@@ -22,8 +30,7 @@ integrations:
lever-opportunities-applications:
runs: every 6 hours
description: |
- Fetch all applications for a candidate in your lever account.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all applications for a candidate in Lever
output: LeverOpportunityApplication
sync_type: full
endpoint: /lever/opportunities-applications
@@ -32,9 +39,7 @@ integrations:
lever-opportunities-feedbacks:
runs: every 6 hours
description: |
- Fetch all feedback forms for a candidate for a specific Opportunity in
- lever.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all feedback forms for a candidate for a specific Opportunity in lever
output: LeverOpportunityFeedback
sync_type: full
endpoint: /lever/opportunities-feedbacks
@@ -43,8 +48,7 @@ integrations:
lever-opportunities-interviews:
runs: every 6 hours
description: |
- Fetch all interviewers for a specific Opportunity in lever.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all interviewers for a specific Opportunity in lever
output: LeverOpportunityInterview
sync_type: full
endpoint: /lever/opportunities-interviews
@@ -53,8 +57,7 @@ integrations:
lever-opportunities-notes:
runs: every 6 hours
description: |
- Fetch all notes for a specific candidate in lever.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all notes for a specific candidate in lever
output: LeverOpportunityNote
sync_type: full
endpoint: /lever/opportunities-notes
@@ -63,7 +66,7 @@ integrations:
lever-opportunities-offers:
runs: every 6 hours
description: |
- Fetch all offers for a specific candidate in lever.
+ Fetches a list of all offers for a specific candidate in lever.
output: LeverOpportunityOffer
sync_type: full
endpoint: /lever/opportunities-offers
@@ -72,8 +75,7 @@ integrations:
lever-postings:
runs: every 6 hours
description: |
- Fetch all postings in your Lever account.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all postings in Lever
output: LeverPosting
sync_type: full
endpoint: /lever/postings
@@ -82,11 +84,8 @@ integrations:
lever-postings-apply:
runs: every 6 hours
description: |
- Fetch all questions included in a posting’s application form in your
- Lever account.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s):
- output: L
+ Fetches a list of all questions included in a posting’s application form in Lever
+ output: LeverPostingApply
sync_type: full
endpoint: /lever/postings-apply
scopes:
@@ -94,8 +93,7 @@ integrations:
lever-stage:
runs: every 6 hours
description: |
- Fetch all pipeline stages in your Lever account.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all pipeline stages in Lever
output: LeverStage
sync_type: full
endpoint: /lever/stage
@@ -273,3 +271,38 @@ models:
LeverStage:
id: string
text: string
+ LeverCreateNoteInput:
+ opportunityId: string
+ perform_as: string | undefined
+ note_id: string | undefined
+ value: string | undefined
+ secret: boolean | undefined
+ score: number | undefined
+ notifyFollowers: boolean | undefined
+ createdAt: number | undefined
+ PhoneEntry:
+ value: string | undefined
+ type: string | undefined
+ ArchievedEntry:
+ archivedAt: number | undefined
+ reason: string | undefined
+ LeverCreateOpportunityInput:
+ perform_as: string
+ parse: boolean | undefined
+ perform_as_posting_owner: boolean | undefined
+ name: string | undefined
+ headline: string | undefined
+ stage: string | undefined
+ location: string | undefined
+ phones: PhoneEntry[] | undefined
+ emails: string | undefined
+ links: string[] | undefined
+ tags: string[] | undefined
+ sources: string[] | undefined
+ origin: string | undefined
+ owner: string | undefined
+ followers: string[] | undefined
+ postings: string[] | undefined
+ createdAt: number | undefined
+ archived: ArchievedEntry | undefined
+ contact: string[] | undefined
diff --git a/integration-templates/linear/nango.yaml b/integration-templates/linear/nango.yaml
index 8029798269e..e1a37f90d29 100644
--- a/integration-templates/linear/nango.yaml
+++ b/integration-templates/linear/nango.yaml
@@ -3,21 +3,29 @@ integrations:
syncs:
linear-issues:
runs: every 5min
+ description: |
+ Fetches a list of issues from Linear
output: LinearIssue
sync_type: incremental
endpoint: /linear/issues
linear-projects:
runs: every 5min
+ description: |
+ Fetches a list of projects from Linear
output: LinearProject
sync_type: incremental
endpoint: /linear/projects
linear-teams:
runs: every 5min
+ description: |
+ Fetches a list of teams from Linear
output: LinearTeam
sync_type: incremental
endpoint: /linear/teams
linear-roadmaps:
runs: every 5min
+ description: |
+ Fetches a list of roadmaps from Linear
output: LinearRoadmap
sync_type: incremental
endpoint: /linear/roadmaps
diff --git a/integration-templates/next-cloud-ocs/nango.yaml b/integration-templates/next-cloud-ocs/nango.yaml
index 8f48ed22426..21f8f3d8faa 100644
--- a/integration-templates/next-cloud-ocs/nango.yaml
+++ b/integration-templates/next-cloud-ocs/nango.yaml
@@ -4,13 +4,10 @@ integrations:
next-cloud-users:
runs: every hour
description: |
- Fetch all users' details from NextCloud account
- Details: full sync, doesn't track deletes, metadata is not required.
- output: 'N'
+ Fetches a list of all users' details from NextCloud account
+ output: 'NextCloudUser'
sync_type: full
endpoint: /next-cloud-ocs/next-cloud-users
- scopes:
- - default
models:
NextCloudUser:
enabled: boolean
diff --git a/integration-templates/notion/nango.yaml b/integration-templates/notion/nango.yaml
index e2556b7513f..948c09800ef 100644
--- a/integration-templates/notion/nango.yaml
+++ b/integration-templates/notion/nango.yaml
@@ -8,13 +8,9 @@ integrations:
sub-databases and retrieve only the text content and ignores
images, files and other blocks that do not have
a `rich_text` property.
- Details: incremental sync, doesn't support deletes, sync goes to all
- time, metadata is not required.
- Required scope(s): none
output: NotionPage
sync_type: incremental
endpoint: /notion/pages
- scopes: ''
notion-rich-pages:
runs: every 6 hours
track_deletes: true
@@ -22,13 +18,9 @@ integrations:
Sync pages, subpages, database entries, entries of
sub-databases and maps to full markdown. It transforms
images, tables, uploaded files, etc into their markdown counterparts.
- Details: full sync, tracks deletes, sync goes to all time, metadata is
- not required.
- Required scope(s): none
output: NotionRichPage
sync_type: incremental
endpoint: /notion/rich-pages
- scopes: ''
models:
NotionPage:
id: string
diff --git a/integration-templates/pipedrive/nango.yaml b/integration-templates/pipedrive/nango.yaml
index c0568e66474..64776375476 100644
--- a/integration-templates/pipedrive/nango.yaml
+++ b/integration-templates/pipedrive/nango.yaml
@@ -4,8 +4,7 @@ integrations:
pipedrive-activities:
runs: every hour
description: |
- Fetches activities from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of activities from pipedrive
output: PipeDriveActivity
sync_type: incremental
endpoint: /pipedrive/activities
@@ -14,8 +13,7 @@ integrations:
pipedrive-deals:
runs: every hour
description: |
- Fetches deals from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of deals from pipedrive
output: PipeDriveDeal
sync_type: incremental
endpoint: /pipedrive/deals
@@ -24,8 +22,7 @@ integrations:
pipedrive-organizations:
runs: every hour
description: |
- Fetches organizations from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of organizations from pipedrive
output: PipeDriveOrganization
sync_type: incremental
endpoint: /pipedrive/organizations
@@ -34,8 +31,7 @@ integrations:
pipedrive-persons:
runs: every half hour
description: |
- Fetches persons from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches persons from pipedrive
output: PipeDrivePerson
sync_type: incremental
endpoint: /pipedrive/persons
diff --git a/integration-templates/salesforce/nango.yaml b/integration-templates/salesforce/nango.yaml
index 199922965d6..def4ef0e813 100644
--- a/integration-templates/salesforce/nango.yaml
+++ b/integration-templates/salesforce/nango.yaml
@@ -3,26 +3,36 @@ integrations:
syncs:
salesforce-accounts:
runs: every hour
+ description: |
+ Fetches a list of accounts from salesforce
output: SalesforceAccount
sync_type: incremental
endpoint: /salesforce/accounts
salesforce-contacts:
runs: every hour
+ description: |
+ Fetches a list of contacts from salesforce
output: SalesforceContact
sync_type: incremental
endpoint: /salesforce/contacts
salesforce-deals:
runs: every hour
+ description: |
+ Fetches a list of deals from salesforce
output: SalesforceDeal
sync_type: incremental
endpoint: /salesforce/deals
salesforce-articles:
runs: every day
+ description: |
+ Fetches a list of articles from salesforce
output: SalesforceArticle
sync_type: incremental
endpoint: /salesforce/articles
salesforce-tickets:
runs: every day
+ description: |
+ Fetches a list of tickets from salesforce
output: SalesforceTicket
sync_type: incremental
endpoint: /salesforce/tickets
diff --git a/integration-templates/slack/nango.yaml b/integration-templates/slack/nango.yaml
index 01c7f5978bb..a271fbe2744 100644
--- a/integration-templates/slack/nango.yaml
+++ b/integration-templates/slack/nango.yaml
@@ -4,7 +4,7 @@ integrations:
slack-users:
runs: every hour
description: |
- Syncs information about all Users on the Slack workspace.
+ Syncs information about all Users on the Slack workspace
output: SlackUser
sync_type: full
endpoint: /slack/users
@@ -14,7 +14,7 @@ integrations:
runs: every hour
description: |
Syncs information about all Slack channels. Which channels get synced
- (public, private, IMs, group DMs) dependson the scopes. If
+ (public, private, IMs, group DMs) depends on the scopes. If
joinPublicChannels is set to true, the bot will automatically join all
public channels as well. Scopes: At least one of channels:read,
groups:read, mpim:read, im:read. To also join public channels:
@@ -34,10 +34,16 @@ integrations:
detection of the channel. For subsequent runs it will sync messages,
threads & reactions from the last 10 days. Scopes required:
channels:read, and at least one of
- channels:history,groups:history,mpim:history,im:history
- output: SlackMessage
- sync_type: full
- endpoint: /slack/messages
+ channels:history, groups:history, mpim:history, im:history
+ output:
+ - SlackMessage
+ - SlackMessageReply
+ - SlackMessageReaction
+ sync_type: incremental
+ endpoint:
+ - /slack/messages
+ - /slack/messages-reply
+ - /slack/messages-reaction
scopes:
- channels:read
- channels:history
diff --git a/integration-templates/teamtailor/nango.yaml b/integration-templates/teamtailor/nango.yaml
index 476c1881f48..eee768d2391 100644
--- a/integration-templates/teamtailor/nango.yaml
+++ b/integration-templates/teamtailor/nango.yaml
@@ -5,10 +5,9 @@ integrations:
runs: every 6 hours
description: |
Fetches a list of all candidates from your teamtailor account.
- Details: full sync, doesn't track deletes, metadata is not required.
output: TeamtailorCandidate
sync_type: full
- endpoint: /teamtailor-candidates/candidates
+ endpoint: /teamtailor/candidates
scopes:
- Admin
models:
diff --git a/integration-templates/wildix-pbx/nango.yaml b/integration-templates/wildix-pbx/nango.yaml
index fc808d6e2ae..d579f419399 100644
--- a/integration-templates/wildix-pbx/nango.yaml
+++ b/integration-templates/wildix-pbx/nango.yaml
@@ -3,6 +3,8 @@ integrations:
syncs:
wildix-pbx-colleagues:
runs: every 1 hour
+ description: |
+ Fetches a list of users from PBX
output: WildixPbxColleague
sync_type: full
endpoint: /wildix-pbx/colleagues
diff --git a/integration-templates/workable/nango.yaml b/integration-templates/workable/nango.yaml
index 8604f430ffe..2d0981f07f8 100644
--- a/integration-templates/workable/nango.yaml
+++ b/integration-templates/workable/nango.yaml
@@ -4,9 +4,7 @@ integrations:
workable-candidates:
runs: every 6 hours
description: |
- Fetches candidates from workable.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of candidates from workable
output: WorkableCandidate
sync_type: incremental
endpoint: /workable/candidates
@@ -15,8 +13,7 @@ integrations:
workable-candidates-activities:
runs: every 6 hours
description: |
- Fetches activity stream of the given candidate
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of activity streams of the given candidate
output: WorkableCandidateActivity
sync_type: full
endpoint: /workable/candidates-activities
@@ -25,8 +22,7 @@ integrations:
workable-candidates-offer:
runs: every 6 hours
description: |
- Fetches candidate's latest offer from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches candidate's latest offer from workable
output: WorkableCandidateOffer
sync_type: full
endpoint: /workable/candidates-offer
@@ -35,9 +31,7 @@ integrations:
workable-jobs:
runs: every 6 hours
description: |
- Fetches jobs from workable.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of jobs from workable
output: WorkableJob
sync_type: incremental
endpoint: /workable/jobs
@@ -46,8 +40,7 @@ integrations:
workable-jobs-candidates:
runs: every 6 hours
description: |
- Fetches candidates for the specified job from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of candidates for the specified job from workable
output: WorkableJobsCandidate
sync_type: full
endpoint: /workable/jobs-candidates
@@ -56,8 +49,7 @@ integrations:
workable-jobs-questions:
runs: every 6 hours
description: |
- Fetches questions for the specified job from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of questions for the specified job from workable
output: WorkableJobQuestion
sync_type: full
endpoint: /workable/jobs-questions
@@ -66,20 +58,28 @@ integrations:
workable-members:
runs: every 6 hours
description: |
- Fetches account members from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of account members from workable
output: WorkableMember
sync_type: full
endpoint: /workable/members
scopes:
- r_jobs
actions:
+ workable-create-candidate:
+ description: |
+ Action to create a candidate at the specified job
+ scopes:
+ - w_candidates
+ output: WorkableCreateCandidateResponse
+ input: WorkableCreateCandidateInput
+ endpoint: POST /workable/create-candidate
workable-create-comment:
description: |
- Action to create a comment on the applicant's timeline.
- Scope(s): w_candidates or w_comments
+ Action to create a comment on the applicant's timeline
+ scopes:
+ - w_candidates or w_comments
output: WorkableCreateCommentResponse
- endpoint: /workable/create-comment
+ endpoint: POST /workable/create-comment
models:
WorkableCandidate:
id: string
@@ -197,3 +197,65 @@ models:
zip_code: string
WorkableCreateCommentResponse:
id: string
+ WorkableCreateCandidateInput:
+ shortcode: string
+ candidate:
+ name: string
+ firstname: string
+ lastname: string
+ email: string
+ headline: string | undefined
+ summary: string | undefined
+ address: string | undefined
+ phone: string | undefined
+ cover_letter: string | undefined
+ education_entries: EducationEntry[] | undefined
+ experience_entries: ExperienceEntry[] | undefined
+ answers: Answer[] | undefined
+ skills: string[] | undefined
+ tags: string[] | undefined
+ disqualified: boolean | undefined
+ disqualification_reason: string | undefined
+ disqualified_at: string | undefined
+ social_profiles: SocialProfile[] | undefined
+ domain: string | undefined
+ recruiter_key: string | undefined
+ EducationEntry:
+ school: string
+ degree: string | undefined
+ field_of_study: string | undefined
+ start_date: string | undefined
+ end_date: string | undefined
+ ExperienceEntry:
+ title: string
+ summary: string | undefined
+ start_date: string | undefined
+ end_date: string | undefined
+ current: boolean | undefined
+ company: string | undefined
+ industry: string | undefined
+ Answer:
+ question_key: string
+ body: string | undefined
+ choices: string[]
+ checked: boolean | undefined
+ date: string | undefined
+ number: number | undefined
+ file:
+ name: string
+ data: string
+ SocialProfile:
+ type: string
+ name: string | undefined
+ username: string | undefined
+ url: string
+ WorkableCreateCommentInput:
+ id: string
+ member_id: string
+ comment:
+ body: string
+ policy: string[] | undefined
+ attachment: Attachment | undefined
+ Attachment:
+ name: string
+ data: string
diff --git a/integration-templates/workable/workable-create-candidate.ts b/integration-templates/workable/workable-create-candidate.ts
index ea52243557c..400bbb5a4f6 100644
--- a/integration-templates/workable/workable-create-candidate.ts
+++ b/integration-templates/workable/workable-create-candidate.ts
@@ -1,68 +1,4 @@
-import type { NangoAction, WorkableCreateCandidateResponse } from './models';
-
-interface EducationEntry {
- school: string;
- degree?: string;
- field_of_study?: string;
- start_date?: string;
- end_date?: string;
-}
-
-interface ExperienceEntry {
- title: string;
- summary?: string;
- start_date?: string;
- end_date?: string;
- current?: boolean;
- company?: string;
- industry?: string;
-}
-
-interface Answer {
- question_key: string;
- body?: string;
- choices?: string[];
- checked?: boolean;
- date?: string;
- number?: number;
- file?: {
- name: string;
- data: string;
- };
-}
-
-interface SocialProfile {
- type: string;
- name?: string;
- username?: string;
- url: string;
-}
-
-interface WorkableCreateCandidateInput {
- shortcode: string;
- candidate: {
- name: string;
- firstname: string;
- lastname: string;
- email: string;
- headline?: string;
- summary?: string;
- address?: string;
- phone?: string;
- cover_letter?: string;
- education_entries?: EducationEntry[];
- experience_entries?: ExperienceEntry[];
- answers?: Answer[];
- skills?: string[];
- tags?: string[];
- disqualified?: boolean;
- disqualification_reason?: string;
- disqualified_at?: string;
- social_profiles?: SocialProfile[];
- };
- domain?: string;
- recruiter_key?: string;
-}
+import type { NangoAction, WorkableCreateCandidateResponse, WorkableCreateCandidateInput } from './models';
export default async function runAction(nango: NangoAction, input: WorkableCreateCandidateInput): Promise {
if (!input.shortcode) {
@@ -85,23 +21,39 @@ export default async function runAction(nango: NangoAction, input: WorkableCreat
throw new nango.ActionError({
message: 'email is required for the candidate'
});
- } else if (input.candidate.education_entries && input.candidate.education_entries.some((entry) => !entry.school)) {
+ } else if (
+ input.candidate.education_entries &&
+ Array.isArray(input.candidate.education_entries) &&
+ input.candidate.education_entries.some((entry: any) => !entry.school)
+ ) {
throw new nango.ActionError({
message: "school is required for the candidate's education entries"
});
- } else if (input.candidate.experience_entries && input.candidate.experience_entries.some((entry) => !entry.title)) {
+ } else if (
+ input.candidate.experience_entries &&
+ Array.isArray(input.candidate.experience_entries) &&
+ input.candidate.experience_entries.some((entry: any) => !entry.title)
+ ) {
throw new nango.ActionError({
message: "title is required for the candidate's experience entries"
});
- } else if (input.candidate.answers && input.candidate.answers.some((entry) => !entry.question_key)) {
+ } else if (input.candidate.answers && Array.isArray(input.candidate.answers) && input.candidate.answers.some((entry: any) => !entry.question_key)) {
throw new nango.ActionError({
message: "question_key is required for the candidate's answer"
});
- } else if (input.candidate.social_profiles && input.candidate.social_profiles.some((entry) => !entry.type)) {
+ } else if (
+ input.candidate.social_profiles &&
+ Array.isArray(input.candidate.social_profiles) &&
+ input.candidate.social_profiles.some((entry: any) => !entry.type)
+ ) {
throw new nango.ActionError({
message: "type is required for the candidate's social profiles"
});
- } else if (input.candidate.social_profiles && input.candidate.social_profiles.some((entry) => !entry.url)) {
+ } else if (
+ input.candidate.social_profiles &&
+ Array.isArray(input.candidate.social_profiles) &&
+ input.candidate.social_profiles.some((entry: any) => !entry.url)
+ ) {
throw new nango.ActionError({
message: "url is required for the candidate's social profiles"
});
@@ -146,6 +98,8 @@ export default async function runAction(nango: NangoAction, input: WorkableCreat
candidate: resp.data.candidate
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/workable/workable-create-comment.ts b/integration-templates/workable/workable-create-comment.ts
index 9878559d0e6..a7c4ac36f5f 100644
--- a/integration-templates/workable/workable-create-comment.ts
+++ b/integration-templates/workable/workable-create-comment.ts
@@ -1,17 +1,4 @@
-import type { NangoAction, WorkableCreateCommentResponse } from './models';
-
-interface WorkableCreateCommentInput {
- id: string;
- member_id: string;
- comment: {
- body: string;
- policy?: string[];
- attachment?: {
- name: string;
- data: string;
- };
- };
-}
+import type { NangoAction, WorkableCreateCommentResponse, WorkableCreateCommentInput } from './models';
export default async function runAction(nango: NangoAction, input: WorkableCreateCommentInput): Promise {
if (!input.id) {
@@ -53,6 +40,8 @@ export default async function runAction(nango: NangoAction, input: WorkableCreat
id: resp.data.id
};
} catch (error: any) {
- throw new Error(`Error in runAction: ${error.message}`);
+ throw new nango.ActionError({
+ message: `Error in runAction: ${error.message}`
+ });
}
}
diff --git a/integration-templates/zendesk/nango.yaml b/integration-templates/zendesk/nango.yaml
index 9eeed5f319f..d51214085e6 100644
--- a/integration-templates/zendesk/nango.yaml
+++ b/integration-templates/zendesk/nango.yaml
@@ -3,11 +3,15 @@ integrations:
syncs:
zendesk-tickets:
runs: every 1 hour
+ description: |
+ Fetches a list of tickets from zendesk
output: ZendeskTicket
sync_type: full
endpoint: /zendesk/tickets
zendesk-articles:
runs: every 6 hours
+ description: |
+ Fetches a list of articles in Help center from zendesk
output: ZendeskArticle
sync_type: full
endpoint: /zendesk/articles
diff --git a/integration-templates/zoho-crm/nango.yaml b/integration-templates/zoho-crm/nango.yaml
index f0959484cbf..8174d95f82b 100644
--- a/integration-templates/zoho-crm/nango.yaml
+++ b/integration-templates/zoho-crm/nango.yaml
@@ -5,9 +5,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches accounts from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.accounts.READ or ZohoCRM.modules.ALL
+ Fetches a list of accounts from zoho crm
output: ZohoCRMAccount
sync_type: incremental
endpoint: /zoho-crm/accounts
@@ -17,9 +15,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches contacts from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.contacts.READ or ZohoCRM.modules.ALL
+ Fetches a list of contacts from zoho crm
output: ZohoCRMContact
sync_type: incremental
endpoint: /zoho-crm/contacts
@@ -29,9 +25,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches deals/opportunities from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.deals.READ or ZohoCRM.modules.ALL
+ Fetches a list of deals/opportunities from zoho crm
output: ZohoCRMDeal
sync_type: incremental
endpoint: /zoho-crm/deals
diff --git a/packages/shared/flows.yaml b/packages/shared/flows.yaml
index c898cc7d25e..a96320048b4 100644
--- a/packages/shared/flows.yaml
+++ b/packages/shared/flows.yaml
@@ -3,7 +3,7 @@ integrations:
actions:
algolia-create-contacts:
description: |
- Action to add a single record contact to an index
+ Action to add a single record contact to an index in Asana
output: AlgoliaContact
input: AlgoliaCreateContactInput
endpoint: POST /algolia/create-contacts
@@ -21,14 +21,12 @@ integrations:
asana-tasks:
runs: every 30min
description: |
- Continuously fetches Asana tasks. This is just a trivial example:
- it will only get tasks from the first project of the first workspace.
- Details: full refresh, doesn't support deletes, sync goes to all time,
- metadata is not required.
- scopes: default
+ Fetches tasks from Asana, retrieving tasks from only the first project of the first workspace
+ scopes:
+ - default
output: AsanaTask
sync_type: full
- endpoint: /asana/asana-tasks
+ endpoint: /asana/tasks
models:
AsanaTask:
id: string
@@ -38,30 +36,42 @@ integrations:
created_at: date
modified_at: date
ashby:
- ashby-candidates:
- runs: every hour
- returns:
- - AshbyCandidate
- description: |
- Fetch a list of all candidates from your ashby account.
- Details: Increamental sync, doesn't track deletes, metadata is required.
- ashby-jobs:
- runs: every hour
- returns:
- - AshbyJob
- description: |
- Fetch a list of all jobs from your ashby account.
- Details: Increamental sync, doesn't track deletes, metadata is required.
- ashby-create-application:
- type: action
- returns: AshbyCreateApplicationResponse
- description: |
- Action to consider a candidate for a job.
- ashby-create-note:
- type: action
- returns: AshbyCreateNoteResponse
- description: |
- Action to create a note on a candidate.
+ syncs:
+ ashby-candidates:
+ runs: every hour
+ output: AshbyCandidate
+ description: |
+ Fetches a list of all candidates from your ashby account
+ metadata:
+ description: |
+ We need to save a candidatelastsyncToken to track and update candidates' synchronizations
+ scopes: candidatelastsyncToken
+ sync_type: incremental
+ endpoint: /ashby/candidates
+ ashby-jobs:
+ runs: every hour
+ output: AshbyJob
+ description: |
+ Fetches a list of all jobs from your ashby account
+ metadata:
+ description: |
+ We need to save a jobslastsyncToken to track and update jobs' synchronizations
+ scopes: jobslastsyncToken
+ sync_type: incremental
+ endpoint: /ashby/jobs
+ actions:
+ ashby-create-application:
+ output: AshbyCreateApplicationResponse
+ input: AshbyCreateCandidateInput
+ description: |
+ Action to consider a candidate for a job
+ endpoint: POST /ashby/create-application
+ ashby-create-note:
+ output: AshbyCreateNoteResponse
+ input: AshbyCreateNoteInput
+ description: |
+ Action to create a note on a candidate.
+ endpoint: POST /ashby/create-note
models:
AshbyCandidate:
id: string
@@ -192,24 +202,36 @@ integrations:
firstName: string
lastName: string
email: string
+ AshbyCreateCandidateInput:
+ candidateId: string
+ jobId: string
+ interviewPlanId: string | undefined
+ interviewStageId: string | undefined
+ sourceId: string | undefined
+ creditedToUserId: string | undefined
+ AshbyCreateNoteInput:
+ candidateId: string
+ note: string | NoteObject
+ sendNotifications: boolean | undefined
+ NoteObject:
+ value: string
+ type: string
bamboohr-basic:
syncs:
bamboohr-employees:
runs: every 6 hours
description: |
- Fetches employees from bamboohr.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of current employees from bamboohr
output: BamboohrEmployee
sync_type: incremental
endpoint: /bamboohr/employees
- scopes:
- - default
actions:
bamboohr-create-employee:
description: |
- Action to create a new employee.
+ Action to create a new employee
output: BamboohrCreateEmployeeResponse
- endpoint: /bamboohr/create-employee
+ input: BamboohrEmployee
+ endpoint: POST /bamboohr/create-employee
models:
BamboohrEmployee:
id: string
@@ -244,16 +266,14 @@ integrations:
BamboohrCreateEmployeeResponse:
status: string
clari-copilot:
- clari-copilot-call:
- runs: every hour
- returns:
- - ClariCopilotCall
- description: >
- Fetches calls from your account. For the first sync, it will go back to
- the past one year.
-
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ syncs:
+ clari-copilot-call:
+ runs: every hour
+ output: ClariCopilotCall
+ description: |
+ Fetches a list of calls from your account. For the first sync, it will go back to the past one year
+ sync_type: incremental
+ endpoint: /clari-copilot/call
models:
ClariCopilotCall:
id: string
@@ -308,11 +328,15 @@ integrations:
confluence-spaces:
runs: every 4 hours
output: ConfluenceSpace
+ description: |
+ Fetches a list of spaces from confluence
sync_type: full
endpoint: /confluence/spaces
confluence-pages:
runs: every 4 hours
output: ConfluencePage
+ description: |
+ Fetches a list of pages from confluence
sync_type: full
endpoint: /confluence/pages
models:
@@ -351,16 +375,22 @@ integrations:
evaluagent-users:
runs: every day
output: EvaluAgentUser
+ description: |
+ Fetches a list of users from evaluagent
sync_type: full
endpoint: /evaluagent/users
evaluagent-groups:
runs: every day
output: EvaluAgentGroup
+ description: |
+ Fetches a list of groups from evaluagent
sync_type: full
endpoint: /evaluagent/groups
evaluagent-roles:
runs: every day
output: EvaluAgentRole
+ description: |
+ Fetches a list of roles from evaluagent
sync_type: full
endpoint: /evaluagent/roles
models:
@@ -393,8 +423,7 @@ integrations:
sync_type: full
scopes: public_repo
description: |
- Fetches the Github issues from all a user's repositories.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches Github issues from all a user's repositories
endpoint: /github/issues
github-issues-lite:
runs: every day
@@ -402,24 +431,18 @@ integrations:
sync_type: full
output: Issue
scopes: public_repo
- description: >
- Fetches the Github issues but up to a maximum of 15 for demo
-
- purposes.
-
- Details: limited sync, doesn't track deletes, metadata is not
- required.
- endpoint: /github/lite-issues
+ description: |
+ Fetches Github issues but up to a maximum of 15
+ endpoint: /github/issues-lite
github-list-files:
runs: every hour
description: |
- Lists all the files of a Github repo given a specific branch.
- Details: doesn't track deletes, metadata is required.
+ Lists all the files of a Github repo given a specific branch
sync_type: incremental
auto_start: false
input: GithubIssueRepoInput
output: GithubRepoFile
- endpoint: /github/files
+ endpoint: /github/list-files
scopes: repo
github-issues-demo:
runs: every 5 minutes
@@ -429,27 +452,24 @@ integrations:
scopes: public_repo
description: |
Fetches GitHub issues from our showcase repository.
- endpoint: GET /github/demo-issues
+ endpoint: /github/demo-issues
actions:
github-write-file:
scopes: repo
input: GithubWriteFileInput
output: GithubWriteFileActionResult
- endpoint: PUT /github/file
+ endpoint: PUT /github/write-file
description: |
Write content to a particular github file within a repo. If
- the file doesn't exist it creates and then writes to it.
+ the file doesn't exist it creates and then writes to it
github-list-repos:
scopes: read:org
- endpoint: GET /github/repos
- output:
- - GithubRepo
+ endpoint: GET /github/list-repos
+ output: GithubRepo
description: |
List github repos from an organization.
- github-create-demo-issue:
- endpoint: POST /github/create-demo-issue
- input: GithubCreateIssueInput
- output: GithubCreateIssueResult
+ github-issues-demo-action:
+ endpoint: POST /github/demo-write-issue
description: |
Create a GitHub issue in Nango's showcase repository.
models:
@@ -510,19 +530,12 @@ integrations:
id: integer
title: string
url: string
- GithubCreateIssueInput:
- title: string
- GithubCreateIssueResult:
- url: string | undefined
- status: number
google-calendar:
syncs:
google-calendar-events:
description: |
Sync calendar events on the primary calendar going back one month and
- save the entire object as specified by the Google API.
- Details: partial sync, doesn't support deletes, sync goes back one
- month, metadata is not required.
+ save the entire object as specified by the Google API
runs: every 5 minutes
output: GoogleCalendarEvent
sync_type: incremental
@@ -530,10 +543,7 @@ integrations:
scopes: https://www.googleapis.com/auth/calendar.readonly
google-calendars:
description: |
- Sync the calendars list of the user.
- Details: full sync, does support deletes. Sync goes back all time,
- metadata not required.
- Required scope(s): https://www.googleapis.com/auth/calendar.readonly
+ Sync the calendars list of the user
track_deletes: true
runs: every hour
output: GoogleCalendar
@@ -739,6 +749,8 @@ integrations:
syncs:
gmail-emails:
runs: every hour
+ description: |
+ Fetches a list of emails from gmail
output: GmailEmail
sync_type: incremental
endpoint: /google-mail/emails
@@ -759,8 +771,9 @@ integrations:
output: OrganizationalUnit
sync_type: full
endpoint: /google/workspace-org-unit
- scopes: >-
- https://www.googleapis.com/auth/admin.directory.orgunit.readonly,https://www.googleapis.com/auth/admin.directory.user.readonly
+ scopes:
+ - https://www.googleapis.com/auth/admin.directory.orgunit.readonly
+ - https://www.googleapis.com/auth/admin.directory.user.readonly
google-workspace-users:
runs: every hour
output: User
@@ -771,8 +784,9 @@ integrations:
output: GoogleWorkspaceUserToken
sync_type: full
endpoint: /google/workspace-user-access-tokens
- scopes: >-
- https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.user.security
+ scopes:
+ - https://www.googleapis.com/auth/admin.directory.user.readonly
+ - https://www.googleapis.com/auth/admin.directory.user.security
models:
OrganizationalUnit:
id: string
@@ -812,36 +826,24 @@ integrations:
greenhouse-applications:
runs: every 6 hours
description: |
- Fetches all organization's applications from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's applications from greenhouse
output: GreenhouseApplication
sync_type: incremental
endpoint: /greenhouse-basic/applications
- scopes:
- - default
greenhouse-candidates:
runs: every 6 hours
description: |
- Fetches all organization's candidates from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's candidates from greenhouse
output: GreenhouseCandidate
sync_type: incremental
endpoint: /greenhouse-basic/candidates
- scopes:
- - default
greenhouse-jobs:
runs: every 6 hours
description: |
- Fetches all organization's jobs from greenhouse.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of all organization's jobs from greenhouse
output: GreenhouseJob
sync_type: incremental
endpoint: /greenhouse-basic/jobs
- scopes:
- - default
models:
GreenhouseApplication:
id: string
@@ -971,54 +973,44 @@ integrations:
hackerrank-work-interviews:
runs: every 6 hours
description: |
- Fetches interviews from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of interviews from hackerrank work
output: HackerRankWorkInterview
sync_type: incremental
endpoint: /hackerrank-work/interviews
- scopes:
- - default
hackerrank-work-teams:
runs: every 6 hours
description: |
- Fetches teams from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of teams from hackerrank work
output: HackerRankWorkTeam
sync_type: incremental
endpoint: /hackerrank-work/teams
- scopes:
- - default
hackerrank-work-tests:
runs: every 6 hours
description: |
- Fetches tests from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of tests from hackerrank work
output: HackerRankWorkTest
sync_type: incremental
endpoint: /hackerrank-work/tests
- scopes:
- - default
hackerrank-work-users:
runs: every 6 hours
description: |
- Fetches users from hackerrank work.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of users from hackerrank work
output: HackerRankWorkUser
sync_type: incremental
endpoint: /hackerrank-work/users
- scopes:
- - default
actions:
+ hackerrank-work-create-test:
+ description: |
+ Action to create a test on hackerrank work
+ input: HackerRankWorkCreateTestInput
+ output: HackerRankWorkTest
+ endpoint: POST /hackerrank-work/create-test
hackerrank-work-create-interview:
description: |
- Action to create an interview on hackerrank work.
+ Action to create an interview on hackerrank work
input: HackerRankWorkCreateInterviewInput
output: HackerRankWorkInterview
- endpoint: /hackerrank-work/create-interview
+ endpoint: POST /hackerrank-work/create-interview
models:
HackerRankWorkCreateInterviewInput:
id: string
@@ -1129,13 +1121,42 @@ integrations:
teams: []
activated: boolean
last_activity_time: date
+ HackerRankWorkCreateTestInput:
+ name: string
+ starttime: Date
+ endtime: Date
+ duration: number
+ instructions: string
+ locked: boolean
+ draft: string
+ languages: string[]
+ candidate_details: string[]
+ custom_acknowledge_text: string
+ cutoff_score: number
+ master_password: string
+ hide_compile_test: boolean
+ tags: string[]
+ role_ids: string[]
+ experience: string[]
+ questions: string[]
+ mcq_incorrect_score: number
+ mcq_correct_score: number
+ secure: boolean
+ shuffle_questions: boolean
+ test_admins: string[]
+ hide_template: boolean
+ enable_acknowledgement: boolean
+ enable_proctoring: boolean
+ candidate_tab_switch: boolean
+ track_editor_paste: boolean
+ show_copy_paste_prompt: boolean
+ ide_config: string
hibob-service-user:
syncs:
hibob-employees:
runs: every hour
description: |
- Returns a list of all active employees.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all active employees
output: HibobEmployee
sync_type: full
endpoint: /hibob-service-user/hibob-employees
@@ -1167,26 +1188,36 @@ integrations:
syncs:
hubspot-service-tickets:
runs: every half hour
+ description: |
+ Fetches a list of service tickets from Hubspot
output: HubspotServiceTicket
sync_type: incremental
endpoint: /hubspot/service-tickets
hubspot-contacts:
runs: every day
+ description: |
+ Fetches a list of contacts from Hubspot
output: HubspotContact
sync_type: full
endpoint: /hubspot/contacts
hubspot-owners:
runs: every day
+ description: |
+ Fetches a list of owners from Hubspot
output: HubspotOwner
sync_type: full
endpoint: /hubspot/owner
hubspot-users:
runs: every day
+ description: |
+ Fetches a list of users from Hubspot
output: HubspotUser
sync_type: full
endpoint: /hubspot/user
hubspot-knowledge-base:
runs: every day
+ description: |
+ Fetches a list of knowledge base from Hubspot
output: HubspotKnowledgeBase
sync_type: full
endpoint: /hubspot/knowledge-base
@@ -1237,11 +1268,19 @@ integrations:
syncs:
intercom-conversations:
runs: every 6 hours
- output: IntercomConversation
+ description: |
+ Fetches a list of conversations from Intercom
+ output:
+ - IntercomConversation
+ - IntercomConversationMessage
sync_type: incremental
- endpoint: /intercom/conversations
+ endpoint:
+ - /intercom/conversations
+ - /intercom/conversations-message
intercom-contacts:
runs: every 6 hours
+ description: |
+ Fetches a list of contacts from Intercom
output: IntercomContact
sync_type: full
endpoint: /intercom/contacts
@@ -1286,6 +1325,8 @@ integrations:
syncs:
jira-issues:
runs: every 5mins
+ description: |
+ Fetches a list of issues from Jira
output: JiraIssue
sync_type: incremental
endpoint: /jira/issues
@@ -1301,7 +1342,106 @@ integrations:
projectName: string
createdAt: date
updatedAt: date
- lever:
+ lever-basic:
+ actions:
+ lever-create-note:
+ description: |
+ Action to create a note and add it to a candidate profile in Lever
+ output: LeverOpportunityNote
+ input: LeverCreateNoteInput
+ endpoint: POST /lever/create-note
+ scopes:
+ - notes:write:admin
+ lever-create-opportunity:
+ description: |
+ Action to create candidates and opportunities in Lever
+ output: LeverOpportunity
+ input: LeverCreateOpportunityInput
+ endpoint: POST /lever/create-opportunity
+ scopes:
+ - opportunities:write:admin
+ syncs:
+ lever-opportunities:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all pipeline opportunities for contacts in Lever
+ output: LeverOpportunity
+ sync_type: incremental
+ endpoint: /lever/opportunities
+ scopes:
+ - opportunities:read:admin
+ lever-opportunities-applications:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all applications for a candidate in Lever
+ output: LeverOpportunityApplication
+ sync_type: full
+ endpoint: /lever/opportunities-applications
+ scopes:
+ - applications:read:admin
+ lever-opportunities-feedbacks:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all feedback forms for a candidate for a specific Opportunity in lever
+ output: LeverOpportunityFeedback
+ sync_type: full
+ endpoint: /lever/opportunities-feedbacks
+ scopes:
+ - feedback:read:admin
+ lever-opportunities-interviews:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all interviewers for a specific Opportunity in lever
+ output: LeverOpportunityInterview
+ sync_type: full
+ endpoint: /lever/opportunities-interviews
+ scopes:
+ - interviews:read:admin
+ lever-opportunities-notes:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all notes for a specific candidate in lever
+ output: LeverOpportunityNote
+ sync_type: full
+ endpoint: /lever/opportunities-notes
+ scopes:
+ - notes:read:admin
+ lever-opportunities-offers:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all offers for a specific candidate in lever.
+ output: LeverOpportunityOffer
+ sync_type: full
+ endpoint: /lever/opportunities-offers
+ scopes:
+ - offers:write:admin
+ lever-postings:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all postings in Lever
+ output: LeverPosting
+ sync_type: full
+ endpoint: /lever/postings
+ scopes:
+ - postings:read:admin
+ lever-postings-apply:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all questions included in a posting’s application form in Lever
+ output: LeverPostingApply
+ sync_type: full
+ endpoint: /lever/postings-apply
+ scopes:
+ - postings:read:admin
+ lever-stage:
+ runs: every 6 hours
+ description: |
+ Fetches a list of all pipeline stages in Lever
+ output: LeverStage
+ sync_type: full
+ endpoint: /lever/stage
+ scopes:
+ - stages:read:admin
models:
LeverOpportunity:
id: string
@@ -1474,25 +1614,68 @@ integrations:
LeverStage:
id: string
text: string
+ LeverCreateNoteInput:
+ opportunityId: string
+ perform_as: string | undefined
+ note_id: string | undefined
+ value: string | undefined
+ secret: boolean | undefined
+ score: number | undefined
+ notifyFollowers: boolean | undefined
+ createdAt: number | undefined
+ PhoneEntry:
+ value: string | undefined
+ type: string | undefined
+ ArchievedEntry:
+ archivedAt: number | undefined
+ reason: string | undefined
+ LeverCreateOpportunityInput:
+ perform_as: string
+ parse: boolean | undefined
+ perform_as_posting_owner: boolean | undefined
+ name: string | undefined
+ headline: string | undefined
+ stage: string | undefined
+ location: string | undefined
+ phones: PhoneEntry[] | undefined
+ emails: string | undefined
+ links: string[] | undefined
+ tags: string[] | undefined
+ sources: string[] | undefined
+ origin: string | undefined
+ owner: string | undefined
+ followers: string[] | undefined
+ postings: string[] | undefined
+ createdAt: number | undefined
+ archived: ArchievedEntry | undefined
+ contact: string[] | undefined
linear:
syncs:
linear-issues:
runs: every 5min
+ description: |
+ Fetch a list of issues from Linear
output: LinearIssue
sync_type: incremental
endpoint: /linear/issues
linear-projects:
runs: every 5min
+ description: |
+ Fetch a list of projects from Linear
output: LinearProject
sync_type: incremental
endpoint: /linear/projects
linear-teams:
runs: every 5min
+ description: |
+ Fetch a list of teams from Linear
output: LinearTeam
sync_type: incremental
endpoint: /linear/teams
linear-roadmaps:
runs: every 5min
+ description: |
+ Fetch a list of roadmaps from Linear
output: LinearRoadmap
sync_type: incremental
endpoint: /linear/roadmaps
@@ -1591,13 +1774,10 @@ integrations:
next-cloud-users:
runs: every hour
description: |
- Fetch all users' details from NextCloud account
- Details: full sync, doesn't track deletes, metadata is not required.
- output: 'N'
+ Fetch a list of all users' details from NextCloud account
+ output: 'NextCloudUser'
sync_type: full
endpoint: /next-cloud-ocs/next-cloud-users
- scopes:
- - default
models:
NextCloudUser:
enabled: boolean
@@ -1656,13 +1836,9 @@ integrations:
sub-databases and retrieve only the text content and ignores
images, files and other blocks that do not have
a `rich_text` property.
- Details: incremental sync, doesn't support deletes, sync goes to all
- time, metadata is not required.
- Required scope(s): none
output: NotionPage
sync_type: incremental
endpoint: /notion/pages
- scopes: ''
notion-rich-pages:
runs: every 6 hours
track_deletes: true
@@ -1670,13 +1846,9 @@ integrations:
Sync pages, subpages, database entries, entries of
sub-databases and maps to full markdown. It transforms
images, tables, uploaded files, etc into their markdown counterparts.
- Details: full sync, tracks deletes, sync goes to all time, metadata is
- not required.
- Required scope(s): none
output: NotionRichPage
sync_type: incremental
endpoint: /notion/rich-pages
- scopes: ''
models:
NotionPage:
id: string
@@ -1696,8 +1868,7 @@ integrations:
pipedrive-activities:
runs: every hour
description: |
- Fetches activities from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of activities from pipedrive
output: PipeDriveActivity
sync_type: incremental
endpoint: /pipedrive/activities
@@ -1706,8 +1877,7 @@ integrations:
pipedrive-deals:
runs: every hour
description: |
- Fetches deals from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of deals from pipedrive
output: PipeDriveDeal
sync_type: incremental
endpoint: /pipedrive/deals
@@ -1716,8 +1886,7 @@ integrations:
pipedrive-organizations:
runs: every hour
description: |
- Fetches organizations from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of organizations from pipedrive
output: PipeDriveOrganization
sync_type: incremental
endpoint: /pipedrive/organizations
@@ -1726,8 +1895,7 @@ integrations:
pipedrive-persons:
runs: every half hour
description: |
- Fetches persons from pipedrive.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches persons from pipedrive
output: PipeDrivePerson
sync_type: incremental
endpoint: /pipedrive/persons
@@ -1834,26 +2002,36 @@ integrations:
syncs:
salesforce-accounts:
runs: every hour
+ description: |
+ Fetches a list of accounts from salesforce
output: SalesforceAccount
sync_type: incremental
endpoint: /salesforce/accounts
salesforce-contacts:
runs: every hour
+ description: |
+ Fetches a list of contacts from salesforce
output: SalesforceContact
sync_type: incremental
endpoint: /salesforce/contacts
salesforce-deals:
runs: every hour
+ description: |
+ Fetches a list of deals from salesforce
output: SalesforceDeal
sync_type: incremental
endpoint: /salesforce/deals
salesforce-articles:
runs: every day
+ description: |
+ Fetches a list of articles from salesforce
output: SalesforceArticle
sync_type: incremental
endpoint: /salesforce/articles
salesforce-tickets:
runs: every day
+ description: |
+ Fetches a list of tickets from salesforce
output: SalesforceTicket
sync_type: incremental
endpoint: /salesforce/tickets
@@ -1914,7 +2092,7 @@ integrations:
slack-users:
runs: every hour
description: |
- Syncs information about all Users on the Slack workspace.
+ Syncs information about all Users on the Slack workspace
output: SlackUser
sync_type: full
endpoint: /slack/users
@@ -1924,7 +2102,7 @@ integrations:
runs: every hour
description: |
Syncs information about all Slack channels. Which channels get synced
- (public, private, IMs, group DMs) dependson the scopes. If
+ (public, private, IMs, group DMs) depends on the scopes. If
joinPublicChannels is set to true, the bot will automatically join all
public channels as well. Scopes: At least one of channels:read,
groups:read, mpim:read, im:read. To also join public channels:
@@ -1944,10 +2122,16 @@ integrations:
detection of the channel. For subsequent runs it will sync messages,
threads & reactions from the last 10 days. Scopes required:
channels:read, and at least one of
- channels:history,groups:history,mpim:history,im:history
- output: SlackMessage
- sync_type: full
- endpoint: /slack/messages
+ channels:history, groups:history, mpim:history, im:history
+ output:
+ - SlackMessage
+ - SlackMessageReply
+ - SlackMessageReaction
+ sync_type: incremental
+ endpoint:
+ - /slack/messages
+ - /slack/messages-reply
+ - /slack/messages-reaction
scopes:
- channels:read
- channels:history
@@ -2043,11 +2227,10 @@ integrations:
teamtailor-candidates:
runs: every 6 hours
description: |
- Fetches a list of all candidates from your teamtailor account.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of all candidates from your teamtailor account
output: TeamtailorCandidate
sync_type: full
- endpoint: /teamtailor-candidates/candidates
+ endpoint: /teamtailor/candidates
scopes:
- Admin
models:
@@ -2147,9 +2330,7 @@ integrations:
workable-candidates:
runs: every 6 hours
description: |
- Fetches candidates from workable.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of candidates from workable
output: WorkableCandidate
sync_type: incremental
endpoint: /workable/candidates
@@ -2158,8 +2339,7 @@ integrations:
workable-candidates-activities:
runs: every 6 hours
description: |
- Fetches activity stream of the given candidate
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of activity streams of the given candidate
output: WorkableCandidateActivity
sync_type: full
endpoint: /workable/candidates-activities
@@ -2168,8 +2348,7 @@ integrations:
workable-candidates-offer:
runs: every 6 hours
description: |
- Fetches candidate's latest offer from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches candidate's latest offer from workable
output: WorkableCandidateOffer
sync_type: full
endpoint: /workable/candidates-offer
@@ -2178,9 +2357,7 @@ integrations:
workable-jobs:
runs: every 6 hours
description: |
- Fetches jobs from workable.
- Details: incremental sync, doesn't track deletes, metadata is not
- required.
+ Fetches a list of jobs from workable
output: WorkableJob
sync_type: incremental
endpoint: /workable/jobs
@@ -2189,8 +2366,7 @@ integrations:
workable-jobs-candidates:
runs: every 6 hours
description: |
- Fetches candidates for the specified job from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of candidates for the specified job from workable
output: WorkableJobsCandidate
sync_type: full
endpoint: /workable/jobs-candidates
@@ -2199,8 +2375,7 @@ integrations:
workable-jobs-questions:
runs: every 6 hours
description: |
- Fetches questions for the specified job from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of questions for the specified job from workable
output: WorkableJobQuestion
sync_type: full
endpoint: /workable/jobs-questions
@@ -2209,20 +2384,28 @@ integrations:
workable-members:
runs: every 6 hours
description: |
- Fetches account members from workable.
- Details: full sync, doesn't track deletes, metadata is not required.
+ Fetches a list of account members from workable
output: WorkableMember
sync_type: full
endpoint: /workable/members
scopes:
- r_jobs
actions:
+ workable-create-candidate:
+ description: |
+ Action to create a candidate at the specified job
+ scopes:
+ - w_candidates
+ output: WorkableCreateCandidateResponse
+ input: WorkableCreateCandidateInput
+ endpoint: POST /workable/create-candidate
workable-create-comment:
description: |
- Action to create a comment on the applicant's timeline.
- Scope(s): w_candidates or w_comments
+ Action to create a comment on the applicant's timeline
+ scopes:
+ - w_candidates or w_comments
output: WorkableCreateCommentResponse
- endpoint: /workable/create-comment
+ endpoint: POST /workable/create-comment
models:
WorkableCandidate:
id: string
@@ -2358,15 +2541,81 @@ integrations:
zip_code: string
WorkableCreateCommentResponse:
id: string
+ WorkableCreateCandidateInput:
+ shortcode: string
+ candidate:
+ name: string
+ firstname: string
+ lastname: string
+ email: string
+ headline: string | undefined
+ summary: string | undefined
+ address: string | undefined
+ phone: string | undefined
+ cover_letter: string | undefined
+ education_entries: EducationEntry[] | undefined
+ experience_entries: ExperienceEntry[] | undefined
+ answers: Answer[] | undefined
+ skills: string[] | undefined
+ tags: string[] | undefined
+ disqualified: boolean | undefined
+ disqualification_reason: string | undefined
+ disqualified_at: string | undefined
+ social_profiles: SocialProfile[] | undefined
+ domain: string | undefined
+ recruiter_key: string | undefined
+ EducationEntry:
+ school: string
+ degree: string | undefined
+ field_of_study: string | undefined
+ start_date: string | undefined
+ end_date: string | undefined
+ ExperienceEntry:
+ title: string
+ summary: string | undefined
+ start_date: string | undefined
+ end_date: string | undefined
+ current: boolean | undefined
+ company: string | undefined
+ industry: string | undefined
+ Answer:
+ question_key: string
+ body: string | undefined
+ choices: string[]
+ checked: boolean | undefined
+ date: string | undefined
+ number: number | undefined
+ file:
+ name: string
+ data: string
+ SocialProfile:
+ type: string
+ name: string | undefined
+ username: string | undefined
+ url: string
+ WorkableCreateCommentInput:
+ id: string
+ member_id: string
+ comment:
+ body: string
+ policy: string[] | undefined
+ attachment: Attachment | undefined
+ Attachment:
+ name: string
+ data: string
zendesk:
syncs:
zendesk-tickets:
runs: every 1 hour
+ description: |
+ Fetches a list of tickets from zendesk
output: ZendeskTicket
sync_type: full
endpoint: /zendesk/tickets
zendesk-articles:
runs: every 6 hours
+ description: |
+ Fetches a list of articles in Help center from zendesk
output: ZendeskArticle
sync_type: full
endpoint: /zendesk/articles
@@ -2460,9 +2709,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches accounts from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.accounts.READ or ZohoCRM.modules.ALL
+ Fetches a list of accounts from zoho crm
output: ZohoCRMAccount
sync_type: incremental
endpoint: /zoho-crm/accounts
@@ -2472,9 +2719,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches contacts from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.contacts.READ or ZohoCRM.modules.ALL
+ Fetches a list of contacts from zoho crm
output: ZohoCRMContact
sync_type: incremental
endpoint: /zoho-crm/contacts
@@ -2484,9 +2729,7 @@ integrations:
runs: every half hour
auto_start: false
description: |
- Fetches deals/opportunities from zoho crm.
- Details: full sync, doesn't track deletes, metadata is not required.
- Scope(s): ZohoCRM.modules.deals.READ or ZohoCRM.modules.ALL
+ Fetches a list of deals/opportunities from zoho crm
output: ZohoCRMDeal
sync_type: incremental
endpoint: /zoho-crm/deals