Airbyte source connector for extracting data from Zendesk Chat API endpoints
pkg:docker/airbyte/source-zendesk-chat@1.2.x
npx @tessl/cli install tessl/docker-airbyte--source-zendesk-chat@1.2.0An Airbyte source connector for extracting data from Zendesk Chat API endpoints. This is a manifest-only declarative connector that extracts chat data including agents, conversations, bans, and configuration settings from Zendesk Chat accounts.
docker pull airbyte/source-zendesk-chat:1.2.16This connector is accessed via Docker commands and Airbyte's connector protocol:
# Pull the Docker image
docker pull airbyte/source-zendesk-chat:1.2.16
# Use with local Docker
docker run airbyte/source-zendesk-chat:1.2.16 <command> [options]# 1. Create configuration file
cat > config.json << EOF
{
"start_date": "2021-01-01T00:00:00Z",
"subdomain": "mycompany",
"credentials": {
"credentials": "access_token",
"access_token": "your-zendesk-chat-access-token"
}
}
EOF
# 2. View connector specification
docker run airbyte/source-zendesk-chat:1.2.16 spec
# 3. Test connection
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 check --config /config/config.json
# 4. Discover available streams
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 discover --config /config/config.json
# 5. Sync data
docker run -v $(pwd):/config airbyte/source-zendesk-chat:1.2.16 read \
--config /config/config.json \
--catalog /config/catalog.jsonThis connector uses Airbyte's Declarative Manifest framework:
manifest.yaml): Defines API endpoints, authentication, pagination, and data extraction rulescomponents.py): Handles specialized data processing for complex API responsessource-declarative-manifest base imagehttps://{subdomain}.zendesk.com/api/v2/chat/The connector supports both full refresh and incremental synchronization modes depending on the stream, with automatic retry handling and rate limiting compliance.
The core API for interacting with this connector through standard Airbyte connector protocol commands.
# Get connector specification
docker run airbyte/source-zendesk-chat:1.2.16 spec
# Check connection configuration
docker run -v /path/to/config:/config airbyte/source-zendesk-chat:1.2.16 check \
--config /config/config.json
# Discover available streams
docker run -v /path/to/config:/config airbyte/source-zendesk-chat:1.2.16 discover \
--config /config/config.json
# Read data from streams
docker run -v /path/to/config:/config airbyte/source-zendesk-chat:1.2.16 read \
--config /config/config.json \
--catalog /config/catalog.json \
[--state /config/state.json]The JSON configuration schema supported by the connector, based on the manifest specification.
{
"type": "object",
"properties": {
"start_date": {
"type": "string",
"format": "date-time",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
"description": "The date from which to replicate data (YYYY-MM-DDTHH:MM:SSZ)",
"examples": ["2021-02-01T00:00:00Z"]
},
"subdomain": {
"type": "string",
"pattern": "^(?!https://)",
"description": "Zendesk account subdomain (without https://)",
"examples": ["myzendeskchat"]
},
"credentials": {
"oneOf": [
{
"type": "object",
"properties": {
"credentials": {"const": "oauth2.0"},
"client_id": {"type": "string"},
"client_secret": {"type": "string"},
"access_token": {"type": "string"},
"refresh_token": {"type": "string"}
}
},
{
"type": "object",
"properties": {
"credentials": {"const": "access_token"},
"access_token": {"type": "string"}
}
}
]
}
},
"required": ["start_date", "subdomain"]
}Twelve data streams available for extraction, each with specific sync modes and API endpoints.
# Stream definitions from manifest.yaml
streams:
accounts: # /account (full_refresh only)
agents: # /agents (full_refresh, incremental)
agent_timeline: # /incremental/agent_timeline (full_refresh, incremental)
bans: # /bans (full_refresh, incremental) - uses custom extractor
chats: # /incremental/chats (full_refresh, incremental)
departments: # /departments (full_refresh only)
goals: # /goals (full_refresh only)
roles: # /roles (full_refresh only)
routing_settings: # /routing_settings/account (full_refresh only)
shortcuts: # /shortcuts (full_refresh only)
skills: # /skills (full_refresh only)
triggers: # /triggers (full_refresh only)Python components for specialized data extraction and transformation of API responses.
class ZendeskChatBansRecordExtractor(RecordExtractor):
def extract_records(
self,
response: requests.Response
) -> Iterable[Mapping[str, Any]]:
# Processes bans data by unnesting visitor and ip_address fields
# Combines ip_address and visitor arrays, sorts by created_at
...// Core Airbyte protocol types
{
"AirbyteMessage": {
"type": "object",
"properties": {
"type": {"enum": ["RECORD", "STATE", "LOG", "SPEC", "CONNECTION_STATUS", "CATALOG"]},
"record": {"$ref": "#/AirbyteRecordMessage"},
"state": {"$ref": "#/AirbyteStateMessage"},
"log": {"$ref": "#/AirbyteLogMessage"}
}
},
"ConfiguredCatalog": {
"type": "object",
"properties": {
"streams": {
"type": "array",
"items": {"$ref": "#/ConfiguredAirbyteStream"}
}
}
},
"SyncMode": {"enum": ["full_refresh", "incremental"]},
"DestinationSyncMode": {"enum": ["overwrite", "append", "append_dedup"]}
}