2019-12-20 19:32:04 +00:00
openapi : "3.0.2"
2019-11-19 20:57:46 +00:00
info :
version : 1.0 .0
title : Workflow Microservice
license :
name : MIT
servers :
- url : http://localhost:5000/v1.0
2020-03-24 18:15:21 +00:00
security :
- jwt : [ 'secret' ]
2019-11-19 20:57:46 +00:00
paths :
2020-05-31 20:49:39 +00:00
/login :
2020-02-18 21:38:56 +00:00
get :
2020-05-31 20:49:39 +00:00
operationId : crc.api.user.login
summary : In production, logs the user in via SSO. If not in production, logs in as a specific user for testing.
2020-03-24 18:15:21 +00:00
security : [ ] # Disable security for this endpoint only.
2020-02-20 20:35:07 +00:00
parameters :
- name : uid
2020-02-21 16:24:39 +00:00
in : query
2020-02-20 20:35:07 +00:00
required : false
schema :
type : string
2020-05-31 20:49:39 +00:00
- name : redirect_url
2020-02-24 21:59:16 +00:00
in : query
required : false
schema :
type : string
2020-02-18 21:38:56 +00:00
tags :
- Users
responses :
'304' :
description : Redirection to the hosted frontend with an auth_token header.
/user :
get :
operationId : crc.api.user.get_current_user
summary : Returns the current user.
tags :
- Users
responses :
'200' :
description : The currently authenticated user.
content :
application/json :
schema :
$ref : "#/components/schemas/User"
2019-12-11 21:54:24 +00:00
# /v1.0/study
/study :
2019-11-19 20:57:46 +00:00
get :
A major refactor of how we search and store files, as there was a lot of confusing bits in here.
From an API point of view you can do the following (and only the following)
/files?workflow_spec_id=x
* You can find all files associated with a workflow_spec_id, and add a file with a workflow_spec_id
/files?workflow_id=x
* You can find all files associated with a workflow_id, and add a file that is directly associated with the workflow
/files?workflow_id=x&form_field_key=y
* You can find all files associated with a form element on a running workflow, and add a new file.
Note: you can add multiple files to the same form_field_key, IF they have different file names. If the same name, the original file is archived,
and the new file takes its place.
The study endpoints always return a list of the file metadata associated with the study. Removed /studies-files, but there is an
endpoint called
/studies/all - that returns all the studies in the system, and does include their files.
On a deeper level:
The File model no longer contains:
- study_id,
- task_id,
- form_field_key
Instead, if the file is associated with workflow - then that is the one way it is connected to the study, and we use this relationship to find files for a study.
A file is never associated with a task_id, as these change when the workflow is reloaded.
The form_field_key must match the irb_doc_code, so when requesting files for a form field, we just look up the irb_doc_code.
2020-05-28 12:27:26 +00:00
operationId : crc.api.study.user_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"
2020-01-03 16:44:24 +00:00
post :
2020-01-14 20:39:54 +00:00
operationId : crc.api.study.add_study
2020-01-03 16:44:24 +00:00
summary : Creates a new study with the given parameters.
tags :
- Studies
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/Study'
responses :
'200' :
description : Study created successfully.
content :
application/json :
schema :
A major refactor of how we search and store files, as there was a lot of confusing bits in here.
From an API point of view you can do the following (and only the following)
/files?workflow_spec_id=x
* You can find all files associated with a workflow_spec_id, and add a file with a workflow_spec_id
/files?workflow_id=x
* You can find all files associated with a workflow_id, and add a file that is directly associated with the workflow
/files?workflow_id=x&form_field_key=y
* You can find all files associated with a form element on a running workflow, and add a new file.
Note: you can add multiple files to the same form_field_key, IF they have different file names. If the same name, the original file is archived,
and the new file takes its place.
The study endpoints always return a list of the file metadata associated with the study. Removed /studies-files, but there is an
endpoint called
/studies/all - that returns all the studies in the system, and does include their files.
On a deeper level:
The File model no longer contains:
- study_id,
- task_id,
- form_field_key
Instead, if the file is associated with workflow - then that is the one way it is connected to the study, and we use this relationship to find files for a study.
A file is never associated with a task_id, as these change when the workflow is reloaded.
The form_field_key must match the irb_doc_code, so when requesting files for a form field, we just look up the irb_doc_code.
2020-05-28 12:27:26 +00:00
type : array
items :
$ref : "#/components/schemas/Study"
/study/all :
2020-05-22 15:46:03 +00:00
get :
A major refactor of how we search and store files, as there was a lot of confusing bits in here.
From an API point of view you can do the following (and only the following)
/files?workflow_spec_id=x
* You can find all files associated with a workflow_spec_id, and add a file with a workflow_spec_id
/files?workflow_id=x
* You can find all files associated with a workflow_id, and add a file that is directly associated with the workflow
/files?workflow_id=x&form_field_key=y
* You can find all files associated with a form element on a running workflow, and add a new file.
Note: you can add multiple files to the same form_field_key, IF they have different file names. If the same name, the original file is archived,
and the new file takes its place.
The study endpoints always return a list of the file metadata associated with the study. Removed /studies-files, but there is an
endpoint called
/studies/all - that returns all the studies in the system, and does include their files.
On a deeper level:
The File model no longer contains:
- study_id,
- task_id,
- form_field_key
Instead, if the file is associated with workflow - then that is the one way it is connected to the study, and we use this relationship to find files for a study.
A file is never associated with a task_id, as these change when the workflow is reloaded.
The form_field_key must match the irb_doc_code, so when requesting files for a form field, we just look up the irb_doc_code.
2020-05-28 12:27:26 +00:00
operationId : crc.api.study.all_studies
summary : Provides a list of studies
2020-05-22 15:46:03 +00:00
tags :
- Studies
responses :
'200' :
description : An array of studies, with submitted files, ordered by the last modified date.
content :
application/json :
schema :
A major refactor of how we search and store files, as there was a lot of confusing bits in here.
From an API point of view you can do the following (and only the following)
/files?workflow_spec_id=x
* You can find all files associated with a workflow_spec_id, and add a file with a workflow_spec_id
/files?workflow_id=x
* You can find all files associated with a workflow_id, and add a file that is directly associated with the workflow
/files?workflow_id=x&form_field_key=y
* You can find all files associated with a form element on a running workflow, and add a new file.
Note: you can add multiple files to the same form_field_key, IF they have different file names. If the same name, the original file is archived,
and the new file takes its place.
The study endpoints always return a list of the file metadata associated with the study. Removed /studies-files, but there is an
endpoint called
/studies/all - that returns all the studies in the system, and does include their files.
On a deeper level:
The File model no longer contains:
- study_id,
- task_id,
- form_field_key
Instead, if the file is associated with workflow - then that is the one way it is connected to the study, and we use this relationship to find files for a study.
A file is never associated with a task_id, as these change when the workflow is reloaded.
The form_field_key must match the irb_doc_code, so when requesting files for a form field, we just look up the irb_doc_code.
2020-05-28 12:27:26 +00:00
type : array
items :
$ref : "#/components/schemas/Study"
2019-12-18 19:02:17 +00:00
/study/{study_id}:
2020-01-31 16:33:31 +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
2019-12-11 21:54:24 +00:00
get :
2020-01-14 20:39:54 +00:00
operationId : crc.api.study.get_study
2019-12-18 19:02:17 +00:00
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
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"
2020-03-09 19:12:40 +00:00
delete :
operationId : crc.api.study.delete_study
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-03-09 19:12:40 +00:00
summary : Removes the given study completely.
tags :
- Studies
responses :
'204' :
description : The study has been removed.
2020-01-31 16:33:31 +00:00
put :
2020-01-14 20:39:54 +00:00
operationId : crc.api.study.update_study
2020-01-03 16:44:24 +00:00
summary : Updates an existing study with the given parameters.
tags :
- Studies
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/Study'
responses :
'200' :
description : Study updated successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/Study"
2020-06-01 02:46:17 +00:00
/study/{study_id}/approvals:
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
get :
operationId : crc.api.approval.get_approvals_for_study
summary : Returns approvals for a single study
tags :
- Studies
- Approvals
responses :
'200' :
description : An array of approvals
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Approval"
2019-12-18 19:02:17 +00:00
/workflow-specification :
get :
2020-01-14 20:39:54 +00:00
operationId : crc.api.workflow.all_specifications
2019-12-18 19:02:17 +00:00
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 :
2020-01-30 14:11:17 +00:00
- Workflow Specifications
2019-12-18 19:02:17 +00:00
responses :
'200' :
description : An array of workflow specifications
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/WorkflowSpec"
2020-01-14 02:43:09 +00:00
post :
2020-01-14 20:39:54 +00:00
operationId : crc.api.workflow.add_workflow_specification
2020-01-14 02:43:09 +00:00
summary : Creates a new workflow specification with the given parameters.
tags :
2020-01-30 14:11:17 +00:00
- Workflow Specifications
2020-01-14 02:43:09 +00:00
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/WorkflowSpec'
responses :
'200' :
description : Workflow specification created successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpec"
2020-01-14 19:10:53 +00:00
/workflow-specification/{spec_id}:
2020-01-23 21:05:09 +00:00
parameters :
- name : spec_id
in : path
required : false
description : The unique id of an existing workflow specification to modify.
schema :
type : string
2020-01-28 15:14:06 +00:00
get :
operationId : crc.api.workflow.get_workflow_specification
summary : Returns a single workflow specification
tags :
2020-01-30 14:11:17 +00:00
- Workflow Specifications
2020-01-28 15:14:06 +00:00
responses :
'200' :
description : Workflow specification.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpec"
2020-01-14 19:10:53 +00:00
put :
2020-01-14 20:39:54 +00:00
operationId : crc.api.workflow.update_workflow_specification
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-01-14 19:10:53 +00:00
summary : Modifies an existing workflow specification with the given parameters.
tags :
2020-01-30 14:11:17 +00:00
- Workflow Specifications
2020-01-14 19:10:53 +00:00
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/WorkflowSpec'
responses :
'200' :
description : Workflow specification created successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpec"
2020-01-23 21:05:09 +00:00
delete :
operationId : crc.api.workflow.delete_workflow_specification
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-01-23 21:05:09 +00:00
summary : Removes an existing workflow specification
tags :
2020-01-30 14:11:17 +00:00
- Workflow Specifications
2020-01-23 21:05:09 +00:00
responses :
'204' :
description : The workflow specification has been removed.
2020-03-27 12:29:31 +00:00
/workflow-specification/{spec_id}/validate:
parameters :
- name : spec_id
in : path
required : false
description : The unique id of an existing workflow specification to validate.
schema :
type : string
get :
operationId : crc.api.workflow.validate_workflow_specification
summary : Loads and attempts to execute a Workflow Specification, returning a list of errors encountered
tags :
- Workflow Specifications
responses :
'200' :
description : Workflow specification.
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Error"
2020-03-16 20:30:56 +00:00
/workflow-specification-category :
get :
operationId : crc.api.workflow.list_workflow_spec_categories
summary : Provides a list of categories that can be added to a workflow spec.
tags :
2020-03-27 12:29:31 +00:00
- Workflow Specification Category
2020-03-16 20:30:56 +00:00
responses :
'200' :
description : An array of workflow specification categories
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/WorkflowSpecCategory"
post :
operationId : crc.api.workflow.add_workflow_spec_category
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-03-16 20:30:56 +00:00
summary : Creates a new workflow spec category with the given parameters.
tags :
2020-03-27 12:29:31 +00:00
- Workflow Specification Category
2020-03-16 20:30:56 +00:00
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/WorkflowSpecCategory'
responses :
'200' :
description : Workflow spec category created successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpecCategory"
/workflow-specification-category/{cat_id}:
parameters :
- name : cat_id
in : path
required : false
description : The unique id of an existing workflow spec category to modify.
schema :
type : string
get :
operationId : crc.api.workflow.get_workflow_spec_category
summary : Returns a single workflow spec category
tags :
2020-03-27 12:29:31 +00:00
- Workflow Specification Category
2020-03-16 20:30:56 +00:00
responses :
'200' :
description : Workflow spec category.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpecCategory"
put :
operationId : crc.api.workflow.update_workflow_spec_category
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-03-16 20:30:56 +00:00
summary : Modifies an existing workflow spec category with the given parameters.
tags :
2020-03-27 12:29:31 +00:00
- Workflow Specification Category
2020-03-16 20:30:56 +00:00
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/WorkflowSpecCategory'
responses :
'200' :
description : Workflow spec category created successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/WorkflowSpecCategory"
delete :
operationId : crc.api.workflow.delete_workflow_spec_category
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-03-16 20:30:56 +00:00
summary : Removes an existing workflow spec category
tags :
2020-03-27 12:29:31 +00:00
- Workflow Specification Category
2020-03-16 20:30:56 +00:00
responses :
'204' :
description : The workflow spec category has been removed.
2019-12-27 18:50:03 +00:00
/file :
parameters :
2020-02-04 02:56:18 +00:00
- name : workflow_spec_id
in : query
required : false
description : The unique id of a workflow specification
schema :
type : string
2020-02-04 19:26:53 +00:00
- name : workflow_id
in : query
required : false
description : The unique id of a workflow instance
schema :
type : integer
2020-02-05 20:06:19 +00:00
- name : form_field_key
in : query
required : false
2020-03-19 21:13:30 +00:00
description : The unique key of a workflow task form field. Make sure this matches a document in the irb_documents.xslx reference sheet.
2020-02-05 20:06:19 +00:00
schema :
type : string
2019-12-27 18:50:03 +00:00
get :
2020-01-14 20:39:54 +00:00
operationId : crc.api.file.get_files
2019-12-27 18:50:03 +00:00
summary : Provides a list of files that match the given parameters (such as a spec id) IMPORTANT, only includes metadata, not the file content.
tags :
- Files
responses :
'200' :
description : An array of file descriptions (not the file content)
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/File"
2020-03-09 19:12:40 +00:00
2019-12-27 18:50:03 +00:00
post :
2020-01-14 20:39:54 +00:00
operationId : crc.api.file.add_file
2019-12-27 18:50:03 +00:00
summary : Add a new file
tags :
- Files
requestBody :
content :
multipart/form-data :
schema :
type : object
properties :
file :
type : string
format : binary
responses :
'200' :
description : Metadata about the uploaded file, but not the file content.
content :
application/json :
schema :
$ref : "#/components/schemas/File"
/file/{file_id}:
parameters :
- name : file_id
in : path
required : true
description : The id of the File requested
schema :
type : integer
get :
2020-01-14 20:39:54 +00:00
operationId : crc.api.file.get_file_info
2019-12-27 18:50:03 +00:00
summary : Returns metadata about a file.
tags :
- Files
responses :
'200' :
description : Returns the file information requested.
content :
application/json :
schema :
$ref : "#/components/schemas/File"
put :
2020-01-31 15:39:19 +00:00
operationId : crc.api.file.update_file_info
2020-01-31 16:33:31 +00:00
summary : Updates existing file info with the given parameters.
2019-12-27 18:50:03 +00:00
tags :
- Files
requestBody :
content :
2020-01-31 15:39:19 +00:00
application/json :
2019-12-27 18:50:03 +00:00
schema :
2020-01-31 16:33:31 +00:00
$ref : '#/components/schemas/File'
2019-12-27 18:50:03 +00:00
responses :
'200' :
2020-01-31 16:33:31 +00:00
description : File info updated successfully.
2019-12-27 18:50:03 +00:00
content :
application/json :
schema :
$ref : "#/components/schemas/File"
delete :
2020-01-14 20:39:54 +00:00
operationId : crc.api.file.delete_file
2020-06-04 13:49:42 +00:00
summary : Removes an existing file. In the event the file can not be deleted, it is marked as "archived" in the database and is no longer returned unless specifically requested by id.
2019-12-27 18:50:03 +00:00
tags :
- Files
responses :
'204' :
description : The file has been removed.
2020-05-23 21:37:03 +00:00
/file/{file_id}/data:
2019-12-27 18:50:03 +00:00
parameters :
- name : file_id
in : path
required : true
description : The id of the File requested
schema :
type : integer
2020-05-23 19:21:30 +00:00
- name : version
2020-05-23 21:37:03 +00:00
in : query
2020-05-23 19:21:30 +00:00
required : false
description : The version of the file, or none for latest version
schema :
type : integer
2019-12-27 18:50:03 +00:00
get :
2020-01-31 15:39:19 +00:00
operationId : crc.api.file.get_file_data
2019-12-27 18:50:03 +00:00
summary : Returns only the file contents
tags :
- Files
responses :
'200' :
description : Returns the actual file
content :
application/octet-stream :
schema :
type : string
format : binary
example : '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
2020-01-31 15:39:19 +00:00
put :
operationId : crc.api.file.update_file_data
summary : Update only the file contents for a given file
tags :
- Files
requestBody :
content :
multipart/form-data :
schema :
2020-03-16 17:24:15 +00:00
x-body-name : file
2020-01-31 15:39:19 +00:00
type : object
properties :
file :
type : string
format : binary
2020-03-16 17:24:15 +00:00
required :
- file
2020-01-31 15:39:19 +00:00
responses :
'200' :
2020-03-25 12:06:58 +00:00
description : Returns the updated file model with the new version information.
2020-01-31 15:39:19 +00:00
content :
2020-03-25 12:06:58 +00:00
application/json :
2020-01-31 15:39:19 +00:00
schema :
2020-03-25 12:06:58 +00:00
$ref : "#/components/schemas/File"
2020-03-13 19:03:57 +00:00
/reference_file :
get :
operationId : crc.api.file.get_reference_files
summary : Provides a list of existing reference files that are available in the system.
tags :
- Files
responses :
'200' :
description : An array of file descriptions (not the file content)
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/File"
/reference_file/{name}:
parameters :
- name : name
in : path
required : true
description : The special name of the reference file.
schema :
type : string
get :
operationId : crc.api.file.get_reference_file
summary : Reference files are called by name rather than by id.
tags :
- Files
responses :
'200' :
description : Returns the actual file
content :
application/octet-stream :
schema :
type : string
format : binary
example : '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
put :
operationId : crc.api.file.set_reference_file
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2020-03-13 19:03:57 +00:00
summary : Update the contents of a named reference file.
tags :
- Files
requestBody :
content :
multipart/form-data :
schema :
type : object
properties :
file :
type : string
format : binary
responses :
'200' :
description : Returns the actual file
content :
application/octet-stream :
schema :
type : string
format : binary
example : '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
2020-07-15 02:16:44 +00:00
/task_events :
parameters :
- name : action
in : query
required : false
description : The type of action the event documents, options include "ASSIGNMENT" for tasks that are waiting on you, "COMPLETE" for things have completed.
schema :
type : string
get :
operationId : crc.api.workflow.get_task_events
summary : Returns a list of task events related to the current user. Can be filtered by type.
tags :
- Workflows and Tasks
responses :
'200' :
description : Returns details about tasks that are waiting on the current user.
content :
application/json :
schema :
$ref : "#/components/schemas/TaskEvent"
2020-03-13 19:03:57 +00:00
# /v1.0/workflow/0
2019-12-11 21:54:24 +00:00
/workflow/{workflow_id}:
2019-12-30 18:15:39 +00:00
parameters :
2019-11-19 20:57:46 +00:00
- 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
2019-12-30 18:15:39 +00:00
get :
2020-01-14 20:39:54 +00:00
operationId : crc.api.workflow.get_workflow
2020-04-19 19:14:10 +00:00
summary : Returns a workflow, can also be used to do a soft or hard reset on the workflow.
2020-03-05 21:45:44 +00:00
parameters :
- name : soft_reset
in : query
required : false
description : Set this to true to use the latest workflow specification to load minor modifications to the spec.
schema :
type : boolean
- name : hard_reset
in : query
required : false
description : Set this to true to reset the workflow
schema :
type : boolean
2019-12-30 18:15:39 +00:00
tags :
- Workflows and Tasks
2019-11-19 20:57:46 +00:00
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-12-30 18:15:39 +00:00
delete :
2020-04-29 20:07:39 +00:00
operationId : crc.api.workflow.delete_workflow
2020-05-31 20:49:39 +00:00
security :
2020-06-11 15:29:58 +00:00
- auth_admin : [ 'secret' ]
2019-12-30 18:15:39 +00:00
summary : Removes an existing workflow
tags :
2019-12-30 18:34:18 +00:00
- Workflows and Tasks
2019-12-30 18:15:39 +00:00
responses :
'204' :
description : The workflow was removed
2020-04-22 23:40:40 +00:00
/workflow/{workflow_id}/task/{task_id}/data:
2020-01-07 18:23:46 +00:00
parameters :
- name : workflow_id
in : path
required : true
description : The id of the workflow
schema :
type : integer
format : int32
2020-01-14 16:02:44 +00:00
- name : task_id
2020-01-07 18:23:46 +00:00
in : path
required : true
description : The id of the task
schema :
type : string
2020-01-14 16:02:44 +00:00
format : uuid
2020-06-17 15:35:06 +00:00
- name : terminate_loop
in : query
required : false
description : Terminate the loop on a looping task
schema :
type : boolean
2020-04-22 23:40:40 +00:00
put :
operationId : crc.api.workflow.update_task
summary : Exclusively for User Tasks, submits form data as a flat set of key/values.
2019-11-19 20:57:46 +00:00
tags :
2019-12-11 21:54:24 +00:00
- Workflows and Tasks
2020-04-22 23:40:40 +00:00
requestBody :
description : Key / Value pairs in JSON format.
required : true
content :
application/json :
schema :
type : object
example :
favorite_color : blue
capital_assyria : Assur
2019-11-19 20:57:46 +00:00
responses :
2020-04-22 23:40:40 +00:00
'201' :
2020-04-28 21:25:53 +00:00
description : Returns the updated workflow with this task as the current task.
content :
application/json :
schema :
$ref : "#/components/schemas/Workflow"
/workflow/{workflow_id}/task/{task_id}/set_token:
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 :
type : string
format : uuid
put :
operationId : crc.api.workflow.set_current_task
summary : Attempts to make the given task the Current Active Task
tags :
- Workflows and Tasks
responses :
'201' :
description : Returns the updated workflow with this task as the current task.
2019-11-19 20:57:46 +00:00
content :
application/json :
schema :
2020-04-22 23:40:40 +00:00
$ref : "#/components/schemas/Workflow"
2020-05-29 05:39:39 +00:00
/workflow/{workflow_id}/lookup/{field_id}:
2020-01-14 16:02:44 +00:00
parameters :
- name : workflow_id
in : path
required : true
description : The id of the workflow
schema :
type : integer
format : int32
2020-04-22 23:40:40 +00:00
- name : field_id
in : path
required : true
description : The id of the field (as set in the bpmn editor) on which to do a lookup.
schema :
type : string
- name : query
in : query
required : false
description : The string to search for in the Value column of the lookup table.
schema :
type : string
2020-06-30 14:34:16 +00:00
- name : value
2020-04-22 23:40:40 +00:00
in : query
required : false
2020-06-30 14:34:16 +00:00
description : An alternative to query, this accepts the specific value or id selected in a dropdown list or auto-complete, and will return the one matching record. Useful for getting additional details about an item selected in a dropdown.
2020-04-22 23:40:40 +00:00
schema :
2020-06-30 14:34:16 +00:00
type : string
- name : limit
2020-06-30 14:00:22 +00:00
in : query
required : false
2020-06-30 14:34:16 +00:00
description : The total number of records to return, defaults to 10.
2020-06-30 14:00:22 +00:00
schema :
2020-06-30 14:34:16 +00:00
type : integer
2020-06-30 14:00:22 +00:00
2020-04-22 23:40:40 +00:00
get :
operationId : crc.api.workflow.lookup
summary : Provides type-ahead search against a lookup table associted with a form field.
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
responses :
'201' :
2020-04-22 23:40:40 +00:00
description : Returns the a list of values and labels for a lookup form.
2019-11-19 20:57:46 +00:00
content :
application/json :
schema :
2020-04-22 23:40:40 +00:00
$ref : "#/components/schemas/LookupItem"
2020-02-29 22:22:38 +00:00
/render_markdown :
parameters :
- name : data
in : query
required : true
description : The json data to use in populating the template
schema :
type : string
- name : template
in : query
required : true
description : The markdown template to process.
schema :
type : string
get :
operationId : crc.api.tools.render_markdown
2020-03-24 18:15:21 +00:00
security : [ ] # Disable security for this endpoint only.
2020-02-29 22:22:38 +00:00
summary : Processes the markdown template using the data provided.
tags :
- Configurator Tools
responses :
'201' :
description : Returns the updated workflow with the task completed.
content :
text/plain :
schema :
type : string
2020-06-08 18:15:56 +00:00
/send_email :
parameters :
- name : address
in : query
required : true
description : The address to send a test email to.
schema :
type : string
get :
operationId : crc.api.tools.send_email
summary : Sends an email so we can see if things work or not.
tags :
- Configurator Tools
responses :
'201' :
description : Returns any error messages that might come back from sending the email.
content :
text/plain :
2020-02-29 22:22:38 +00:00
schema :
type : string
/render_docx :
put :
operationId : crc.api.tools.render_docx
2020-03-24 18:15:21 +00:00
security : [ ] # Disable security for this endpoint only.
2020-02-29 22:22:38 +00:00
summary : Renders a docx template with embedded jinja2 markup.
tags :
- Configurator Tools
requestBody :
content :
multipart/form-data :
schema :
type : object
properties :
file :
type : string
format : binary
2020-05-22 19:30:22 +00:00
data :
type : string
format : json
2020-02-29 22:22:38 +00:00
responses :
'200' :
description : Returns the generated document.
content :
application/octet-stream :
schema :
type : string
format : binary
example : '<?xml version="1.0" encoding="UTF-8"?><bpmn:definitions></bpmn:definitions>'
2020-03-03 20:30:42 +00:00
/list_scripts :
get :
operationId : crc.api.tools.list_scripts
2020-03-24 18:15:21 +00:00
security : [ ] # Disable security for this endpoint only.
2020-03-03 20:30:42 +00:00
summary : Returns an list of scripts, along with their descriptions
tags :
- Configurator Tools
responses :
'201' :
description : The list of scripts
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Script"
2020-07-21 17:57:33 +00:00
/eval :
parameters :
- name : expression
in : query
required : true
description : The python expression to execute.
schema :
type : string
2020-07-22 15:30:16 +00:00
put :
2020-07-21 17:57:33 +00:00
operationId : crc.api.tools.evaluate_python_expression
summary : Execute the given python expression, with the given json data structure used as local variables, returns the result of the evaluation.
tags :
- Configurator Tools
2020-07-22 15:30:16 +00:00
requestBody :
description : The json data to use as local variables when evaluating the expresson.
required : true
content :
application/json :
schema :
type : object
2020-07-21 17:57:33 +00:00
responses :
'200' :
description : Returns the result of executing the given python script.
content :
text/plain :
schema :
type : string
2020-06-06 02:19:37 +00:00
/approval-counts :
parameters :
- name : as_user
in : query
required : false
description : If provided, returns the approval counts for that user.
schema :
type : string
get :
operationId : crc.api.approval.get_approval_counts
summary : Provides counts for approvals by status for the given user, or all users if no user is provided
tags :
- Approvals
responses :
'200' :
description : An dictionary of Approval Statuses and the counts for each
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/ApprovalCounts"
2020-06-08 02:38:21 +00:00
/all_approvals :
parameters :
- name : status
in : query
required : false
description : If set to true, returns all the approvals with any status. Defaults to false, leaving out canceled approvals.
schema :
type : boolean
get :
operationId : crc.api.approval.get_all_approvals
summary : Provides a list of all workflows approvals
tags :
- Approvals
responses :
'200' :
description : An array of approvals
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Approval"
2020-05-22 22:25:00 +00:00
/approval :
parameters :
2020-06-05 21:49:55 +00:00
- name : status
2020-05-22 22:25:00 +00:00
in : query
required : false
2020-06-06 02:19:37 +00:00
description : If provided, returns just approvals for the given status.
2020-05-22 22:25:00 +00:00
schema :
2020-06-05 21:49:55 +00:00
type : string
2020-06-05 18:33:00 +00:00
- name : as_user
2020-05-22 22:25:00 +00:00
in : query
required : false
2020-06-05 18:33:00 +00:00
description : If provided, returns the approval results as they would appear for that user.
2020-05-22 22:25:00 +00:00
schema :
type : string
get :
operationId : crc.api.approval.get_approvals
summary : Provides a list of workflows approvals
tags :
- Approvals
responses :
'200' :
description : An array of approvals
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Approval"
/approval/{approval_id}:
parameters :
- name : approval_id
in : path
required : true
description : The id of the approval in question.
schema :
type : integer
format : int32
put :
operationId : crc.api.approval.update_approval
summary : Updates an approval with the given parameters
tags :
- Approvals
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/Approval'
responses :
'200' :
description : Study updated successfully.
content :
application/json :
schema :
$ref : "#/components/schemas/Approval"
2020-06-03 02:01:49 +00:00
/approval/csv :
get :
operationId : crc.api.approval.get_csv
summary : Provides a list of all users for all approved studies
tags :
- Approvals
responses :
'200' :
description : An array of approvals
content :
application/json :
schema :
type : object
2020-06-22 15:24:58 +00:00
/health_attesting :
get :
operationId : crc.api.approval.get_health_attesting_csv
summary : Returns a CSV file with health attesting records
tags :
- Approvals
responses :
'200' :
description : A CSV file
content :
application/json :
schema :
type : array
items :
$ref : "#/components/schemas/Approval"
2019-11-19 20:57:46 +00:00
components :
2020-03-24 18:15:21 +00:00
securitySchemes :
jwt :
type : http
scheme : bearer
bearerFormat : JWT
x-bearerInfoFunc : crc.api.user.verify_token
2020-06-11 15:29:58 +00:00
auth_admin :
2020-05-31 20:49:39 +00:00
type : http
scheme : bearer
bearerFormat : JWT
x-bearerInfoFunc : crc.api.user.verify_token_admin
2019-11-19 20:57:46 +00:00
schemas :
2020-02-18 21:38:56 +00:00
User :
properties :
uid :
type : string
email_address :
type : string
display_name :
type : string
2020-02-20 20:35:07 +00:00
affiliation :
type : string
eppn :
type : string
first_name :
type : string
last_name :
type : string
title :
type : string
2019-12-31 21:32:47 +00:00
DataModel :
properties :
id :
type : string
2019-12-11 21:54:24 +00:00
Study :
properties :
id :
2019-12-19 16:58:51 +00:00
type : integer
example : 1234
2019-12-11 21:54:24 +00:00
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"
2020-03-30 14:12:10 +00:00
primary_investigator_id :
2019-12-11 21:54:24 +00:00
type : string
2020-03-30 14:12:10 +00:00
example : dhf8r
2020-02-26 23:06:51 +00:00
user_uid :
type : string
example : dhf8r
2020-03-30 14:12:10 +00:00
protocol_builder_status :
2019-12-11 21:54:24 +00:00
type : string
2020-04-21 21:13:30 +00:00
enum : [ INCOMPLETE, ACTIVE, HOLD, OPEN, ABANDONED]
2020-03-30 14:12:10 +00:00
example : done
2019-12-11 21:54:24 +00:00
sponsor :
type : string
example : "Sartography Pharmaceuticals"
ind_number :
type : string
example : "27b-6-42"
2020-03-30 14:12:10 +00:00
hsr_number :
type : string
2020-03-30 18:01:57 +00:00
x-nullable : true
2020-03-30 14:12:10 +00:00
example : "27b-6-1212"
categories :
type : array
items :
$ref : "#/components/schemas/WorkflowSpecCategory"
2019-12-18 19:02:17 +00:00
WorkflowSpec :
2019-12-11 21:54:24 +00:00
properties :
id :
type : string
2020-03-16 16:10:32 +00:00
name :
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
2020-03-16 16:10:32 +00:00
primary_process_id :
type : string
nullable : true
Created a "StudyService" and moved all complex logic around study manipulation out of the study api, and this service, as things were getting complicated. The Workflow Processor no longer creates the WorkflowModel, the study object handles that, and only passes the model into the workflow processor when it is ready to start the workflow.
Created a Study object (seperate from the StudyModel) that can cronstructed on request, and contains a different data structure than we store in the DB. This allows us to return underlying Categories and Workflows in a clean way.
Added a new status to workflows called "not_started", meaning we have not yet instantiated a processor or created a BPMN, they have no version yet and no stored data, just the possiblity of being started.
The Top Level Workflow or "Master" workflow is now a part of the sample data, and loaded at all times.
Removed the ability to "add a workflow to a study" and "remove a workflow from a study", a study contains all possible workflows by definition.
Example data no longer creates users or studies, it just creates the specs.
2020-03-30 12:00:16 +00:00
category_id :
2020-03-16 16:10:32 +00:00
type : integer
nullable : true
workflow_spec_category :
$ref : "#/components/schemas/WorkflowSpecCategory"
is_status :
type : boolean
nullable : true
WorkflowSpecCategory :
properties :
id :
type : integer
name :
type : string
display_name :
type : string
2020-03-26 19:29:52 +00:00
display_order :
type : integer
2020-03-30 14:12:10 +00:00
workflows :
type : array
items :
$ref : "#/components/schemas/Workflow"
2019-12-27 18:50:03 +00:00
File :
properties :
id :
type : number
name :
type : string
example : "random_fact.bpmn"
version :
2020-01-31 16:33:31 +00:00
type : integer
2019-12-27 18:50:03 +00:00
last_updated :
type : string
format : date_time
example : "2019-12-25T09:12:33.001Z"
type :
2020-01-31 16:33:31 +00:00
type : string
2019-12-27 18:50:03 +00:00
primary :
type : boolean
content_type :
type : string
example : "application/xml"
workflow_spec_id :
type : string
example : "random_fact"
2020-03-20 12:21:21 +00:00
x-nullable : true
2019-12-27 18:50:03 +00:00
file :
type : file
format : binary
2019-12-11 21:54:24 +00:00
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
2020-02-07 16:34:44 +00:00
enum : [ 'new' , 'user_input_required' , 'waiting' , 'complete' ]
2020-05-14 17:43:23 +00:00
navigation :
type : array
items :
$ref : "#/components/schemas/NavigationItem"
2020-03-05 22:10:00 +00:00
next_task :
$ref : "#/components/schemas/Task"
2020-02-07 17:36:08 +00:00
workflow_spec_id :
type : string
2020-03-05 22:10:00 +00:00
spec_version :
type : string
is_latest_spec :
type : boolean
2020-03-10 19:46:14 +00:00
num_tasks_total :
type : integer
num_tasks_complete :
type : integer
num_tasks_incomplete :
type : integer
2020-02-07 16:34:44 +00:00
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'
2020-03-05 22:10:00 +00:00
workflow_spec_id : 'random_fact'
spec_version : 'v1.1 [22,23]'
is_latest_spec : True
next_task :
id : study_identification
name : Study Identification
title : IRB Review
documentation : "# Heading 1\n\nMarkdown documentation text goes here"
type : form
state : ready
2019-12-11 21:54:24 +00:00
Task :
2019-11-19 20:57:46 +00:00
properties :
id :
readOnly : true
2019-12-20 19:32:04 +00:00
type : string
2019-11-19 20:57:46 +00:00
name :
type : string
2019-12-20 20:39:02 +00:00
title :
type : string
2019-12-11 21:54:24 +00:00
type :
2019-11-19 20:57:46 +00:00
type : string
2019-12-20 19:32:04 +00:00
state :
2019-12-19 16:58:51 +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-12-20 20:39:02 +00:00
documentation :
type : string
2020-05-15 19:54:53 +00:00
data :
type : object
2020-05-15 20:38:37 +00:00
multi_instance_type :
2020-05-15 19:54:53 +00:00
type : enum
enum : [ 'none' , 'looping' , 'parallel' , 'sequential' ]
2020-05-15 20:38:37 +00:00
multi_instance_count :
2020-05-15 19:54:53 +00:00
type : number
2020-05-15 20:38:37 +00:00
multi_instance_index :
2020-05-15 19:54:53 +00:00
type : number
2020-05-15 20:38:37 +00:00
process_name :
2020-05-15 19:54:53 +00:00
type : string
properties :
type : object
2019-11-19 20:57:46 +00:00
example :
2019-12-20 19:32:04 +00:00
id : study_identification
name : Study Identification
2019-12-20 20:39:02 +00:00
title : IRB Review
documentation : "# Heading 1\n\nMarkdown documentation text goes here"
2019-12-20 19:32:04 +00:00
type : form
state : ready
form :
"key": "irb_review_form"
"fields" :
- "id": "irb_review_type"
"type": "enum"
"label": "Select IRB Review Type"
"options" :
- id : "emergency_use"
name : "Emergency Use"
- id : "humanitarian_device"
name : "Humanitarian Device"
- id : "non_human"
name : "Non-Human"
- id : "non_uva_agent"
name : "Non-UVA Agent"
- id : "exempt"
name : "Exempt"
- id : "non_engaged"
name : "Non-Engaged"
- id : "expedited"
name : "Expedited"
- id : "full_board"
name : "Full Board"
2020-02-18 15:14:03 +00:00
"default_value": "Full Board"
2019-12-20 19:32:04 +00:00
"validation" :
- name : "required"
config : "true"
"properties" :
- id : "description"
value : "Description text goes here"
- id : "help"
value : "# Heading 1\n\nMarkdown help text goes here"
- id : "required_expression"
value : "model.my_boolean_field_id && model.my_enum_field_value !== 'something'"
- id : "hide_expression"
value : "model.my_enum_field_value === 'something'"
2020-07-15 02:16:44 +00:00
TaskEvent :
properties :
workflow :
$ref : "#/components/schemas/Workflow"
study :
$ref : "#/components/schemas/Study"
workflow_sec :
$ref : "#/components/schemas/WorkflowSpec"
spec_version :
type : string
action :
type : string
task_id :
type : string
task_type :
type : string
task_lane :
type : string
form_data :
type : object
mi_type :
type : string
mi_count :
type : integer
mi_index :
type : integer
process_name :
type : string
date :
type : string
2019-12-18 19:02:17 +00:00
Form :
properties :
2019-12-20 19:32:04 +00:00
key :
type : string
2019-12-18 19:02:17 +00:00
fields :
type : array
items :
$ref : "#/components/schemas/Field"
2019-12-20 19:32:04 +00:00
example :
"key": "irb_review_form"
"fields" :
- "id": "irb_review_type"
"type": "enum"
"label": "Select IRB Review Type"
"options" :
- id : "emergency_use"
name : "Emergency Use"
- id : "humanitarian_device"
name : "Humanitarian Device"
- id : "non_human"
name : "Non-Human"
- id : "non_uva_agent"
name : "Non-UVA Agent"
- id : "exempt"
name : "Exempt"
- id : "non_engaged"
name : "Non-Engaged"
- id : "expedited"
name : "Expedited"
- id : "full_board"
name : "Full Board"
2020-02-18 15:14:03 +00:00
"default_value": "Full Board"
2019-12-20 19:32:04 +00:00
"validation" :
- name : "required"
config : "true"
"properties" :
- id : "description"
value : "Description text goes here"
- id : "help"
value : "# Heading 1\n\nMarkdown help text goes here"
- id : "required_expression"
value : "model.my_boolean_field_id && model.my_enum_field_value !== 'something'"
- id : "hide_expression"
value : "model.my_enum_field_value === 'something'"
2019-12-18 19:02:17 +00:00
Field :
properties :
id :
type : string
readOnly : true
type :
type : enum
2019-12-20 19:32:04 +00:00
enum : [ 'string' , 'long' , 'boolean' , 'date' , 'enum' ]
readOnly : true
label :
type : string
2019-12-18 19:02:17 +00:00
readOnly : true
options :
type : array
items :
2019-12-20 19:32:04 +00:00
$ref : "#/components/schemas/EnumFieldOption"
2019-12-18 19:02:17 +00:00
readOnly : true
2020-02-18 15:14:03 +00:00
default_value :
2019-12-20 19:32:04 +00:00
type : string
2020-02-18 15:14:03 +00:00
readOnly : true
2019-12-20 19:32:04 +00:00
validation :
type : array
items :
$ref : "#/components/schemas/FieldValidation"
2019-12-18 19:02:17 +00:00
readOnly : true
2019-12-20 19:32:04 +00:00
"properties" :
type : array
items :
$ref : "#/components/schemas/FieldProperty"
readOnly : true
EnumFieldOption :
properties :
id :
type : string
name :
type : string
FieldValidation :
properties :
name :
type : string
config :
type : string
FieldProperty :
properties :
id :
type : string
2019-12-18 19:02:17 +00:00
value :
type : string
2019-12-20 19:32:04 +00:00
example :
id : "required_expression"
value : "model.should_require"
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."
2020-03-03 20:30:42 +00:00
Script :
properties :
name :
type : string
format : string
example : "random_fact"
description :
type : string
example : "Returns a random fact about a topic. Provide an argument of either 'cat', 'norris', or 'buzzword'"
2020-04-22 23:40:40 +00:00
LookupItem :
properties :
value :
type : string
format : string
example : "1000"
label :
type : string
example : "Chuck Norris"
data :
2020-05-04 14:57:09 +00:00
type : any
2020-05-14 17:43:23 +00:00
NavigationItem :
properties :
id :
type : number
format : integer
example : 5
2020-05-15 19:54:53 +00:00
task_id :
type : string
format : uuid
example : "1234123uuid1234"
2020-05-14 17:43:23 +00:00
name :
type : string
example : "Task_Has_bananas"
description :
type : string
example : "Has Bananas?"
backtracks :
2020-05-15 19:54:53 +00:00
type : boolean
2020-05-14 17:43:23 +00:00
example : false
level :
type : integer
example : 1
indent :
type : integer
example : 2
2020-05-15 20:38:37 +00:00
child_count :
2020-05-14 17:43:23 +00:00
type : integer
example : 4
state :
type : enum
enum : [ 'FUTURE' , 'WAITING' , 'READY' , 'CANCELLED' , 'COMPLETED' , 'LIKELY' , 'MAYBE' ]
readOnly : true
2020-05-15 20:38:37 +00:00
is_decision :
2020-05-15 19:54:53 +00:00
type : boolean
example : False
readOnly : true
task :
$ref : "#/components/schemas/Task"
2020-05-22 22:25:00 +00:00
Approval :
properties :
id :
type : number
format : integer
example : 5
2020-06-06 02:19:37 +00:00
ApprovalCounts :
properties :
PENDING :
type : number
format : integer
example : 5
APPROVED :
type : number
format : integer
example : 5
DECLINED :
type : number
format : integer
example : 5
CANCELED :
type : number
format : integer
example : 5
AWAITING :
type : number
format : integer
example : 5
2020-05-04 14:57:09 +00:00