Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

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

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

Provider count: 874
Provider count: 875

URL patterns:
- Main provider page: https://nango.dev/docs/integrations/all/{slug}.md or https://nango.dev/docs/api-integrations/{slug}.md
Expand Down Expand Up @@ -515,6 +515,7 @@ URL patterns:
| `netsuite-tba` | NetSuite (TBA) | TBA | [docs](https://nango.dev/docs/api-integrations/netsuite-tba.md) | | [setup](https://nango.dev/docs/api-integrations/netsuite-tba/how-to-set-up-netsuite-tba-with-nango.md) | accounting, erp, popular |
| `next-cloud-ocs` | Next Cloud OCS | BASIC | [docs](https://nango.dev/docs/integrations/all/next-cloud-ocs.md) | [connect](https://nango.dev/docs/integrations/all/next-cloud-ocs/connect.md) | | storage, productivity |
| `nexthink` | Nexthink | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/nexthink.md) | [connect](https://nango.dev/docs/api-integrations/nexthink/connect.md) | | analytics |
| `ninety-io` | Ninety.io | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninety-io.md) | [connect](https://nango.dev/docs/api-integrations/ninety-io/connect.md) | | productivity |
| `ninjaone-rmm` | NinjaOne RMM | OAUTH2_CC | [docs](https://nango.dev/docs/integrations/all/ninjaone-rmm.md) | [connect](https://nango.dev/docs/integrations/all/ninjaone-rmm/connect.md) | | support |
| `ninjaone-rmm-oauth2` | NinjaOne RMM (OAuth2) | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2.md) | | [setup](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2/how-to-register-your-own-ninjaone-rmm-api-oauth-app.md) | support |
| `ninjaone-saas-backup` | NinjaOne SaaS Backup | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninjaone-saas-backup.md) | [connect](https://nango.dev/docs/api-integrations/ninjaone-saas-backup/connect.md) | | storage, productivity |
Expand Down
87 changes: 87 additions & 0 deletions docs/api-integrations/ninety-io.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: 'Ninety.io'
sidebarTitle: 'Ninety.io'
description: 'Integrate your application with the Ninety.io API'
---

## Quickstart

Connect to Ninety.io with Nango and see data flow in 2 minutes.

<Steps>
<Step id="create-integration" title="Create the integration">
In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Ninety.io_.
</Step>
<Step id="authorize-ninety-io" title="Authorize Ninety.io">
Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then enter your Personal Access Token. Later, you'll let your users do the same directly from your app.
</Step>
<Step id="call-the-api" title="Call the Ninety.io API">
Let's make your first request to the Ninety.io API. Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
<Tabs>
<Tab title="cURL">

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

</Tab>

<Tab title="Node">

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

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

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

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

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


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

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

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

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

<Note>
Ninety.io's Public API is only available on the Thrive subscription plan, and every request executes under the permissions of the user who generated the token. Rate limit: 25 requests/second, per user.
</Note>

## Ninety.io integration guides

Nango-maintained guides for common use cases.

- [How do I link my account?](/api-integrations/ninety-io/connect)
Connect your Ninety.io account using the Connect UI

Official docs: [Ninety.io API documentation](https://help.ninety.io/en/articles/15505694-api-reference-and-access)


## Pre-built syncs & actions for Ninety.io

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

import PreBuiltUseCases from "/snippets/generated/ninety-io/PreBuiltUseCases.mdx"

<PreBuiltUseCases />

---
45 changes: 45 additions & 0 deletions docs/api-integrations/ninety-io/connect.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: Ninety.io - How do I link my account?
sidebarTitle: Ninety.io
---

# Overview

To authenticate with Ninety.io, you need a **Personal Access Token (PAT)**. All API calls execute under your user identity and respect your in-app permissions.

### Prerequisites

- A Ninety.io account on the **Thrive** subscription plan (Accelerate, Essentials, and Free plans don't include API access).
- An Owner, Admin, Coach, Manager, or Team Member role. Observers can't generate tokens.

### Step 1: Generate a Personal Access Token

1. Click your name at the bottom of the left navigation.
2. Click **User Settings**.

<img src="/api-integrations/ninety-io/dashboard.png" />

3. Click **Developer Settings**.
4. Click **Generate New Token** in the top right.

<img src="/api-integrations/ninety-io/developer_settings.png" />

5. Choose a **Token Expiration Timeframe** (default: 90 days).
6. Enter a **Token Description** (50-character limit) identifying the token's purpose.
7. Click **Generate Token**.
8. Copy and store the token securely immediately — Ninety.io displays the full token only once.

<Warning>
Treat your Personal Access Token like a password. Anyone with the token can call the API as you. Do not commit tokens to source control, share them in chat, or paste them publicly.
</Warning>

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

1. Open the form where you need to authenticate with Ninety.io.
2. Enter your **Personal Access Token** in the designated field.
3. Submit the form, and you should be successfully authenticated.

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


You are now connected to Ninety.io.
Binary file added docs/api-integrations/ninety-io/dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/api-integrations/ninety-io/form.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1404,6 +1404,7 @@
"integrations/all/mural",
"api-integrations/nable-ncentral",
"integrations/all/nationbuilder",
"api-integrations/ninety-io",
"integrations/all/ninjaone-rmm",
"api-integrations/ninjaone-rmm-oauth2",
"api-integrations/ninjaone-saas-backup",
Expand Down
1 change: 1 addition & 0 deletions docs/llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14417,6 +14417,7 @@ Use these slugs to construct provider-specific docs URLs only when needed.
| `netsuite-tba` | NetSuite (TBA) | TBA | [docs](https://nango.dev/docs/api-integrations/netsuite-tba.md) | | [setup](https://nango.dev/docs/api-integrations/netsuite-tba/how-to-set-up-netsuite-tba-with-nango.md) | accounting, erp, popular |
| `next-cloud-ocs` | Next Cloud OCS | BASIC | [docs](https://nango.dev/docs/integrations/all/next-cloud-ocs.md) | [connect](https://nango.dev/docs/integrations/all/next-cloud-ocs/connect.md) | | storage, productivity |
| `nexthink` | Nexthink | OAUTH2_CC | [docs](https://nango.dev/docs/api-integrations/nexthink.md) | [connect](https://nango.dev/docs/api-integrations/nexthink/connect.md) | | analytics |
| `ninety-io` | Ninety.io | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninety-io.md) | [connect](https://nango.dev/docs/api-integrations/ninety-io/connect.md) | | productivity |
| `ninjaone-rmm` | NinjaOne RMM | OAUTH2_CC | [docs](https://nango.dev/docs/integrations/all/ninjaone-rmm.md) | [connect](https://nango.dev/docs/integrations/all/ninjaone-rmm/connect.md) | | support |
| `ninjaone-rmm-oauth2` | NinjaOne RMM (OAuth2) | OAUTH2 | [docs](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2.md) | | [setup](https://nango.dev/docs/api-integrations/ninjaone-rmm-oauth2/how-to-register-your-own-ninjaone-rmm-api-oauth-app.md) | support |
| `ninjaone-saas-backup` | NinjaOne SaaS Backup | API_KEY | [docs](https://nango.dev/docs/api-integrations/ninjaone-saas-backup.md) | [connect](https://nango.dev/docs/api-integrations/ninjaone-saas-backup/connect.md) | | storage, productivity |
Expand Down
2 changes: 1 addition & 1 deletion docs/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ Use provider URLs by replacing `{slug}` with a slug from the API catalog:

## APIs and integrations

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

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

<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>
24 changes: 24 additions & 0 deletions packages/providers/providers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13695,6 +13695,30 @@ nexthink:
order: 2
doc_section: '#step-1-locate-your-instance-name-and-region'

ninety-io:
display_name: Ninety.io
categories:
- productivity
auth_mode: API_KEY
proxy:
base_url: https://api.public.ninety.io
headers:
authorization: Bearer ${apiKey}
verification:
method: GET
endpoints:
- /v1/teams
docs: https://nango.dev/docs/api-integrations/ninety-io
docs_connect: https://nango.dev/docs/api-integrations/ninety-io/connect
credentials:
apiKey:
type: string
title: Personal Access Token
example: pat_189b**********************************4c11
pattern: '^pat_[a-f0-9]{64}$'
description: Your Ninety.io Personal Access Token.
doc_section: '#step-1-generate-a-personal-access-token'

ninjaone-rmm:
display_name: NinjaOne RMM
categories:
Expand Down
1 change: 1 addition & 0 deletions packages/webapp/public/images/template-logos/ninety-io.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading