538 lines
13 KiB
YAML
538 lines
13 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Ordo REST
|
|
version: 0.0.1-SNAPSHOT
|
|
description: Optional Spring adapter over OrdoEngine. No authentication. Default base path `/ordo`.
|
|
servers:
|
|
- url: /ordo
|
|
paths:
|
|
/definitions/parse:
|
|
post:
|
|
summary: Parse definition JSON without publishing
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProcessDefinitionDocument'
|
|
responses:
|
|
'200':
|
|
description: Parsed graph (version 0)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProcessDefinitionDocument'
|
|
'400':
|
|
$ref: '#/components/responses/Error'
|
|
/definitions:
|
|
post:
|
|
summary: Parse and publish
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProcessDefinitionDocument'
|
|
responses:
|
|
'201':
|
|
description: Published definition
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProcessDefinitionDocument'
|
|
'400':
|
|
$ref: '#/components/responses/Error'
|
|
get:
|
|
summary: Latest version of each definition
|
|
parameters:
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: Page of definitions
|
|
/definitions/{definitionId}:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/definitionId'
|
|
responses:
|
|
'200':
|
|
description: Latest definition
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ProcessDefinitionDocument'
|
|
'404':
|
|
description: Not found
|
|
/definitions/{definitionId}/versions:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/definitionId'
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: Versions newest first
|
|
/definitions/{definitionId}/versions/{version}:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/definitionId'
|
|
- name: version
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
responses:
|
|
'200':
|
|
description: Specific version
|
|
'404':
|
|
description: Not found
|
|
/instances:
|
|
post:
|
|
summary: Start an instance
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required: [definitionId, initiator]
|
|
properties:
|
|
definitionId:
|
|
type: string
|
|
initiator:
|
|
type: string
|
|
context:
|
|
type: object
|
|
properties:
|
|
variables:
|
|
type: object
|
|
additionalProperties: true
|
|
responses:
|
|
'200':
|
|
description: Started instance
|
|
'404':
|
|
$ref: '#/components/responses/Error'
|
|
get:
|
|
parameters:
|
|
- name: definitionId
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: status
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: initiator
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: startedFrom
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: startedTo
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: Page of instances
|
|
/instances/{instanceId}:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
responses:
|
|
'200':
|
|
description: Instance
|
|
'404':
|
|
description: Not found
|
|
/instances/{instanceId}/withdraw:
|
|
post:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ActorComment'
|
|
responses:
|
|
'200':
|
|
description: Withdrawn
|
|
'403':
|
|
$ref: '#/components/responses/Error'
|
|
'404':
|
|
$ref: '#/components/responses/Error'
|
|
'409':
|
|
$ref: '#/components/responses/Error'
|
|
/instances/{instanceId}/cancel:
|
|
post:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ActorComment'
|
|
responses:
|
|
'200':
|
|
description: Cancelled
|
|
'404':
|
|
$ref: '#/components/responses/Error'
|
|
'409':
|
|
$ref: '#/components/responses/Error'
|
|
/instances/{instanceId}/tasks:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
responses:
|
|
'200':
|
|
description: All tasks
|
|
/instances/{instanceId}/tasks/pending:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
responses:
|
|
'200':
|
|
description: Pending tasks
|
|
/instances/{instanceId}/history:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: Timeline
|
|
/instances/{instanceId}/action-executions:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/instanceId'
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: ACTION executions
|
|
/tasks:
|
|
get:
|
|
parameters:
|
|
- name: assignee
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: instanceId
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: definitionId
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: status
|
|
in: query
|
|
schema:
|
|
type: string
|
|
- name: createdFrom
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- name: createdTo
|
|
in: query
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/size'
|
|
responses:
|
|
'200':
|
|
description: Page of tasks
|
|
/tasks/pending:
|
|
get:
|
|
parameters:
|
|
- name: assignee
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Pending tasks for assignee
|
|
/tasks/{taskId}:
|
|
get:
|
|
parameters:
|
|
- $ref: '#/components/parameters/taskId'
|
|
responses:
|
|
'200':
|
|
description: Task
|
|
'404':
|
|
description: Not found
|
|
/tasks/{taskId}/approve:
|
|
post:
|
|
parameters:
|
|
- $ref: '#/components/parameters/taskId'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ActorComment'
|
|
responses:
|
|
'200':
|
|
description: Approved
|
|
'403':
|
|
$ref: '#/components/responses/Error'
|
|
'409':
|
|
$ref: '#/components/responses/Error'
|
|
/tasks/{taskId}/reject:
|
|
post:
|
|
parameters:
|
|
- $ref: '#/components/parameters/taskId'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ActorComment'
|
|
responses:
|
|
'200':
|
|
description: Rejected
|
|
'403':
|
|
$ref: '#/components/responses/Error'
|
|
'409':
|
|
$ref: '#/components/responses/Error'
|
|
/tasks/{taskId}/reassign:
|
|
post:
|
|
parameters:
|
|
- $ref: '#/components/parameters/taskId'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required: [actor, newAssignee]
|
|
properties:
|
|
actor:
|
|
type: string
|
|
newAssignee:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Reassigned
|
|
'403':
|
|
$ref: '#/components/responses/Error'
|
|
'409':
|
|
$ref: '#/components/responses/Error'
|
|
/due:
|
|
post:
|
|
parameters:
|
|
- name: limit
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
default: 100
|
|
requestBody:
|
|
required: false
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
limit:
|
|
type: integer
|
|
minimum: 1
|
|
responses:
|
|
'200':
|
|
description: Batch result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
processed:
|
|
type: integer
|
|
'400':
|
|
$ref: '#/components/responses/Error'
|
|
/catalog/conditions:
|
|
get:
|
|
responses:
|
|
'200':
|
|
description: host condition catalog (ref + optional params)
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CatalogItem'
|
|
/catalog/actions:
|
|
get:
|
|
responses:
|
|
'200':
|
|
description: actionKey catalog
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CatalogItem'
|
|
/catalog/assignees:
|
|
get:
|
|
responses:
|
|
'200':
|
|
description: Assignee catalog
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CatalogItem'
|
|
components:
|
|
parameters:
|
|
page:
|
|
name: page
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 0
|
|
default: 0
|
|
size:
|
|
name: size
|
|
in: query
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
default: 20
|
|
definitionId:
|
|
name: definitionId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
instanceId:
|
|
name: instanceId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
taskId:
|
|
name: taskId
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
responses:
|
|
Error:
|
|
description: Error body
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ErrorBody'
|
|
schemas:
|
|
ErrorBody:
|
|
type: object
|
|
properties:
|
|
error:
|
|
type: string
|
|
message:
|
|
type: string
|
|
ActorComment:
|
|
type: object
|
|
required: [actor]
|
|
properties:
|
|
actor:
|
|
type: string
|
|
comment:
|
|
type: string
|
|
CatalogItem:
|
|
type: object
|
|
properties:
|
|
key:
|
|
type: string
|
|
label:
|
|
type: string
|
|
params:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
enum: [number, string, boolean]
|
|
label:
|
|
type: string
|
|
ProcessDefinitionDocument:
|
|
type: object
|
|
required: [id, name, steps, transitions]
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
version:
|
|
type: integer
|
|
startStep:
|
|
type: string
|
|
steps:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
kind:
|
|
type: string
|
|
enum: [APPROVAL, ACTION, PARALLEL]
|
|
candidates:
|
|
type: array
|
|
items:
|
|
type: string
|
|
policy:
|
|
type: string
|
|
enum: [ANY, ALL]
|
|
action:
|
|
type: string
|
|
due:
|
|
type: object
|
|
branches:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
steps:
|
|
type: array
|
|
items:
|
|
type: object
|
|
transitions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
transitions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
from:
|
|
type: string
|
|
to:
|
|
type: string
|
|
nullable: true
|
|
when:
|
|
type: object
|
|
additionalProperties: true
|
|
priority:
|
|
type: integer
|