Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add flow_framework namespace specs #553

Merged
merged 21 commits into from
Sep 6, 2024
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Added 404 responses to `/_alias/{name}` and `/{index}/_alias/{name}` ([#519](https://github.com/opensearch-project/opensearch-api-specification/pull/519))
- Added `asynchronous_search` ([#525](https://github.com/opensearch-project/opensearch-api-specification/pull/525))
- Added `DELETE /_plugins/_ml/tasks/{task_id}` ([#530](https://github.com/opensearch-project/opensearch-api-specification/pull/530))
- Added `/_plugins/_flow_framework` ([#508](https://github.com/opensearch-project/opensearch-api-specification/issues/508))
- Added `AwarenessAttributeStats` to `/_cluster/health` ([#534](https://github.com/opensearch-project/opensearch-api-specification/pull/534))
- Added `cache_reserved_in_bytes` to `ClusterFileSystem` ([#534](https://github.com/opensearch-project/opensearch-api-specification/pull/534))
- Added `cluster_manager` to `ClusterNodeCount` ([#534](https://github.com/opensearch-project/opensearch-api-specification/pull/534))
Expand Down
294 changes: 294 additions & 0 deletions spec/namespaces/flow_framework.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
openapi: 3.1.0
info:
title: OpenSearch Flow Framework API
description: OpenSearch Flow Framework API.
version: 1.0.0
paths:
/_plugins/_flow_framework/workflow:
post:
operationId: flow_framework.create.0
x-operation-group: flow_framework.create
x-version-added: '2.12'
description: Create a workflow.
externalDocs:
url: https://opensearch.org/docs/latest/automating-configurations/api/create-workflow/
parameters:
- $ref: '#/components/parameters/flow_framework.create::query.provision'
- $ref: '#/components/parameters/flow_framework.create::query.validation'
# eslint-disable-next-line @cspell/spellchecker
dblock marked this conversation as resolved.
Show resolved Hide resolved
- $ref: '#/components/parameters/flow_framework.create::query.reprovision'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

requestBody:
$ref: '#/components/requestBodies/flow_framework.create'
responses:
'201':
$ref: '#/components/responses/flow_framework.create'
'403':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/FlowFrameworkException'
'400':
description: Bad Request - Multiple possible reasons
oneOf:
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/BadRequestError'
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/ConflictError'
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/MissingParameterError'
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/ParameterConflictError'
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/MaxWorkflowsLimitError'
- $ref: '../schemas/flow_framework._common.yaml#/components/schemas/WorkflowSaveError'
/_plugins/_flow_framework/workflow/{workflow_id}:
delete:
operationId: flow_framework.delete.0
x-operation-group: flow_framework.delete
x-version-added: '2.12'
description: Delete a workflow.
externalDocs:
url: https://opensearch.org/docs/latest/automating-configurations/api/delete-workflow/
parameters:
- $ref: '#/components/parameters/flow_framework.delete::query.clear_status'
- $ref: '#/components/parameters/flow_framework.get::path.workflow_id'
responses:
'200':
$ref: '#/components/responses/flow_framework.delete'
'400':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/WorkFlowIdNullError'
'403':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/FlowFrameworkException'
'404':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/TemplateNotFoundError'
put:
operationId: flow_framework.update.0
x-operation-group: flow_framework.update
x-version-added: '2.12'
description: Update a workflow. You can only update a complete workflow if it has not yet been provisioned.
externalDocs:
url: https://opensearch.org/docs/latest/automating-configurations/api/create-workflow/
parameters:
- $ref: '#/components/parameters/flow_framework.update::query.update_fields'
- $ref: '#/components/parameters/flow_framework.get::path.workflow_id'
requestBody:
$ref: '#/components/requestBodies/flow_framework.update'
responses:
'201':
$ref: '#/components/responses/flow_framework.create'
description: It returns the workflow_id
'404':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/TemplateNotFoundError'
get:
operationId: flow_framework.get.0
x-operation-group: flow_framework.get
x-version-added: '2.12'
externalDocs:
url: https://opensearch.org/docs/latest/automating-configurations/api/get-workflow/
description: Get a workflow.
parameters:
- $ref: '#/components/parameters/flow_framework.get::path.workflow_id'
responses:
'200':
$ref: '#/components/responses/flow_framework.get'
'404':
$ref: '../schemas/flow_framework._common.yaml#/components/schemas/TemplateNotFoundError'
components:
parameters:
flow_framework.get::path.workflow_id:
name: workflow_id
in: path
required: true
schema:
type: string
flow_framework.create::query.provision:
in: query
name: provision
schema:
description: Provision the workflow as part of the request
type: boolean
default: false
# eslint-disable-next-line @cspell/spellchecker
flow_framework.create::query.reprovision:
x-version-added: '2.17'
in: query
# eslint-disable-next-line @cspell/spellchecker
name: reprovision
schema:
type: boolean
default: false
flow_framework.create::query.validation:
in: query
name: validation
schema:
description: Validate the workflow. Valid values are all (validate the template) and none (do not validate the template). Default is all.
type: string
default: all
flow_framework.update::query.update_fields:
in: query
name: update_fields
schema:
description: Update only the fields included in the request body.
type: boolean
default: false
flow_framework.delete::query.clear_status:
in: query
name: clear_status
schema:
description: Delete the workflow state (without deprovisioning resources) after deleting the template. OpenSearch deletes the workflow state only if the provisioning status is not IN_PROGRESS. Default is false.
type: boolean
default: false
requestBodies:
flow_framework.create:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the workflow.
description:
type: string
description: A description of the workflow.
use_case:
type: string
description: A use case, which can be used with the Search Workflow API to find related workflows.
version:
type: object
description: A key-value map with two fields, template, which identifies the template version, and compatibility, which identifies a list of minimum required OpenSearch versions.
properties:
template:
type: string
description: The template version of the workflow.
compatibility:
type: array
items:
type: string
description: A list of minimum required OpenSearch versions.
workflows:
type: object
description: A map of workflows. Presently, only the provision key is supported. The value for the workflow key is a key-value map that includes fields for user_params and lists of nodes and edges.
required:
- name
flow_framework.update:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the workflow.
description:
type: string
description: A description of the workflow.
use_case:
type: string
description: A use case, which can be used with the Search Workflow API to find related workflows.
version:
type: object
description: A key-value map with two fields, template, which identifies the template version, and compatibility, which identifies a list of minimum required OpenSearch versions.
properties:
template:
type: string
description: The template version of the workflow.
compatibility:
type: array
items:
type: string
description: A list of minimum required OpenSearch versions.
oneOf:
- required: [name]
- required: [description]
- required: [use_case]
- required: [version]
responses:
flow_framework.create:
content:
application/json:
schema:
type: object
properties:
workflow_id:
type: string
description: The ID of the workflow to be updated. Required for the PUT method.
required:
- workflow_id
flow_framework.delete:
content:
application/json:
schema:
type: object
properties:
_index:
type: string
description: The name of the index where the document was stored.
_id:
type: string
description: The unique identifier of the deleted document.
_version:
type: integer
description: The version of the document after the deletion.
result:
type: string
description: The result of the deletion operation.
enum: [deleted, not_found]
_shards:
type: object
properties:
total:
type: integer
description: The total number of shards involved in the deletion.
successful:
type: integer
description: The number of shards where the deletion was successful.
failed:
type: integer
description: The number of shards where the deletion failed.
_seq_no:
type: integer
description: The sequence number assigned to the document after the deletion.
_primary_term:
type: integer
description: The primary term assigned to the document after the deletion.
flow_framework.get:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
use_case:
type: string
workflows:
type: object
user:
type: object
properties:
name:
type: string
backend_roles:
type: array
items:
type: string
roles:
type: array
items:
type: string
custom_attribute_names:
type: array
items:
type: string
user_requested_tenant:
type: string
nullable: true
created_time:
type: integer
last_updated_time:
type: integer
flow_framework.update@404:
content:
application/json: { }
flow_framework.create@400:
content:
application/json: { }
flow_framework.delete@400:
content:
description: Workflow ID can not be null
application/json: { }
Loading