You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2023/07/31 17:04:07 UTC
[superset] branch master updated: chore(api): clean up API spec (#24838)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 14a27b1ba3 chore(api): clean up API spec (#24838)
14a27b1ba3 is described below
commit 14a27b1ba34973348133b01e49e62ee472961b3b
Author: Sebastian Liebscher <11...@users.noreply.github.com>
AuthorDate: Mon Jul 31 19:03:58 2023 +0200
chore(api): clean up API spec (#24838)
---
superset/advanced_data_type/api.py | 13 ++-
superset/annotation_layers/annotations/api.py | 30 +++----
superset/annotation_layers/annotations/schemas.py | 13 +--
superset/annotation_layers/api.py | 20 ++---
superset/annotation_layers/schemas.py | 12 +--
superset/async_events/api.py | 3 +-
superset/available_domains/api.py | 5 +-
superset/cachekeys/api.py | 10 +--
superset/charts/api.py | 59 ++++++--------
superset/charts/data/api.py | 11 ++-
superset/charts/schemas.py | 14 +---
superset/css_templates/api.py | 5 +-
superset/css_templates/schemas.py | 12 +--
superset/dashboards/api.py | 83 ++++++++-----------
superset/dashboards/filter_sets/api.py | 25 +++---
superset/dashboards/filter_state/api.py | 20 ++---
superset/dashboards/permalink/api.py | 10 +--
superset/dashboards/schemas.py | 12 +--
superset/databases/api.py | 97 ++++++++++-------------
superset/databases/schemas.py | 12 +++
superset/datasets/api.py | 54 ++++++-------
superset/datasets/columns/api.py | 5 +-
superset/datasets/metrics/api.py | 5 +-
superset/datasets/schemas.py | 13 +++
superset/datasource/api.py | 2 +-
superset/embedded/api.py | 6 +-
superset/explore/api.py | 12 ++-
superset/explore/form_data/api.py | 20 ++---
superset/explore/permalink/api.py | 10 +--
superset/importexport/api.py | 9 ++-
superset/queries/api.py | 4 +-
superset/queries/saved_queries/api.py | 13 ++-
superset/queries/saved_queries/schemas.py | 16 ++--
superset/queries/schemas.py | 5 +-
superset/reports/api.py | 20 ++---
superset/reports/logs/api.py | 10 +--
superset/reports/logs/schemas.py | 5 +-
superset/reports/schemas.py | 12 +--
superset/row_level_security/api.py | 19 ++---
superset/row_level_security/schemas.py | 15 ++++
superset/security/api.py | 12 +--
superset/sqllab/api.py | 20 ++---
superset/tags/api.py | 20 ++---
superset/tags/schemas.py | 13 ++-
superset/views/api.py | 6 +-
superset/views/base_api.py | 6 +-
superset/views/log/api.py | 6 +-
superset/views/log/schemas.py | 12 +++
superset/views/users/api.py | 12 +--
49 files changed, 402 insertions(+), 426 deletions(-)
diff --git a/superset/advanced_data_type/api.py b/superset/advanced_data_type/api.py
index a619a2a27e..e0d4b9368b 100644
--- a/superset/advanced_data_type/api.py
+++ b/superset/advanced_data_type/api.py
@@ -61,11 +61,12 @@ class AdvancedDataTypeRestApi(BaseSupersetApi):
)
@rison(advanced_data_type_convert_schema)
def get(self, **kwargs: Any) -> Response:
- """Returns a AdvancedDataTypeResponse object populated with the passed in args
+ """Return an AdvancedDataTypeResponse object populated with the passed in args.
---
get:
- summary: >-
- Returns a AdvancedDataTypeResponse object populated with the passed in args.
+ summary: Return an AdvancedDataTypeResponse
+ description: >-
+ Returns an AdvancedDataTypeResponse object populated with the passed in args.
parameters:
- in: query
name: q
@@ -118,11 +119,10 @@ class AdvancedDataTypeRestApi(BaseSupersetApi):
log_to_statsd=False, # pylint: disable-arguments-renamed
)
def get_types(self) -> Response:
- """Returns a list of available advanced data types
+ """Return a list of available advanced data types.
---
get:
- description: >-
- Returns a list of available advanced data types.
+ summary: Return a list of available advanced data types
responses:
200:
description: >-
@@ -144,5 +144,4 @@ class AdvancedDataTypeRestApi(BaseSupersetApi):
500:
$ref: '#/components/responses/500'
"""
-
return self.response(200, result=list(ADVANCED_DATA_TYPES.keys()))
diff --git a/superset/annotation_layers/annotations/api.py b/superset/annotation_layers/annotations/api.py
index 484335b81c..4c95b3c105 100644
--- a/superset/annotation_layers/annotations/api.py
+++ b/superset/annotation_layers/annotations/api.py
@@ -139,11 +139,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
def get_list( # pylint: disable=arguments-differ
self, pk: int, **kwargs: Any
) -> Response:
- """Get a list of annotations
+ """Get a list of annotations.
---
get:
- description: >-
- Get a list of annotations
+ summary: Get a list of annotations
parameters:
- in: path
schema:
@@ -200,11 +199,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
def get( # pylint: disable=arguments-differ
self, pk: int, annotation_id: int, **kwargs: Any
) -> Response:
- """Get item from Model
+ """Get item from model.
---
get:
- description: >-
- Get an item model
+ summary: Get an item model
parameters:
- in: path
schema:
@@ -256,11 +254,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
@permission_name("post")
@requires_json
def post(self, pk: int) -> Response: # pylint: disable=arguments-differ
- """Creates a new Annotation
+ """Create a new annotation.
---
post:
- description: >-
- Create a new Annotation
+ summary: Create a new annotation
parameters:
- in: path
schema:
@@ -326,11 +323,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
def put( # pylint: disable=arguments-differ
self, pk: int, annotation_id: int
) -> Response:
- """Updates an Annotation
+ """Update an annotation.
---
put:
- description: >-
- Update an annotation
+ summary: Update an annotation
parameters:
- in: path
schema:
@@ -400,11 +396,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
def delete( # pylint: disable=arguments-differ
self, pk: int, annotation_id: int
) -> Response:
- """Deletes an Annotation
+ """Delete an annotation.
---
delete:
- description: >-
- Delete an annotation
+ summary: Delete an annotation
parameters:
- in: path
schema:
@@ -453,11 +448,10 @@ class AnnotationRestApi(BaseSupersetModelRestApi):
@statsd_metrics
@rison(get_delete_ids_schema)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Annotation layers
+ """Bulk delete annotation layers.
---
delete:
- description: >-
- Deletes multiple annotation in a bulk operation.
+ summary: Bulk delete annotation layers
parameters:
- in: path
schema:
diff --git a/superset/annotation_layers/annotations/schemas.py b/superset/annotation_layers/annotations/schemas.py
index 79ea66aad0..7aa553d2a1 100644
--- a/superset/annotation_layers/annotations/schemas.py
+++ b/superset/annotation_layers/annotations/schemas.py
@@ -23,23 +23,24 @@ from superset.exceptions import SupersetException
from superset.utils import core as utils
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get an Annotation layer"}},
+ "get": {"get": {"summary": "Get an annotation layer"}},
"get_list": {
"get": {
- "description": "Get a list of Annotation layers, use Rison or JSON "
+ "summary": "Get a list of annotation layers",
+ "description": "Gets a list of annotation layers, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
}
},
- "post": {"post": {"description": "Create an Annotation layer"}},
- "put": {"put": {"description": "Update an Annotation layer"}},
- "delete": {"delete": {"description": "Delete Annotation layer"}},
+ "post": {"post": {"summary": "Create an annotation layer"}},
+ "put": {"put": {"summary": "Update an annotation layer"}},
+ "delete": {"delete": {"summary": "Delete annotation layer"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
}
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
-
annotation_start_dttm = "The annotation start date time"
annotation_end_dttm = "The annotation end date time"
annotation_layer = "The annotation layer id"
diff --git a/superset/annotation_layers/api.py b/superset/annotation_layers/api.py
index 2e64fec78c..b7a3b301bc 100644
--- a/superset/annotation_layers/api.py
+++ b/superset/annotation_layers/api.py
@@ -117,11 +117,10 @@ class AnnotationLayerRestApi(BaseSupersetModelRestApi):
)
@permission_name("delete")
def delete(self, pk: int) -> Response:
- """Delete an annotation layer
+ """Delete an annotation layer.
---
delete:
- description: >-
- Delete an annotation layer
+ summary: Delete an annotation layer
parameters:
- in: path
schema:
@@ -172,11 +171,10 @@ class AnnotationLayerRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self) -> Response:
- """Creates a new Annotation Layer
+ """Create a new annotation layer.
---
post:
- description: >-
- Create a new Annotation
+ summary: Create a new annotation layer
requestBody:
description: Annotation Layer schema
required: true
@@ -237,11 +235,10 @@ class AnnotationLayerRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, pk: int) -> Response:
- """Updates an Annotation Layer
+ """Update an annotation layer.
---
put:
- description: >-
- Update an annotation layer
+ summary: Update an annotation layer
parameters:
- in: path
schema:
@@ -308,11 +305,10 @@ class AnnotationLayerRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Annotation layers
+ """Bulk delete annotation layers.
---
delete:
- description: >-
- Deletes multiple annotation layers in a bulk operation.
+ summary: Delete multiple annotation layers in a bulk operation
parameters:
- in: query
name: q
diff --git a/superset/annotation_layers/schemas.py b/superset/annotation_layers/schemas.py
index 17c3c274cd..1992d423fc 100644
--- a/superset/annotation_layers/schemas.py
+++ b/superset/annotation_layers/schemas.py
@@ -18,18 +18,20 @@ from marshmallow import fields, Schema
from marshmallow.validate import Length
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get an Annotation layer"}},
+ "get": {"get": {"summary": "Get an annotation layer"}},
"get_list": {
"get": {
- "description": "Get a list of Annotation layers, use Rison or JSON "
+ "summary": "Get a list of annotation layers",
+ "description": "Gets a list of annotation layers, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
}
},
- "post": {"post": {"description": "Create an Annotation layer"}},
- "put": {"put": {"description": "Update an Annotation layer"}},
- "delete": {"delete": {"description": "Delete Annotation layer"}},
+ "post": {"post": {"summary": "Create an annotation layer"}},
+ "put": {"put": {"summary": "Update an annotation layer"}},
+ "delete": {"delete": {"summary": "Delete annotation layer"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
}
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/async_events/api.py b/superset/async_events/api.py
index e1b49a72c0..8b682c396a 100644
--- a/superset/async_events/api.py
+++ b/superset/async_events/api.py
@@ -39,10 +39,11 @@ class AsyncEventsRestApi(BaseSupersetApi):
@permission_name("list")
def events(self) -> Response:
"""
- Reads off of the Redis async events stream, using the user's JWT token and
+ Read off of the Redis async events stream, using the user's JWT token and
optional query params for last event received.
---
get:
+ summary: Read off of the Redis events stream
description: >-
Reads off of the Redis events stream, using the user's JWT token and
optional query params for last event received.
diff --git a/superset/available_domains/api.py b/superset/available_domains/api.py
index 5b422e6303..0b8253d942 100644
--- a/superset/available_domains/api.py
+++ b/superset/available_domains/api.py
@@ -48,13 +48,12 @@ class AvailableDomainsRestApi(BaseSupersetApi):
)
def get(self) -> Response:
"""
- Returns the list of available Superset Webserver domains (if any)
+ Get the list of available Superset Webserver domains (if any)
defined in config. This enables charts embedded in other apps to
leverage domain sharding if appropriately configured.
---
get:
- description: >-
- Get all available domains
+ summary: Get all available domains
responses:
200:
description: a list of available domains
diff --git a/superset/cachekeys/api.py b/superset/cachekeys/api.py
index cb9b676287..9efc3d4c7a 100644
--- a/superset/cachekeys/api.py
+++ b/superset/cachekeys/api.py
@@ -51,14 +51,14 @@ class CacheRestApi(BaseSupersetModelRestApi):
@event_logger.log_this_with_context(log_to_statsd=False)
def invalidate(self) -> Response:
"""
- Takes a list of datasources, finds the associated cache records and
- invalidates them and removes the database records
-
+ Take a list of datasources, find and invalidate the associated cache records
+ and remove the database records.
---
post:
+ summary: Invalidate cache records and remove the database records
description: >-
- Takes a list of datasources, finds the associated cache records and
- invalidates them and removes the database records
+ Takes a list of datasources, finds and invalidates the associated cache
+ records and removes the database records.
requestBody:
description: >-
A list of datasources uuid or the tuples of database and datasource names
diff --git a/superset/charts/api.py b/superset/charts/api.py
index a060b23b0e..768d330291 100644
--- a/superset/charts/api.py
+++ b/superset/charts/api.py
@@ -285,11 +285,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self) -> Response:
- """Creates a new Chart
+ """Create a new chart.
---
post:
- description: >-
- Create a new Chart.
+ summary: Create a new chart
requestBody:
description: Chart schema
required: true
@@ -351,11 +350,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, pk: int) -> Response:
- """Changes a Chart
+ """Update a chart.
---
put:
- description: >-
- Changes a Chart.
+ summary: Update a chart
parameters:
- in: path
schema:
@@ -427,11 +425,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, pk: int) -> Response:
- """Deletes a Chart
+ """Delete a chart.
---
delete:
- description: >-
- Deletes a Chart.
+ summary: Delete a chart
parameters:
- in: path
schema:
@@ -484,11 +481,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Charts
+ """Bulk delete charts.
---
delete:
- description: >-
- Deletes multiple Charts in a bulk operation.
+ summary: Bulk delete charts
parameters:
- in: query
name: q
@@ -544,10 +540,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def cache_screenshot(self, pk: int, **kwargs: Any) -> WerkzeugResponse:
- """
+ """Compute and cache a screenshot.
---
get:
- description: Compute and cache a screenshot.
+ summary: Compute and cache a screenshot
parameters:
- in: path
schema:
@@ -616,10 +612,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def screenshot(self, pk: int, digest: str) -> WerkzeugResponse:
- """Get Chart screenshot
+ """Get a computed screenshot from cache.
---
get:
- description: Get a computed screenshot from cache.
+ summary: Get a computed screenshot from cache
parameters:
- in: path
schema:
@@ -670,9 +666,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def thumbnail(self, pk: int, digest: str, **kwargs: Any) -> WerkzeugResponse:
- """Get Chart thumbnail
+ """Compute or get already computed chart thumbnail from cache.
---
get:
+ summary: Get chart thumbnail
description: Compute or get already computed chart thumbnail from cache.
parameters:
- in: path
@@ -757,11 +754,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def export(self, **kwargs: Any) -> Response:
- """Export charts
+ """Download multiple charts as YAML files.
---
get:
- description: >-
- Exports multiple charts and downloads them as YAML files
+ summary: Download multiple charts as YAML files
parameters:
- in: query
name: q
@@ -822,11 +818,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def favorite_status(self, **kwargs: Any) -> Response:
- """Favorite stars for Charts
+ """Check favorited charts for current user.
---
get:
- description: >-
- Check favorited dashboards for current user
+ summary: Check favorited charts for current user
parameters:
- in: query
name: q
@@ -871,11 +866,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def add_favorite(self, pk: int) -> Response:
- """Marks the chart as favorite
+ """Mark the chart as favorite for the current user.
---
post:
- description: >-
- Marks the chart as favorite for the current user
+ summary: Mark the chart as favorite for the current user
parameters:
- in: path
schema:
@@ -915,11 +909,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def remove_favorite(self, pk: int) -> Response:
- """Remove the chart from the user favorite list
+ """Remove the chart from the user favorite list.
---
delete:
- description: >-
- Remove the chart from the user favorite list
+ summary: Remove the chart from the user favorite list
parameters:
- in: path
schema:
@@ -959,11 +952,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def warm_up_cache(self) -> Response:
- """
+ """Warm up the cache for the chart.
---
put:
- summary: >-
- Warms up the cache for the chart
+ summary: Warm up the cache for the chart
description: >-
Warms up the cache for the chart.
Note for slices a force refresh occurs.
@@ -1015,9 +1007,10 @@ class ChartRestApi(BaseSupersetModelRestApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import chart(s) with associated datasets and databases
+ """Import chart(s) with associated datasets and databases.
---
post:
+ summary: Import chart(s) with associated datasets and databases
requestBody:
required: true
content:
diff --git a/superset/charts/data/api.py b/superset/charts/data/api.py
index 0026650485..b67aa6886b 100644
--- a/superset/charts/data/api.py
+++ b/superset/charts/data/api.py
@@ -68,10 +68,11 @@ class ChartDataRestApi(ChartRestApi):
)
def get_data(self, pk: int) -> Response:
"""
- Takes a chart ID and uses the query context stored when the chart was saved
+ Take a chart ID and uses the query context stored when the chart was saved
to return payload data response.
---
get:
+ summary: Return payload data response for a chart
description: >-
Takes a chart ID and uses the query context stored when the chart was saved
to return payload data response.
@@ -180,10 +181,11 @@ class ChartDataRestApi(ChartRestApi):
)
def data(self) -> Response:
"""
- Takes a query context constructed in the client and returns payload
- data response for the given query.
+ Take a query context constructed in the client and return payload
+ data response for the given query
---
post:
+ summary: Return payload data response for the given query
description: >-
Takes a query context constructed in the client and returns payload data
response for the given query.
@@ -267,10 +269,11 @@ class ChartDataRestApi(ChartRestApi):
)
def data_from_cache(self, cache_key: str) -> Response:
"""
- Takes a query context cache key and returns payload
+ Take a query context cache key and return payload
data response for the given query.
---
get:
+ summary: Return payload data response for the given query
description: >-
Takes a query context cache key and returns payload data
response for the given query.
diff --git a/superset/charts/schemas.py b/superset/charts/schemas.py
index 545845f7f2..6476c409ec 100644
--- a/superset/charts/schemas.py
+++ b/superset/charts/schemas.py
@@ -123,23 +123,17 @@ owners_name_description = "Name of an owner of the chart."
certified_by_description = "Person or group that has certified this chart"
certification_details_description = "Details of the certification"
-#
-# OpenAPI method specification overrides
-#
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a chart detail information."}},
+ "get": {"get": {"summary": "Get a chart detail information"}},
"get_list": {
"get": {
- "description": "Get a list of charts, use Rison or JSON query "
+ "summary": "Get a list of charts",
+ "description": "Gets a list of charts, use Rison or JSON query "
"parameters for filtering, sorting, pagination and "
" for selecting specific columns and metadata.",
}
},
- "info": {
- "get": {
- "description": "Several metadata information about chart API endpoints.",
- }
- },
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
"related": {
"get": {
"description": "Get a list of all possible owners for a chart. "
diff --git a/superset/css_templates/api.py b/superset/css_templates/api.py
index f7688afe03..ee5d5fac70 100644
--- a/superset/css_templates/api.py
+++ b/superset/css_templates/api.py
@@ -97,11 +97,10 @@ class CssTemplateRestApi(BaseSupersetModelRestApi):
)
@rison(get_delete_ids_schema)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk CSS Templates
+ """Bulk delete CSS templates.
---
delete:
- description: >-
- Deletes multiple css templates in a bulk operation.
+ summary: Bulk delete CSS templates
parameters:
- in: query
name: q
diff --git a/superset/css_templates/schemas.py b/superset/css_templates/schemas.py
index e8243c2079..26bcc61a75 100644
--- a/superset/css_templates/schemas.py
+++ b/superset/css_templates/schemas.py
@@ -16,18 +16,20 @@
# under the License.
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a CSS template"}},
+ "get": {"get": {"summary": "Get a CSS template"}},
"get_list": {
"get": {
- "description": "Get a list of CSS templates, use Rison or JSON "
+ "summary": "Get a list of CSS templates",
+ "description": "Gets a list of CSS templates, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
}
},
- "post": {"post": {"description": "Create a CSS template"}},
- "put": {"put": {"description": "Update a CSS template"}},
- "delete": {"delete": {"description": "Delete CSS template"}},
+ "post": {"post": {"summary": "Create a CSS template"}},
+ "put": {"put": {"summary": "Update a CSS template"}},
+ "delete": {"delete": {"summary": "Delete a CSS template"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
}
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py
index 32d080b71b..60dd7949d2 100644
--- a/superset/dashboards/api.py
+++ b/superset/dashboards/api.py
@@ -312,11 +312,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
dash: Dashboard,
add_extra_log_payload: Callable[..., None] = lambda **kwargs: None,
) -> Response:
- """Gets a dashboard
+ """Get a dashboard.
---
get:
- description: >-
- Get a dashboard
+ summary: Get a dashboard
parameters:
- in: path
schema:
@@ -367,9 +366,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def get_datasets(self, id_or_slug: str) -> Response:
- """Gets a dashboard's datasets
+ """Get dashboard's datasets.
---
get:
+ summary: Get dashboard's datasets
description: >-
Returns a list of a dashboard's datasets. Each dataset includes only
the information necessary to render the dashboard's charts.
@@ -436,11 +436,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def get_charts(self, id_or_slug: str) -> Response:
- """Gets the chart definitions for a given dashboard
+ """Get a dashboard's chart definitions.
---
get:
- description: >-
- Get the chart definitions for a given dashboard
+ summary: Get a dashboard's chart definitions.
parameters:
- in: path
schema:
@@ -494,11 +493,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self) -> Response:
- """Creates a new Dashboard
+ """Create a new dashboard.
---
post:
- description: >-
- Create a new Dashboard.
+ summary: Create a new dashboard
requestBody:
description: Dashboard schema
required: true
@@ -556,11 +554,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, pk: int) -> Response:
- """Changes a Dashboard
+ """Update a dashboard.
---
put:
- description: >-
- Changes a Dashboard.
+ summary: Update a dashboard
parameters:
- in: path
schema:
@@ -641,11 +638,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, pk: int) -> Response:
- """Deletes a Dashboard
+ """Delete a dashboard.
---
delete:
- description: >-
- Deletes a Dashboard.
+ summary: Delete a dashboard
parameters:
- in: path
schema:
@@ -698,11 +694,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Dashboards
+ """Bulk delete dashboards.
---
delete:
- description: >-
- Deletes multiple Dashboards in a bulk operation.
+ summary: Bulk delete dashboards
parameters:
- in: query
name: q
@@ -759,11 +754,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def export(self, **kwargs: Any) -> Response: # pylint: disable=too-many-locals
- """Export dashboards
+ """Download multiple dashboards as YAML files.
---
get:
- description: >-
- Exports multiple Dashboards and downloads them as YAML files.
+ summary: Download multiple dashboards as YAML files
parameters:
- in: query
name: q
@@ -844,11 +838,12 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def thumbnail(self, pk: int, digest: str, **kwargs: Any) -> WerkzeugResponse:
- """Get Dashboard thumbnail
+ """Compute async or get already computed dashboard thumbnail from cache.
---
get:
+ summary: Get dashboard's thumbnail
description: >-
- Compute async or get already computed dashboard thumbnail from cache.
+ Computes async or get already computed dashboard thumbnail from cache.
parameters:
- in: path
schema:
@@ -948,11 +943,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def favorite_status(self, **kwargs: Any) -> Response:
- """Favorite Stars for Dashboards
+ """Check favorited dashboards for current user.
---
get:
- description: >-
- Check favorited dashboards for current user
+ summary: Check favorited dashboards for current user
parameters:
- in: query
name: q
@@ -998,11 +992,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def add_favorite(self, pk: int) -> Response:
- """Marks the dashboard as favorite
+ """Mark the dashboard as favorite for the current user.
---
post:
- description: >-
- Marks the dashboard as favorite for the current user
+ summary: Mark the dashboard as favorite for the current user
parameters:
- in: path
schema:
@@ -1042,11 +1035,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def remove_favorite(self, pk: int) -> Response:
- """Remove the dashboard from the user favorite list
+ """Remove the dashboard from the user favorite list.
---
delete:
- description: >-
- Remove the dashboard from the user favorite list
+ summary: Remove the dashboard from the user favorite list
parameters:
- in: path
schema:
@@ -1085,9 +1077,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import dashboard(s) with associated charts/datasets/databases
+ """Import dashboard(s) with associated charts/datasets/databases.
---
post:
+ summary: Import dashboard(s) with associated charts/datasets/databases
requestBody:
required: true
content:
@@ -1211,12 +1204,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@with_dashboard
def get_embedded(self, dashboard: Dashboard) -> Response:
- """Response
- Returns the dashboard's embedded configuration
+ """Get the dashboard's embedded configuration.
---
get:
- description: >-
- Returns the dashboard's embedded configuration
+ summary: Get the dashboard's embedded configuration
parameters:
- in: path
schema:
@@ -1254,12 +1245,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@with_dashboard
def set_embedded(self, dashboard: Dashboard) -> Response:
- """Response
- Sets a dashboard's embedded configuration.
+ """Set a dashboard's embedded configuration.
---
post:
- description: >-
- Sets a dashboard's embedded configuration.
+ summary: Set a dashboard's embedded configuration
parameters:
- in: path
schema:
@@ -1335,12 +1324,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@with_dashboard
def delete_embedded(self, dashboard: Dashboard) -> Response:
- """Response
- Removes a dashboard's embedded configuration.
+ """Delete a dashboard's embedded configuration.
---
delete:
- description: >-
- Removes a dashboard's embedded configuration.
+ summary: Delete a dashboard's embedded configuration
parameters:
- in: path
schema:
@@ -1377,10 +1364,10 @@ class DashboardRestApi(BaseSupersetModelRestApi):
)
@with_dashboard
def copy_dash(self, original_dash: Dashboard) -> Response:
- """Makes a copy of an existing dashboard
+ """Create a copy of an existing dashboard.
---
post:
- summary: Makes a copy of an existing dashboard
+ summary: Create a copy of an existing dashboard
parameters:
- in: path
schema:
diff --git a/superset/dashboards/filter_sets/api.py b/superset/dashboards/filter_sets/api.py
index b101300f29..5a2bf01923 100644
--- a/superset/dashboards/filter_sets/api.py
+++ b/superset/dashboards/filter_sets/api.py
@@ -131,12 +131,10 @@ class FilterSetRestApi(BaseSupersetModelRestApi):
@permission_name("get")
@rison(get_list_schema)
def get_list(self, dashboard_id: int, **kwargs: Any) -> Response:
- """
- Gets a dashboard's Filter sets
- ---
+ """Get a dashboard's list of filter sets.
+ ---
get:
- description: >-
- Get a dashboard's list of filter sets
+ summary: Get a dashboard's list of filter sets
parameters:
- in: path
schema:
@@ -198,12 +196,10 @@ class FilterSetRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self, dashboard_id: int) -> Response:
- """
- Creates a new Dashboard's Filter Set
+ """Create a new dashboard's filter set.
---
post:
- description: >-
- Create a new Dashboard's Filter Set.
+ summary: Create a new dashboard's filter set
parameters:
- in: path
schema:
@@ -265,11 +261,10 @@ class FilterSetRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, dashboard_id: int, pk: int) -> Response:
- """Changes a Dashboard's Filter set
+ """Update a dashboard's filter set.
---
put:
- description: >-
- Changes a Dashboard's Filter set.
+ summary: Update a dashboard's filter set
parameters:
- in: path
schema:
@@ -336,12 +331,10 @@ class FilterSetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, dashboard_id: int, pk: int) -> Response:
- """
- Deletes a Dashboard's FilterSet
+ """Delete a dashboard's filter set.
---
delete:
- description: >-
- Deletes a Dashboard.
+ summary: Delete a dashboard's filter set
parameters:
- in: path
schema:
diff --git a/superset/dashboards/filter_state/api.py b/superset/dashboards/filter_state/api.py
index a1b855ca9e..9e0720646a 100644
--- a/superset/dashboards/filter_state/api.py
+++ b/superset/dashboards/filter_state/api.py
@@ -54,11 +54,10 @@ class DashboardFilterStateRestApi(TemporaryCacheRestApi):
log_to_statsd=False,
)
def post(self, pk: int) -> Response:
- """Stores a new value.
+ """Create a dashboard's filter state.
---
post:
- description: >-
- Stores a new value.
+ summary: Create a dashboard's filter state
parameters:
- in: path
schema:
@@ -104,11 +103,10 @@ class DashboardFilterStateRestApi(TemporaryCacheRestApi):
log_to_statsd=False,
)
def put(self, pk: int, key: str) -> Response:
- """Updates an existing value.
+ """Update a dashboard's filter state value.
---
put:
- description: >-
- Updates an existing value.
+ summary: Update a dashboard's filter state value
parameters:
- in: path
schema:
@@ -160,11 +158,10 @@ class DashboardFilterStateRestApi(TemporaryCacheRestApi):
log_to_statsd=False,
)
def get(self, pk: int, key: str) -> Response:
- """Retrives a value.
+ """Get a dashboard's filter state value.
---
get:
- description: >-
- Retrives a value.
+ summary: Get a dashboard's filter state value
parameters:
- in: path
schema:
@@ -206,11 +203,10 @@ class DashboardFilterStateRestApi(TemporaryCacheRestApi):
log_to_statsd=False,
)
def delete(self, pk: int, key: str) -> Response:
- """Deletes a value.
+ """Delete a dashboard's filter state value.
---
delete:
- description: >-
- Deletes a value.
+ summary: Delete a dashboard's filter state value
parameters:
- in: path
schema:
diff --git a/superset/dashboards/permalink/api.py b/superset/dashboards/permalink/api.py
index e5528cdb59..0a786d1def 100644
--- a/superset/dashboards/permalink/api.py
+++ b/superset/dashboards/permalink/api.py
@@ -56,11 +56,10 @@ class DashboardPermalinkRestApi(BaseSupersetApi):
)
@requires_json
def post(self, pk: str) -> Response:
- """Stores a new permanent link.
+ """Create a new dashboard's permanent link.
---
post:
- description: >-
- Stores a new permanent link.
+ summary: Create a new dashboard's permanent link
parameters:
- in: path
schema:
@@ -122,11 +121,10 @@ class DashboardPermalinkRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def get(self, key: str) -> Response:
- """Retrives permanent link state for dashboard.
+ """Get dashboard's permanent link state.
---
get:
- description: >-
- Retrives dashboard state associated with a permanent link.
+ summary: Get dashboard's permanent link state
parameters:
- in: path
schema:
diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py
index 8549393dd4..b5a12737ad 100644
--- a/superset/dashboards/schemas.py
+++ b/superset/dashboards/schemas.py
@@ -69,20 +69,16 @@ certified_by_description = "Person or group that has certified this dashboard"
certification_details_description = "Details of the certification"
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a dashboard detail information."}},
+ "get": {"get": {"summary": "Get a dashboard detail information"}},
"get_list": {
"get": {
- "description": "Get a list of dashboards, use Rison or JSON query "
+ "summary": "Get a list of dashboards",
+ "description": "Gets a list of dashboards, use Rison or JSON query "
"parameters for filtering, sorting, pagination and "
" for selecting specific columns and metadata.",
}
},
- "info": {
- "get": {
- "description": "Several metadata information about dashboard API "
- "endpoints.",
- }
- },
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
"related": {
"get": {"description": "Get a list of all possible owners for a dashboard."}
},
diff --git a/superset/databases/api.py b/superset/databases/api.py
index caa46d3164..ae9cd60188 100644
--- a/superset/databases/api.py
+++ b/superset/databases/api.py
@@ -71,6 +71,7 @@ from superset.databases.schemas import (
DatabaseTestConnectionSchema,
DatabaseValidateParametersSchema,
get_export_ids_schema,
+ openapi_spec_methods_override,
SchemasResponseSchema,
SelectStarResponseSchema,
TableExtraMetadataResponseSchema,
@@ -234,6 +235,9 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
ValidateSQLResponse,
)
+ openapi_spec_methods = openapi_spec_methods_override
+ """ Overrides GET methods OpenApi descriptions """
+
@expose("/<int:pk>/connection", methods=("GET",))
@protect()
@safe
@@ -241,8 +245,7 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
"""Get database connection info.
---
get:
- summary: >-
- Get a database connection info
+ summary: Get a database connection info
parameters:
- in: path
schema:
@@ -282,11 +285,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
@protect()
@safe
def get(self, pk: int, **kwargs: Any) -> Response:
- """Get a database
+ """Get a database.
---
get:
- description: >-
- Get a database
+ summary: Get a database
parameters:
- in: path
schema:
@@ -329,11 +331,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self) -> FlaskResponse:
- """Creates a new Database
+ """Create a new database.
---
post:
- description: >-
- Create a new Database.
+ summary: Create a new database
requestBody:
description: Database schema
required: true
@@ -415,11 +416,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, pk: int) -> Response:
- """Changes a Database
+ """Update a database.
---
put:
- description: >-
- Changes a Database.
+ summary: Change a database
parameters:
- in: path
schema:
@@ -498,11 +498,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, pk: int) -> Response:
- """Deletes a Database
+ """Delete a database.
---
delete:
- description: >-
- Deletes a Database.
+ summary: Delete a database
parameters:
- in: path
schema:
@@ -555,10 +554,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def schemas(self, pk: int, **kwargs: Any) -> FlaskResponse:
- """Get all schemas from a database
+ """Get all schemas from a database.
---
get:
- description: Get all schemas from a database
+ summary: Get all schemas from a database
parameters:
- in: path
schema:
@@ -615,7 +614,7 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def tables(self, pk: int, **kwargs: Any) -> FlaskResponse:
- """Get a list of tables for given database
+ """Get a list of tables for given database.
---
get:
summary: Get a list of tables for given database
@@ -685,10 +684,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
def table_metadata(
self, database: Database, table_name: str, schema_name: str
) -> FlaskResponse:
- """Table schema info
+ """Get database table metadata.
---
get:
- description: Get database table metadata
+ summary: Get database table metadata
parameters:
- in: path
schema:
@@ -748,13 +747,12 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
def table_extra_metadata(
self, database: Database, table_name: str, schema_name: str
) -> FlaskResponse:
- """Table schema info
+ """Get table extra metadata.
---
get:
- summary: >-
- Get table extra metadata
+ summary: Get table extra metadata
description: >-
- Response depends on each DB engine spec normally focused on partitions
+ Response depends on each DB engine spec normally focused on partitions.
parameters:
- in: path
schema:
@@ -811,10 +809,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
def select_star(
self, database: Database, table_name: str, schema_name: Optional[str] = None
) -> FlaskResponse:
- """Table schema info
+ """Get database select star for table.
---
get:
- description: Get database select star for table
+ summary: Get database select star for table
parameters:
- in: path
schema:
@@ -870,11 +868,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
)
@requires_json
def test_connection(self) -> FlaskResponse:
- """Tests a database connection
+ """Test a database connection.
---
post:
- description: >-
- Tests a database connection
+ summary: Test a database connection
requestBody:
description: Database schema
required: true
@@ -920,11 +917,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def related_objects(self, pk: int) -> Response:
- """Get charts and dashboards count associated to a database
+ """Get charts and dashboards count associated to a database.
---
get:
- description:
- Get charts and dashboards count associated to a database
+ summary: Get charts and dashboards count associated to a database
parameters:
- in: path
name: pk
@@ -987,13 +983,12 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def validate_sql(self, pk: int) -> FlaskResponse:
- """
+ """Validate that arbitrary SQL is acceptable for the given database.
---
post:
- summary: >-
- Validates that arbitrary sql is acceptable for the given database
+ summary: Validate arbitrary SQL
description: >-
- Validates arbitrary SQL.
+ Validates that arbitrary SQL is acceptable for the given database.
parameters:
- in: path
schema:
@@ -1049,10 +1044,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def export(self, **kwargs: Any) -> Response:
- """Export database(s) with associated datasets
+ """Download database(s) and associated dataset(s) as a zip file.
---
get:
- description: Download database(s) and associated dataset(s) as a zip file
+ summary: Download database(s) and associated dataset(s) as a zip file
parameters:
- in: query
name: q
@@ -1111,9 +1106,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import database(s) with associated datasets
+ """Import database(s) with associated datasets.
---
post:
+ summary: Import database(s) with associated datasets
requestBody:
required: true
content:
@@ -1233,11 +1229,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def function_names(self, pk: int) -> Response:
- """Get function names supported by a database
+ """Get function names supported by a database.
---
get:
- description:
- Get function names supported by a database
+ summary: Get function names supported by a database
parameters:
- in: path
name: pk
@@ -1273,11 +1268,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def available(self) -> Response:
- """Return names of databases currently available
+ """Get names of databases currently available.
---
get:
- description:
- Get names of databases currently available
+ summary: Get names of databases currently available
responses:
200:
description: Database names
@@ -1386,11 +1380,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
)
@requires_json
def validate_parameters(self) -> FlaskResponse:
- """validates database connection parameters
+ """Validate database connection parameters.
---
post:
- description: >-
- Validates parameters used to connect to a database
+ summary: Validate database connection parameters
requestBody:
description: DB-specific parameters
required: true
@@ -1442,11 +1435,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete_ssh_tunnel(self, pk: int) -> Response:
- """Deletes a SSH Tunnel
+ """Delete a SSH tunnel.
---
delete:
- description: >-
- Deletes a SSH Tunnel.
+ summary: Delete a SSH tunnel
parameters:
- in: path
schema:
@@ -1505,11 +1497,10 @@ class DatabaseRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def schemas_access_for_file_upload(self, pk: int) -> Response:
- """The list of the database schemas where to upload information
+ """The list of the database schemas where to upload information.
---
get:
- summary:
- The list of the database schemas where to upload information
+ summary: The list of the database schemas where to upload information
parameters:
- in: path
name: pk
diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py
index 798fbcf911..abba9036a1 100644
--- a/superset/databases/schemas.py
+++ b/superset/databases/schemas.py
@@ -150,6 +150,18 @@ server_cert_description = markdown(
True,
)
+openapi_spec_methods_override = {
+ "get_list": {
+ "get": {
+ "summary": "Get a list of databases",
+ "description": "Gets a list of databases, use Rison or JSON query "
+ "parameters for filtering, sorting, pagination and "
+ " for selecting specific columns and metadata.",
+ }
+ },
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
+}
+
def sqlalchemy_uri_validator(value: str) -> str:
"""
diff --git a/superset/datasets/api.py b/superset/datasets/api.py
index 7b46544443..70bf03936a 100644
--- a/superset/datasets/api.py
+++ b/superset/datasets/api.py
@@ -65,6 +65,7 @@ from superset.datasets.schemas import (
get_delete_ids_schema,
get_export_ids_schema,
GetOrCreateDatasetSchema,
+ openapi_spec_methods_override,
)
from superset.utils.core import parse_boolean_string
from superset.views.base import DatasourceFilter, generate_download_headers
@@ -257,6 +258,9 @@ class DatasetRestApi(BaseSupersetModelRestApi):
GetOrCreateDatasetSchema,
)
+ openapi_spec_methods = openapi_spec_methods_override
+ """ Overrides GET methods OpenApi descriptions """
+
list_outer_default_load = True
show_outer_default_load = True
@@ -270,11 +274,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
)
@requires_json
def post(self) -> Response:
- """Creates a new Dataset
+ """Create a new dataset.
---
post:
- description: >-
- Create a new Dataset
+ summary: Create a new dataset
requestBody:
description: Dataset schema
required: true
@@ -333,11 +336,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
)
@requires_json
def put(self, pk: int) -> Response:
- """Changes a Dataset
+ """Update a dataset.
---
put:
- description: >-
- Changes a Dataset
+ summary: Update a dataset
parameters:
- in: path
schema:
@@ -419,11 +421,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, pk: int) -> Response:
- """Deletes a Dataset
+ """Delete a Dataset.
---
delete:
- description: >-
- Deletes a Dataset
+ summary: Delete a dataset
parameters:
- in: path
schema:
@@ -476,11 +477,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def export(self, **kwargs: Any) -> Response: # pylint: disable=too-many-locals
- """Export datasets
+ """Download multiple datasets as YAML files.
---
get:
- description: >-
- Exports multiple datasets and downloads them as YAML files
+ summary: Download multiple datasets as YAML files
parameters:
- in: query
name: q
@@ -560,11 +560,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
)
@requires_json
def duplicate(self) -> Response:
- """Duplicates a Dataset
+ """Duplicate a dataset.
---
post:
- description: >-
- Duplicates a Dataset
+ summary: Duplicate a dataset
requestBody:
description: Dataset schema
required: true
@@ -630,11 +629,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def refresh(self, pk: int) -> Response:
- """Refresh a Dataset
+ """Refresh and update columns of a dataset.
---
put:
- description: >-
- Refreshes and updates columns of a dataset
+ summary: Refresh and update columns of a dataset
parameters:
- in: path
schema:
@@ -687,11 +685,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def related_objects(self, pk: int) -> Response:
- """Get charts and dashboards count associated to a dataset
+ """Get charts and dashboards count associated to a dataset.
---
get:
- description:
- Get charts and dashboards count associated to a dataset
+ summary: Get charts and dashboards count associated to a dataset
parameters:
- in: path
name: pk
@@ -749,11 +746,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Datasets
+ """Bulk delete datasets.
---
delete:
- description: >-
- Deletes multiple Datasets in a bulk operation.
+ summary: Bulk delete datasets
parameters:
- in: query
name: q
@@ -811,9 +807,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import dataset(s) with associated databases
+ """Import dataset(s) with associated databases.
---
post:
+ summary: Import dataset(s) with associated databases
requestBody:
required: true
content:
@@ -945,7 +942,7 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def get_or_create_dataset(self) -> Response:
- """Retrieve a dataset by name, or create it if it does not exist
+ """Retrieve a dataset by name, or create it if it does not exist.
---
post:
summary: Retrieve a table by name, or create it if it does not exist
@@ -1011,11 +1008,10 @@ class DatasetRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def warm_up_cache(self) -> Response:
- """
+ """Warm up the cache for each chart powered by the given table.
---
put:
- summary: >-
- Warms up the cache for each chart powered by the given table
+ summary: Warm up the cache for each chart powered by the given table
description: >-
Warms up the cache for the table.
Note for slices a force refresh occurs.
diff --git a/superset/datasets/columns/api.py b/superset/datasets/columns/api.py
index 11a662953a..0aafab5d39 100644
--- a/superset/datasets/columns/api.py
+++ b/superset/datasets/columns/api.py
@@ -53,11 +53,10 @@ class DatasetColumnsRestApi(BaseSupersetModelRestApi):
def delete( # pylint: disable=arguments-differ
self, pk: int, column_id: int
) -> Response:
- """Deletes a Dataset column
+ """Delete a dataset column.
---
delete:
- description: >-
- Delete a Dataset column
+ summary: Delete a dataset column
parameters:
- in: path
schema:
diff --git a/superset/datasets/metrics/api.py b/superset/datasets/metrics/api.py
index 34e4a3e898..28ec9474e2 100644
--- a/superset/datasets/metrics/api.py
+++ b/superset/datasets/metrics/api.py
@@ -53,11 +53,10 @@ class DatasetMetricRestApi(BaseSupersetModelRestApi):
def delete( # pylint: disable=arguments-differ
self, pk: int, metric_id: int
) -> Response:
- """Deletes a Dataset metric
+ """Delete a dataset metric.
---
delete:
- description: >-
- Delete a Dataset metric
+ summary: Delete a dataset metric
parameters:
- in: path
schema:
diff --git a/superset/datasets/schemas.py b/superset/datasets/schemas.py
index c422f93f0a..4da0cdb400 100644
--- a/superset/datasets/schemas.py
+++ b/superset/datasets/schemas.py
@@ -28,6 +28,19 @@ from superset.datasets.models import Dataset
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
get_export_ids_schema = {"type": "array", "items": {"type": "integer"}}
+openapi_spec_methods_override = {
+ "get": {"get": {"summary": "Get a dataset detail information"}},
+ "get_list": {
+ "get": {
+ "summary": "Get a list of datasets",
+ "description": "Gets a list of datasets, use Rison or JSON query "
+ "parameters for filtering, sorting, pagination and "
+ " for selecting specific columns and metadata.",
+ }
+ },
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
+}
+
def validate_python_date_format(value: str) -> None:
regex = re.compile(
diff --git a/superset/datasource/api.py b/superset/datasource/api.py
index 6399d197e0..0c4338e349 100644
--- a/superset/datasource/api.py
+++ b/superset/datasource/api.py
@@ -50,7 +50,7 @@ class DatasourceRestApi(BaseSupersetApi):
def get_column_values(
self, datasource_type: str, datasource_id: int, column_name: str
) -> FlaskResponse:
- """Get possible values for a datasource column
+ """Get possible values for a datasource column.
---
get:
summary: Get possible values for a datasource column
diff --git a/superset/embedded/api.py b/superset/embedded/api.py
index 229ecc81c9..ae800bf2b9 100644
--- a/superset/embedded/api.py
+++ b/superset/embedded/api.py
@@ -68,12 +68,10 @@ class EmbeddedDashboardRestApi(BaseSupersetModelRestApi):
)
# pylint: disable=arguments-differ, arguments-renamed)
def get(self, uuid: str) -> Response:
- """Response
- Returns the dashboard's embedded configuration
+ """Get the dashboard's embedded configuration.
---
get:
- description: >-
- Returns the dashboard's embedded configuration
+ summary: Get the dashboard's embedded configuration
parameters:
- in: path
schema:
diff --git a/superset/explore/api.py b/superset/explore/api.py
index 351229bde1..ebda161bea 100644
--- a/superset/explore/api.py
+++ b/superset/explore/api.py
@@ -53,16 +53,14 @@ class ExploreRestApi(BaseSupersetApi):
log_to_statsd=True,
)
def get(self) -> Response:
- """Assembles Explore related information (form_data, slice, dataset)
- in a single endpoint.
+ """Assemble Explore related information (form_data, slice, dataset)
+ in a single endpoint.
---
get:
- summary: >-
- Assembles Explore related information (form_data, slice, dataset)
- in a single endpoint.
+ summary: Assemble Explore related information in a single endpoint
description: >-
- Assembles Explore related information (form_data, slice, dataset)
- in a single endpoint.<br/><br/>
+ Assembles Explore related information (form_data, slice, dataset) in a
+ single endpoint.<br/><br/>
The information can be assembled from:<br/>
- The cache using a form_data_key<br/>
- The metadata database using a permalink_key<br/>
diff --git a/superset/explore/form_data/api.py b/superset/explore/form_data/api.py
index 3eab98e547..36489ca449 100644
--- a/superset/explore/form_data/api.py
+++ b/superset/explore/form_data/api.py
@@ -57,11 +57,10 @@ class ExploreFormDataRestApi(BaseSupersetApi):
)
@requires_json
def post(self) -> Response:
- """Stores a new form_data.
+ """Create a new form_data.
---
post:
- description: >-
- Stores a new form_data.
+ summary: Create a new form_data
parameters:
- in: query
schema:
@@ -122,11 +121,10 @@ class ExploreFormDataRestApi(BaseSupersetApi):
)
@requires_json
def put(self, key: str) -> Response:
- """Updates an existing form_data.
+ """Update an existing form_data.
---
put:
- description: >-
- Updates an existing form_data.
+ summary: Update an existing form_data
parameters:
- in: path
schema:
@@ -195,11 +193,10 @@ class ExploreFormDataRestApi(BaseSupersetApi):
log_to_statsd=True,
)
def get(self, key: str) -> Response:
- """Retrives a form_data.
+ """Get a form_data.
---
get:
- description: >-
- Retrives a form_data.
+ summary: Get a form_data
parameters:
- in: path
schema:
@@ -247,11 +244,10 @@ class ExploreFormDataRestApi(BaseSupersetApi):
log_to_statsd=True,
)
def delete(self, key: str) -> Response:
- """Deletes a form_data.
+ """Delete a form_data.
---
delete:
- description: >-
- Deletes a form_data.
+ summary: Delete a form_data
parameters:
- in: path
schema:
diff --git a/superset/explore/permalink/api.py b/superset/explore/permalink/api.py
index 7df29a3a72..f03e5f7962 100644
--- a/superset/explore/permalink/api.py
+++ b/superset/explore/permalink/api.py
@@ -59,11 +59,10 @@ class ExplorePermalinkRestApi(BaseSupersetApi):
)
@requires_json
def post(self) -> Response:
- """Stores a new permanent link.
+ """Create a new permanent link.
---
post:
- description: >-
- Stores a new permanent link.
+ summary: Create a new permanent link
requestBody:
required: true
content:
@@ -119,11 +118,10 @@ class ExplorePermalinkRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def get(self, key: str) -> Response:
- """Retrives permanent link state for chart.
+ """Get chart's permanent link state.
---
get:
- description: >-
- Retrives chart state associated with a permanent link.
+ summary: Get chart's permanent link state
parameters:
- in: path
schema:
diff --git a/superset/importexport/api.py b/superset/importexport/api.py
index 5fbf3747e8..f385d04faf 100644
--- a/superset/importexport/api.py
+++ b/superset/importexport/api.py
@@ -50,12 +50,12 @@ class ImportExportRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def export(self) -> Response:
- """
- Export all assets.
+ """Export all assets.
---
get:
+ summary: Export all assets
description: >-
- Returns a ZIP file with all the Superset assets (databases, datasets, charts,
+ Gets a ZIP file with all the Superset assets (databases, datasets, charts,
dashboards, saved queries) as YAML files.
responses:
200:
@@ -100,9 +100,10 @@ class ImportExportRestApi(BaseSupersetApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import multiple assets
+ """Import multiple assets.
---
post:
+ summary: Import multiple assets
requestBody:
required: true
content:
diff --git a/superset/queries/api.py b/superset/queries/api.py
index 2b0173ec16..9568542f76 100644
--- a/superset/queries/api.py
+++ b/superset/queries/api.py
@@ -159,7 +159,7 @@ class QueryRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def get_updated_since(self, **kwargs: Any) -> FlaskResponse:
- """Get a list of queries that changed after last_updated_ms
+ """Get a list of queries that changed after last_updated_ms.
---
get:
summary: Get a list of queries that changed after last_updated_ms
@@ -220,7 +220,7 @@ class QueryRestApi(BaseSupersetModelRestApi):
)
@requires_json
def stop_query(self) -> FlaskResponse:
- """Manually stop a query with client_id
+ """Manually stop a query with client_id.
---
post:
summary: Manually stop a query with client_id
diff --git a/superset/queries/saved_queries/api.py b/superset/queries/saved_queries/api.py
index 327a2ac4cd..69e1a6191b 100644
--- a/superset/queries/saved_queries/api.py
+++ b/superset/queries/saved_queries/api.py
@@ -178,11 +178,10 @@ class SavedQueryRestApi(BaseSupersetModelRestApi):
@statsd_metrics
@rison(get_delete_ids_schema)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Saved Queries
+ """Bulk delete saved queries.
---
delete:
- description: >-
- Deletes multiple saved queries in a bulk operation.
+ summary: Bulk delete saved queries
parameters:
- in: query
name: q
@@ -231,11 +230,10 @@ class SavedQueryRestApi(BaseSupersetModelRestApi):
@statsd_metrics
@rison(get_export_ids_schema)
def export(self, **kwargs: Any) -> Response:
- """Export saved queries
+ """Download multiple saved queries as YAML files.
---
get:
- description: >-
- Exports multiple saved queries and downloads them as YAML files
+ summary: Download multiple saved queries as YAML files
parameters:
- in: query
name: q
@@ -296,9 +294,10 @@ class SavedQueryRestApi(BaseSupersetModelRestApi):
)
@requires_form_data
def import_(self) -> Response:
- """Import Saved Queries with associated databases
+ """Import saved queries with associated databases.
---
post:
+ summary: Import saved queries with associated databases
requestBody:
required: true
content:
diff --git a/superset/queries/saved_queries/schemas.py b/superset/queries/saved_queries/schemas.py
index 1fbaf758a9..7c314e6391 100644
--- a/superset/queries/saved_queries/schemas.py
+++ b/superset/queries/saved_queries/schemas.py
@@ -18,22 +18,20 @@ from marshmallow import fields, Schema
from marshmallow.validate import Length
openapi_spec_methods_override = {
- "get": {
- "get": {
- "description": "Get a saved query",
- }
- },
+ "get": {"get": {"summary": "Get a saved query"}},
"get_list": {
"get": {
- "description": "Get a list of saved queries, use Rison or JSON "
+ "summary": "Get a list of saved queries",
+ "description": "Gets a list of saved queries, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
}
},
- "post": {"post": {"description": "Create a saved query"}},
- "put": {"put": {"description": "Update a saved query"}},
- "delete": {"delete": {"description": "Delete saved query"}},
+ "post": {"post": {"summary": "Create a saved query"}},
+ "put": {"put": {"summary": "Update a saved query"}},
+ "delete": {"delete": {"summary": "Delete a saved query"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
}
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/queries/schemas.py b/superset/queries/schemas.py
index b4727a3934..9e0c9f8343 100644
--- a/superset/queries/schemas.py
+++ b/superset/queries/schemas.py
@@ -22,10 +22,11 @@ from superset.models.sql_lab import Query
from superset.sql_parse import Table
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get query detail information."}},
+ "get": {"get": {"summary": "Get query detail information"}},
"get_list": {
"get": {
- "description": "Get a list of queries, use Rison or JSON query "
+ "summary": "Get a list of queries",
+ "description": "Gets a list of queries, use Rison or JSON query "
"parameters for filtering, sorting, pagination and "
" for selecting specific columns and metadata.",
}
diff --git a/superset/reports/api.py b/superset/reports/api.py
index eb6ddcfa7f..3116aef3b8 100644
--- a/superset/reports/api.py
+++ b/superset/reports/api.py
@@ -245,11 +245,10 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def delete(self, pk: int) -> Response:
- """Delete a Report Schedule
+ """Delete a report schedule.
---
delete:
- description: >-
- Delete a Report Schedule
+ summary: Delete a report schedule
parameters:
- in: path
schema:
@@ -299,11 +298,10 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi):
def post(
self,
) -> Response:
- """Creates a new Report Schedule
+ """Create a new report schedule.
---
post:
- description: >-
- Create a new Report Schedule
+ summary: Create a new report schedule
requestBody:
description: Report Schedule schema
required: true
@@ -372,11 +370,10 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi):
@permission_name("put")
@requires_json
def put(self, pk: int) -> Response:
- """Updates an Report Schedule
+ """Update a report schedule.
---
put:
- description: >-
- Updates a Report Schedule
+ summary: Update a report schedule
parameters:
- in: path
schema:
@@ -458,11 +455,10 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk Report Schedule layers
+ """Bulk delete report schedules.
---
delete:
- description: >-
- Deletes multiple report schedules in a bulk operation.
+ summary: Bulk delete report schedules
parameters:
- in: query
name: q
diff --git a/superset/reports/logs/api.py b/superset/reports/logs/api.py
index f0c272caee..db307039bf 100644
--- a/superset/reports/logs/api.py
+++ b/superset/reports/logs/api.py
@@ -99,11 +99,10 @@ class ReportExecutionLogRestApi(BaseSupersetModelRestApi):
def get_list( # pylint: disable=arguments-differ
self, pk: int, **kwargs: Any
) -> Response:
- """Get a list of report schedule logs
+ """Get a list of report schedule logs.
---
get:
- description: >-
- Get a list of report schedule logs
+ summary: Get a list of report schedule logs
parameters:
- in: path
schema:
@@ -160,11 +159,10 @@ class ReportExecutionLogRestApi(BaseSupersetModelRestApi):
def get( # pylint: disable=arguments-differ
self, pk: int, log_id: int, **kwargs: Any
) -> Response:
- """Get a report schedule log
+ """Get a report schedule log.
---
get:
- description: >-
- Get a report schedule log
+ summary: Get a report schedule log
parameters:
- in: path
schema:
diff --git a/superset/reports/logs/schemas.py b/superset/reports/logs/schemas.py
index bec162fbcf..6459223523 100644
--- a/superset/reports/logs/schemas.py
+++ b/superset/reports/logs/schemas.py
@@ -16,10 +16,11 @@
# under the License.
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a report schedule log"}},
+ "get": {"get": {"summary": "Get a report schedule log"}},
"get_list": {
"get": {
- "description": "Get a list of report schedule logs, use Rison or JSON "
+ "summary": "Get a list of report schedule logs",
+ "description": "Gets a list of report schedule logs, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
diff --git a/superset/reports/schemas.py b/superset/reports/schemas.py
index 50439160f1..cfca8387ac 100644
--- a/superset/reports/schemas.py
+++ b/superset/reports/schemas.py
@@ -32,18 +32,20 @@ from superset.reports.models import (
)
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a report schedule"}},
+ "get": {"get": {"summary": "Get a report schedule"}},
"get_list": {
"get": {
- "description": "Get a list of report schedules, use Rison or JSON "
+ "summary": "Get a list of report schedules",
+ "description": "Gets a list of report schedules, use Rison or JSON "
"query parameters for filtering, sorting,"
" pagination and for selecting specific"
" columns and metadata.",
}
},
- "post": {"post": {"description": "Create a report schedule"}},
- "put": {"put": {"description": "Update a report schedule"}},
- "delete": {"delete": {"description": "Delete a report schedule"}},
+ "post": {"post": {"summary": "Create a report schedule"}},
+ "put": {"put": {"summary": "Update a report schedule"}},
+ "delete": {"delete": {"summary": "Delete a report schedule"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
}
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
diff --git a/superset/row_level_security/api.py b/superset/row_level_security/api.py
index 7bf00e92f7..0a823f74d6 100644
--- a/superset/row_level_security/api.py
+++ b/superset/row_level_security/api.py
@@ -38,6 +38,7 @@ from superset.row_level_security.commands.exceptions import RLSRuleNotFoundError
from superset.row_level_security.commands.update import UpdateRLSRuleCommand
from superset.row_level_security.schemas import (
get_delete_ids_schema,
+ openapi_spec_methods_override,
RLSListSchema,
RLSPostSchema,
RLSPutSchema,
@@ -128,6 +129,9 @@ class RLSRestApi(BaseSupersetModelRestApi):
"roles": [["id", BaseFilterRelatedRoles, lambda: []]],
}
+ openapi_spec_methods = openapi_spec_methods_override
+ """ Overrides GET methods OpenApi descriptions """
+
@expose("/", methods=("POST",))
@protect()
@safe
@@ -138,11 +142,10 @@ class RLSRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def post(self) -> Response:
- """Creates a new RLS rule
+ """Create a new RLS rule.
---
post:
- description: >-
- Create a new RLS Rule
+ summary: Create a new RLS rule
requestBody:
description: RLS schema
required: true
@@ -216,11 +219,10 @@ class RLSRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def put(self, pk: int) -> Response:
- """Updates an RLS Rule
+ """Update an RLS rule.
---
put:
- description: >-
- Updates an RLS Rule
+ summary: Update an RLS rule
parameters:
- in: path
schema:
@@ -305,11 +307,10 @@ class RLSRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete bulk RLS rules
+ """Bulk delete RLS rules.
---
delete:
- description: >-
- Deletes multiple RLS rules in a bulk operation.
+ summary: Bulk delete RLS rules
parameters:
- in: query
name: q
diff --git a/superset/row_level_security/schemas.py b/superset/row_level_security/schemas.py
index 617f2b04dc..6c8249b875 100644
--- a/superset/row_level_security/schemas.py
+++ b/superset/row_level_security/schemas.py
@@ -37,6 +37,21 @@ clause_description = "This is the condition that will be added to the WHERE clau
get_delete_ids_schema = {"type": "array", "items": {"type": "integer"}}
+openapi_spec_methods_override = {
+ "get": {"get": {"summary": "Get an RLS"}},
+ "get_list": {
+ "get": {
+ "summary": "Get a list of RLS",
+ "description": "Gets a list of RLS, use Rison or JSON "
+ "query parameters for filtering, sorting,"
+ " pagination and for selecting specific"
+ " columns and metadata.",
+ }
+ },
+ "delete": {"delete": {"summary": "Delete an RLS"}},
+ "info": {"get": {"summary": "Get metadata information about this API resource"}},
+}
+
class RolesSchema(Schema):
name = fields.String()
diff --git a/superset/security/api.py b/superset/security/api.py
index a45c5ce3eb..b4a3069759 100644
--- a/superset/security/api.py
+++ b/superset/security/api.py
@@ -88,12 +88,10 @@ class SecurityRestApi(BaseSupersetApi):
@statsd_metrics
@permission_name("read")
def csrf_token(self) -> Response:
- """
- Return the csrf token
+ """Get the CSRF token.
---
get:
- description: >-
- Fetch the CSRF token
+ summary: Get the CSRF token
responses:
200:
description: Result contains the CSRF token
@@ -118,12 +116,10 @@ class SecurityRestApi(BaseSupersetApi):
@statsd_metrics
@permission_name("grant_guest_token")
def guest_token(self) -> Response:
- """Response
- Returns a guest token that can be used for auth in embedded Superset
+ """Get a guest token that can be used for auth in embedded Superset.
---
post:
- description: >-
- Fetches a guest token
+ summary: Get a guest token
requestBody:
description: Parameters for the guest token
required: true
diff --git a/superset/sqllab/api.py b/superset/sqllab/api.py
index 72d1558c04..ebf7fab32a 100644
--- a/superset/sqllab/api.py
+++ b/superset/sqllab/api.py
@@ -95,11 +95,10 @@ class SqlLabRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def estimate_query_cost(self) -> Response:
- """Estimates the SQL query execution cost
+ """Estimate the SQL query execution cost.
---
post:
- summary: >-
- Estimates the SQL query execution cost
+ summary: Estimate the SQL query execution cost
requestBody:
description: SQL query and params
required: true
@@ -144,11 +143,10 @@ class SqlLabRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def export_csv(self, client_id: str) -> CsvResponse:
- """Exports the SQL query results to a CSV
+ """Export the SQL query results to a CSV.
---
get:
- summary: >-
- Exports the SQL query results to a CSV
+ summary: Export the SQL query results to a CSV
parameters:
- in: path
schema:
@@ -206,11 +204,10 @@ class SqlLabRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def get_results(self, **kwargs: Any) -> FlaskResponse:
- """Gets the result of a SQL query execution
+ """Get the result of a SQL query execution.
---
get:
- summary: >-
- Gets the result of a SQL query execution
+ summary: Get the result of a SQL query execution
parameters:
- in: query
name: q
@@ -260,11 +257,10 @@ class SqlLabRestApi(BaseSupersetApi):
log_to_statsd=False,
)
def execute_sql_query(self) -> FlaskResponse:
- """Executes a SQL query
+ """Execute a SQL query.
---
post:
- description: >-
- Starts the execution of a SQL query
+ summary: Execute a SQL query
requestBody:
description: SQL query and params
required: true
diff --git a/superset/tags/api.py b/superset/tags/api.py
index 21791a6ef0..a12461e8e4 100644
--- a/superset/tags/api.py
+++ b/superset/tags/api.py
@@ -140,11 +140,12 @@ class TagRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def add_objects(self, object_type: ObjectTypes, object_id: int) -> Response:
- """Adds tags to an object. Creates new tags if they do not already exist
+ """Add tags to an object. Create new tags if they do not already exist.
---
post:
+ summary: Add tags to an object
description: >-
- Add tags to an object..
+ Adds tags to an object. Creates new tags if they do not already exist.
requestBody:
description: Tag schema
required: true
@@ -213,11 +214,10 @@ class TagRestApi(BaseSupersetModelRestApi):
def delete_object(
self, object_type: ObjectTypes, object_id: int, tag: str
) -> Response:
- """Deletes a Tagged Object
+ """Delete a tagged object.
---
delete:
- description: >-
- Deletes a Tagged Object.
+ summary: Delete a tagged object
parameters:
- in: path
schema:
@@ -280,11 +280,12 @@ class TagRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def bulk_delete(self, **kwargs: Any) -> Response:
- """Delete Tags
+ """Bulk delete tags. This will remove all tagged objects with this tag.
---
delete:
+ summary: Bulk delete tags
description: >-
- Deletes multiple Tags. This will remove all tagged objects with this tag
+ Bulk deletes tags. This will remove all tagged objects with this tag.
parameters:
- in: query
name: q
@@ -334,11 +335,10 @@ class TagRestApi(BaseSupersetModelRestApi):
log_to_statsd=False,
)
def get_objects(self) -> Response:
- """Gets all objects associated with a Tag
+ """Get all objects associated with a tag.
---
get:
- description: >-
- Gets all objects associated with a Tag.
+ summary: Get all objects associated with a tag
parameters:
- in: path
schema:
diff --git a/superset/tags/schemas.py b/superset/tags/schemas.py
index 71ab005bbc..f519901a8b 100644
--- a/superset/tags/schemas.py
+++ b/superset/tags/schemas.py
@@ -19,23 +19,22 @@ from marshmallow import fields, Schema
from superset.dashboards.schemas import UserSchema
delete_tags_schema = {"type": "array", "items": {"type": "string"}}
-
object_type_description = "A title for the tag."
openapi_spec_methods_override = {
- "get": {"get": {"description": "Get a tag detail information."}},
+ "get": {"get": {"summary": "Get a tag detail information"}},
"get_list": {
"get": {
+ "summary": "Get a list of tags",
"description": "Get a list of tags, use Rison or JSON query "
"parameters for filtering, sorting, pagination and "
" for selecting specific columns and metadata.",
}
},
- "info": {
- "get": {
- "description": "Several metadata information about tag API " "endpoints.",
- }
- },
+ "put": {"put": {"summary": "Update a tag"}},
+ "delete": {"delete": {"summary": "Delete a tag"}},
+ "post": {"post": {"summary": "Create a tag"}},
+ "info": {"get": {"summary": "Get metadata information about tag API endpoints"}},
}
diff --git a/superset/views/api.py b/superset/views/api.py
index 8c3e4b825c..312efb947e 100644
--- a/superset/views/api.py
+++ b/superset/views/api.py
@@ -53,7 +53,7 @@ class Api(BaseSupersetView):
@expose("/v1/query/", methods=("POST",))
def query(self) -> FlaskResponse:
"""
- Takes a query_obj constructed in the client and returns payload data response
+ Take a query_obj constructed in the client and returns payload data response
for the given query_obj.
raises SupersetSecurityException: If the user cannot access the resource
@@ -75,7 +75,7 @@ class Api(BaseSupersetView):
@expose("/v1/form_data/", methods=("GET",))
def query_form_data(self) -> FlaskResponse:
"""
- Get the formdata stored in the database for existing slice.
+ Get the form_data stored in the database for existing slice.
params: slice_id: integer
"""
form_data = {}
@@ -94,7 +94,7 @@ class Api(BaseSupersetView):
@rison(get_time_range_schema)
@expose("/v1/time_range/", methods=("GET",))
def time_range(self, **kwargs: Any) -> FlaskResponse:
- """Get actually time range from human readable string or datetime expression"""
+ """Get actually time range from human-readable string or datetime expression."""
time_range = kwargs["rison"]
try:
since, until = get_since_until(time_range)
diff --git a/superset/views/base_api.py b/superset/views/base_api.py
index dca7a96b1d..7a5540406a 100644
--- a/superset/views/base_api.py
+++ b/superset/views/base_api.py
@@ -537,9 +537,10 @@ class BaseSupersetModelRestApi(ModelRestApi, BaseSupersetApiMixin):
@rison(get_related_schema)
@handle_api_exception
def related(self, column_name: str, **kwargs: Any) -> FlaskResponse:
- """Get related fields data
+ """Get related fields data.
---
get:
+ summary: Get related fields data
parameters:
- in: path
schema:
@@ -615,9 +616,10 @@ class BaseSupersetModelRestApi(ModelRestApi, BaseSupersetApiMixin):
@rison(get_related_schema)
@handle_api_exception
def distinct(self, column_name: str, **kwargs: Any) -> FlaskResponse:
- """Get distinct values from field data
+ """Get distinct values from field data.
---
get:
+ summary: Get distinct values from field data
parameters:
- in: path
schema:
diff --git a/superset/views/log/api.py b/superset/views/log/api.py
index d3699e3885..33f4ad51d4 100644
--- a/superset/views/log/api.py
+++ b/superset/views/log/api.py
@@ -31,6 +31,7 @@ from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics
from superset.views.log import LogMixin
from superset.views.log.schemas import (
get_recent_activity_schema,
+ openapi_spec_methods_override,
RecentActivityResponseSchema,
RecentActivitySchema,
)
@@ -64,6 +65,9 @@ class LogRestApi(LogMixin, BaseSupersetModelRestApi):
RecentActivitySchema,
)
+ openapi_spec_methods = openapi_spec_methods_override
+ """ Overrides GET methods OpenApi descriptions """
+
@staticmethod
def is_enabled() -> bool:
return app.config["FAB_ADD_SECURITY_VIEWS"] and app.config["SUPERSET_LOG_VIEW"]
@@ -92,7 +96,7 @@ class LogRestApi(LogMixin, BaseSupersetModelRestApi):
log_to_statsd=False,
)
def recent_activity(self, **kwargs: Any) -> FlaskResponse:
- """Get recent activity data for a user
+ """Get recent activity data for a user.
---
get:
summary: Get recent activity data for a user
diff --git a/superset/views/log/schemas.py b/superset/views/log/schemas.py
index 303af1e7a9..94130371f1 100644
--- a/superset/views/log/schemas.py
+++ b/superset/views/log/schemas.py
@@ -26,6 +26,18 @@ get_recent_activity_schema = {
},
}
+openapi_spec_methods_override = {
+ "get": {"get": {"summary": "Get a log detail information"}},
+ "get_list": {
+ "get": {
+ "summary": "Get a list of logs",
+ "description": "Gets a list of logs, use Rison or JSON query "
+ "parameters for filtering, sorting, pagination and "
+ " for selecting specific columns and metadata.",
+ }
+ },
+}
+
class RecentActivitySchema(Schema):
action = fields.String(
diff --git a/superset/views/users/api.py b/superset/views/users/api.py
index b9161021b2..5324975637 100644
--- a/superset/views/users/api.py
+++ b/superset/views/users/api.py
@@ -26,7 +26,7 @@ user_response_schema = UserResponseSchema()
class CurrentUserRestApi(BaseSupersetApi):
- """An api to get information about the current user"""
+ """An API to get information about the current user"""
resource_name = "me"
openapi_spec_tag = "Current User"
@@ -35,11 +35,12 @@ class CurrentUserRestApi(BaseSupersetApi):
@expose("/", methods=("GET",))
@safe
def get_me(self) -> Response:
- """Get the user object corresponding to the agent making the request
+ """Get the user object corresponding to the agent making the request.
---
get:
+ summary: Get the user object
description: >-
- Returns the user object corresponding to the agent making the request,
+ Gets the user object corresponding to the agent making the request,
or returns a 401 error if the user is unauthenticated.
responses:
200:
@@ -65,11 +66,12 @@ class CurrentUserRestApi(BaseSupersetApi):
@expose("/roles/", methods=("GET",))
@safe
def get_my_roles(self) -> Response:
- """Get the user roles corresponding to the agent making the request
+ """Get the user roles corresponding to the agent making the request.
---
get:
+ summary: Get the user roles
description: >-
- Returns the user roles corresponding to the agent making the request,
+ Gets the user roles corresponding to the agent making the request,
or returns a 401 error if the user is unauthenticated.
responses:
200: