docs-archive/apache-airflow-providers-fab/2.0.2/_specs/v1-flask-api.yaml (622 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
---
openapi: 3.0.3
info:
title: "Flask App Builder User & Role API"
version: '1.0.0'
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
contact:
name: Apache Software Foundation
url: https://airflow.apache.org
email: dev@airflow.apache.org
paths:
/roles:
get:
summary: List roles
description: |
Get a list of roles.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: get_roles
tags: [Role]
parameters:
- $ref: '#/components/parameters/PageLimit'
- $ref: '#/components/parameters/PageOffset'
- $ref: '#/components/parameters/OrderBy'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/RoleCollection'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
post:
summary: Create a role
description: |
Create a new role.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: post_role
tags: [Role]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
/roles/{role_name}:
parameters:
- $ref: '#/components/parameters/RoleName'
get:
summary: Get a role
description: |
Get a role.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: get_role
tags: [Role]
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
patch:
summary: Update a role
description: |
Update a role.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: patch_role
tags: [Role]
parameters:
- $ref: '#/components/parameters/UpdateMask'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/Role'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
delete:
summary: Delete a role
description: |
Delete a role.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: delete_role
tags: [Role]
responses:
'204':
description: Success.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
/permissions:
get:
summary: List permissions
description: |
Get a list of permissions.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.role_and_permission_endpoint
operationId: get_permissions
tags: [Permission]
parameters:
- $ref: '#/components/parameters/PageLimit'
- $ref: '#/components/parameters/PageOffset'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/ActionCollection'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
/users:
get:
summary: List users
description: |
Get a list of users.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.user_endpoint
operationId: get_users
tags: [User]
parameters:
- $ref: '#/components/parameters/PageLimit'
- $ref: '#/components/parameters/PageOffset'
- $ref: '#/components/parameters/OrderBy'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/UserCollection'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
post:
summary: Create a user
description: |
Create a new user with unique username and email.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.user_endpoint
operationId: post_user
tags: [User]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'409':
$ref: '#/components/responses/AlreadyExists'
/users/{username}:
parameters:
- $ref: '#/components/parameters/Username'
get:
summary: Get a user
description: |
Get a user with a specific username.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.user_endpoint
operationId: get_user
tags: [User]
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/UserCollectionItem'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
patch:
summary: Update a user
description: |
Update fields for a user.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.user_endpoint
operationId: patch_user
tags: [User]
parameters:
- $ref: '#/components/parameters/UpdateMask'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/User'
responses:
'200':
description: Success.
content:
application/json:
schema:
$ref: '#/components/schemas/UserCollectionItem'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
delete:
summary: Delete a user
description: |
Delete a user with a specific username.
*New in version 2.8.0*
x-openapi-router-controller: airflow.providers.fab.auth_manager.api_endpoints.user_endpoint
operationId: delete_user
tags: [User]
responses:
'204':
description: Success.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/PermissionDenied'
'404':
$ref: '#/components/responses/NotFound'
components:
# Reusable schemas (data models)
schemas:
# Database entities
UserCollectionItem:
description: |
A user object.
*New in version 2.8.0*
type: object
properties:
first_name:
type: string
description: |
The user's first name.
last_name:
type: string
description: |
The user's last name.
username:
type: string
description: |
The username.
minLength: 1
email:
type: string
description: |
The user's email.
minLength: 1
active:
type: boolean
description: Whether the user is active
readOnly: true
nullable: true
last_login:
type: string
format: datetime
description: The last user login
readOnly: true
nullable: true
login_count:
type: integer
description: The login count
readOnly: true
nullable: true
failed_login_count:
type: integer
description: The number of times the login failed
readOnly: true
nullable: true
roles:
type: array
description: |
User roles.
items:
type: object
properties:
name:
type: string
nullable: true
created_on:
type: string
format: datetime
description: The date user was created
readOnly: true
nullable: true
changed_on:
type: string
format: datetime
description: The date user was changed
readOnly: true
nullable: true
User:
type: object
description: |
A user object with sensitive data.
*New in version 2.8.0*
allOf:
- $ref: '#/components/schemas/UserCollectionItem'
- type: object
properties:
password:
type: string
writeOnly: true
UserCollection:
type: object
description: |
Collection of users.
*New in version 2.8.0*
allOf:
- type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/UserCollectionItem'
- $ref: '#/components/schemas/CollectionInfo'
Role:
description: |
a role item.
*New in version 2.8.0*
type: object
properties:
name:
type: string
description: |
The name of the role
minLength: 1
actions:
type: array
items:
$ref: '#/components/schemas/ActionResource'
RoleCollection:
description: |
A collection of roles.
*New in version 2.8.0*
type: object
allOf:
- type: object
properties:
roles:
type: array
items:
$ref: '#/components/schemas/Role'
- $ref: '#/components/schemas/CollectionInfo'
Action:
description: |
An action Item.
*New in version 2.8.0*
type: object
properties:
name:
type: string
description: The name of the permission "action"
nullable: false
ActionCollection:
description: |
A collection of actions.
*New in version 2.8.0*
type: object
allOf:
- type: object
properties:
actions:
type: array
items:
$ref: '#/components/schemas/Action'
- $ref: '#/components/schemas/CollectionInfo'
Resource:
description: |
A resource on which permissions are granted.
*New in version 2.8.0*
type: object
properties:
name:
type: string
description: The name of the resource
nullable: false
ActionResource:
description: |
The Action-Resource item.
*New in version 2.8.0*
type: object
properties:
action:
type: object
$ref: '#/components/schemas/Action'
description: The permission action
resource:
type: object
$ref: '#/components/schemas/Resource'
description: The permission resource
# Generic
Error:
description: |
[RFC7807](https://tools.ietf.org/html/rfc7807) compliant response.
type: object
properties:
type:
type: string
description: |
A URI reference [RFC3986] that identifies the problem type. This specification
encourages that, when dereferenced, it provide human-readable documentation for
the problem type.
title:
type: string
description: A short, human-readable summary of the problem type.
status:
type: number
description: The HTTP status code generated by the API server for this occurrence of the problem.
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem.
instance:
type: string
description: |
A URI reference that identifies the specific occurrence of the problem. It may or may
not yield further information if dereferenced.
required:
- type
- title
- status
CollectionInfo:
description: Metadata about collection.
type: object
properties:
total_entries:
type: integer
description: |
Count of total objects in the current result set before pagination parameters
(limit, offset) are applied.
# Reusable path, query, header and cookie parameters
parameters:
# Pagination parameters
PageOffset:
in: query
name: offset
required: false
schema:
type: integer
minimum: 0
description: The number of items to skip before starting to collect the result set.
PageLimit:
in: query
name: limit
required: false
schema:
type: integer
default: 100
description: The numbers of items to return.
# Database entity fields
Username:
in: path
name: username
schema:
type: string
required: true
description: |
The username of the user.
*New in version 2.8.0*
RoleName:
in: path
name: role_name
schema:
type: string
required: true
description: The role name
OrderBy:
in: query
name: order_by
schema:
type: string
required: false
description: |
The name of the field to order the results by.
Prefix a field name with `-` to reverse the sort order.
*New in version 2.8.0*
UpdateMask:
in: query
name: update_mask
schema:
type: array
items:
type: string
description: |
The fields to update on the resource. If absent or empty, all modifiable fields are updated.
A comma-separated list of fully qualified names of fields.
style: form
explode: false
# Reusable responses, such as 401 Unauthenticated or 400 Bad Request
responses:
# 400
'BadRequest':
description: Client specified an invalid argument.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 401
'Unauthenticated':
description: Request not authenticated due to missing, invalid, authentication info.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 403
'PermissionDenied':
description: Client does not have sufficient permission.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 404
'NotFound':
description: A specified resource is not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 405
'MethodNotAllowed':
description: Request method is known by the server but is not supported by the target resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 406
'NotAcceptable':
description: A specified Accept header is not allowed.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 409
'AlreadyExists':
description: An existing resource conflicts with the request.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
# 500
'Unknown':
description: Unknown server error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
Basic:
type: http
scheme: basic
description: To authenticate FAB auth manager API requests, clients have the option to use basic
authentication. To learn more about FAB auth manager API authentication, please read
https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/api-authentication.html#basic-authentication.
GoogleOpenId:
type: openIdConnect
openIdConnectUrl: https://accounts.google.com/.well-known/openid-configuration
description: To authenticate FAB auth manager API requests, clients have the option to use Google OpenID.
To learn more about Google OpenID authentication, please read
https://airflow.apache.org/docs/apache-airflow-providers-google/stable/api-auth-backend/google-openid.html.
Kerberos:
type: http
scheme: negotiate
description: To authenticate FAB auth manager API requests, clients have the option to use Kerberos
authentication. To learn more about FAB auth manager API authentication, please read
https://airflow.apache.org/docs/apache-airflow-providers-fab/stable/auth-manager/api-authentication.html#kerberos-authentication.
tags:
- name: Role
- name: Permission
- name: User