The Evaluation API is designed to support open-access Synapse data analysis and modeling challenges. This framework provides tools for administrators to create new evaluations in Synapse and manage the users and data objects associated with an evaluation. An evaluation owner can control access to evaluation resources and registration, as well as track user participation and evaluate submitted models. This API will support user-facing interfaces to monitor evaluations including activity notifications and on-demand scoring and leaderboarding.
Synapse Evaluations are constructed around three primary objects: Evaluation and Submission. These objects are defined by eponymous JSON schema files in the Synapse Repository Services. The UMLet file used to generate the following image is available here.
Evaluation
Object representing a Synapse Evaluation
status - enum describing the state of the Evaluation, one of: PLANNED, OPEN, CLOSED, COMPLETED
Submission
Immutable object to represent an entity submission to a Evaluation. A participant can create many Submissions for a given Evaluation.
SubmissionStatus
Object to track the status and score of a specific Submission. This object is generated at the time of submission, and can be modified by Evaluation administrators.
SubmissionBundle
Bundle object containing a Submission and its accompanying SubmissionStatus.
SubmissionStatusBatch
Used to upload a collection of Submission updates at once.
Evaluation
URL | HTTP Type | Description |
---|---|---|
/evaluation | POST | Create a new Evaluation |
/evaluation/{evaluationId} | GET | Get a Evaluation |
/evaluation/{evaluationId} | PUT | Update a Evaluation |
/evaluation/{evaluationId} | DELETE | Delete a Evaluation |
/evaluation | GET | Batch Get Evaluations (Paginated) |
/evaluation/count | GET | Get the number of Evaluations |
/evaluation/name/{name} | GET | Find a Evaluation by name Note that the name must be URL-encoded |
/evaluation/available | GET | Get the paginated list of Evaluations which the user has joined as a participant. |
Submission
URL | HTTP Type | Description |
---|---|---|
/evaluation/submission?etag=<etag> | POST | Create a new Submission (and corresponding SubmissionStatus object). Required request parameter: |
/evaluation/submission/{submissionId} | GET | Get a Submission |
/evaluation/submission/{submissionId}/status | GET | Get the status of a Submission |
/evaluation/submission/{submissionId}/status | PUT | Update the status of a Submission. |
/evaluation/submission/{submissionId} | DELETE | Delete a Submission. Requires admin rights on the Evaluation. |
/evaluation/{evaluationId}/submission/ /evaluation/{evaluationId}/submission/bundle/ | GET | Batch get my Submissions/SubmissionBundles for a given Evaluation. Optional request parameters: |
/evaluation/{evaluationId}/submission/all /evaluation/{evaluationId}/submission/status/all /evaluation/{evaluationId}/submission/bundle/all | GET | Batch get Submissions/SubmissionStatuses/SubmissionBundles for a given Evaluation. Optional request parameters: |
/evaluation/submission/{submissionId}/file/{fileHandleId} | GET | Get a temporary pre-signed URL to a File contained within a specified Submission. Optional request parameter: |
/evaluation/{evaluationId}/submission/count | GET | Get the number of Submissions for a given Evaluation. |
Access Restrictions and approvals may be applied to Evaluations. For details on the API see: Data Access Control
Create an Evaluation
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -H Content-Type:application/json -d '{ "status":"PLANNED", "description":"description", "name":"my first evaluation", "contentSource":"contentSource" }' https://repo-staging.prod.sagebase.org/repo/v1/evaluation |
Get an Evaluation
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json 'https://repo-staging.prod.sagebase.org/repo/v1/evaluation/1588317' |
Update an Evaluation
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -H Content-Type:application/json -X PUT -d '{ "id":"1588317", "createdOn":"2013-01-16T16:30:56.727Z", "etag":"eed22bca-d88e-4b4a-8b1a-35dca7b7b8db", "status":"OPEN", "description":"description", "ownerId":"1588313", "name":"my first evaluation", "contentSource":"contentSource" }' https://repo-staging.prod.sagebase.org/repo/v1/evaluation/1588317 |
Delete an Evaluation
curl -i -k -H sessionToken:okxkSRyl3v0iIf0eutQfXA00 -H Accept:application/json -X DELETE 'https://repo-staging.prod.sagebase.org/repo/v1/evaluation/1588317' |
Create a Participant
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -H Content-Type:application/json -d '{ "ownerId":"123456" }' https://repo-staging.prod.sagebase.org/repo/v1/evaluation/987654/participant |
Delete a Participant
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -X DELETE 'https://repo-staging.prod.sagebase.org/repo/v1/evaluation/1588317/participant/1588313' |
Create a Submission
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -H Content-Type:application/json -d '{ "evaluationId":"1588317", "entityId":"1588315", "versionNumber":"1", "name":"some-name" }' https://repo-staging.prod.sagebase.org/repo/v1/evaluation/submission |
Update a SubmissionStatus
curl -i -k -H sessionToken:xxxxxxxxxxxxxxxx -H Accept:application/json -H Content-Type:application/json -X PUT -d '{ "id":"1589914", "modifiedOn":"2013-01-18T21:43:18.897Z", "etag":"13c88b1a-662c-4dd6-bb56-3976566516f7", "status":"SCORED", "score":0.42 }' https://repo-staging.prod.sagebase.org/repo/v1/evaluation/submission/1589914/status |
Delete a Submission
curl -i -k -H sessionToken:dPF2TqGUq121PR36AwJhXw00 -H Accept:application/json -X DELETE 'https://repo-staging.prod.sagebase.org/repo/v1/evaluation/submission/1589912' |
The following is a proposed workflow for interacting with the Evaluation Services. Please note that some components are still under development.
User Perspective
Owner/Admin Perspective
The following features are planned but not yet implemented.