naftiko: 1.0.0-alpha2 info: label: Airflow API — Connection description: 'Airflow API — Connection. 8 operations. Lead operation: Airflow Get Connections. Self-contained Naftiko capability covering one Airflow business surface.' tags: - Airflow - Connection created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: AIRFLOW_API_KEY: AIRFLOW_API_KEY capability: consumes: - type: http namespace: airflow-connection baseUri: '' description: Airflow API — Connection business capability. Self-contained, no shared references. resources: - name: api-v2-connections path: /api/v2/connections operations: - name: getconnections method: GET description: Airflow Get Connections outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer - name: offset in: query type: integer - name: order_by in: query type: array description: 'Attributes to order by, multi criteria sort is supported. Prefix with `-` for descending order. Supported attributes: `conn_id, conn_type, description, host, po' - name: connection_id_pattern in: query type: string description: 'SQL LIKE expression — use `%` / `_` wildcards (e.g. `%customer_%`). or the pipe `|` operator for OR logic (e.g. `dag1 | dag2`). Regular expressions are **not** ' - name: postconnection method: POST description: Airflow Post Connection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: bulkconnections method: PATCH description: Airflow Bulk Connections outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: api-v2-connections-defaults path: /api/v2/connections/defaults operations: - name: createdefaultconnections method: POST description: Airflow Create Default Connections outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-v2-connections-test path: /api/v2/connections/test operations: - name: testconnection method: POST description: Airflow Test Connection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: api-v2-connections-connection_id path: /api/v2/connections/{connection_id} operations: - name: deleteconnection method: DELETE description: Airflow Delete Connection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: connection_id in: path type: string required: true - name: getconnection method: GET description: Airflow Get Connection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: connection_id in: path type: string required: true - name: patchconnection method: PATCH description: Airflow Patch Connection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: connection_id in: path type: string required: true - name: update_mask in: query type: string - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.AIRFLOW_API_KEY}}' exposes: - type: rest namespace: airflow-connection-rest port: 8080 description: REST adapter for Airflow API — Connection. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/v2/connections name: api-v2-connections description: REST surface for api-v2-connections. operations: - method: GET name: getconnections description: Airflow Get Connections call: airflow-connection.getconnections with: limit: rest.limit offset: rest.offset order_by: rest.order_by connection_id_pattern: rest.connection_id_pattern outputParameters: - type: object mapping: $. - method: POST name: postconnection description: Airflow Post Connection call: airflow-connection.postconnection with: body: rest.body outputParameters: - type: object mapping: $. - method: PATCH name: bulkconnections description: Airflow Bulk Connections call: airflow-connection.bulkconnections with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/v2/connections/defaults name: api-v2-connections-defaults description: REST surface for api-v2-connections-defaults. operations: - method: POST name: createdefaultconnections description: Airflow Create Default Connections call: airflow-connection.createdefaultconnections outputParameters: - type: object mapping: $. - path: /v1/api/v2/connections/test name: api-v2-connections-test description: REST surface for api-v2-connections-test. operations: - method: POST name: testconnection description: Airflow Test Connection call: airflow-connection.testconnection with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/api/v2/connections/{connection-id} name: api-v2-connections-connection-id description: REST surface for api-v2-connections-connection_id. operations: - method: DELETE name: deleteconnection description: Airflow Delete Connection call: airflow-connection.deleteconnection with: connection_id: rest.connection_id outputParameters: - type: object mapping: $. - method: GET name: getconnection description: Airflow Get Connection call: airflow-connection.getconnection with: connection_id: rest.connection_id outputParameters: - type: object mapping: $. - method: PATCH name: patchconnection description: Airflow Patch Connection call: airflow-connection.patchconnection with: connection_id: rest.connection_id update_mask: rest.update_mask body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: airflow-connection-mcp port: 9090 transport: http description: MCP adapter for Airflow API — Connection. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: airflow-get-connections description: Airflow Get Connections hints: readOnly: true destructive: false idempotent: true call: airflow-connection.getconnections with: limit: tools.limit offset: tools.offset order_by: tools.order_by connection_id_pattern: tools.connection_id_pattern outputParameters: - type: object mapping: $. - name: airflow-post-connection description: Airflow Post Connection hints: readOnly: false destructive: false idempotent: false call: airflow-connection.postconnection with: body: tools.body outputParameters: - type: object mapping: $. - name: airflow-bulk-connections description: Airflow Bulk Connections hints: readOnly: false destructive: false idempotent: true call: airflow-connection.bulkconnections with: body: tools.body outputParameters: - type: object mapping: $. - name: airflow-create-default-connections description: Airflow Create Default Connections hints: readOnly: false destructive: false idempotent: false call: airflow-connection.createdefaultconnections outputParameters: - type: object mapping: $. - name: airflow-test-connection description: Airflow Test Connection hints: readOnly: true destructive: false idempotent: false call: airflow-connection.testconnection with: body: tools.body outputParameters: - type: object mapping: $. - name: airflow-delete-connection description: Airflow Delete Connection hints: readOnly: false destructive: true idempotent: true call: airflow-connection.deleteconnection with: connection_id: tools.connection_id outputParameters: - type: object mapping: $. - name: airflow-get-connection description: Airflow Get Connection hints: readOnly: true destructive: false idempotent: true call: airflow-connection.getconnection with: connection_id: tools.connection_id outputParameters: - type: object mapping: $. - name: airflow-patch-connection description: Airflow Patch Connection hints: readOnly: false destructive: false idempotent: true call: airflow-connection.patchconnection with: connection_id: tools.connection_id update_mask: tools.update_mask body: tools.body outputParameters: - type: object mapping: $.