A Python client library for interacting with Tapdata API.
- π Complete authentication support
- π¦ Type-safe data models
- π― Clean API interface
- π Connection and task management
- π Task log queries
β οΈ Detailed error handling- π Comprehensive documentation and type hints
pip install tapdata-sdkOr install from source:
git clone https://github.com/lddlww/tapdata_sdk.git
cd tapdata_sdk
pip install -e .from tapdata_sdk import TapdataClient
# Initialize client
client = TapdataClient("http://localhost:3030")
# Login
client.login("admin@test.com", "password")
# Query connections
connections = client.connections.list()
for conn in connections:
print(f"{conn.name}: {conn.status}")
# Query tasks
tasks = client.tasks.list()
for task in tasks:
print(f"{task.name}: {task.status}")
# Get Table Relation
table_relation = client.tasks.get_table_relation(task_id='xxx')
print(f"{table_relation.table_name_relation}")from tapdata_sdk import ConnectionType, DatabaseType, Status
# Query source connections
source_connections = client.connections.list_source()
# Query MySQL connections
mysql_connections = client.connections.list_mysql()
# Query valid connections
valid_connections = client.connections.list_valid()
# Filter using enum types
connections = client.connections.list(
connection_type=ConnectionType.SOURCE,
database_type=DatabaseType.MYSQL,
status=Status.COMPLETE
)
# Get single connection details
connection = client.connections.get("connection_id")
print(connection.endpoint)# Query running tasks
running_tasks = client.tasks.list_running()
# Query tasks with specific status
tasks = client.tasks.list(status=Status.RUNNING)
# Get task details
task = client.tasks.get("task_id")
# Start task
client.tasks.start("task_id")
# Stop task
client.tasks.stop("task_id")
# Reset task
client.tasks.reset("task_id")
# Delete task
client.tasks.delete("task_id")import time
# Get logs from the last hour
end_time = int(time.time() * 1000)
start_time = end_time - 3600000 # One hour ago
logs = client.tasks.get_logs(
task_id="task_id",
task_record_id="record_id",
start=start_time,
end=end_time,
page=1,
page_size=20
)from tapdata_sdk import (
TapdataError,
TapdataAuthError,
TapdataTimeoutError,
TapdataConnectionError
)
try:
client.login("admin@test.com", "wrong_password")
except TapdataAuthError as e:
print(f"Authentication failed: {e.message}")
except TapdataTimeoutError as e:
print(f"Request timeout: {e.message}")
except TapdataConnectionError as e:
print(f"Connection error: {e.message}")
except TapdataError as e:
print(f"API error: {e.message}")# Custom timeout and SSL verification
client = TapdataClient(
base_url="https://api.tapdata.io",
timeout=60, # 60 second timeout
verify_ssl=False # Disable SSL verification (not recommended in production)
)
# Use existing access_token
client = TapdataClient(
base_url="http://localhost:3030",
access_token="your-existing-token"
)
# Check authentication status
if client.is_authenticated():
print("Authenticated")
# Logout
client.logout()Main client class providing authentication and sub-client access.
Parameters:
base_url(str): API base URLaccess_token(str, optional): Access tokentimeout(int): Request timeout in seconds, default 30verify_ssl(bool): Whether to verify SSL certificate, default True
Methods:
login(email, password, secret): User loginlogout(): Logoutis_authenticated(): Check if authenticatedget_timestamp(): Get server timestamp
Properties:
connections: ConnectionClient instancetasks: TaskClient instance
Connection management client.
Methods:
list(connection_type, database_type, status, skip, limit): Query connection listget(connection_id): Get single connectionlist_source(): Get all source connectionslist_target(): Get all target connectionslist_mysql(): Get all MySQL connectionslist_clickhouse(): Get all ClickHouse connectionslist_mongodb(): Get all MongoDB connectionslist_valid(): Get all valid connectionslist_invalid(): Get all invalid connections
Task management client.
Methods:
list(status, skip, limit): Query task listget(task_id): Get single tasklist_running(): Get all running tasksstart(task_id): Start taskstop(task_id): Stop taskreset(task_id): Reset taskdelete(task_id): Delete taskget_logs(task_id, task_record_id, start, end, page, page_size, levels): Get task logs
from tapdata_sdk import ConnectionType, DatabaseType, Status, LogLevel
# Connection types
ConnectionType.SOURCE
ConnectionType.TARGET
# Database types
DatabaseType.MYSQL
DatabaseType.CLICKHOUSE
DatabaseType.MONGODB
DatabaseType.POSTGRESQL
DatabaseType.ORACLE
DatabaseType.SQLSERVER
# Status
Status.RUNNING
Status.COMPLETE
Status.ERROR
# ... more statuses
# Log levels
LogLevel.INFO
LogLevel.WARN
LogLevel.ERROR
LogLevel.DEBUG# Clone repository
git clone <repository-url>
cd tapdata-sdk
# Create virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or
venv\Scripts\activate # Windows
# Install dependencies
pip install -e ".[dev]"pytest tests/black tapdata_sdk/
isort tapdata_sdk/- β¨ added TaskDetail and TaskRelation function
- β¨ Refactored code architecture with modular design
- π¦ Added data model classes (Connection, Task, TaskLog)
- π― Improved enum types using Python Enum
- π§ Optimized error handling with multiple exception types
- π Enhanced documentation and type hints
- ποΈ Separated client responsibilities (ConnectionClient, TaskClient)
- π Improved authentication flow
- π Optimized logging
- π Initial release
MIT License
Issues and Pull Requests are welcome!
For questions, please submit an Issue or contact the maintainers.