Code Integration Scenarios
R Convenience Functions
"Level 1" functions
"Level 2" functions
Web Services
These manipulation only the metadata, stored in Synapse.
Note: It is assumed that code versions are represented by refererences.
Create Code
Code Block |
---|
POST https://repo-staging.sagebase.org/repo/v1/code
{"parentId":"1234", "codeRepoId":"4567", "codeRepoLoc":"/trunk/analysisProject/R"}
|
Note: "parentId" is the ID of a Synapse Project; "codeRepoId" is the ID of a Code Repository object.
Successful Response:
Code Block |
---|
HTTP/1.1 201 Created
{"id":"8901", "parentId":"1234", "codeRepoId":"4567", "codeRepoLoc":"/trunk/analysisProject/R"}
|
Get Code
Code Block |
---|
GET https://repo-staging.sagebase.org/repo/v1/code/8901
|
Successful Response:
Code Block |
---|
HTTP/1.1 200 OK
{"id":"8901", "parentId":"1234", "codeRepoId":"4567", "codeRepoLoc":"/trunk/analysisProject/R"}
|
Update Code
Code Block |
---|
PUT https://repo-staging.sagebase.org/repo/v1/code/8901
{"id":"8901", "parentId":"5432", "codeRepoId":"4567", "codeRepoLoc":"/trunk/analysisProject/R"}
|
Successful Response:
Code Block |
---|
HTTP/1.1 200 OK
{"id":"8901", "parentId":"5432", "codeRepoId":"4567", "codeRepoLoc":"/trunk/analysisProject/R"}
|
Delete Code
Code Block |
---|
DELETE https://repo-staging.sagebase.org/repo/v1/code/8901
|
Successful Response:
Code Block |
---|
HTTP/1.1 204 No Content
|
Create Code Repository
Code Block |
---|
POST https://repo-staging.sagebase.org/repo/v1/codeRepo
{"codeRepoType":"svn", "codeRepoURL":"https://sagebionetworks.jira.com/svn"}
|
Successful Response:
Code Block |
---|
HTTP/1.1 201 Created
{id:"9876", "codeRepoType":"svn", "codeRepoURL":"https://sagebionetworks.jira.com/svn"}
|
TODO: GET, PUT, DELETE
Create Code Repo Credentials
Code Block |
---|
POST https://repo-staging.sagebase.org/repo/v1/codeRepoCredentials
{"codeRepoId:"9876", "username":"foo": "password":"bar"}
|
Note: This request must be authenticated and the credentials are created for the authenticated user. The given "username" need not be the same as the user's Synapse username.
Successful Response:
Code Block |
---|
HTTP/1.1 201 Created
{"id":"5432", "codeRepoId:"9876", "username":"foo": "password":"bar"}
|
TODO: Should the password be 'echoed'?
TODO: GET, PUT, DELETE
...
The development cycle for preexisting code: The code is Downloaded from Synapse, and Loaded into the R session. The user repeatedly Runs, Edits and reLoads the code. When satisfied, she may Store the code back to Synapse. To help capture provenance, the Load and Store functions put the Code's ID and version into the current Step. For the provenance record to be accurate, the user must Store prior to running.
Discover, retrieve, load and run code
A user, browsing Synapse, sees a piece of code of interest (mentioned in a discussion or used in an analysis), and clicks on it. She sees:
entity.3733 <- downloadEntity(3733)
and begins by executing this in R.
Develop new code, then Store