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 specs for Flow framework namespace #549

Closed
wants to merge 10 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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))

### Changed

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
- $ref: '#/components/parameters/flow_framework.create::query.reprovision'
requestBody:
$ref: '#/components/requestBodies/flow_framework.create'
responses:
'201':
$ref: '#/components/responses/flow_framework.create'
Comment on lines +23 to +24
Copy link
Member

Choose a reason for hiding this comment

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

Pretty sure there are some 4xx responses for invalid template parsing:

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Will add in the next revision

'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
junweid62 marked this conversation as resolved.
Show resolved Hide resolved
'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:
junweid62 marked this conversation as resolved.
Show resolved Hide resolved
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.
junweid62 marked this conversation as resolved.
Show resolved Hide resolved
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