-
Notifications
You must be signed in to change notification settings - Fork 71
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Feature Request: Add Scheduling Capabilities for Cloud Connections
Requested by
@aaronsteers (AJ Steers)
Context
Currently, PyAirbyte's Cloud capabilities allow creating and managing connections, but there's no interface for setting or updating sync schedules. This feature request proposes adding scheduling capabilities that align with Airbyte's API primitives.
Proposed Interface
Based on investigation of the Airbyte API, the scheduling system uses:
schedule_type: EitherCRONorMANUALcron_expression: A standard cron string when usingCRONschedule type
This is compatible with a simple cron string interface. The proposed interface would:
-
During Connection Creation (
CloudWorkspace.deploy_connection()):- Add optional
scheduleparameter accepting either:None(default): Manual sync only- A cron expression string (e.g.,
"0 */6 * * *"for every 6 hours)
- Internally converts cron string to
AirbyteAPIConnectionScheduleobject
- Add optional
-
For Existing Connections (
CloudConnectionclass):- Add
set_schedule(cron_expression: str | None)methodNonesets schedule to MANUAL- String sets schedule to CRON with the provided expression
- Add
get_schedule()method returning current schedule info - These methods are non-destructive (unlike config updates)
- Add
-
MCP Tools:
set_cloud_connection_schedule(connection_id, cron_expression)- marked as non-destructiveget_cloud_connection_schedule(connection_id)- read-only
Example Usage
import airbyte as ab
from airbyte import cloud
workspace = cloud.CloudWorkspace(...)
# Create connection with schedule
connection = workspace.deploy_connection(
name="My Connection",
source=source,
destination=destination,
schedule="0 */6 * * *", # Every 6 hours
)
# Update schedule on existing connection
connection.set_schedule("0 0 * * *") # Daily at midnight
# Disable automatic syncs
connection.set_schedule(None) # Manual only
# View current schedule
schedule_info = connection.get_schedule()
print(f"Type: {schedule_info.schedule_type}")
print(f"Cron: {schedule_info.cron_expression}")Implementation Notes
- The Airbyte API already supports scheduling via
AirbyteAPIConnectionScheduleinPatchConnectionRequest - Cron expressions should be validated before sending to API
- Consider adding helper constants for common schedules (hourly, daily, weekly)
- Documentation should include cron expression examples and link to cron syntax reference
Related PR
This feature request was created during work on #841, where an initial update_schedule() method was removed to avoid exposing internal API models in the public interface.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request