You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Table of Contents

Alternative REST API

In this I will propose an alternative REST api to the one in the Fedora Documentation.

General principles

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 content

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

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/{methodName}/from/{sdef}?params

Object-Centric methods

Create new object with given pid

PUT /objects/{pid}

Return: Nothing or pid of the new object

Creates a new, empty object

Create new object with autogenerated pid

POST /objects/

Return: pid of the new object (/objects/demo:newObject2)

Creates a new, empty object

Present Object

GET /objects/{pid}

Return: XML that presents the object....

Undetailed

Purge object

DELETE /objects/{pid}

Get the object properties

GET /objects/{pid}/properties
Return: list of property names (/object/demo:myPid2/properties/label)

Provides a list of property names that can be queried

Get a specific object property

GET /objects/{pid}/properties/{property}
Return: The value

Give the value of the specific property, or 404 if property not found

Example: /objects/demo:myPid2/properties/label

Write a specific property

PUT /objects/{pid}/properties/{property}
Contents: The new value
Return nothing, or 404 if property not found. New properties cannot be created.

Get content models for a object

GET /objects/{pid}/contentmodels
Return: Get the content models of the object (/objects/demo:contentmodel)

Get a list of the content models of this object

Add a content model to this object

PUT /objects/{pid}/contentmodels/{cmpid}
Contents: Nothing

Add cmpid to the list of content model for this object

Get all the relations of an object

GET /objects/{pid}/relations
Return: Return a list of relation names

Get a specific relation from an object

GET /objects/{pid}/relations/{rel-name}
Return: List of pids of objects referred by this relation

Add a relation to an object

PUT /objects/{pid}/relations/{rel-name}/to/{objpid}

Purge a relation to an object

DELETE /objects/{pid}/relations/{rel-name}/to/{objpid}

Add a literal relation

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

Delete a literal relation

PUT /objects/{pid}/relations/{rel-name}/toLiteral/{value}

Datastream-Centric methods

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

Delete a datastream

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

Purge the object from the repository

Get Contents of a datastream

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

Update an Inline or Managed Datastream

POST /objects/{pid}/datastreams/{dsID}
Contents: The new content of the datastream
TODO (overlaps with create a new datastream...)

Get the properties of a datastream

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

Get a specific property

GET /objects/{pid}/datastreams/{dsID}/properties/{prop}
Return: The value

Update a property

PUT /objects/{pid}/datastreams/{dsID}/properties/{prop}
Contents: The new value

examples: versionable, state and so on.

Update an External or Redirect Datastream

Contentlocation is just a property of these datastreams

PUT /objects/{pid}/datastreams/{dsID}/properties/contentLocation
Contents: The URL to the contents of the datastream

Get the relations of the datastream

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

The RELS-INT block "about" this datastream

Add a relation to the datastream

PUT /objects/{pid}/datastreams/{dsID}/relations/{rel-name}/to/{objPid}

Purge a relation from the datastream

DELETE /objects/{pid}/datastreams/{dsID}/relations/{rel-name}/to/{objPid}

Add a literal relation to the datastream

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

Purge a literal relation from a datastream

DELETE /objects/{pid}/datastreams/{dsID}/relations/{rel-name}/toLiteral/{value}

Get version timestamps of a datastream

The idea is that the old version of the datastream should support the same getter methods as the current version

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

Get the contents of a specific version of a datastream

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

Get the versioned properties of a specific version

GET /objects/{pid}/datastreams/{dsID}/versions/{timestamp}/properties

Get a specific versioned property of a specific version

GET /objects/{pid}/datastreams/{dsID}/versions/{timestamp}/properties/{propertyname}

Get the relations of a specific version

GET /objects/{pid}/datastreams/{dsID}/versions/{timestamp}/relations/

Method-Centric methods

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels