ROEVO APi discussion
Summary
After a false start trying to do examples in the Skype log, a rough ROEVO API mapped out in Titanpad: http://titanpad.com/ecp32wKEEg. Note that URIs used in the Titanpad are just examples - apart from the initial service URI, all URIs are discovered by following links provided by the service.
The basic model is that an "roevo" resource is associated with every Research Object, and is accessed by following a link relation between the RO and its "roevo" resource. The "roevo" resource lists snapshots and other status information. Status updates are performed by POST to the "roevo" resource.
The RO creation API is extended to allow a source ROP tpo be specified, in which case the mnew RO created is a copy of the specified source.
Chat log
Call started [28/06/2012 13:42:04] Piotr Holubowicz added gklyne, Raul Palma to this conversation [28/06/2012 13:43:43] gklyne: @raul - maybe you can summarize the goals? [28/06/2012 13:45:28] gklyne: direct evolution = provenance of entire RO [28/06/2012 13:45:51] gklyne: contribution = provenance of component or other contribution [28/06/2012 13:46:39] gklyne: Mechanism to "clone" an RO? [28/06/2012 13:47:23] gklyne: Create an RO from external RO resource? [28/06/2012 13:48:27] gklyne: Create RO from non-RO content? Maybe out of scope. (Suggest use ro-manager, push then clone?) [28/06/2012 14:06:25] Raul Palma: ROs/ro_id/Snapshots/ [28/06/2012 14:10:07] gklyne: Start withj http://ecxample.com/ROs [28/06/2012 14:10:26] gklyne: GET http://example.com/ROs [28/06/2012 14:10:47] gklyne: (returns list of ROs) [28/06/2012 14:11:04] gklyne: POST http://example.com/ROs [28/06/2012 14:11:30] gklyne: Content-type: application/vnd.wf4ever.ro-description [28/06/2012 14:11:49] gklyne: (proxy content includes reference to RO to be cloned) [28/06/2012 14:12:05] gklyne: 201 Created [28/06/2012 14:12:19] gklyne: Location: (URI of new RO) [28/06/2012 14:18:16] Raul Palma: http://example.com/ROs/snapshots/snapshot_id - http://example.com/ROs/ro_id/snapshot/snapshot_id [28/06/2012 14:19:05] gklyne: http://example.com/ROs/ro_id/snapshot_id [28/06/2012 14:19:46] gklyne: http://example.com/ROs/ro_id/snapshot_id/snapshot_id2 [28/06/2012 14:20:20] Raul Palma: http://example.com/ROs/ro_id/snapshot_id [28/06/2012 14:20:46] gklyne: NEW REQUIREWMENT: get list of snapshows of an RO [28/06/2012 14:23:09] gklyne: GET /path/to/RO [28/06/2012 14:23:17] gklyne: 200 OK [28/06/2012 14:23:27] gklyne: content-type: application/rdf+xml [28/06/2012 14:24:26] gklyne: link: <URI-of-RO-evolution-resource>;rel="ro:roevo-info" [28/06/2012 14:24:35] gklyne: (manifest content) [28/06/2012 14:25:39] gklyne: GET URI-of-RO-evolution-resource [28/06/2012 14:25:43] gklyne: 200 OK [28/06/2012 14:25:48] gklyne: Content-type..... [28/06/2012 14:25:55] gklyne: (list of snapshots, etc) [28/06/2012 14:29:01] gklyne: http://example.com/ROs/ro_id/snapshots [28/06/2012 14:29:45] gklyne: ---- [28/06/2012 14:30:17] gklyne: link: <URI-of-RO-evolution-resource>;rel="ro:roevo-info" [28/06/2012 14:30:19] gklyne: .... [28/06/2012 14:30:36] gklyne: POST <URI-of-RO-evolution-resource> [28/06/2012 14:30:59] gklyne: Content-type: application/vnd.wf4ever.roevo-status [28/06/2012 14:31:05] gklyne: (new statius of RO) [28/06/2012 14:33:07] Raul Palma: POST http://example.com/ROs/ro_id/snapshots [28/06/2012 14:33:16] Raul Palma: Content-type: application/vnd.wf4ever.roevo-status.snapshot [28/06/2012 14:33:29] Raul Palma: Content-type: application/vnd.wf4ever.roevo-status [28/06/2012 14:33:51] gklyne: { "Status": "snapshot } [28/06/2012 14:34:19] gklyne: GET http://example.com/ROs/ro_id/snapshots [28/06/2012 14:34:38] gklyne: Link: <http://example.com/ROs/ro_id/>; rel="RO" [28/06/2012 14:34:42] gklyne: (list of snapshots) [28/06/2012 14:36:27] gklyne: http://titanpad.com/ecp32wKEEg [28/06/2012 15:19:28] Piotr Holubowicz: Call ended1 hour 37 minutes 17 seconds