Skip to content

Commit

Permalink
Merge branch 'NangoHQ:master' into getguru-api-support
Browse files Browse the repository at this point in the history
  • Loading branch information
hassan254-prog authored Jan 8, 2024
2 parents adbaaee + f681e22 commit 693db90
Show file tree
Hide file tree
Showing 178 changed files with 14,793 additions and 7,997 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/deploy-runners.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Nango Deploy Runners

on:
workflow_dispatch:
inputs:
environment:
type: choice
description: "Environment to deploy to, defaults to staging"
required: true
default: "staging"
options:
- staging
- production

jobs:
deploy_runners:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Call deploy runners script
env:
API_KEY: ${{ secrets.RENDER_API_KEY }}
ENVIRONMENT: ${{ github.event.inputs.environment }}
RUNNER_OWNER_ID: ${{ secrets.RENDER_RUNNER_OWNER_ID }}
shell: bash
run: |
bash ./scripts/deploy/runners.bash
8 changes: 4 additions & 4 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ jobs:
exit 1
fi
CONTAINER_NAME=nango-worker
WORKER=$(docker ps -q -f status=running -f name=^/${CONTAINER_NAME}$)
if [ ! "${WORKER}" ]; then
echo "Worker container doesn't exist"
CONTAINER_NAME=nango-jobs
JOBS=$(docker ps -q -f status=running -f name=^/${CONTAINER_NAME}$)
if [ ! "${JOBS}" ]; then
echo "Jobs container doesn't exist"
exit 1
fi
shell: bash
2 changes: 1 addition & 1 deletion .github/workflows/integration-template-upload.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
- name: Get specific changed files
id: changed-files-specific
uses: tj-actions/changed-files@v39
uses: tj-actions/changed-files@v41
with:
files: |
integration-templates/*
Expand Down
8 changes: 4 additions & 4 deletions docs-v2/api-reference/connection/set-metadata.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: 'Update connection metadata'
title: 'Set connection metadata'
openapi: 'POST /connection/{connectionId}/metadata'
---

## Update _connection metadata_
## Set _connection metadata_

Use this API endpoint to update your [custom metadata](/guides/advanced-auth#storing-custom-metadata-per-connection) for a _connection_.
Use this API endpoint to set your [custom metadata](/guides/advanced-auth#storing-custom-metadata-per-connection) for a _connection_.

Nango uses the request body as the new metadata (it must be a JSON object). Note that this overrides any existing metadata.

## Fetching _connection metadata_

To read the existing metadata of a _connection_, simply [fetch it](/api-reference/connection/get). Your custom metadata is included as part of the returned _connection_ object.
To read the existing metadata of a _connection_, simply [fetch it](/api-reference/connection/get). Your custom metadata is included as part of the returned _connection_ object.To read the existing metadata of a _connection_, simply [fetch it](/api-reference/connection/get). Your custom metadata is included as part of the returned _connection_ object.
16 changes: 16 additions & 0 deletions docs-v2/api-reference/connection/update-metadata.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: 'Update connection metadata'
openapi: 'PATCH /connection/{connectionId}/metadata'
---

## Update _connection metadata_

Use this API endpoint to update your [custom metadata](/guides/advanced-auth#storing-custom-metadata-per-connection) for a _connection_.

Nango uses the request body as the new metadata (it must be a JSON object). This will take in whatever metadata and merge it with any
existing metadata.

## Fetching _connection metadata_

To read the existing metadata of a _connection_, simply [fetch it](/api-reference/connection/get). Your custom metadata is included as part of the returned _connection_ object.

4 changes: 2 additions & 2 deletions docs-v2/guides/sync.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Now, collect the continually updated data:

```bash
curl --request GET \
--url 'https://api.nango.dev/sync/records?model=<MODEL-NAME>' \
--url 'https://api.nango.dev/records?model=<MODEL-NAME>' \
--header 'Authorization: Bearer <PROJECT-SECRET-KEY>' \
--header 'Connection-Id: <CONNECTION-ID>' \
--header 'Provider-Config-Key: <INTEGRATION-ID>'
Expand Down Expand Up @@ -86,4 +86,4 @@ Dive deeper with the [Customize Syncs & Actions guide](/guides/custom). Explore

## Questions, problems, feedback?

We're here to help! Please reach out on the [Slack community](https://nango.dev/slack), we are very active there.
We're here to help! Please reach out on the [Slack community](https://nango.dev/slack), we are very active there.
18 changes: 17 additions & 1 deletion docs-v2/guides/webhooks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,25 @@ app.post('/webhook', (req, res) => {
Webhooks with non-2xx responses are retried with exponential backoff.
</Tip>

## Webhook Verification

You can validate that the webhook indeed comes from Nango by looking at the
`X-Nango-Signature` header which is a SHA-256 hash built using the secret
key found in your project settings combined with the payload of the request body:
```ts
import crypto from 'crypto';

const secretKeyDev = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
const signature = `${secretKeyDev}${JSON.stringify(payload)}`;
const hash = crypto.createHash('sha256').update(signature).digest('hex');
```

If the value of the `X-Nango-Signature` matches that of `hash` (as seen above)
then the request passed validation.

## Webhooks from external APIs to Nango[](#to-nango)

You can handle incoming webhooks from external APIs using Nango:
- Configure the webhook with your application as you would normally do
- Write a _sync_ script that returns the data models you want (it can perform additional API requests if needed)
- Upon webhook reception, trigger the _sync_ script and pass it the webhook payload
- Upon webhook reception, trigger the _sync_ script and pass it the webhook payload- Upon webhook reception, trigger the _sync_ script and pass it the webhook payload
4 changes: 4 additions & 0 deletions docs-v2/integration-templates/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ As Nango and its community expand, we're looking forward to offering hundreds of
<Card title="Zendesk" href="/integration-templates/zendesk" icon="headset">
Sync Zendesk tickets and articles
</Card>

<Card title="Zoho CRM" href="/integration-templates/zoho-crm" icon="users">
Sync Zoho CRM accounts, contacts and deals/opportunities
</Card>
</CardGroup>

## Need Help with a Template?
Expand Down
21 changes: 21 additions & 0 deletions docs-v2/integration-templates/zoho-crm.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: 'Zoho CRM API Integration Template'
sidebarTitle: 'Zoho CRM'
---

## Get started with the Zoho CRM template

<Card title="How to use integration templates"
href="/integration-templates/overview#how-to-use-integration-templates"
icon="book-open">
Learn how to use integration templates in Nango
</Card>

<Card title="Get the Zoho CRM template"
href="https://github.com/NangoHQ/nango/tree/master/integration-templates/zoho-crm"
icon="github">
Get the latest version of the Zoho CRM integration template from GitHub
</Card>

## Need help with the template?
Please reach out on the [Slack community](https://nango.dev/slack), we are very active there and happy to help!
32 changes: 32 additions & 0 deletions docs-v2/integrations/all/apollo.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: Apollo
sidebarTitle: Apollo
---

API configuration: [`apollo`](https://nango.dev/providers.yaml)


## Features

| Feature | Status |
| -------------------------------------------------------------------------------- | ------------------------------- |
| [Auth (Basic)](/guides/api-key) ||
| [Syncs](/guides/sync) & [Actions](/guides/action) | 🚫 |
| [Nango Proxy](/guides/proxy) ||
| Auto-pagination | 🚫 (time to contribute: &lt;1h) |
| API-specific rate limits | 🚫 (time to contribute: &lt;1h) |

<Tip>We can implement missing features in &lt;48h, just ask for it in the [community](https://nango.dev/slack).</Tip>

## Getting started

- [Generate a Apollo API token in your Apollo developer account](https://developer.apollo.io/keys/)
- [Apollo API docs](https://apolloio.github.io/apollo-api-docs/)

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

## API gotchas

- Coda uses API_KEY auth mode with query param: Param `api_token` in the request url to access different endpoints.

<Note>Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/apollo.mdx)</Note>
31 changes: 31 additions & 0 deletions docs-v2/integrations/all/coda.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: Coda
sidebarTitle: Coda
---

API configuration: [`Coda`](https://nango.dev/providers.yaml)

## Features

| Feature | Status |
| -------------------------------------------------------------------------------- | ------------------------------- |
| [Auth (Basic)](/guides/api-key) ||
| [Syncs](/guides/sync) & [Actions](/guides/action) | 🚫 |
| [Nango Proxy](/guides/proxy) ||
| Auto-pagination | 🚫 (time to contribute: &lt;1h) |
| API-specific rate limits | 🚫 (time to contribute: &lt;1h) |

<Tip>We can implement missing features in &lt;48h, just ask for it in the [community](https://nango.dev/slack).</Tip>

## Getting started

- [Generate a Coda API token in your Coda account](https://coda.io/@pamcha/coda-sync/find-your-api-key-2)
- [Coda API docs](https://coda.io/developers/apis/v1)

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

## API gotchas

- Coda uses API_KEY auth mode with Authorization: Bearer `api_token` in the request header to access different endpoints.

<Note>Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/coda.mdx)</Note>
19 changes: 19 additions & 0 deletions docs-v2/integrations/all/freshdesk.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,25 @@ API configuration: [`freshdesk`](https://nango.dev/providers.yaml)

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

## Connection configuration in Nango

Freshdesk requires a user specific subdomain for the API requests.

You should request this from the user and pass it to Nango in the `nango.auth()` call:

```js
nango.auth('freshdesk', '<CONNECTION-ID>', {
params: {
subdomain: '<freshdesk-subdomain>'
},
credentials: {
username: '<API-KEY>',
password: 'x' // freshdesk asks you to leave "x" here
}});
```

For more details, see the [docs here](/guides/advanced-auth#connection-configuration).

## API gotchas

- For Basic Auth, Freshdesk uses API key as a username and dummy characters as a password.
Expand Down
4 changes: 4 additions & 0 deletions docs-v2/integrations/all/intercom.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ API configuration: [`intercom`](https://nango.dev/providers.yaml)

## Getting started

- [Create a Developer Workspace](https://app.intercom.com/a/developer-signup)
- [How to register an Application](https://developers.intercom.com/building-apps/docs/setting-up-oauth)
- [OAuth-related docs](https://developers.intercom.com/building-apps/docs/setting-up-oauth)
- [List of OAuth scopes](https://developers.intercom.com/building-apps/docs/oauth-scopes)
Expand All @@ -28,4 +29,7 @@ API configuration: [`intercom`](https://nango.dev/providers.yaml)

## API gotchas

- 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.

<Note>Add Getting Started links and Gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs-v2/integrations/all/instagram.mdx)</Note>
36 changes: 36 additions & 0 deletions docs-v2/integrations/all/stripe-app.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: Stripe
sidebarTitle: Stripe
---

API configuration: [`stripe`](https://nango.dev/providers.yaml)

## Features

| Feature | Status |
| -------------------------------------------------------------------------------- | ------------------------------- |
| [Auth (OAuth)](/guides/oauth) ||
| [Syncs](/guides/sync) & [Actions](/guides/action) ||
| [Nango Proxy](/guides/proxy) ||
| Auto-pagination | 🚫 (time to contribute: &lt;1h) |
| API-specific rate limits | 🚫 (time to contribute: &lt;1h) |

<Tip>We can implement missing features in &lt;48h, just ask for it in the [community](https://nango.dev/slack).</Tip>

## Getting started

- [How to register an Application](https://stripe.com/docs/stripe-apps)
- [OAuth-related docs](https://stripe.com/docs/stripe-apps/api-authentication/oauth)
- [List of OAuth scopes](https://stripe.com/docs/stripe-apps/reference/permissions)

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

## Connection configuration in Nango

Stripe requires you to use either the application domain or a temporary id (in test mode) to identify your application. See the [docs](https://stripe.com/docs/stripe-apps/api-authentication/oauth#install-app) for more information.

You should add your app domain to the `appDomain` field in the connection params.

```js
nango.auth('stripe-app', '<CONNECTION-ID>', {params: {appDomain: '<stripe-app-domain>'}});
```
1 change: 1 addition & 0 deletions docs-v2/integrations/knowledge-base.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Ask us on the [Slack community](https://nango.dev/slack) and we can help you qui

<CardGroup cols={4}>
<Card title="Box" href="/integrations/all/box" color="#68a063" />
<Card title="Coda" href="/integrations/all/coda" color="#68a063" />
<Card title="Confluence" href="/integrations/all/confluence" color="#68a063" />
<Card title="Dropbox" href="/integrations/all/dropbox" color="#68a063" />
<Card title="GetGuru" href="/integrations/all/getguru" color="#68a063" />
Expand Down
1 change: 1 addition & 0 deletions docs-v2/integrations/marketing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ sidebarTitle: Marketing
<Card title="Mailchimp" href="/integrations/all/mailchimp" color="#68a063" />
<Card title="Outreach" href="/integrations/all/outreach" color="#68a063" />
<Card title="Salesloft" href="/integrations/all/salesloft" color="#68a063" />
<Card title="Apollo" href="/integrations/all/apollo" color="#68a063" />
<Card title="Segment" href="/integrations/all/segment" color="#68a063" />
<Card title="Sendgrid" href="/integrations/all/sendgrid" color="#68a063" />
<Card title="Twitter" href="/integrations/all/twitter" color="#68a063" />
Expand Down
3 changes: 3 additions & 0 deletions docs-v2/integrations/support.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ sidebarTitle: Support

<CardGroup cols={4}>
<Card title="Aircall" href="/integrations/all/aircall" color="#68a063" />
<Card title="Freshdesk" href="/integrations/all/freshdesk" color="#68a063" />
<Card title="Freshservice" href="/integrations/all/freshservice" color="#68a063" />
<Card title="Front" href="/integrations/all/front" color="#68a063" />
<Card title="Github" href="/integrations/all/github" color="#68a063" />
<Card title="Gitlab" href="/integrations/all/gitlab" color="#68a063" />
<Card title="HubSpot" href="/integrations/all/hubspot" color="#68a063" />
<Card title="Intercom" href="/integrations/all/intercom" color="#68a063" />
<Card title="RingCentral" href="/integrations/all/ring-central" color="#68a063" />
<Card title="StackExchange" href="/integrations/all/stackexchange" color="#68a063" />
Expand Down
6 changes: 5 additions & 1 deletion docs-v2/mint.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@
"integration-templates/notion",
"integration-templates/salesforce",
"integration-templates/slack",
"integration-templates/zendesk"
"integration-templates/zendesk",
"integration-templates/zoho-crm"
]
}
]
Expand Down Expand Up @@ -170,6 +171,7 @@
"integrations/all/airtable",
"integrations/all/amazon",
"integrations/all/amplitude",
"integrations/all/apollo",
"integrations/all/asana",
"integrations/all/ashby",
"integrations/all/atlassian",
Expand All @@ -185,6 +187,7 @@
"integrations/all/calendly",
"integrations/all/clickup",
"integrations/all/close",
"integrations/all/coda",
"integrations/all/confluence",
"integrations/all/contentstack",
"integrations/all/deel",
Expand Down Expand Up @@ -341,6 +344,7 @@
"api-reference/connection/get",
"api-reference/connection/post",
"api-reference/connection/set-metadata",
"api-reference/connection/update-metadata",
"api-reference/connection/delete"
]
},
Expand Down
Loading

0 comments on commit 693db90

Please sign in to comment.