Airflow 2 to 3 Rest API Changes #43378
Labels
airflow3.0:candidate
Potential candidates for Airflow 3.0
area:API
Airflow's REST/HTTP API
kind:documentation
kind:feature
Feature Requests
kind:meta
High-level information important to the community
Rest API Breaking Change
The goal is to make an exhaustive list of of the breaking / noticeable changes for the Rest API moving from airflow 2 to airflow 3.
Some of those changes are inherent to FastAPI and hard to circumvent, some others are here just for code clarity or simplicity and can be 'fixed'. That being said I think that we should take the opportunity of Airflow 3 to clean/adjust the code allowing ourselves a few breaking changes when necessary.
Th API now returns 422 instead of 400 in cases for validation/deserialization errors (body, query/path parameters).
When listing a resource for instance on GET
/dags
,fields
parameter is not supported anymore to obtain a partial response. Full objects will be returned by the endpoint.Passing
list
query parameter switched fromform, non exploded
toform, exploded
, i.e before?my_list=item1,item2
now?my_list=item1&my_list=item2
execution_date
deprecated and is now removed. Any payload or query parameters mentioning this field has been removed.datetime format are
RFC3339-compliant
in FastAPI, more permissive thanISO8601
. meaning that the API returnszulu
datetime for responses, more info here. BothZ
and00+xx
are supported for payload and params. Workaround here Unable to parse Zulu datetimes using standard library pydantic/pydantic#6028 (comment). This is due to pydantic v2 default behaviorPatch on DagRun and TaskInstance are more generic and allow in addition to update the ressource state to update the note content. Therefore the two legacy dedicated endpoints to update DagRun note and TaskInstance note have been removed. Same for the set task instance state, it is now handled by the broader PATCH on task intances.
assets/queuedEvent
endpoints have moved toassets/queuedEvents
for consistency.dag_parsing endpoint now returns a 409 when the
DagPriorityParsingRequest
already exists. (It was returning 201 before).Committer
The text was updated successfully, but these errors were encountered: