Create Developers Docusaurus instance with moved documentation pages (#69264)
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: ian.alton@airbyte.io <ian.alton@airbyte.io>
This commit is contained in:
committed by
GitHub
parent
f3a19cf187
commit
6d8ed4ac77
7
docs/developers/README.md
Normal file
7
docs/developers/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
import DocCardList from '@theme/DocCardList';
|
||||
|
||||
# Developers
|
||||
|
||||
This section contains resources for software developers building automation and integrations between Airbyte and your own systems. To contribute to Airbyte, see [Community](/community), instead.
|
||||
|
||||
<DocCardList />
|
||||
244
docs/developers/api-documentation.md
Normal file
244
docs/developers/api-documentation.md
Normal file
@@ -0,0 +1,244 @@
|
||||
---
|
||||
products: all
|
||||
---
|
||||
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
|
||||
# API documentation
|
||||
|
||||
Use the Airbyte API to programmatically interact with Airbyte. You can extend it to:
|
||||
|
||||
- Control Airbyte in conjunction with orchestration tools like Airflow
|
||||
- Use [Airbyte Embedded](https://airbyte.com/ai)
|
||||
|
||||
This article shows you how to get an access token and make your first request, and it provides strategies to manage token expiry.
|
||||
|
||||
## Get an access token
|
||||
|
||||
Before you can make requests to the API, you need an access token. For help with this, see [Get an access token](/platform/next/using-airbyte/configuring-api-access).
|
||||
|
||||
## Use the right base URL
|
||||
|
||||
The base URL to which you send API requests depends on whether you're using Airbyte Cloud or self-managing, and which domain you use to access the UI.
|
||||
|
||||
- **Airbyte Cloud**: `https://api.airbyte.com/v1/`
|
||||
|
||||
- **Self-managed**:
|
||||
|
||||
- **Hosted locally**: `http://localhost:8000/api/public/v1/`
|
||||
|
||||
- **Hosted on the web**: `<YOUR_AIRBYTE_URL>/api/public/v1/`
|
||||
|
||||
## Make your first API request
|
||||
|
||||
Send a GET request to list all the source connectors in your instance of Airbyte.
|
||||
|
||||
<Tabs>
|
||||
<TabItem value="cloud" label="Cloud">
|
||||
|
||||
To send a request, insert your workspace ID and access token into the placeholder values below.
|
||||
|
||||
```bash title="Request"
|
||||
curl --request GET \
|
||||
--url 'https://api.airbyte.com/v1/sources?workspaceIds=<YOUR_WORKSPACE_ID>' \
|
||||
--header 'accept: application/json' \
|
||||
--header 'authorization: Bearer <YOUR_ACCESS_TOKEN>'
|
||||
```
|
||||
|
||||
```json title="Response"
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Snowflake",
|
||||
"sourceType": "snowflake",
|
||||
"definitionId": "e2d65910-8c8b-40a1-ae7d-ee2416b2bfa2",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"host": "<YOUR_VALUE>",
|
||||
"role": "<YOUR_VALUE>",
|
||||
"cursor": {
|
||||
"cursor_method": "user_defined"
|
||||
},
|
||||
"database": "<YOUR_VALUE>",
|
||||
"warehouse": "<YOUR_VALUE>",
|
||||
"concurrency": 1,
|
||||
"credentials": {
|
||||
"password": "************",
|
||||
"username": "<YOUR_USER>",
|
||||
"auth_type": "username/password"
|
||||
},
|
||||
"check_privileges": true,
|
||||
"checkpoint_target_interval_seconds": 300
|
||||
},
|
||||
"createdAt": 1758053604
|
||||
},
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Stripe",
|
||||
"sourceType": "stripe",
|
||||
"definitionId": "e094cb9a-26de-4645-8761-65c0c425d1de",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"account_id": "<YOUR_ACCOUNT_ID>",
|
||||
"start_date": "2023-07-01T00:00:00Z",
|
||||
"num_workers": 10,
|
||||
"slice_range": 365,
|
||||
"client_secret": "************",
|
||||
"lookback_window_days": 0
|
||||
},
|
||||
"createdAt": 1755562809
|
||||
}
|
||||
],
|
||||
"previous": "",
|
||||
"next": ""
|
||||
}
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="sm-local" label="Self-managed (localhost)">
|
||||
|
||||
To send a request, insert your access token into the placeholder value below.
|
||||
|
||||
```bash title="Request"
|
||||
curl --request GET \
|
||||
--url 'http://localhost:8000/api/public/v1/sources' \
|
||||
--header 'accept: application/json' \
|
||||
--header 'authorization: Bearer <YOUR_ACCESS_TOKEN>'
|
||||
```
|
||||
|
||||
```json title="Response"
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Snowflake",
|
||||
"sourceType": "snowflake",
|
||||
"definitionId": "e2d65910-8c8b-40a1-ae7d-ee2416b2bfa2",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"host": "<YOUR_VALUE>",
|
||||
"role": "<YOUR_VALUE>",
|
||||
"cursor": {
|
||||
"cursor_method": "user_defined"
|
||||
},
|
||||
"database": "<YOUR_VALUE>",
|
||||
"warehouse": "<YOUR_VALUE>",
|
||||
"concurrency": 1,
|
||||
"credentials": {
|
||||
"password": "************",
|
||||
"username": "<YOUR_USER>",
|
||||
"auth_type": "username/password"
|
||||
},
|
||||
"check_privileges": true,
|
||||
"checkpoint_target_interval_seconds": 300
|
||||
},
|
||||
"createdAt": 1758053604
|
||||
},
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Stripe",
|
||||
"sourceType": "stripe",
|
||||
"definitionId": "e094cb9a-26de-4645-8761-65c0c425d1de",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"account_id": "<YOUR_ACCOUNT_ID>",
|
||||
"start_date": "2023-07-01T00:00:00Z",
|
||||
"num_workers": 10,
|
||||
"slice_range": 365,
|
||||
"client_secret": "************",
|
||||
"lookback_window_days": 0
|
||||
},
|
||||
"createdAt": 1755562809
|
||||
}
|
||||
],
|
||||
"previous": "",
|
||||
"next": ""
|
||||
}
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="sm-web" label="Self-managed">
|
||||
|
||||
To send a request, insert your access token into the placeholder value below.
|
||||
|
||||
```bash title="Request"
|
||||
curl --request GET \
|
||||
--url '<YOUR_AIRBYTE_URL>/api/public/v1/sources' \
|
||||
--header 'accept: application/json' \
|
||||
--header 'authorization: Bearer <YOUR_ACCESS_TOKEN>'
|
||||
```
|
||||
|
||||
```json title="Response"
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Snowflake",
|
||||
"sourceType": "snowflake",
|
||||
"definitionId": "e2d65910-8c8b-40a1-ae7d-ee2416b2bfa2",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"host": "<YOUR_VALUE>",
|
||||
"role": "<YOUR_VALUE>",
|
||||
"cursor": {
|
||||
"cursor_method": "user_defined"
|
||||
},
|
||||
"database": "<YOUR_VALUE>",
|
||||
"warehouse": "<YOUR_VALUE>",
|
||||
"concurrency": 1,
|
||||
"credentials": {
|
||||
"password": "************",
|
||||
"username": "<YOUR_USER>",
|
||||
"auth_type": "username/password"
|
||||
},
|
||||
"check_privileges": true,
|
||||
"checkpoint_target_interval_seconds": 300
|
||||
},
|
||||
"createdAt": 1758053604
|
||||
},
|
||||
{
|
||||
"sourceId": "<YOUR_SOURCE_ID>",
|
||||
"name": "Stripe",
|
||||
"sourceType": "stripe",
|
||||
"definitionId": "e094cb9a-26de-4645-8761-65c0c425d1de",
|
||||
"workspaceId": "<YOUR_WORKSPACE_ID>",
|
||||
"configuration": {
|
||||
"account_id": "<YOUR_ACCOUNT_ID>",
|
||||
"start_date": "2023-07-01T00:00:00Z",
|
||||
"num_workers": 10,
|
||||
"slice_range": 365,
|
||||
"client_secret": "************",
|
||||
"lookback_window_days": 0
|
||||
},
|
||||
"createdAt": 1755562809
|
||||
}
|
||||
],
|
||||
"previous": "",
|
||||
"next": ""
|
||||
}
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Handle access token expiry in your requests
|
||||
|
||||
Access tokens are short-lived and you need to regularly request a new one. To minimize unnecessary requests and authorization errors, ensure your API requests work together with requests for new access tokens.
|
||||
|
||||
- When you get a new access token, cache it with the expected expiry time.
|
||||
|
||||
- Validate that your access token isn't expired before making a request. If it's expired, get a new access token before proceeding with the request.
|
||||
|
||||
- If you receive a `401 Unauthorized` response, request a new access token and try the request again one time. Don't keep making requests if you receive consecutive 401 responses.
|
||||
|
||||
## Full reference documentation
|
||||
|
||||
Find Airbyte's full API documentation at [reference.airbyte.com](https://reference.airbyte.com/reference/getting-started).
|
||||
|
||||
## Configuration API
|
||||
|
||||
Airbyte has deprecated the configuration API and no longer supports it. The Configuration API is an internal API designed for communication between different Airbyte components, not for managing an Airbyte deployment.
|
||||
|
||||
Use the Configuration API at your own risk. Airbyte engineers may modify it without warning.
|
||||
@@ -29,7 +29,7 @@ Before starting this tutorial, make sure you have the following:
|
||||
|
||||
- Obtain your Airbyte credentials:
|
||||
|
||||
- [An API application](using-airbyte/configuring-api-access.md) in Airbyte, your client ID, and your client secret.
|
||||
- [An API application](/platform/using-airbyte/configuring-api-access) in Airbyte, your client ID, and your client secret.
|
||||
|
||||
- The URL of your Airbyte server (e.g. `http://localhost:8000/api/public/v1/`).
|
||||
|
||||
@@ -6,9 +6,9 @@ products: oss-enterprise, cloud-teams
|
||||
|
||||
Role-Based Access Control (RBAC) role mapping allows automatic assignment of specific permissions to Airbyte users based on existing roles in your organization. It ensures users have appropriate Airbyte access without manual oversight.
|
||||
|
||||
Enabling role mapping in Airbyte requires use of the Airbyte API. The Airbyte API exposes endpoints that allow you to retrieve and update user permissions. These endpoints can be used to build automation that manages user access to different workspaces. This functionality is currently limited to the Airbyte API, and is not available in the Terraform Provider.
|
||||
Enabling role mapping in Airbyte requires use of the [Airbyte API](/developers/api-documentation). The Airbyte API exposes endpoints that allow you to retrieve and update user permissions. These endpoints can be used to build automation that manages user access to different workspaces. This functionality is currently limited to the Airbyte API, and is not available in the Terraform Provider.
|
||||
|
||||
To enable the Airbyte API in Airbyte Pro, Enterprise Flex, or Self-Managed Enterprise, follow these [prerequisites](../enterprise-setup/api-access-config.md).
|
||||
To enable the Airbyte API in Airbyte Pro, Enterprise Flex, or Self-Managed Enterprise, follow these [prerequisites](../using-airbyte/configuring-api-access).
|
||||
|
||||
## Relevant API Endpoints
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
products: all
|
||||
---
|
||||
|
||||
# API documentation
|
||||
|
||||
The Airbyte API provides a way for developers to programmatically interact with Airbyte. It is available for all Airbyte plans.
|
||||
|
||||
Our API is a reliable, easy-to-use interface for programmatically controlling the Airbyte platform. It can be extended to:
|
||||
|
||||
- Enable users to control Airbyte programmatically and use with Orchestration tools (ex: Airflow)
|
||||
- Enable [Airbyte Embedded](https://airbyte.com/ai)
|
||||
|
||||
## Configuring API Access
|
||||
|
||||
View our documentation [here](using-airbyte/configuring-api-access.md) to learn how to start using the Airbyte API.
|
||||
|
||||
## Using the Airbyte API
|
||||
|
||||
Navigate to our full API documentation to learn how to retrieve your access token, make API requests, and manage resources like sources, destinations, and workspaces.
|
||||
|
||||
Our full API documentation is located here: [reference.airbyte.com](https://reference.airbyte.com/reference/getting-started).
|
||||
|
||||
:::note
|
||||
To access the API in the Core plan, use the `/api/public/v1` path prefix. For example, retrieve list of workspaces with `curl http://localhost:8000/api/public/v1/workspaces`.
|
||||
:::
|
||||
|
||||
## Configuration API (Deprecated)
|
||||
|
||||
The configuration API is now deprecated and no longer supported. It is an internal API that is designed for communications between different Airbyte components rather than managing your Airbyte workspace.
|
||||
|
||||
Users utilize the Config API at their own risk. This API is utilized internally by the Airbyte Engineering team and may be modified in the future if the need arises.
|
||||
@@ -50,7 +50,7 @@ Deleting a connection is irreversible. Your source and destination connector rem
|
||||
Airbyte has other options to manage connections, too.
|
||||
|
||||
- [Airbyte API](https://reference.airbyte.com/reference/createsource#/)
|
||||
- [Terraform](/platform/terraform-documentation)
|
||||
- [Terraform](/developers/terraform-documentation)
|
||||
|
||||
## Connection Settings
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
The Airbyte platform is a sophisticated data integration platform that enables you to handle large amounts of data movement.
|
||||
To quickly deploy Airbyte on your local machine you can visit the [Quickstart](../using-airbyte/getting-started/oss-quickstart) guide.
|
||||
If setting up an Airbyte server does not fit your use case needs (for example, you're using Jupyter Notebooks or iterating on an early prototype for your project) you may find the [PyAirbyte](../using-airbyte/pyairbyte/getting-started) documentation useful.
|
||||
If setting up an Airbyte server does not fit your use case needs (for example, you're using Jupyter Notebooks or iterating on an early prototype for your project) you may find the [PyAirbyte](/developers/using-pyairbyte) documentation useful.
|
||||
|
||||
:::info Self-Managed Enterprise customers
|
||||
If you're a Self-Managed Enterprise customer, skip this guide. Instead, follow the steps outlined in [Self-Managed Enterprise](../enterprise-setup/README.md) and the associated [implementation guide](../enterprise-setup/implementation-guide.md).
|
||||
|
||||
@@ -51,7 +51,7 @@ Before you begin, make sure you've completed the following.
|
||||
|
||||
- You need a Kubernetes cluster on which your data plane can run. For example, if your Airbyte control plane already runs on an EKS cluster on `us-west-2`, and you want your data plane to run on `eu-west-1`, create an EKS cluster on `eu-west-1`.
|
||||
|
||||
- If you haven't already, get access to Airbyte's API by creating an application and generating an access token. For help, see [Configuring API access](../enterprise-setup/api-access-config).
|
||||
- If you haven't already, get access to Airbyte's API by creating an application and generating an access token. For help, see [Configuring API access](../using-airbyte/configuring-api-access).
|
||||
|
||||
## 1. Create a region {#step-1}
|
||||
|
||||
|
||||
@@ -47,20 +47,21 @@ Once your Airbyte instance is up and running, there's a way to use Airbyte that'
|
||||
|
||||
Self-managed and cloud plans come with a carefully crafted user interface that walks you through setting up connections and automating syncs. This is a great choice if you're not a developer, aren't concerned about version control, or you're just seeing what Airbyte can do for you.
|
||||
|
||||
### API and Python SDK {#api-sdk}
|
||||
### API and SDKs {#api-sdk}
|
||||
|
||||
These are great choices for developers who want to automate the way you work with Airbyte and use version control to preserve a history of changes.
|
||||
|
||||
- Airbyte's [API documentation](https://reference.airbyte.com) gives you programmatic access to Airbyte with code snippets in all common languages.
|
||||
- Airbyte's [API documentation](/developers/api-documentation) gives you programmatic access to Airbyte with code snippets in all common languages.
|
||||
- Airbyte's [Python SDK](https://github.com/airbytehq/airbyte-api-python-sdk) lets you programmatically control your Airbyte instance with Python.
|
||||
- Airbyte's [Java SDK](https://github.com/airbytehq/airbyte-api-java-sdk) lets you programmatically control your Airbyte instance with Java.
|
||||
|
||||
### Terraform
|
||||
|
||||
Many people think of Airbyte and its connectors as infrastructure. Our [Terraform provider](/platform/terraform-documentation) ensures you can deploy and manage sources and destinations with Terraform, the same way you manage your other infrastructure today.
|
||||
Many people think of Airbyte and its connectors as infrastructure. The [Terraform provider](/developers/terraform-documentation) ensures you can deploy and manage sources and destinations with Terraform, the same way you manage your other infrastructure today.
|
||||
|
||||
### PyAirbyte
|
||||
|
||||
If you want to use Python to move data, our Python library, [PyAirbyte](/platform/using-airbyte/pyairbyte/getting-started), might be the best fit for you. It's a good choice if you're using Jupyter Notebook or iterating on an early prototype for a large data project and don't need to run a server. PyAirbyte isn't an SDK for managing Airbyte. If that's what you're looking for, use the [API or Python SDK](#api-sdk).
|
||||
If you want to use Python to move data, our Python library, [PyAirbyte](/developers/using-pyairbyte), might be the best fit for you. It's a good choice if you're using Jupyter Notebook or iterating on an early prototype for a large data project and don't need to run a server. PyAirbyte isn't an SDK for managing Airbyte. If that's what you're looking for, use the [API or Python SDK](#api-sdk).
|
||||
|
||||
## Why Airbyte?
|
||||
|
||||
@@ -69,7 +70,7 @@ Teams and organizations need efficient and timely data access to an ever-growing
|
||||
- **Wide connector availability:** Airbyte's connector catalog comes "out-of-the-box" with over 600 pre-built connectors. These connectors can be used to start replicating data from a source to a destination in just a few minutes.
|
||||
- **Long-tail connector coverage:** You can easily extend Airbyte's capability to support your custom use cases through Airbyte's [No-Code Connector Builder](/platform/connector-development/connector-builder-ui/overview).
|
||||
- **Robust platform** provides horizontal scaling required for large-scale data movement operations, available as [Cloud-managed](https://airbyte.com/product/airbyte-cloud) or [Self-managed](https://airbyte.com/product/airbyte-enterprise).
|
||||
- **Accessible User Interfaces** through the UI, [**PyAirbyte**](/platform/using-airbyte/pyairbyte/getting-started) (Python library), [**API**](/platform/api-documentation), and [**Terraform Provider**](/platform/terraform-documentation) to integrate with your preferred tooling and approach to infrastructure management.
|
||||
- **Accessible User Interfaces** through the UI, [**PyAirbyte**](/developers/using-pyairbyte) (Python library), [**API**](/developers/api-documentation), and [**Terraform Provider**](/developers/terraform-documentation) to integrate with your preferred tooling and approach to infrastructure management.
|
||||
|
||||
Airbyte is suitable for a wide range of data integration use cases, including AI data infrastructure and EL(T) workloads. Airbyte is also [embeddable](https://airbyte.com/product/powered-by-airbyte) within your own app or platform to power your product.
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 66 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 266 KiB |
@@ -5,111 +5,165 @@ products: all
|
||||
import Tabs from "@theme/Tabs";
|
||||
import TabItem from "@theme/TabItem";
|
||||
|
||||
# Configuring API Access
|
||||
# Get an API access token
|
||||
|
||||
The Airbyte API enables you to programmatically interact with Airbyte: create sources, destinations, run syncs, list workspaces, and much more.
|
||||
Most programmatic interactions with Airbyte require an access token. An access token represents an individual Airbyte user, and it has the same permissions as that Airbyte user.
|
||||
|
||||
Access to the API is controlled through application keys. Applications keys are tied to individual users and their respective permissions.
|
||||
:::tip
|
||||
Using a service account for this purpose is helpful. If you rely on making requests to the Airbyte API using personal credentials, your apps and scripts could break if someone leaves your organization.
|
||||
:::
|
||||
|
||||
# Prerequisites
|
||||
<Tabs groupId="cloud-hosted">
|
||||
<TabItem value="cloud" label="Cloud">
|
||||
Access to a Cloud workspace.
|
||||
The process to generate an access token involves two steps.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="self-managed" label="Self-Managed">
|
||||
A deployment of Airbyte Self-Managed that exposes the `airbyte-server` service.
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
1. Create an application in Airbyte.
|
||||
2. Use that application to get an access token.
|
||||
|
||||
## Step 1: Create an Application
|
||||
## Prerequisites
|
||||
|
||||
While logged into the Airbyte UI, go to \<Your Name\> -> User Settings -> Applications. Click the button "Create an application".
|
||||
You need access to either of the following:
|
||||
|
||||

|
||||
- An Airbyte Cloud organization
|
||||
- A self-managed deployment of Airbyte that exposes the `airbyte-server` service
|
||||
|
||||
Name your application for easy identification.
|
||||
## Step 1: Create an application
|
||||
|
||||

|
||||
|
||||
An Airbyte application represents an individual user using a client ID and client secret.
|
||||
|
||||
A `client_id` and `client_secret` will be automatically generated. The `client_secret` can be exposed by clicking on the icon next to the secret.
|
||||
<Tabs>
|
||||
<TabItem value="cloud" label="Cloud">
|
||||
|
||||
1. In Airbyte's UI, click your name > **User settings** > **Applications**.
|
||||
|
||||

|
||||
|
||||
2. Click **Create an application**.
|
||||
|
||||
3. Give your application a descriptive name and click **Submit**.
|
||||
|
||||

|
||||
|
||||
4. Click the <svg fill="none" data-icon="eye" role="img" viewBox="0 0 24 24" class="inline-svg"><path fill="currentColor" d="M21.92 11.6C19.9 6.91 16.1 4 12 4s-7.9 2.91-9.92 7.6a1 1 0 0 0 0 .8C4.1 17.09 7.9 20 12 20s7.9-2.91 9.92-7.6a1 1 0 0 0 0-.8M12 18c-3.17 0-6.17-2.29-7.9-6C5.83 8.29 8.83 6 12 6s6.17 2.29 7.9 6c-1.73 3.71-4.73 6-7.9 6m0-10a4 4 0 1 0 0 8 4 4 0 0 0 0-8m0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4"></path></svg> icon to expose your client secret.
|
||||
|
||||

|
||||
|
||||
</TabItem>
|
||||
<TabItem value="oss" label="Core">
|
||||
|
||||
Since Airbyte Core only has a single user, Airbyte already provides an application with a client ID and client secret for you.
|
||||
|
||||
In Airbyte's UI, click **User** > **User settings** > **Applications**. Click the <svg fill="none" data-icon="eye" role="img" viewBox="0 0 24 24" class="inline-svg"><path fill="currentColor" d="M21.92 11.6C19.9 6.91 16.1 4 12 4s-7.9 2.91-9.92 7.6a1 1 0 0 0 0 .8C4.1 17.09 7.9 20 12 20s7.9-2.91 9.92-7.6a1 1 0 0 0 0-.8M12 18c-3.17 0-6.17-2.29-7.9-6C5.83 8.29 8.83 6 12 6s6.17 2.29 7.9 6c-1.73 3.71-4.73 6-7.9 6m0-10a4 4 0 1 0 0 8 4 4 0 0 0 0-8m0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4"></path></svg> icon to expose your client secret.
|
||||
|
||||

|
||||
|
||||
## Step 2: Obtain an Access Token
|
||||
If you deploy Airbyte with abctl, you can also [use the command line interface](../deploying-airbyte/abctl/#view-and-change-credentials) to see your client ID and client secret.
|
||||
|
||||
Once the `client_secret` is exposed, you can use the button in the UI to get an access token to do a quick test.
|
||||
</TabItem>
|
||||
<TabItem value="sme" label="Self-Managed Enterprise">
|
||||
|
||||
You can also use the `client_id` and `client_secret` to retrive an access token using the [Get an Access Token endpoint](https://reference.airbyte.com/reference/createaccesstoken).
|
||||
1. In Airbyte's UI, click your name > **User settings** > **Applications**.
|
||||
|
||||

|
||||
|
||||
<Tabs groupId="cloud-hosted">
|
||||
<TabItem value="cloud" label="Cloud">
|
||||
|
||||
```yml
|
||||
POST https://api.airbyte.com/api/v1/applications/token
|
||||
```
|
||||
2. Click **Create an application**.
|
||||
|
||||
Ensure the following JSON Body is attached to the request, populated with your `client_id` and `client_secret`:
|
||||
3. Give your application a descriptive name and click **Submit**.
|
||||
|
||||
```yaml
|
||||
{
|
||||
"client_id": "",
|
||||
"client_secret": ""
|
||||
}
|
||||
```
|
||||

|
||||
|
||||
</TabItem>
|
||||
<TabItem value="self-managed" label="Self-Managed">
|
||||
Self-Managed users should replace `<YOUR_WEBAPP_URL>` below with the URL used to access the Airbyte UI
|
||||
4. Click the <svg fill="none" data-icon="eye" role="img" viewBox="0 0 24 24" class="inline-svg"><path fill="currentColor" d="M21.92 11.6C19.9 6.91 16.1 4 12 4s-7.9 2.91-9.92 7.6a1 1 0 0 0 0 .8C4.1 17.09 7.9 20 12 20s7.9-2.91 9.92-7.6a1 1 0 0 0 0-.8M12 18c-3.17 0-6.17-2.29-7.9-6C5.83 8.29 8.83 6 12 6s6.17 2.29 7.9 6c-1.73 3.71-4.73 6-7.9 6m0-10a4 4 0 1 0 0 8 4 4 0 0 0 0-8m0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4"></path></svg> icon to expose your client secret.
|
||||
|
||||
```yml
|
||||
POST <YOUR_WEBAPP_URL>/api/v1/applications/token
|
||||
```
|
||||

|
||||
|
||||
Ensure the following JSON Body is attached to the request, populated with your `client_id` and `client_secret`:
|
||||
|
||||
```yaml
|
||||
{
|
||||
"client_id": "",
|
||||
"client_secret": ""
|
||||
}
|
||||
```
|
||||
</TabItem>
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
The API response should provide an `access_token`, which is a Bearer Token valid for 3 minutes. It can be used to make requests to the API. Once your `access_token` expires, you must make a new request to the `applications/token` endpoint to get a new token.
|
||||
## Step 2: Get an access token
|
||||
|
||||
:::tip
|
||||
Access tokens are short-lived (3 minutes) so we recommend fetching a new token before each request. The Terraform Provider/SDKs properly handle this for you if you initialize the Provider/SDK with the Client Credentials grant type using your Application's `client_id` and `client_secret`.
|
||||
:::
|
||||
You can exchange your client ID and client secret for an access token. Use this access token to make requests. Access tokens expire in 15 minutes. Each time your access token expires, request a new one.
|
||||
|
||||
## Step 3: Operate Airbyte via API
|
||||
<Tabs>
|
||||
<TabItem value="manually" label="Manually">
|
||||
|
||||
You may now make requests to any endpoint documented in our [Airbyte API Reference](https://reference.airbyte.com). For example, you may use the [List workspaces endpoint](https://reference.airbyte.com/reference/listworkspaces) to verify the list of workspaces in your organization. Ensure to include your `access_token` as a `Bearer Token` in your request.:
|
||||
You can manually generate an access token from Airbyte's UI.
|
||||
|
||||
```yaml
|
||||
GET <YOUR_WEBAPP_URL>/api/public/v1/workspaces
|
||||
1. Still on the Applications page, hover over the application for which you want to generate an access token.
|
||||
|
||||
2. Click **Generate access token**.
|
||||
|
||||
3. Click **Copy** or **Download access token**.
|
||||
|
||||
4. Close the dialog.
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="cloud" label="Cloud">
|
||||
|
||||
Make a POST request to the API, replacing the client ID and client secret placeholders below with your actual client ID and client secret.
|
||||
|
||||
```bash title="Request"
|
||||
curl --request POST \
|
||||
--url https://api.airbyte.com/v1/applications/token \
|
||||
--header 'accept: application/json' \
|
||||
--header 'content-type: application/json' \
|
||||
--data '
|
||||
{
|
||||
"client_id": "<YOUR_CLIENT_ID>",
|
||||
"client_secret": "<YOUR_CLIENT_SECRET>",
|
||||
"grant-type": "client_credentials"
|
||||
}
|
||||
'
|
||||
```
|
||||
|
||||
Expect a response like the following:
|
||||
If your request was successful, the API returns your access token with an expiry time.
|
||||
|
||||
```json
|
||||
```bash title="Response"
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"workspaceId": "b5367aab-9d68-4fea-800f-0000000000",
|
||||
"name": "Finance Team",
|
||||
"dataResidency": "auto"
|
||||
},
|
||||
{
|
||||
"workspaceId": "b5367aab-9d68-4fea-800f-0000000001",
|
||||
"name": "Analytics Team",
|
||||
"dataResidency": "auto"
|
||||
}
|
||||
]
|
||||
"access_token": "<YOUR_ACCESS_TOKEN>",
|
||||
"token_type": "Bearer",
|
||||
"expires_in": 900
|
||||
}
|
||||
```
|
||||
|
||||
To go further, you may use our [Python](https://github.com/airbytehq/airbyte-api-python-sdk) and [Java](https://github.com/airbytehq/airbyte-api-java-sdk) SDKs to make API requests directly in code, or our [Terraform Provider](https://registry.terraform.io/providers/airbytehq/airbyte/latest) (which uses the Airbyte API) to declare your Airbyte configuration as infrastructure.
|
||||
For more examples, see [Get an access token](https://reference.airbyte.com/reference/createaccesstoken#/).
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="self-managed" label="Self-Managed">
|
||||
|
||||
Make a POST request to the API, replacing the Airbyte URL, client ID and client secret placeholders below with your actual Airbyte URL, client ID, and client secret. If Airbyte is running locally, your Airbyte URL is probably `http://localhost:8000`.
|
||||
|
||||
```bash title="Request"
|
||||
curl --request POST \
|
||||
--url <YOUR_AIRBYTE_URL>/api/public/v1/applications/token \
|
||||
--header 'accept: application/json' \
|
||||
--header 'content-type: application/json' \
|
||||
--data '
|
||||
{
|
||||
"client_id": "<YOUR_CLIENT_ID>",
|
||||
"client_secret": "<YOUR_CLIENT_SECRET>",
|
||||
"grant-type": "client_credentials"
|
||||
}
|
||||
'
|
||||
```
|
||||
|
||||
If your request was successful, the API returns your access token with an expiry time.
|
||||
|
||||
```bash title="Response"
|
||||
{
|
||||
"access_token": "<YOUR_ACCESS_TOKEN>",
|
||||
"token_type": "Bearer",
|
||||
"expires_in": 900
|
||||
}
|
||||
```
|
||||
|
||||
For more examples, see [Get an access token](https://reference.airbyte.com/reference/createaccesstoken#/).
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="other" label="Terraform and SDKs">
|
||||
|
||||
The Terraform Provider and SDKs can handle this for you. Initialize the Provider/SDK with the Client Credentials grant type using your Application's `client_id` and `client_secret`.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
## Step 3: Use your access token
|
||||
|
||||
Once you have an application and/or access token, use it to make requests from your source code. [Learn more in the Developers section](/developers).
|
||||
|
||||
@@ -62,6 +62,6 @@ Connectors are reusable. In most cases, you only need to set up the connector on
|
||||
Airbyte has other options to manage connectors, too.
|
||||
|
||||
- [Airbyte API](https://reference.airbyte.com/reference/createdestination#/)
|
||||
- [Terraform](../../terraform-documentation)
|
||||
- [Terraform](/developers/terraform-documentation)
|
||||
|
||||
In these cases, you can speed up the process by entering your values into the UI, then clicking the **Copy JSON** button. This copies your configuration as a JSON string that you can paste into your code.
|
||||
|
||||
@@ -65,6 +65,6 @@ If Airbyte doesn't have the connector you need, [you can create your own](../../
|
||||
Airbyte has other options to manage connectors, too.
|
||||
|
||||
- [Airbyte API](https://reference.airbyte.com/reference/createsource#/)
|
||||
- [Terraform](../../terraform-documentation)
|
||||
- [Terraform](/developers/terraform-documentation)
|
||||
|
||||
In these cases, you can speed up the process by entering your values into the UI, then clicking the **Copy JSON** button. This copies your configuration as a JSON string that you can paste into your code.
|
||||
|
||||
@@ -25,7 +25,7 @@ This quickstart shows you how to:
|
||||
|
||||
If you don't want to self-manage Airbyte, skip this guide. Sign up for an [Airbyte Cloud](https://cloud.airbyte.com/signup) trial and [start syncing data](add-a-source.md) now.
|
||||
|
||||
If you want to use Python to move data, Airbyte's Python library, [PyAirbyte](../pyairbyte/getting-started.mdx), might be the best fit for you. It's a good choice if you're using Jupyter Notebook or iterating on an early prototype for a large data project and don't need to run your own server.
|
||||
If you want to use Python to move data, Airbyte's Python library, [PyAirbyte](/developers/using-pyairbyte), might be the best fit for you. It's a good choice if you're using Jupyter Notebook or iterating on an early prototype for a large data project and don't need to run your own server.
|
||||
|
||||
## Suggested resources {#suggested-resources}
|
||||
|
||||
|
||||
@@ -20,4 +20,4 @@ In addition to our Postgres V2 destination, we also released a few notable Conne
|
||||
|
||||
- Our [Paypal source](https://github.com/airbytehq/airbyte/pull/34510) has been rigorously tested for bugs and now syncs new streams `Catalog Products`, `Disputes`, `Invoicing`, `Orders`, `Payments` and `Subscriptions`.
|
||||
- [Chargebee](https://github.com/airbytehq/airbyte/pull/34053) source now syncs incrementally for `unbilled-charge`, `gift`, and `site_migration_detail`
|
||||
- We launched [PyAirbyte](/platform/using-airbyte/pyairbyte/getting-started), a new interface to use Airbyte connectors with for Python developers.
|
||||
- We launched [PyAirbyte](/developers/using-pyairbyte), a new interface to use Airbyte connectors with for Python developers.
|
||||
|
||||
@@ -20,7 +20,7 @@ When someone makes a change to a connection's schema, Airbyte now logs an event
|
||||
|
||||
### Copy JSON from connectors
|
||||
|
||||
All connectors now have a **Copy JSON** button in the Airbyte UI. This button generates a JSON object matching the configuration of that connector. It's ready for use in Airbyte's API and Terraform provider. [**Learn more >**](/platform/terraform-documentation#weakly-typed-json-configurations)
|
||||
All connectors now have a **Copy JSON** button in the Airbyte UI. This button generates a JSON object matching the configuration of that connector. It's ready for use in Airbyte's API and Terraform provider. [**Learn more >**](/developers/terraform-documentation#weakly-typed-json-configurations)
|
||||
|
||||
```json title="Airbyte source connector example"
|
||||
{
|
||||
|
||||
@@ -215,6 +215,22 @@ const config: Config = {
|
||||
],
|
||||
},
|
||||
],
|
||||
// This plugin controls Developers docs, which are not versioned
|
||||
[
|
||||
"@docusaurus/plugin-content-docs",
|
||||
{
|
||||
id: "developers",
|
||||
path: "../docs/developers",
|
||||
routeBasePath: "/developers",
|
||||
sidebarPath: "./sidebar-developers.js",
|
||||
editUrl: "https://github.com/airbytehq/airbyte/blob/master/docs",
|
||||
remarkPlugins: [
|
||||
plugins.productInformation,
|
||||
plugins.docMetaTags,
|
||||
plugins.addButtonToTitle,
|
||||
],
|
||||
},
|
||||
],
|
||||
// This plugin controls Community docs, which are not versioned
|
||||
[
|
||||
"@docusaurus/plugin-content-docs",
|
||||
@@ -457,12 +473,19 @@ const config: Config = {
|
||||
sidebarId: "ai-agents",
|
||||
label: "AI agents",
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
position: "left",
|
||||
docsPluginId: "developers",
|
||||
sidebarId: "developers",
|
||||
label: "Developers",
|
||||
},
|
||||
{
|
||||
type: "docSidebar",
|
||||
position: "left",
|
||||
docsPluginId: "community",
|
||||
sidebarId: "community",
|
||||
label: "Community & support",
|
||||
label: "Community",
|
||||
},
|
||||
{
|
||||
href: "https://status.airbyte.com",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version.label": {
|
||||
"message": "Cloud and Next",
|
||||
"message": "Cloud",
|
||||
"description": "The label for version current"
|
||||
},
|
||||
"sidebar.platform.category.Airbyte Platform": {
|
||||
|
||||
32
docusaurus/sidebar-developers.js
Normal file
32
docusaurus/sidebar-developers.js
Normal file
@@ -0,0 +1,32 @@
|
||||
module.exports = {
|
||||
developers: [
|
||||
{
|
||||
type: "category",
|
||||
collapsible: false,
|
||||
label: "Developers",
|
||||
link: {
|
||||
type: "doc",
|
||||
id: "README",
|
||||
},
|
||||
items: [
|
||||
"api-documentation",
|
||||
"terraform-documentation",
|
||||
{
|
||||
type: "doc",
|
||||
label: "PyAirbyte",
|
||||
id: "using-pyairbyte",
|
||||
},
|
||||
{
|
||||
type: 'link',
|
||||
label: 'Python SDK',
|
||||
href: 'https://github.com/airbytehq/airbyte-api-python-sdk',
|
||||
},
|
||||
{
|
||||
type: 'link',
|
||||
label: 'Java SDK',
|
||||
href: 'https://github.com/airbytehq/airbyte-api-java-sdk',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -445,7 +445,6 @@ module.exports = {
|
||||
},
|
||||
items: [
|
||||
"enterprise-setup/implementation-guide",
|
||||
"enterprise-setup/api-access-config",
|
||||
"enterprise-setup/multi-region",
|
||||
"enterprise-setup/audit-logging",
|
||||
"enterprise-setup/scaling-airbyte",
|
||||
@@ -528,7 +527,6 @@ module.exports = {
|
||||
type: "category",
|
||||
label: "Integrating with Airbyte",
|
||||
items: [
|
||||
"using-airbyte/configuring-api-access",
|
||||
"operator-guides/using-the-airflow-airbyte-operator",
|
||||
"operator-guides/using-prefect-task",
|
||||
"operator-guides/using-dagster-integration",
|
||||
@@ -536,20 +534,8 @@ module.exports = {
|
||||
"operator-guides/using-orchestra-task",
|
||||
],
|
||||
},
|
||||
sectionHeader("Developer guides"),
|
||||
{
|
||||
type: "doc",
|
||||
id: "api-documentation",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
id: "terraform-documentation",
|
||||
},
|
||||
{
|
||||
type: "doc",
|
||||
label: "Using PyAirbyte",
|
||||
id: "using-airbyte/pyairbyte/getting-started",
|
||||
},
|
||||
sectionHeader("Advanced"),
|
||||
"using-airbyte/configuring-api-access",
|
||||
understandingAirbyte,
|
||||
],
|
||||
},
|
||||
|
||||
@@ -124,6 +124,22 @@ span.DocSearch-Button-Placeholder {
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
nav div.dropdown--right {
|
||||
border: 1px solid var(--docusaurus-tag-list-border);
|
||||
border-radius: var(--docsearch-border-radius);
|
||||
}
|
||||
|
||||
nav ul.dropdown__menu {
|
||||
border: 1px solid var(--docusaurus-tag-list-border);
|
||||
}
|
||||
|
||||
/* Hide some less important navbar items at medium resolutions */
|
||||
@media (max-width:1250px) {
|
||||
nav a.header-github-link, nav a.cloudStatusLink {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.header-github-link:hover {
|
||||
opacity: 0.6;
|
||||
}
|
||||
@@ -142,6 +158,12 @@ span.DocSearch-Button-Placeholder {
|
||||
no-repeat;
|
||||
}
|
||||
|
||||
nav.navbar {
|
||||
padding-top: 0px !important;
|
||||
padding-bottom: 0px !important;
|
||||
max-height: 70px;
|
||||
}
|
||||
|
||||
.navbar__item.header-button.navbar__link {
|
||||
background: var(--ifm-color-primary);
|
||||
color: white !important;
|
||||
@@ -166,10 +188,19 @@ span.DocSearch-Button-Placeholder {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (min-width:996px) {
|
||||
.navbar__link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar__link--active {
|
||||
cursor: pointer;
|
||||
color: var(--ifm-navbar-link-color);
|
||||
text-decoration: none;
|
||||
padding-top: 7px;
|
||||
}
|
||||
|
||||
.navbar__link:hover {
|
||||
@@ -178,10 +209,6 @@ span.DocSearch-Button-Placeholder {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar .navbar__item {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.navbar__category {
|
||||
font-weight: 700;
|
||||
padding: 0.4em 0 0.4em 0.4em;
|
||||
@@ -413,6 +440,10 @@ header h1 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
article span.theme-doc-version-badge {
|
||||
display: none;
|
||||
}
|
||||
|
||||
article span.badge {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@@ -468,4 +499,4 @@ li.api-method.put .menu__link::before {
|
||||
li.api-method.patch .menu__link::before {
|
||||
content: "patch";
|
||||
background-color: var(--openapi-code-orange);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -110,7 +110,7 @@ export default function Home() {
|
||||
},
|
||||
{
|
||||
title: 'Developers',
|
||||
link: '/platform/api-documentation',
|
||||
link: '/developers',
|
||||
description: 'Interact with Airbyte programmatically using our API, Terraform provider, and more.',
|
||||
icon: DevelopersIcon,
|
||||
},
|
||||
|
||||
@@ -3,12 +3,27 @@
|
||||
"redirects": [
|
||||
{
|
||||
"source": "/api-documentation",
|
||||
"destination": "/platform/api-documentation",
|
||||
"destination": "/developers/api-documentation",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
"source": "/terraform-documentation",
|
||||
"destination": "/platform/terraform-documentation",
|
||||
"destination": "/developers/terraform-documentation",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
"source": "/platform/api-documentation",
|
||||
"destination": "/developers/api-documentation",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
"source": "/platform/terraform-documentation",
|
||||
"destination": "/developers/terraform-documentation",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
"source": "/platform/using-airbyte/pyairbyte/getting-started",
|
||||
"destination": "/developers/using-pyairbyte",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
@@ -253,7 +268,7 @@
|
||||
},
|
||||
{
|
||||
"source": "/pyairbyte",
|
||||
"destination": "/platform/using-airbyte/pyairbyte/getting-started",
|
||||
"destination": "/developers/using-pyairbyte",
|
||||
"statusCode": 301
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user