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 @@ ...@@ -20,7 +20,10 @@
"modified": "2016-08-11T12:46:12.593000+00:00", "modified": "2016-08-11T12:46:12.593000+00:00",
"created": "2016-08-11T12:46:12.593000+00:00", "created": "2016-08-11T12:46:12.593000+00:00",
"state": "pending", "state": "pending",
"_id": "57ac7394c700190017123fb8" "_id": "57ac7394c700190017123fb8",
"config":{
"speed":3
}
}, },
{ {
"inputs": [ "inputs": [
...@@ -44,6 +47,9 @@ ...@@ -44,6 +47,9 @@
"modified": "2016-08-11T13:02:09.055000+00:00", "modified": "2016-08-11T13:02:09.055000+00:00",
"created": "2016-08-11T13:02:09.055000+00:00", "created": "2016-08-11T13:02:09.055000+00:00",
"state": "pending", "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 @@ ...@@ -19,5 +19,8 @@
"modified": "2016-08-11T13:02:09.055000+00:00", "modified": "2016-08-11T13:02:09.055000+00:00",
"created": "2016-08-11T13:02:09.055000+00:00", "created": "2016-08-11T13:02:09.055000+00:00",
"state": "pending", "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: ...@@ -4,4 +4,72 @@ get:
200: 200:
body: body:
application/json: 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: ...@@ -31,7 +31,7 @@ post:
body: body:
application/json: application/json:
example: !include ../examples/output/group.json example: !include ../examples/output/group.json
schema: !include ../schemas/definitions/group-output.json schema: !include ../schemas/output/group.json
put: put:
is: [validates-json-body] is: [validates-json-body]
description: Update group description: Update group
......
...@@ -30,8 +30,8 @@ get: ...@@ -30,8 +30,8 @@ get:
200: 200:
body: body:
application/json: application/json:
example: !include ../examples/output/job.json example: !include ../examples/output/job-next.json
schema: !include ../schemas/output/job.json schema: !include ../schemas/output/job-next.json
/stats: /stats:
description: Job stats description: Job stats
get: get:
......
/{ProjectId}/template: type: container
uriParameters: get:
ProjectId: responses:
type: string 200:
required: true body:
post: application/json:
description: Set the session template for a project example: !include ../examples/output/project-list.json
body: schema: !include ../schemas/output/project-list.json
application/json: post:
example: !include ../examples/input/project-template.json description: Create a project
schema: !include ../schemas/input/project-template.json body:
application/json:
example: !include ../examples/input/project.json
schema: !include ../schemas/input/project.json
/{ProjectId}:
type: container-item
get:
responses: responses:
200: 200:
description: Template was saved
body: body:
application/json: application/json:
example: | example: !include ../examples/output/project.json
{"modified": 1} schema: !include ../schemas/output/project.json
404: put:
description: Project was not found 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: delete:
description: Remove the session template for a project description: Remove the session template for a project
...@@ -42,21 +86,3 @@ ...@@ -42,21 +86,3 @@
description: | description: |
Projects' sessions' compliance was recalculated. Projects' sessions' compliance was recalculated.
Returns list of session that were modified. 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