or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

components.mdconfiguration.mdindex.mdstreams.md
tile.json

tessl/docker-airbyte--source-zendesk-chat

Airbyte source connector for extracting data from Zendesk Chat API endpoints

Workspace
tessl
Visibility
Public
Created
Last updated
Describes

pkg:docker/airbyte/source-zendesk-chat@1.2.x

To install, run

npx @tessl/cli install tessl/docker-airbyte--source-zendesk-chat@1.2.0

index.mddocs/

Airbyte Source Zendesk Chat

An 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.

Package Information

  • Package Name: airbyte/source-zendesk-chat
  • Package Type: Docker Container (Airbyte Source Connector)
  • Language: YAML (declarative manifest) + Python (custom components)
  • Installation: docker pull airbyte/source-zendesk-chat:1.2.16

Core Imports

This 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]

Basic Usage

# 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.json

Architecture

This connector uses Airbyte's Declarative Manifest framework:

  • Manifest Configuration (manifest.yaml): Defines API endpoints, authentication, pagination, and data extraction rules
  • Custom Python Components (components.py): Handles specialized data processing for complex API responses
  • Docker Container: Runs within source-declarative-manifest base image
  • Base URL Pattern: https://{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.

Capabilities

Docker Commands

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]

Configuration

Configuration Schema

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"]
}

Available Streams

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)

Data Streams

Custom Record Processing

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
        ...

Custom Components

Types

// 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"]}
}