| { |
| "$schema": "http://json-schema.org/draft-07/schema#", |
| "type": "object", |
| "properties": { |
| "package-name": { |
| "description": "Package name available under which the package is available in the PyPI repository.", |
| "type": "string" |
| }, |
| "name": { |
| "description": "Provider name", |
| "type": "string" |
| }, |
| "description": { |
| "description": "Information about the package in RST format", |
| "type": "string" |
| }, |
| "versions": { |
| "description": "List of available versions in PyPI. Sorted descending according to release date.", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "suspended": { |
| "description": "If set to true, the provider is suspended and it's not a candidate for release nor contributes dependencies to constraint calculations/CI image. Tests are excluded.", |
| "type:": "boolean" |
| }, |
| "dependencies": { |
| "description": "Dependencies that should be added to the provider", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "excluded-python-versions": { |
| "description": "List of python versions excluded for that provider", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "integrations": { |
| "description": "List of integrations supported by the provider.", |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "integration-name": { |
| "type": "string", |
| "description": "Name of the integration." |
| }, |
| "external-doc-url": { |
| "type": "string", |
| "description": "URL to external documentation for the integration." |
| }, |
| "how-to-guide": { |
| "description": "List of paths to how-to-guide for the integration. The path must start with '/docs/'", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "logo": { |
| "description": "Path to the logo for the integration. The path must start with '/integration-logos/'", |
| "type": "string" |
| }, |
| "tags": { |
| "description": "List of tags describing the integration. While we're using RST, only one tag is supported per integration.", |
| "type": "array", |
| "items": { |
| "type": "string", |
| "enum": [ |
| "alibaba", |
| "apache", |
| "aws", |
| "azure", |
| "dbt", |
| "gcp", |
| "gmp", |
| "google", |
| "kafka", |
| "protocol", |
| "service", |
| "software", |
| "yandex" |
| ] |
| }, |
| "minItems": 1, |
| "maxItems": 1 |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "integration-name", |
| "external-doc-url", |
| "tags" |
| ] |
| } |
| }, |
| "operators": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "integration-name": { |
| "type": "string", |
| "description": "Integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "python-modules": { |
| "description": "List of python modules containing the operators.", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "integration-name", |
| "python-modules" |
| ] |
| } |
| }, |
| "sensors": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "integration-name": { |
| "type": "string", |
| "description": "Integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "python-modules": { |
| "description": "List of python modules containing the sensors.", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| } |
| }, |
| "required": [ |
| "integration-name", |
| "python-modules" |
| ], |
| "additionalProperties": true |
| } |
| }, |
| "hooks": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "integration-name": { |
| "type": "string", |
| "description": "Integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "python-modules": { |
| "description": "List of python modules containing the hooks.", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "integration-name", |
| "python-modules" |
| ] |
| } |
| }, |
| "transfers": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "how-to-guide": { |
| "description": "Path to how-to-guide for the transfer. The path must start with '/docs/'", |
| "type": "string" |
| }, |
| "source-integration-name": { |
| "type": "string", |
| "description": "Integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "target-integration-name": { |
| "type": "string", |
| "description": "Target integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "python-module": { |
| "type": "string", |
| "description": "List of python modules containing the transfers." |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "source-integration-name", |
| "target-integration-name", |
| "python-module" |
| ] |
| } |
| }, |
| "triggers": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "integration-name": { |
| "type": "string", |
| "description": "Integration name. It must have a matching item in the 'integration' section of any provider." |
| }, |
| "class-names": { |
| "description": "List of the trigger class name that implements trigger.", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "integration-name", |
| "class-names" |
| ] |
| } |
| }, |
| "connection-types": { |
| "type": "array", |
| "description": "Array of connection types mapped to hook class names", |
| "items": { |
| "type": "object", |
| "properties": { |
| "connection-type": { |
| "description": "Type of connection defined by the provider", |
| "type": "string" |
| }, |
| "hook-class-name": { |
| "description": "Hook class name that implements the connection type", |
| "type": "string" |
| } |
| }, |
| "required": [ |
| "connection-type", |
| "hook-class-name" |
| ] |
| } |
| }, |
| "extra-links": { |
| "type": "array", |
| "description": "Operator class names that provide extra link functionality", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "additional-extras": { |
| "type": "array", |
| "items": { |
| "type": "object", |
| "properties": { |
| "name": { |
| "description": "Name of the extra", |
| "type": "string" |
| }, |
| "dependencies": { |
| "description": "Dependencies that should be added for the extra", |
| "type": "array", |
| "items": { |
| "type": "string" |
| } |
| } |
| }, |
| "required": [ "name", "dependencies"] |
| }, |
| |
| "description": "Additional extras that the provider should have. Replaces auto-generated cross-provider extras, if matching the same prefix, so that you can specify boundaries for existing dependencies." |
| }, |
| "task-decorators": { |
| "type": "array", |
| "description": "Decorators to use with the TaskFlow API. Can be accessed by users via '@task.<name>'", |
| "items": { |
| "name": { |
| "type": "string" |
| }, |
| "path": { |
| "type": "string" |
| } |
| } |
| }, |
| "secrets-backends": { |
| "type": "array", |
| "description": "Secrets Backend class names", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "logging": { |
| "type": "array", |
| "description": "Logging Task Handlers class names", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "auth-backends": { |
| "type": "array", |
| "description": "API Auth Backend module names", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "notifications": { |
| "type": "array", |
| "description": "Notification class names", |
| "items": { |
| "type": "string" |
| } |
| }, |
| "plugins": { |
| "type": "array", |
| "description": "Plugins exposed by the provider", |
| "items": { |
| "name": { |
| "type": "string" |
| }, |
| "plugin-class": { |
| "type": "string" |
| } |
| } |
| } |
| }, |
| "additionalProperties": false, |
| "required": [ |
| "name", |
| "package-name", |
| "description", |
| "suspended", |
| "dependencies", |
| "versions" |
| ] |
| } |