Skip to content
Snippets Groups Projects
Commit 8fd1965d authored by Colton Leekley-Winslow's avatar Colton Leekley-Winslow
Browse files

Add RAML for ContainerHandler based routes

parent 600d5625
No related branches found
No related tags found
No related merge requests found
Showing
with 565 additions and 41 deletions
{"deleted":1}
{
"_id":"57bb486a9e512c41c8b7fdd5"
}
{"modified":1}
......@@ -20,7 +20,10 @@
"modified": "2016-08-11T12:46:12.593000+00:00",
"created": "2016-08-11T12:46:12.593000+00:00",
"state": "pending",
"_id": "57ac7394c700190017123fb8"
"_id": "57ac7394c700190017123fb8",
"config":{
"speed":3
}
},
{
"inputs": [
......@@ -44,6 +47,9 @@
"modified": "2016-08-11T13:02:09.055000+00:00",
"created": "2016-08-11T13:02:09.055000+00:00",
"state": "pending",
"_id": "57ac77515e325c0018cd17cf"
"_id": "57ac77515e325c0018cd17cf",
"config":{
"speed":3
}
}
]
{
"inputs": [{
"input": "dicom",
"type": "acquisition",
"id": "57e45279a74e91000ed6898f",
"name": "4784_1_1_localizer_dicom.zip"
}],
"attempt": 1,
"name": "dicom-mr-classifier",
"tags": ["dicom-mr-classifier"],
"destination": {
"type": "acquisition",
"id": "57e45279a74e91000ed6898f"
},
"request": {
"inputs": [{
"vu": "vu0:sha384:tXvdI2pspng-YH6lwa2UcLsww0yR6LfEKbLm89eIqEGicLRHW9d1V8bs7gXHTlZ3",
"type": "http",
"location": "/",
"uri": "https://storage.googleapis.com/flywheel/gears/v1/scitran/dicom-mr-classifier/dicom-mr-classifier_latest_20160803T220847.856417Z.tar.gz"
}, {
"type": "scitran",
"uri": "/acquisitions/57e45279a74e91000ed6898f/files/4784_1_1_localizer_dicom.zip",
"location": "/flywheel/v0/input/dicom"
}],
"target": {
"command": ["bash", "-c", "rm -rf output; mkdir -p output; ./run; echo \"Exit was $?\""],
"env": {
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
"dir": "/flywheel/v0"
},
"outputs": [{
"type": "scitran",
"uri": "/engine?level=acquisition&id=57e45279a74e91000ed6898f&job=57e45279a74e91000ed68991",
"location": "/flywheel/v0/output"
}]
},
"modified": "2016-09-28T16:11:36.260000+00:00",
"created": "2016-09-22T21:51:53.174000+00:00",
"state": "running",
"_id": "57e45279a74e91000ed68991",
"config": null
}
......@@ -19,5 +19,8 @@
"modified": "2016-08-11T13:02:09.055000+00:00",
"created": "2016-08-11T13:02:09.055000+00:00",
"state": "pending",
"id": "57ac77515e325c0018cd17cf"
"id": "57ac77515e325c0018cd17cf",
"config":{
"speed":3
}
}
[{
"group": "scitran",
"created": "2016-09-22T21:51:53.151000+00:00",
"modified": "2016-09-22T21:51:53.151000+00:00",
"label": "Neuroscience",
"_id": "57e452791cff88b85f9f9c97",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "scitran",
"created": "2016-09-22T21:52:27.576000+00:00",
"modified": "2016-09-22T21:52:27.576000+00:00",
"label": "Psychology",
"_id": "57e4529b1cff88b85f9f9c98",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "scitran",
"created": "2016-09-22T21:52:52.539000+00:00",
"modified": "2016-09-22T21:52:52.539000+00:00",
"label": "Testdata",
"_id": "57e452b41cff88b85f9f9c99",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "test-group",
"created": "2016-09-22T21:54:47.925000+00:00",
"modified": "2016-09-22T21:54:47.925000+00:00",
"label": "test-project",
"_id": "57e45327466d8e000e33a859",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "scitran",
"created": "2016-09-29T18:53:06.199000+00:00",
"modified": "2016-09-29T18:53:06.199000+00:00",
"label": "test2",
"_id": "57ed6312466d8e01c91ee427",
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}]
{
"group": "scitran",
"created": "2016-09-22T21:51:53.151000+00:00",
"modified": "2016-09-22T21:51:53.151000+00:00",
"label": "Neuroscience",
"_id": "57e452791cff88b85f9f9c97",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}
{
"57ebe5adf0a2c90027d2bd44": [
{
"inputs": {
"dicom": {
"type": "acquisition",
"id": "57ebe5adf0a2c90027d2bd44",
"name": "1_1_dicom.zip"
}
},
"attempt": 1,
"name": "dcm_convert",
"tags": [
"dcm_convert",
"spectroscopy"
],
"destination": {
"type": "acquisition",
"id": "57ebe5adf0a2c90027d2bd44"
},
"request": {
"inputs": [
{
"type": "scitran",
"uri": "/jobs/57ebe5adf0a2c90027d2bd48/config.json",
"location": "/flywheel/v0"
},
{
"type": "scitran",
"uri": "/acquisitions/57ebe5adf0a2c90027d2bd44/files/1_1_dicom.zip",
"location": "/flywheel/v0/input/dicom"
}
],
"target": {
"command": [
"bash",
"-c",
"rm -rf output; mkdir -p output; ./run; echo \"Exit was $?\""
],
"env": {
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
"dir": "/flywheel/v0"
},
"outputs": [
{
"type": "scitran",
"uri": "/engine?level=acquisition&id=57ebe5adf0a2c90027d2bd44&job=57ebe5adf0a2c90027d2bd48",
"location": "/flywheel/v0/output"
}
]
},
"modified": "2016-09-28T15:45:52.607000+00:00",
"created": "2016-09-28T15:45:49.975000+00:00",
"state": "running",
"config": {},
"id": "57ebe5adf0a2c90027d2bd48"
}
]
}
[{
"group": "scitran",
"created": "2016-09-19T17:13:48.164000+00:00",
"subject": {
"code": "ex4784",
"_id": "57e01cccb1dc04000fb83f02"
},
"modified": "2016-09-19T17:13:48.164000+00:00",
"label": "control_1",
"project": "57e01cccf6b5d5edbcb4e1cf",
"_id": "57e01cccb1dc04000fb83f03",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "scitran",
"created": "2016-09-19T17:13:54.873000+00:00",
"subject": {
"code": "ex6879",
"_id": "57e01cd2b1dc04000eb83f05"
},
"modified": "2016-09-19T17:13:54.873000+00:00",
"label": "control_2",
"project": "57e01cccf6b5d5edbcb4e1cf",
"_id": "57e01cd2b1dc04000eb83f06",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}, {
"group": "scitran",
"created": "2016-09-19T17:14:02.228000+00:00",
"subject": {
"code": "ex8403",
"_id": "57e01cdab1dc04000eb83f10"
},
"modified": "2016-09-19T17:14:02.228000+00:00",
"label": "patient_1",
"project": "57e01cccf6b5d5edbcb4e1cf",
"_id": "57e01cdab1dc04000eb83f11",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}]
{
"group": "scitran",
"created": "2016-09-19T17:13:48.164000+00:00",
"subject": {
"code": "ex4784",
"_id": "57e01cccb1dc04000fb83f02"
},
"modified": "2016-09-19T17:13:48.164000+00:00",
"label": "control_1",
"project": "57e01cccf6b5d5edbcb4e1cf",
"_id": "57e01cccb1dc04000fb83f03",
"public": false,
"permissions": [{
"access": "admin",
"_id": "coltonlw@flywheel.io",
"site": "local"
}]
}
get:
description: Get a single <<resourcePathName|!singularize>>
responses:
200:
body:
application/json:
put:
description: Update a <<resourcePathName|!singularize>>
is: ["validates-json-body"]
body:
application/json:
responses:
200:
body:
application/json:
schema: !include ../schemas/output/container-update.json
example: !include ../examples/output/container-update.json
delete:
description: Delete a <<resourcePathName|!singularize>>
responses:
200:
body:
application/json:
schema: !include ../schemas/output/container-delete.json
example: !include ../examples/output/container-delete.json
description: <<resourcePathName|!pluralize>> in the Scitran Core API
get:
description: Get a list of <<resourcePathName>>
responses:
200:
body:
application/json:
post:
description: |
Add a new <<resourcePathName|!singularize>>
is: ["validates-json-body"]
body:
application/json:
responses:
200:
body:
application/json:
schema: !include ../schemas/output/container-new.json
example: !include ../examples/output/container-new.json
type: container
get:
responses:
200:
body:
application/json:
example: !include ../examples/output/acquisition-list.json
schema: !include ../schemas/output/acquisition-list.json
post:
description: Create a acquisition
body:
application/json:
example: !include ../examples/input/acquisition.json
schema: !include ../schemas/input/acquisition.json
/{AcquisitionId}:
type: container-item
get:
responses:
200:
body:
application/json:
example: !include ../examples/output/acquisition.json
schema: !include ../schemas/output/acquisition.json
put:
body:
application/json:
example: !include ../examples/input/acquisition-update.json
schema: !include ../schemas/input/acquisition-update.json
......@@ -4,4 +4,72 @@ get:
200:
body:
application/json:
example:
example: !include ../examples/output/collection-list.json
schema: !include ../schemas/output/collection-list.json
post:
is: ["validates-json-body"]
description: Create a collection
body:
application/json:
example: !include ../examples/input/collection.json
schema: !include ../schemas/input/collection.json
responses:
200:
body:
application/json:
example: !include ../examples/output/collection-new.json
schema: !include ../schemas/output/collection-new.json
/{CollectionId}:
uriParameters:
CollectionId:
type: string
get:
description: Retrieve a single collection
responses:
200:
body:
application/json:
example: !include ../examples/output/collection.json
schema: !include ../schemas/output/collection.json
put:
is: ["validates-json-body"]
description: Update a collection and its contents
body:
application/json:
example: !include ../examples/input/collection-update.json
schema: !include ../schemas/input/collection-update.json
responses:
200:
description: Collection updated
delete:
description: Delete a collection
responses:
200:
description: Collection was deleted
/sessions:
get:
description: List sessions in a collection
responses:
200:
body:
application/json:
example: !include ../examples/output/session-list.json
schema: !include ../schemas/output/session-list.json
/acquisitions:
get:
description: List acquisitions in a collection
responses:
200:
body:
application/json:
example: !include ../examples/output/acquisition-list.json
schema: !include ../schemas/output/acquisition-list.json
/curators:
get:
description: List all curators of collections
responses:
200:
body:
application/json:
example: !include ../examples/output/collection-curators-list.json
schema: !include ../schemas/output/collection-curators-list.json
......@@ -31,7 +31,7 @@ post:
body:
application/json:
example: !include ../examples/output/group.json
schema: !include ../schemas/definitions/group-output.json
schema: !include ../schemas/output/group.json
put:
is: [validates-json-body]
description: Update group
......
......@@ -30,8 +30,8 @@ get:
200:
body:
application/json:
example: !include ../examples/output/job.json
schema: !include ../schemas/output/job.json
example: !include ../examples/output/job-next.json
schema: !include ../schemas/output/job-next.json
/stats:
description: Job stats
get:
......
/{ProjectId}/template:
uriParameters:
ProjectId:
type: string
required: true
post:
description: Set the session template for a project
body:
application/json:
example: !include ../examples/input/project-template.json
schema: !include ../schemas/input/project-template.json
type: container
get:
responses:
200:
body:
application/json:
example: !include ../examples/output/project-list.json
schema: !include ../schemas/output/project-list.json
post:
description: Create a project
body:
application/json:
example: !include ../examples/input/project.json
schema: !include ../schemas/input/project.json
/{ProjectId}:
type: container-item
get:
responses:
200:
description: Template was saved
body:
application/json:
example: |
{"modified": 1}
404:
description: Project was not found
example: !include ../examples/output/project.json
schema: !include ../schemas/output/project.json
put:
body:
application/json:
example: !include ../examples/input/project-update.json
schema: !include ../schemas/input/project-update.json
/{ProjectId}/template:
uriParameters:
ProjectId:
type: string
required: true
post:
description: Set the session template for a project
body:
application/json:
example: !include ../examples/input/project-template.json
schema: !include ../schemas/input/project-template.json
responses:
200:
description: Template was saved
body:
application/json:
example: |
{"modified": 1}
404:
description: Project was not found
/recalc:
uriParameters:
ProjectId:
type: string
required: true
post:
description: |
Recalculate if sessions in the project satisfy the template.
Returns list of modified session ids.
responses:
200:
description: |
Project's sessions' compliance was recalculated.
Returns list of session that were modified.
404:
description: Project was not found
delete:
description: Remove the session template for a project
......@@ -42,21 +86,3 @@
description: |
Projects' sessions' compliance was recalculated.
Returns list of session that were modified.
/{ProjectId}/recalc:
uriParameters:
ProjectId:
type: string
required: true
post:
description: |
Recalculate if sessions in the project satisfy the template.
Returns list of modified session ids.
responses:
200:
description: |
Project's sessions' compliance was recalculated.
Returns list of session that were modified.
404:
description: Project was not found
type: container
get:
responses:
200:
body:
application/json:
example: !include ../examples/output/session-list.json
schema: !include ../schemas/output/session-list.json
post:
description: Create a session
body:
application/json:
example: !include ../examples/input/session.json
schema: !include ../schemas/input/session.json
/{SessionId}:
type: container-item
get:
responses:
200:
body:
application/json:
example: !include ../examples/output/session.json
schema: !include ../schemas/output/session.json
put:
body:
application/json:
example: !include ../examples/input/session.json
schema: !include ../schemas/input/session.json
/jobs:
get:
description: Return any jobs that use inputs from this session
queryParameters:
states:
type: string
description: filter results by job state
tags:
type: string
description: filter results by job tags
responses:
200:
body:
application/json:
example: !include ../examples/output/session-jobs.json
schema: !include ../schemas/output/session-jobs.json
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions":{
"instrument": {"type": "string"},
"measurement": {"type": "string"},
"timestamp": {"type": ["string", "null"], "format": "date-time"},
"timezone": {"type": "string"},
"acquisition-input":{
"type": "object",
"properties": {
"public": {"$ref": "../definitions/container.json#/definitions/public"},
"label": {"$ref": "../definitions/container.json#/definitions/label"},
"metadata": {"$ref": "../definitions/container.json#/definitions/metadata"},
"archived": {"$ref":"../definitions/container.json#/definitions/archived"},
"session": {"$ref":"../definitions/objectid.json#"},
"uid": {"$ref":"../definitions/user.json#/definitions/_id"},
"instrument": {"$ref": "#/definitions/instrument"},
"measurement": {"$ref": "#/definitions/measurement"},
"timestamp": {"$ref":"#/definitions/timestamp"},
"timezone": {"$ref":"#/definitions/timezone"}
},
"additionalProperties":false
},
"acquisition-output":{
"type":"object",
"properties": {
"_id":{"$ref":"../definitions/objectid.json#"},
"public": {"$ref": "../definitions/container.json#/definitions/public"},
"label": {"$ref": "../definitions/container.json#/definitions/label"},
"metadata": {"$ref": "../definitions/container.json#/definitions/metadata"},
"session": {"$ref":"../definitions/objectid.json#"},
"collections":{
"type":"array",
"items":{"$ref":"../definitions/objectid.json#"}
},
"files":{
"type":"array",
"items":{"$ref":"../definitions/file.json#/definitions/file-output"}
},
"instrument": {"$ref": "#/definitions/instrument"},
"measurement": {"$ref": "#/definitions/measurement"},
"timestamp": {"$ref":"#/definitions/timestamp"},
"created":{"$ref":"../definitions/created-modified.json#/definitions/created"},
"modified":{"$ref":"../definitions/created-modified.json#/definitions/modified"},
"permissions":{
"type":"array",
"items":{"$ref":"../definitions/permission.json#"}
}
},
"additionalProperties":false
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment