2019-11-19 20:57:46 +00:00
openapi : "3.0.0"
info :
version : 1.0 .0
title : Workflow Microservice
license :
name : MIT
servers :
- url : http://localhost:5000/v1.0
paths :
2019-12-11 21:54:24 +00:00
# /v1.0/study
/study :
2019-11-19 20:57:46 +00:00
get :
2019-12-18 19:02:17 +00:00
operationId : crc.api.all_studies
2019-12-11 21:54:24 +00:00
summary : Provides a list of studies related to the current user.
2019-11-19 20:57:46 +00:00
tags :
2019-12-18 19:02:17 +00:00
- Studies
2019-12-11 21:54:24 +00:00
responses :
'200' :
description : An array of studies, ordered by the last modified date.
content :
application/json :
schema :
$ref : "#/components/schemas/Study"
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
2019-12-18 19:02:17 +00:00
/study/{study_id}:
2019-12-11 21:54:24 +00:00
get :
2019-12-18 19:02:17 +00:00
operationId : crc.api.get_study
summary : Provides a single study
2019-12-11 21:54:24 +00:00
tags :
2019-12-18 19:02:17 +00:00
- Studies
2019-12-11 21:54:24 +00:00
parameters :
- name : study_id
in : path
required : true
description : The id of the study for which workflows should be returned.
schema :
type : integer
format : int32
responses :
'200' :
2019-12-18 19:02:17 +00:00
description : An Study Object
2019-12-11 21:54:24 +00:00
content :
application/json :
schema :
2019-12-18 19:02:17 +00:00
$ref : "#/components/schemas/Study"
2019-12-11 21:54:24 +00:00
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
2019-12-18 19:02:17 +00:00
/study-update/{study_id}:
2019-12-11 21:54:24 +00:00
post :
2019-12-18 19:02:17 +00:00
operationId : crc.api.post_update_study_from_protocol_builder
summary : If the study is up-to-date with Protocol Builder, returns a 304 Not Modified. If out of date, return a 202 Accepted and study state changes to updating.
2019-12-11 21:54:24 +00:00
tags :
2019-12-18 19:02:17 +00:00
- Study Status
2019-11-19 20:57:46 +00:00
parameters :
2019-12-11 21:54:24 +00:00
- name : study_id
in : path
required : true
2019-12-18 19:02:17 +00:00
description : The id of the study that should be checked for updates.
2019-12-11 21:54:24 +00:00
schema :
type : integer
format : int32
2019-12-18 19:02:17 +00:00
responses :
'304' :
description : Study is currently up to date and does not need to be reloaded from Protocol Builder
'202' :
description : Request accepted, will preform an update. Study state set to "updating"
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
/study/{study_id}/workflows:
get :
operationId : crc.api.get_study_workflows
summary : Provides a list of workflows to be completed for the given study.
tags :
- Studies
parameters :
- name : study_id
2019-12-11 21:54:24 +00:00
in : path
required : true
2019-12-18 19:02:17 +00:00
description : The id of the study for which workflows should be returned.
2019-11-19 20:57:46 +00:00
schema :
type : integer
format : int32
responses :
'200' :
2019-12-18 19:02:17 +00:00
description : An array of workflows
2019-12-11 21:54:24 +00:00
content :
application/json :
2019-11-19 20:57:46 +00:00
schema :
2019-12-18 19:02:17 +00:00
type : array
items :
$ref : "#/components/schemas/Workflow"
default :
description : unexpected error
2019-11-19 20:57:46 +00:00
content :
application/json :
schema :
2019-12-11 21:54:24 +00:00
$ref : "#/components/schemas/Error"
2019-12-18 19:02:17 +00:00
post :
operationId : crc.api.add_workflow_to_study
summary : Starts a new workflow for the given study using the provided spec. This is atypical, and should be left to the protocol builder.
tags :
- Studies
parameters :
- name : study_id
in : path
required : true
description : The id of the study for which a workflow should start
schema :
type : integer
format : int32
2019-12-18 19:42:40 +00:00
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/WorkflowSpec'
2019-12-18 19:02:17 +00:00
responses :
'200' :
description : An array of workflows
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Workflow"
2019-11-19 20:57:46 +00:00
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
2019-12-11 21:54:24 +00:00
# /v1.0/workflow/0
2019-12-18 19:02:17 +00:00
/workflow-specification :
get :
operationId : crc.api.all_specifications
summary : Provides a list of workflows specifications that can be added to a study manually. Please note that Protocol Builder will handle this most of the time.
tags :
- Workflow Specifications
responses :
'200' :
description : An array of workflow specifications
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/WorkflowSpec"
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
# /v1.0/workflow/0
2019-12-11 21:54:24 +00:00
/workflow/{workflow_id}:
2019-11-19 20:57:46 +00:00
get :
2019-12-18 19:02:17 +00:00
operationId : crc.api.get_workflow
summary : Detailed information for a specific workflow instance
2019-11-19 20:57:46 +00:00
tags :
2019-12-11 21:54:24 +00:00
- Workflows and Tasks
2019-11-19 20:57:46 +00:00
parameters :
- name : workflow_id
in : path
required : true
2019-12-11 21:54:24 +00:00
description : The id of the workflow
2019-11-19 20:57:46 +00:00
schema :
type : integer
format : int32
responses :
'200' :
2019-12-11 21:54:24 +00:00
description : Returns details about the workflows state and current task
2019-11-19 20:57:46 +00:00
content :
application/json :
schema :
2019-12-11 21:54:24 +00:00
$ref : "#/components/schemas/Workflow"
2019-11-19 20:57:46 +00:00
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
2019-12-18 19:02:17 +00:00
# /v1.0/workflow/0/task/0
/workflow/{workflow_id}/task/{task_id}:
2019-11-19 20:57:46 +00:00
get :
2019-12-18 19:02:17 +00:00
operationId : crc.api.get_task
summary : Get details of specific task in specific workflow instance
2019-11-19 20:57:46 +00:00
tags :
2019-12-11 21:54:24 +00:00
- Workflows and Tasks
2019-11-19 20:57:46 +00:00
parameters :
- name : workflow_id
in : path
required : true
description : The id of the workflow
schema :
type : integer
format : int32
- name : task_id
in : path
required : true
description : The id of the task
schema :
2019-12-18 19:02:17 +00:00
type : string
2019-11-19 20:57:46 +00:00
responses :
'200' :
description : Expected response to a valid request
content :
application/json :
schema :
$ref : "#/components/schemas/Task"
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
2019-12-18 19:02:17 +00:00
put :
operationId : crc.api.update_task
2019-12-11 21:54:24 +00:00
summary : Update, attempt to complete a workflow task
2019-11-19 20:57:46 +00:00
tags :
2019-12-11 21:54:24 +00:00
- Workflows and Tasks
2019-11-19 20:57:46 +00:00
parameters :
2019-12-18 19:02:17 +00:00
- in : body
name : task
schema :
$ref : '#/components/schemas/Task'
2019-11-19 20:57:46 +00:00
- name : workflow_id
in : path
required : true
description : The id of the workflow
schema :
type : integer
format : int32
- name : task_id
in : path
required : true
description : The id of the task
schema :
2019-12-18 19:02:17 +00:00
type : string
2019-11-19 20:57:46 +00:00
responses :
'201' :
description : Null response
default :
description : unexpected error
content :
application/json :
schema :
$ref : "#/components/schemas/Error"
components :
schemas :
2019-12-11 21:54:24 +00:00
Study :
required :
- id
- title
- last_updated
- pb_status
- pi
- sponsor
- ind_number
properties :
id :
type : string
format : string
example : AB1234
title :
type : string
example : The impact of fried pickles on beer consumption in bipedal software developers.
last_updated :
type : string
format : date_time
example : "2019-12-25T09:12:33.001Z"
pb_status :
type : string
enum : [ started, done]
example : done
pi :
type : string
example : dhf8r
sponsor :
type : string
example : "Sartography Pharmaceuticals"
ind_number :
type : string
example : "27b-6-42"
2019-12-18 19:02:17 +00:00
WorkflowSpec :
2019-12-11 21:54:24 +00:00
properties :
id :
type : string
2019-12-18 19:02:17 +00:00
display_name :
2019-12-11 21:54:24 +00:00
type : string
2019-12-18 19:02:17 +00:00
description :
2019-12-11 21:54:24 +00:00
type : string
2019-12-18 19:02:17 +00:00
bpmn_url :
2019-12-11 21:54:24 +00:00
type : string
2019-12-18 19:02:17 +00:00
svg_url :
2019-12-11 21:54:24 +00:00
type : string
Workflow :
2019-11-19 20:57:46 +00:00
properties :
id :
readOnly : true
type : integer
format : int64
2019-12-18 19:02:17 +00:00
status :
2019-12-11 21:54:24 +00:00
type : enum
enum : [ 'user_input_required' , 'waiting' , 'complete' ]
2019-12-18 19:02:17 +00:00
study_id :
readOnly : true
type : integer
workflow_spec :
$ref : "#/components/schemas/WorkflowSpec"
current_task_ids :
type : array
items :
type : String
messages :
type : array
items :
type : String
2019-11-19 20:57:46 +00:00
example :
2019-12-11 21:54:24 +00:00
id : 291234
2019-12-18 19:02:17 +00:00
status : 'user_input_required'
current_task_ids : [ 'study_identification' , 'Detailed Reports' ]
workflow_spec :
id : 'prot_def'
display_name : 'Protocol Definition'
description : 'Collect some additional information about your protocol to complete forms and processes.'
bpmn_url : 'https://crconnect.viriginia.edu/prot_def.bpmn'
svg_url : 'https://crconnect.viriginia.edu/prot_def.svg'
2019-12-11 21:54:24 +00:00
messages : [
"Protocol Builder reports that the protocol process is complete for this study." ,
"IDS Submission Template was generated successfully."
]
Task :
2019-11-19 20:57:46 +00:00
properties :
id :
readOnly : true
type : integer
format : int64
name :
type : string
2019-12-11 21:54:24 +00:00
type :
2019-11-19 20:57:46 +00:00
type : string
2019-12-11 21:54:24 +00:00
form :
2019-12-18 19:02:17 +00:00
$ref : "#/components/schemas/Form"
2019-11-19 20:57:46 +00:00
example :
2019-12-11 21:54:24 +00:00
{
id : study_identification,
name : "Study Identification" ,
type : form,
form : {
field : {
id : adult_oncology,
type : enum,
label : "Is this study treating adult oncology patients?" ,
options : [ "yes" , "no" ] ,
value : "yes"
}
}
}
2019-12-18 19:02:17 +00:00
Form :
properties :
fields :
type : array
items :
$ref : "#/components/schemas/Field"
Field :
properties :
id :
type : string
readOnly : true
label :
type : string
readOnly : true
type :
type : enum
enum : [ 'text' , 'number' , 'enum' ]
readOnly : true
options :
type : array
items :
type : string
readOnly : true
value :
type : string
2019-11-19 20:57:46 +00:00
Error :
required :
- code
- message
properties :
code :
2019-12-11 21:54:24 +00:00
type : string
format : string
example : "access_denied"
2019-11-19 20:57:46 +00:00
message :
type : string
2019-12-11 21:54:24 +00:00
example : "You do not have permission to view the requested study."