Simulation Publishing Protocol
Goals
To provide a simple mechanism for the publication of simulation data. At the simplest level, it should be possible to publish the data using a static web site.
Variables
- Projects have catalogs.
- Catalogs have simulations.
- Simulations have datasets.
- Simulations use programs.
These variables are used to match strings in a URI template, as is used in WADL.
| Variable | Definition
|
| {program} | Program, with inputs, and algorithms, etc.
|
| {project} | Top-level, big picture collection of catalogs.
|
| {catalog} | Collection of related simulations.
|
| {simulation} | Collection of datasets, describing the purpose and parameters.
|
| {dataset} | May be a collection (tar, tar.gz) or single file (png, hdf5)
|
Notes
All URIs are relative to the service endpoint
http://example.org/simulations
Or
vos://org.example!simulations
<root> indicates the root tag of an XML instance document used as input (Request Body), or returned (Response Body). Blank cells indicate that either no content is expected, or no content is returned.
[/] denotes an optional trailing slash.
These URI's could be extended to include PUT, etc., but that would be for the service implementer to aid in managing the capabilities of the service.
/programs[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return a list of {programs} | | <ProgramList> | 500 - Internal Server Error
|
| POST | Add a program with a randomly UUID | <Program> | <Program> | 500, Unauth?
|
/programs/{program}[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return {program} | | <Program> | 500, 404
|
| PUT | Create a new {program} | <Program> | | 500, Unauth?
|
| POST | Update {program} | <Program> | <Program> | 500, 404,Unauth?
|
| DELETE | Delete {program} | | | 500, 404,Unauth?
|
/projects[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return a list of {projects} | | <ProjectList> | 500 - Internal Server Error
|
| POST | Add a project with a randomly UUID | <Project> | <Project> | 500, Unauth?
|
/projects/{project}[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return {project} | | <Project> | 500, 404
|
| PUT | Create a new {project} | <Project> | | 500, Unauth?
|
| POST | Update {project} | <Project> | <Project> | 500, 404,Unauth?
|
| DELETE | Delete {project} | | | 500, 404,Unauth?
|
/projects/{project}/{catalog}[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return {catalog} | | <Catalog> | 500, 404
|
| PUT | Create a new {catalog} | <Catalog> | | 500, Unauth?
|
| POST | Update {catalog} | <Catalog> | <Catalog> | 500, 404,Unauth?
|
| DELETE | Delete {catalog} | | | 500, 404,Unauth?
|
/projects/{project}/{catalog}/{simulation}[/]
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return {catalog} | | <Catalog> | 500, 404
|
| PUT | Create a new {catalog} | <Catalog> | | 500, Unauth?
|
| POST | Update {catalog} | <Catalog> | <Catalog> | 500, 404,Unauth?
|
| DELETE | Delete {catalog} | | | 500, 404,Unauth?
|
/projects/{project}/{catalog}/{simulation}/{dataset}
| Method | Action | Request Body | Response Body | Faults
|
| GET | Return {dataset} in native format | | {dataset} | 500, 404
|
| PUT | Create a new {dataset} | {dataset} | | 500, Unauth?
|
| POST | Update {catalog} | <Catalog> | <Catalog> | 500, 404,Unauth?
|
| DELETE | Delete {catalog} | | | 500, 404,Unauth?
|