Implementation:Apache Airflow Provider Yaml Schema
| Knowledge Sources | |
|---|---|
| Domains | Plugin_System, Configuration |
| Last Updated | 2026-02-08 00:00 GMT |
Overview
Concrete tool for defining provider package metadata provided by the provider.yaml schema and directory structure conventions.
Description
The provider.yaml file declares all metadata for a provider package: name, description, versions, integrations, and lists of all components (hooks, operators, sensors, triggers, connection types). The standard directory structure ensures consistent organization across all providers.
Usage
Create a provider.yaml file in your provider's root directory following the schema. Use the MANAGING_PROVIDERS_LIFECYCLE.rst guide for step-by-step instructions.
Code Reference
Source Location
- Repository: Apache Airflow
- File: providers/MANAGING_PROVIDERS_LIFECYCLE.rst (L54-150)
- File: providers/apache/kafka/provider.yaml (example)
- File: providers/standard/provider.yaml (standard provider example)
Signature
# provider.yaml schema
package-name: apache-airflow-providers-example
name: Example
state: ready
source-date-epoch: 1700000000
versions:
- 1.0.0
integrations:
- integration-name: Example Service
external-doc-url: https://example.com/docs
how-to-guide:
- /docs/example_usage.rst
tags: [service]
hooks:
- integration-name: Example Service
python-modules:
- airflow.providers.example.hooks.example
operators:
- integration-name: Example Service
python-modules:
- airflow.providers.example.operators.example
sensors:
- integration-name: Example Service
python-modules:
- airflow.providers.example.sensors.example
triggers:
- integration-name: Example Service
python-modules:
- airflow.providers.example.triggers.example
connection-types:
- hook-class-name: airflow.providers.example.hooks.example.ExampleHook
connection-type: example
Import
# Install a provider package
pip install apache-airflow-providers-example
# Directory structure
providers/example/
├── pyproject.toml
├── provider.yaml
├── src/airflow/providers/example/
│ ├── __init__.py
│ ├── hooks/
│ ├── operators/
│ ├── sensors/
│ ├── triggers/
│ └── transfers/
└── tests/
├── unit/
├── integration/
└── system/
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| package-name | str | Yes | PyPI package name |
| name | str | Yes | Human-readable provider name |
| state | str | Yes | Lifecycle state (ready/incubation/attic) |
| versions | list[str] | Yes | Version history |
| integrations | list[dict] | Yes | External service integrations |
Outputs
| Name | Type | Description |
|---|---|---|
| Provider package | Python package | Installable provider distribution |
| Registered components | ProvidersManager | Hooks, operators, sensors discovered by Airflow |
Usage Examples
Create New Provider
# Use breeze to scaffold a new provider
breeze release-management prepare-provider-packages --package-format wheel
# Or manually create the directory structure
mkdir -p providers/my_service/src/airflow/providers/my_service/{hooks,operators,sensors}