Package: airflow-extended-api
中文版文档Airflow Extended API PluginAirflow Extended API, which
exportairflow CLI commandas
REST-ful API to extend the ability of airflow official API.This plugin is available for airflow 2.x Version and extensible, as you can easily define your own API to execute any
Airflow CLI command so that it fits your demand.Current Supported CommandsThe following commands are supported now, and more is coming.airflow dags backfillairflow tasks runairflow tasks clearPlugin InstallInstall the plugin viapippipinstallairflow-extended-apiRestart the Airflow Web ServerOpen Airflow UI inDocs - Extended API OpenAPIorhttp://localhost:8080/to view extended API details in swagger
UI.UsageExamplescurl request example:curl-XPOST--user"airflow:airflow"https://localhost:8080/api/extended/clear-H"Content-Type: application/json"-d'{"dagName": "string","downstream": true,"endDate": "2019-08-24T14:15:22Z","jobName": "string","startDate": "2019-08-24T14:15:22Z","username": "Extended API"}'Response Schema:{"executed_command":"string","exit_code":0,"output_info":["string"],"error_info":["string"]}curl without Credentials dataNote that you will need to pass credentials' data in--user "{username}:{password}"format, or you will get an
Unauthorized error.curl-XPOSThttp://127.0.0.1:8080/api/extended/clear-H"Content-Type: application/json"-d'{"dagName": "string","downstream": true,"endDate": "2019-08-24T14:15:22Z","jobName": "string","startDate": "2019-08-24T14:15:22Z","username": "Extended API"}'response{"detail":null,"status":401,"title":"Unauthorized","type":"https://airflow.apache.org/docs/apache-airflow/2.2.5/stable-rest-api-ref.html#section/Errors/Unauthenticated"}curl with wrong CLI Commandcurl-XPOST--user"airflow:airflow"http://127.0.0.1:8080/api/extended/clear-H"Content-Type: application/json"-d'{"dagName": "string","downstream": true,"endDate": "2019-08-24T14:15:22Z","jobName": "string","startDate": "2019-08-24T14:15:22Z","username": "Extended API"}'response{"error_info":["Traceback (most recent call last):","  File \"/home/airflow/.local/bin/airflow\", line 8, in <module>","    sys.exit(main())","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/__main__.py\", line 48, in main","    args.func(args)","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/cli/cli_parser.py\", line 48, in command","    return func(*args, **kwargs)","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/cli.py\", line 92, in wrapper","    return f(*args, **kwargs)","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/cli/commands/task_command.py\", line 506, in task_clear","    dags = get_dags(args.subdir, args.dag_id, use_regex=args.dag_regex)","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/cli.py\", line 203, in get_dags","    return [get_dag(subdir, dag_id)]","  File \"/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/cli.py\", line 193, in get_dag","    f\"Dag {dag_id!r} could not be found; either it does not exist or it failed to parse.\"","airflow.exceptions.AirflowException: Dag 'string' could not be found; either it does not exist or it failed to parse.",""],"executed_command":"airflow tasks clear string -e 2019-08-24T14:15:22+00:00 -s 2019-08-24T14:15:22+00:00 -t string -y -d","exit_code":1,"output_info":["[\u001b[34m2022-04-22 10:05:50,538\u001b[0m] {\u001b[34mdagbag.py:\u001b[0m500} INFO\u001b[0m - Filling up the DagBag from /opt/airflow/dags\u001b[0m",""]}Project Plansupport custom configurationLinks and ReferencesAirflow configuration documentationAirflow CLI command documentationThis project was inspired by the following projects:andreax79/airflow-code-editorairflow-plugins/airflow_api_pluginContact email: Eric Caoitsericsmail@gmail.com