Introduction

The Fedora Management service defines an open interface for administering the repository, including creating, modifying, and deleting digital objects, or components within digital objects. The Management service interacts with the underlying repository system to read content from and write content to the digital object and datastream storage areas. The Management service exposes a set of operations that enable a client to view and manipulate digital objects from an abstract perspective, meaning that a client does not need to know anything about underlying storage formats, storage media, or storage management schemes for objects. Also, the underlying repository system handles the details of storing datastream content within the repository, as well as mediating connectivity for datastreams that reference external content.

Due to an outstanding bug FCREPO-849, if you use Managed Content for DC, RELS-EXT or RELS-INT then please make sure these datastreams are versionable (the default setting for versionable is "true", so if you haven't specified this datastream property then you are safe). Ensure that you don't inadvertently set this property to "false" for these datastreams when using the API methods.

The "force" parameter on modify/purge operations is deprecated, and will be removed in a future release. This parameter has never been used in practice.

Methods

Datastream Management

addDatastream

Creates a new Datastream in the object.

Input parameters:

Returns:

compareDatastreamChecksum

Verifies that the Datastream content has not changed since the checksum was initially computed.

Input parameters:

Returns:

getDatastream

Gets the specified datastream.

Input parameters:

Returns:

Since Fedora 3.4, the size of datastreams is returned for inline XML and managed content datastreams (but not for external or referenced content). Prior to this the size is valid only for inline XML datastreams. Please note that a valid size for managed content datastreams will only be returned for datastreams that are new or have been modified after installing Fedora 3.4. Datastreams created in earlier versions will continue to return a size of zero. A tool for calculating and storing the size of these datastreams will be provided in a future release.

getDatastreamHistory

Gets all versions of a datastream, sorted from most to least recent.

Input parameters:

Returns:

getDatastreams

Gets all datastreams in the object

Input parameters:

Returns:

modifyDatastreamByReference

Change the referenced location for a datastream. This operation is only relevant for managed, redirect or external reference datastreams (controlgroup E,M,R).

Input parameters:

Returns:

modifyDatastreamByValue

Modifies an existing Datastream in an object, by value. This operation is only valid for Inline XML Datastreams (i.e. controlGroup "X").

Input parameters:

Returns:

setDatastreamState

Sets the state of a Datastream to the specified state value.

Input parameters:

Returns:

setDatastreamVersionable

Selectively turn versioning on or off for selected datastream. When versioning is disabled, subsequent modifications to the datastream replace the current datastream contents and no versioning history is preserved. To put it another way: No new datastream versions will be made, but all the existing versions will be retained. All changes to the datastream will be to the current version.

Input parameters:

Returns:

purgeDatastream

Permanently removes one or more versions of a Datastream from an object.

Input parameters:

Returns:

Relationship Management

From version 3.3 onwards, the "pid" parameter of the relationships methods has been changed to "subject".  The parameter identifies the subject of a relationship and should be either a Fedora object URI (eg info:fedora/demo:333) or a Fedora object's datastream URI (eg info:fedora/demo:333/DS1).  Subjects that identify a Fedora object will result in operations on RELS-EXT, and subjects that identify a datastream will result in operations on RELS-INT.  The pid format for a subject (eg demo:333) is still accepted, but is deprecated as of version 3.3.

WSDL note:  The WSDL for versions 3.3 onwards continues to identify this parameter as "pid" to avoid breaking any existing SOAP clients. The parameter is intepreted as a relationship's subject as above. The SOAP parameter name will be changed to "subject" in a future release.

The relationship management methods manipulate the content of the RELS-EXT and RELS-INT datastreams. The datastream to be modified is determined from the subject of the relationship, ie a subject of info:fedora/demo:333 will result in changes to RELS-EXT in demo:333, and a subject of info:fedora/demo:333/DS1 will result in changes to RELS-INT in demo:333. These modifications will also be propagated to the Resource Index if it is enabled.

addRelationship

Creates a new relationship in the object. Adds the specified relationship to the object's RELS-EXT or RELS-INT Datastream. If the Resource Index is enabled, the relationship will be added to the Resource Index.

A rdf tuple consist of an object or datastream (the subject), having a predicate relating it to a target (the object). The object can either be a literal value, or a URI (which can identify for example a Fedora object or a datastream).

Input parameters:

Returns:

getRelationships

Get the relationships asserted in the object's RELS-EXT or RELS-INT Datastream that match the given criteria.

Input parameters:

Returns:

purgeRelationship

Delete the specified relationship. This method will remove the specified relationship(s) from the RELS-EXT or RELS-INT datastream. If the Resource Index is enabled, this will also delete the corresponding triples from the Resource Index.

Input parameters:

Returns:

Object Management

modifyObject

Modify an object.

Input parameters:

Returns:

purgeObject

Permanently removes an object from the repository.

Parameters:

Input parameters:

Returns:

export

Exports the entire digital object in the specified XML format, and encoded appropriately for the specified export context.

Parameters:

getNextPID

Retrieves the specified number of next available pid(s) for a given pid namespace.

Parameters:

getObjectXML

Gets the serialization of the digital object to XML appropriate for persistent storage in the repository, ensuring that any URLs that are relative to the local repository are stored with the Fedora local URL syntax. The Fedora local URL syntax consists of the string "local.fedora.server" standing in place of the actual "hostname:port" on the URL). Managed Content (M) datastreams are stored with internal identifiers in dsLocation. Also, within selected inline XML datastreams (i.e., WSDL and SERVICE_PROFILE) any URLs that are relative to the local repository will also be stored with the Fedora local URL syntax.

Parameters:

ingest

Creates a new digital object in the repository. If the XML document does not specify the PID attribute of the root element, the repository will generate and return a new pid for the object resulting from this request. That pid will have the namespace of the repository. If the XML document specifies a pid, it will be assigned to the digital object provided that 1. it conforms to the Fedora pid Syntax, 2. it uses a namespace that matches the "retainPIDs" value configured for the repository, and 3. it does not collide with an existing pid of an object in the repository.

Parameters:

Returns:

validate

Validates an object against it's content models

Input parameters:

Returns:

WSDL

When running your own Fedora server, the API-M WSDL is available at /wsdl?api=API-M.

Example:

http://localhost:8080/fedora/wsdl?api=API-M

The Apache Axis library also automatically provides an INCORRECT WSDL DOCUMENT at /fedora/services/management?wsdl. Please DO NOT USE this; it is automatically generated and will result in unexpected behavior for your clients. The recommended URL, /fedora/wsdl?api=API-M produces a copy of the API-M WSDL exactly as it was intended.