Make API Client
The makeApiClient method configures how your connector will make API requests to the external service.
This method is required for all authentication types and creates a REST API client with the appropriate authentication headers, base URL, and other configuration settings.
Implementation Examples
You can implement this method in two ways:
Mapping (Recommended)
Most API clients can be configured using a mapping:
# Connector definition: Simple Bearer token authentication
makeApiClient:
type: mapping
mapping:
baseUri: https://api.example.com
headers:
Authorization:
$concat:
- 'Bearer '
- $var: credentials.access_tokenAvailable fields in the mapping:
baseUri- base URL for all API requests.headers- default headers to include in all requests.query- default query parameters to include in all requests.auth- parameters for basic authentication:usernamepassword
responseHandlers- list of response handlers to apply to all responses (see below).
JavaScript Implementation
For more complex API clients, you can use JavaScript code.
The function should return a RestApiClient configuration object.
Example:
# Connector definition: Dynamic API client with custom headers
makeApiClient:
type: javascript
code: |
export default function makeApiClient({ credentials }) {
return {
baseUri: "https://api.example.com",
headers: {
Authorization: `Bearer ${credentials.access_token}`,
"Content-Type": "application/json",
Accept: "application/json",
},
}
}Response Handlers
By default, API client will handle responses using the following logic:
- status >= 200 && status < 300 - return response.
- status == 401 - throw ACCESS_TOKEN_EXPIRED error that will trigger an attempt to refresh credentials (if possible).
- status == 429 - throw RATE_LIMIT_EXCEEDED error that will lead to retrying the request with exponential backoff until timeout is reached.
You can augment or override this logic by providing a list of response handlers. Each handler consists of:
- A filter that checks response status, headers, or data and returns true if the handler should be applied.
- A flag that indicates whether it is a successful request or an error should be thrown.
- Data that will be returned if request is successful (by default, the response body will be returned).
- Error that will be thrown if the request is not successful.
Example:
# Connector definition: Handle custom error response indicating expired token
makeApiClient:
type: mapping
mapping:
baseUri: https://api.example.com
headers:
Authorization:
$concat:
- 'Bearer '
- $var: credentials.access_token
responseHandlers:
- match:
$eval:
$var: response.data.category
is: EXPIRED_AUTHENTICATION
isSuccess: false
error:
message: Access token has expired
key: access_token_expired
data:
$var: response.dataHandler configuration fields:
match- Formula that returns true or false based on the response.isSuccess- flag that indicates whether it is a successful request or an error should be thrown.error- error that will be thrown if the request is not successful. Error fields:message- error message.key- error key (one of the available keys of ConnectionError type)data- additional data to include in the error.
Updated 2 days ago
