You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Guide for using lowcode or not
* Use headers
* Update docs/connector-development/config-based/overview.md
Co-authored-by: Andy <[email protected]>
* Update docs/connector-development/config-based/overview.md
Co-authored-by: Andy <[email protected]>
* Update docs/connector-development/config-based/overview.md
Co-authored-by: Brian Lai <[email protected]>
* Update docs/connector-development/config-based/overview.md
Co-authored-by: Brian Lai <[email protected]>
* an -> a
Co-authored-by: Andy <[email protected]>
Co-authored-by: Brian Lai <[email protected]>
Copy file name to clipboardExpand all lines: docs/connector-development/config-based/overview.md
+70-14Lines changed: 70 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -15,22 +15,78 @@ The process then submits HTTP requests to the API endpoint, and extracts records
15
15
16
16
See the [connector definition section](yaml-structure.md) for more information on the YAML file describing the connector.
17
17
18
+
## Does this framework support the connector I want to build?
19
+
20
+
Not all APIs are can be built using this framework because its featureset is still limited.
21
+
This section describes guidelines for determining whether a connector for a given API can be built using the config-based framework. Please let us know through the #lowcode-earlyaccess Slack channel if you'd like to build something that falls outside what we currently support and we'd be happy to discuss and prioritize in the coming months!
22
+
23
+
Refer to the API's documentation to answer the following questions:
24
+
25
+
### Is this a HTTP REST API returning data as JSON?
26
+
27
+
The API documentation should show which HTTP method must be used to retrieve data from the API.
28
+
For example, the [documentation for the Exchange Rates Data API](https://apilayer.com/marketplace/exchangerates_data-api#documentation-tab) says the GET method should be used, and that the response is a JSON object.
29
+
30
+
Other API types such as SOAP or GraphQL are not supported.
31
+
32
+
Other encoding schemes such as CSV or Protobuf are not supported.
33
+
34
+
Integrations that require the use of an SDK are not supported.
35
+
36
+
### Do queries return the data synchronously or do they trigger a bulk workflow?
37
+
38
+
Some APIs return the data of interest as part of the response. This is the case for the [Exchange Rates Data API](https://apilayer.com/marketplace/exchangerates_data-api#documentation-tab) - each request results in a response containing the data we're interested in.
39
+
40
+
Other APIs use bulk workflows, which means a query will trigger an asynchronous process on the integration's side. [Zendesk bulk queries](https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/#bulk-mark-tickets-as-spam) are an example of such integrations.
41
+
42
+
An initial request will trigger the workflow and return an ID and a job status. The actual data then needs to be fetched when the asynchronous job is completed.
43
+
44
+
Asynchronous bulk workflows are not supported.
45
+
46
+
### What is the pagination mechanism?
47
+
48
+
The only pagination mechanisms supported are
49
+
50
+
* Offset count passed either by query params or request header such as [Sendgrid](https://docs.sendgrid.com/api-reference/bounces-api/retrieve-all-bounces)
51
+
* Page count passed either by query params or request header such as [Greenhouse](https://developers.greenhouse.io/harvest.html#get-list-applications)
52
+
* Cursor field pointing to the URL of the next page of records such as [Sentry](https://docs.sentry.io/api/pagination/)
53
+
54
+
### What is the authorization mechanism?
55
+
56
+
Endpoints that require authenticating using a query param or a HTTP header, as is the case for the [Exchange Rates Data API](https://apilayer.com/marketplace/exchangerates_data-api#authentication), are supported.
57
+
58
+
Endpoints that require authenticating using Basic Auth over HTTPS, as is the case for [Greenhouse](https://developers.greenhouse.io/harvest.html#authentication), are supported.
59
+
60
+
Endpoints that require authenticating using OAuth 2.0, as is the case for [Strava](https://developers.strava.com/docs/authentication/#introduction), are supported.
61
+
62
+
Other authentication schemes such as GWT are not supported.
63
+
64
+
### Is the schema static or dynamic?
65
+
66
+
Only static schemas are supported.
67
+
68
+
Dynamically deriving the schema from querying an endpoint is not supported.
69
+
70
+
### Does the endpoint have a strict rate limit
71
+
72
+
Throttling is not supported, but the connector can use exponential backoff to avoid API bans in case it gets rate limited. This can work for APIs with high rate limits, but not for those that have strict limits on a small time-window, such as the [Reddit Ads API](https://ads-api.reddit.com/docs/#section/Rate-Limits), which limits to 1 request per second.
|[Error detection](./error-handling.md)|[From HTTP status code](./error-handling.md#from-status-code)<br/>[From error message](./error-handling.md#from-error-message)|
33
-
|[Backoff strategies](./error-handling.md#Backoff-Strategies)|[Exponential](./error-handling.md#Exponential-backoff)<br/>[Constant](./error-handling.md#Constant-Backoff)<br/>[Derived from headers](./error-handling.md#Wait-time-defined-in-header)|
88
+
|[Error detection](./error-handling.md)|[From HTTP status code](./error-handling.md#from-status-code)<br/>[From error message](./error-handling.md#from-error-message)|
89
+
|[Backoff strategies](./error-handling.md#Backoff-Strategies)|[Exponential](./error-handling.md#Exponential-backoff)<br/>[Constant](./error-handling.md#Constant-Backoff)<br/>[Derived from headers](./error-handling.md#Wait-time-defined-in-header)|
34
90
35
91
If a feature you require is not supported, you can [request the feature](../../contributing-to-airbyte/README.md#requesting-new-features) and use the [Python CDK](../cdk-python/README.md).
36
92
@@ -67,7 +123,7 @@ There is currently only one implementation, the `SimpleRetriever`, which is defi
67
123
68
124
1. Requester: Describes how to submit requests to the API source
69
125
2. Paginator: Describes how to navigate through the API's pages
70
-
3. Record selector: Describes how to extract records from an HTTP response
126
+
3. Record selector: Describes how to extract records from a HTTP response
71
127
4. Stream Slicer: Describes how to partition the stream, enabling incremental syncs and checkpointing
72
128
73
129
Each of those components (and their subcomponents) are defined by an explicit interface and one or many implementations.
0 commit comments