Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

In this I will propose an alternative REST api to the one in the Fedora Documentation. It is made to support CRUD (Create, Retrieve, Update, Delete) workflows more natively than the current Fedora APIs. It is based around the idea that every conceivable url should be gettable, and probably puttable. There should not be big methods with lots of parameters, but rather a bunch of small resources with very clear purpose.

For CRUB CRUD purposes, foxml is not the format of Fedora. Foxml is a very useful and welldesigned storage format, but it is intricate. There will be no ingest or exportToXML methods in this api, as the user should not have to understand foxml. Rather, the Fedora objects is decomposed into resources, available through through URLs.

...

Content

Location

Objects

/objects/

Object presentation

/objects/{pid}

Object properties

/objects/{pid}/properties

Object relations

/objects/{pid}/relations

Object content models

/objects/{pid}/contentmodels

Datastreams

/objects/{pid}/datastreams

Datastream

/objects/{pid}/datastreams/{dsID}

Datastream content

/objects/{pid}/datastreams/{dsID}/content

Datastream properties

/objects/{pid}/datastreams/{dsID}/properties

Datasteram relations

/objects/{pid}/datastreams/{dsID}/relations

Datastream versions

/objects/{pid}/datastreams/{dsID}/versions

Object Methods

/objects/{pid}/methods

Method invocation

/objects/{pid}/methods/{methodNamesdef}/from/{sdefmethodName}?params

Create methods

Object resources

...

Datastream resources

Create a new datastream

...

PUT /objects/\{pid}/datastreams/\{dsID}\[/withControlGroup/\{cg}\] Contents: The initial contents of the datastream, if any

Creates a new datastream in the object with controlgroup X or {cg} if specified. Datastream is either empty or with the initial content.

Retrieve methods

Object resources

...

GET/POST /objects/{pid}/methods/{methodNamesdef}/from/{sdefmethodName}?params

Datastream resources

...

Add cmpid to the list of content model for this object

Add a literal relation

...

PUT /objects/\{pid}/relations/\{rel-name}/toLiteral/\{value}\[/withType/\{type}\]

Datastream resources

Update the contents of an Inline Datastream

...

Add a literal relation to the datastream

...

PUT /objects/\{pid}/datastreams/\{dsID}/relations/\{rel-name}/toLiteral/\{value}\[/withType/\{type}\]

Delete methods

Object resources

...