airbytehq / airbytehq/airbyte-api-python-sdk

Expose cronTimeZone on connection schedule once the public API spec change lands

Open
#207 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
61
Forks
27
Avg merge
4m
Merged PRs (30d)
2

Description

### Summary

The Airbyte public API is gaining timezone support on the connection schedule, and this SDK's generated models will need to pick it up so users can set a non-UTC cron schedule programmatically.

Today the public API's `AirbyteApiConnectionSchedule` request schema exposes only `scheduleType` and `cronExpression`. Reads return the cron expression with the timezone appended (e.g. `0 0 */3 * * ? US/Pacific`), but writes could not accept that form, so a non-UTC schedule could not be created or round-tripped through this SDK — a read-modify-write of a connection with a non-UTC schedule returned HTTP 400.

### What is changing in the API

Additive, backward compatible:

- New optional `cronTimeZone` string on `AirbyteApiConnectionSchedule`. Accepts a supported timezone ID (e.g. `US/Pacific`) or a fixed offset (e.g. `+05:30`); IDs starting with `Etc` are rejected. Omitting it means UTC, matching current behavior.
- `cronExpression` also accepts the timezone-suffixed form that reads already emit, so a value read back from the API can be sent straight to `POST`/`PATCH`. If both are supplied, the explicit `cronTimeZone` wins.
- The read response shape is unchanged.

### Ask

This SDK regenerates from the upstream OpenAPI spec (`airbyte-api/server-api/src/main/openapi/api_sdk.yaml`) on its scheduled Speakeasy runs, so no hand edits are expected here. This issue exists to track that the generated models actually expose `cronTimeZone` after the spec change lands upstream, and to give users a place to follow the work.

- [ ] Spec change merged in the platform repo
- [ ] Spec synced to the public `airbyte-platform` mirror
- [ ] Generated models in this SDK expose `cronTimeZone`
- [ ] Released version available to users

### Workaround until then

Existing SDK versions can already pass the timezone inside `cronExpression` (e.g. `"0 0 */3 * * ? US/Pacific"`) once the platform change is deployed, since the API accepts the suffixed form.

### Related reports

- https://github.com/airbytehq/airbyte/issues/48883
- https://github.com/airbytehq/terraform-provider-airbyte/issues/461
- https://github.com/airbytehq/terraform-provider-airbyte/issues/121

---
[Devin session](https://app.devin.ai/sessions/5db931c26d7f4400b2c325d16305021d)

Contributor guide

Open the contributing guide

Research direction

Start by checking whether the spec change in airbyte-api/server-api/src/main/openapi/api_sdk.yaml has landed and synced to the public airbyte-platform mirror. After the scheduled Speakeasy generation, inspect the generated models for cronTimeZone; the work is done when it is exposed and a released SDK version is available.

Written by the indexing model from the issue text.

Assessment

Tech stack
openapi, python
Domain
api
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.