...
GET /objects/{pid} - get object profile
GET /objects/\{pid}?\[asOfDateTime\]\[format\] Wiki Markup
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
asOfDateTime | yyyy-MM-ddTHH:mm:ss.SSSZ | The object, as it looked at the specified time | Now | 2009-01-01T03:00:00:000Z |
format | one of text/xml, text/html, html, xml | The format of the return value | text/html | text/xml |
...
Example of xml format
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
<objectProfile pid="demo:testObject"> <objLabel>label</objLabel> <objOwnerId>fedoraAdmin</objOwnerId> <objModels> <model>info:fedora/demo:ContentModel</model> </objModels> <objCreateDate>2008-09-29T03:49:450Z</objCreateDate> <objLastModDate>2014-09-19T01:18:330Z</objLastModDate> <objDissIndexViewURL>http://localhost:8080/fedora/get/demo:testObject/fedora-system:3/viewMethodIndex</objDissIndexViewURL> <objItemIndexViewURL>http://localhost:8080/fedora/get/demo:testObject/fedora-system:3/viewItemIndex</objItemIndexViewURL> <objState>A</objState> </objectProfile> |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<objectProfile pid="demo:testObject" datetime="2008-09-29T03:49:450Z"> <objLabel>label</objLabel> <objOwnerId>fedoraAdmin</objOwnerId> <objModels> <model>info:fedora/demo:ContentModel</model> </objModels> <objCreateDate>2008-09-29T03:49:450Z</objCreateDate> <objLastModDate>2014-09-19T01:18:330Z</objLastModDate> <objDissIndexViewURL>http://localhost:8080/fedora/get/demo:testObject/fedora-system:3/viewMethodIndex/2008-09-29T03:49:450Z</objDissIndexViewURL> <objItemIndexViewURL>http://localhost:8080/fedora/get/demo:testObject/fedora-system:3/viewItemIndex/2008-09-29T03:49:450Z</objItemIndexViewURL> <objState>A</objState> </objectProfile> |
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
<?xml version="1.0" encoding="UTF-8"?> <!--W3C Schema generated by XMLSPY v2004 rel. 2 U (http://www.xmlspy.com)--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="objectProfile"> <xs:complexType> <xs:sequence> <xs:element ref="objLabel" /> <xs:element ref="objOwnerId" /> <xs:element ref="objModels" /> <xs:element ref="objCreateDate" /> <xs:element ref="objLastModDate" /> <xs:element ref="objDissIndexViewURL" /> <xs:element ref="objItemIndexViewURL" /> <xs:element ref="objState" /> </xs:sequence> <xs:attribute name="pid" use="required"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:attribute> <xs:attribute name="datetime" use="optional"> <xs:simpleType> <xs:restriction base="xs:dateTime" /> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="objCreateDate"> <xs:simpleType> <xs:restriction base="xs:dateTime" /> </xs:simpleType> </xs:element> <xs:element name="objDissIndexViewURL"> <xs:simpleType> <xs:restriction base="xs:anyURI" /> </xs:simpleType> </xs:element> <xs:element name="objItemIndexViewURL"> <xs:simpleType> <xs:restriction base="xs:anyURI" /> </xs:simpleType> </xs:element> <xs:element name="objLabel"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:element> <xs:element name="objOwnerId"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:element> <xs:element name="objModels"> <xs:complexType> <xs:sequence> <xs:element name="model" minOccurs="0" maxOccurs="unbounded" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="objLastModDate"> <xs:simpleType> <xs:restriction base="xs:dateTime" /> </xs:simpleType> </xs:element> <xs:element name="objState"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:element> </xs:schema> |
DELETE /objects/{pid} - purge object
DELETE /objects/\{pid}?\[logMessage\]\[force\] Wiki Markup
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
logMessage | String | The message to store in the log, about the purge | Empty string | "Deleted this object because it was not used anymore" |
force | one of true, false | Force the purge, even it it breaks a data contract. If set to true, the request will fail, a general exception will be thrown and the return code will be 500. See http://fedora-commons.org/jira/browse/FCREPO-609 | false | false |
...
POST /objects/{pid} - ingest or create new object
...
POST /objects/ \ [\{pid\}\| new\] ? \ [label\] \ [format\] \ [encoding\] \ [namespace\] \ [ownerId\]\[logMessage\] \ [ignoreMime\]
Return code | Meaning |
---|---|
201 | OK, purging the object, no return body |
404 | Object not found in repository. Body is exception as text/plain |
401 | Unauthorized, the security policy forbade this operation with the supplied user credentials. Body as exception as text/plain |
400 | Wrong syntax in request. Exception as body, text/plain |
500 | Other, unknown error encountered |
...
PUT /objects/{pid} - modify object
PUT /objects/\{pid}?\[label]\[logMessage]\[ownerId]\[state] Wiki Markup
Modify an object. Modifies only the object level properties, ie. label, ownerId and state.
...
GET /objects/{pid}\versions
GET /objects/\{pid}/versions?\[format] Wiki Markup
Gets a list of timestamps indicating when components changed in an object. This is a set of timestamps indicating when a datastream was created or modified in the object. These timestamps can be used to request a timestamped dissemination request to view the object as it appeared at a specific point in time.
...
Example of xml format
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<fedoraObjectHistory pid="demo:testObject"> <!--1 or more repetitions:--> <objectChangeDate>2008-09-29T03:49:450Z</objectChangeDate> <objectChangeDate>2008-10-29T05:47:000Z</objectChangeDate> </fedoraObjectHistory> |
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
<?xml version="1.0" encoding="UTF-8"?> <!--W3C Schema generated by XMLSPY v2004 rel. 2 U (http://www.xmlspy.com)--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="fedoraObjectHistory"> <xs:complexType> <xs:sequence> <xs:element name="objectChangeDate" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="pid" use="required"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
...
Inquires upon all object Datastreams to obtain datastreams contained by a digital object. This returns a set of datastream locations that represent all possible datastreams available in the object.unmigrated-wiki-markupobject.
GET /objects/\{pid}/datastreams?\[asOfDateTime]\[format]
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
asOfDateTime | yyyy-MM-ddTHH:mm:ss.SSSZ | The datastream list as it looked at the specific time | Now | 2009-01-01T03:00:00:000Z |
format | one of text/xml, text/html, html, xml | The format of the return value | text/html | text/xml |
...
Example of xml format
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<objectDatastreams pid="demo:testObject" asOfDateTime="2009-01-01T03:00:00:000Z" baseURL="http://localhost:8080/fedora/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fedora.info/definitions/1/0/access/ http://localhost:8080/fedora/listDatastreams.xsd"> <!--Zero or more repetitions:--> <datastream dsid="DC" label="" mimeType="text/xml"/> </objectDatastreams> |
...
The label and the mimeType will be empty strings if they are not specified for the particular datastream
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace="info:fedora/fedora-system:def/listDatastreams#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="info:fedora/fedora-system:def/listDatastreams#" elementFormDefault="qualified"> <!-- root element declaration --> <xsd:element name="objectDatastreams"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="objectDatastreamsType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- complex type declarations --> <xsd:complexType name="objectDatastreamsType"> <xsd:sequence> <xsd:element name="datastream" type="datastreamType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="pid" type="xsd:string" use="required"/> <xsd:attribute name="asOfDateTime" type="xsd:string" use="optional"/> <xsd:attribute name="baseURL" type="xsd:string" use="required"/> </xsd:complexType> <xsd:complexType name="datastreamType"> <xsd:attribute name="dsid" type="xsd:string" use="required"/> <xsd:attribute name="label" type="xsd:string" use="required"/> <xsd:attribute name="mimeType" type="xsd:string" use="required"/> </xsd:complexType> </xsd:schema> |
GET /objects/{pid}/datastreams/{dsID} - get datastream profile
...
GET /objects/\{pid}/datastreams/\{dsID}?\[asOfDateTime]\[validateChecksum]
Gets the datastream profile, as it looked at the specified time. The datastream profile is a datastructure containing all the datastream properties, but not the content.
...
- datetime: This attribute is not in the schema. See http://fedora-commons.org/jira/browse/FCREPO-612
- VersionID: Each version of a datastream has a timestamp and an ID. This is the Id of the newest version from before the "asOfDateTime" time.
- CreateDate: Misleadingly named, it is the date where the latest change was performed on the datastream. Corresponds to versionID.
- ControlGroup: One of X (inline Xml), M (Managed content), E (External) or R (Redirect).
- Size: is only trustworthy for inline (X) datastreams, but will be reported for all.
- InfoType: DATA or one of the METS MDType values. Used to maintain backwards compatibility with METS-Fedora
- Location: For internal datastreams, it is the internal id (as shown in the example). For external, it is the url to the content.
- LocationType: URL for external datastreams (E and R controlgroup). INTERNAL_ID for managed datastreams. Not set for inline datastreams
- ChecksumTupe: One of DISABLED, MD5, SHA-1, SHA-256, SHA-384, SHA-512, HAVAL, TIGER, WHIRLPOOL
Code Block | |||||||
---|---|---|---|---|---|---|---|
| |||||||
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="datastreamProfile"> <xs:complexType> <xs:sequence> <xs:element name="dsLabel" type="xs:string" /> <xs:element name="dsVersionID" type="xs:string" /> <xs:element name="dsCreateDate" type="xs:dateTime" /> <xs:element name="dsState"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="A"/> <xs:enumeration value="D"/> <xs:enumeration value="I"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="dsMIME" type="xs:string" /> <xs:element name="dsFormatURI" type="xs:anyURI" /> <xs:element name="dsControlGroup" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="X"/> <xs:enumeration value="M"/> <xs:enumeration value="R"/> <xs:enumeration value="E"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="dsSize" type="xs:integer" /> <xs:element name="dsVersionable" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="true"/> <xs:enumeration value="false"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="dsInfoType" type="xs:string" /> <xs:element name="dsLocation" type="xs:string" /> <xs:element name="dsLocationType" type="xs:string" /> <xs:element name="dsChecksumType" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="DEFAULT"/> <xs:enumeration value="DISABLED"/> <xs:enumeration value="MD5"/> <xs:enumeration value="SHA-1"/> <xs:enumeration value="SHA-256"/> <xs:enumeration value="SHA-385"/> <xs:enumeration value="SHA-512"/> <xs:enumeration value="HAVAL"/> <xs:enumeration value="TIGER"/> <xs:enumeration value="WHIRLPOOL"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="dsChecksum" type="xs:string" /> <xs:element name="dsChecksumValid" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="true"/> <xs:enumeration value="false"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="dsAltID" minOccurs="0" maxOccurs="unbounded" type="xs:string" /> </xs:sequence> <xs:attribute name="pid" use="required"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:attribute> <xs:attribute name="dsID" use="required"> <xs:simpleType> <xs:restriction base="xs:string" /> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema> |
DELETE /objects/{pid}/datastreams/{dsID} - purge datastream
DELETE /objects/\{pid}/datastreams/\{dsID}?\[startDT]\[endDT]\[logMessage]\[force] Wiki Markup
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
startDT | yyyy-MM-ddTHH:mm:ss.SSSZ | Purge the datastream versions created after this date | From the beginning | 2009-01-01T03:00:00:000Z |
endDT | yyyy-MM-ddTHH:mm:ss.SSSZ | Purge only versions created before this date | Now | 2009-01-01T03:00:00:000Z |
logMessage | String | The message to store in the log, about the purge | Empty string | "Deleted this datastream because it was not used anymore" |
force | one of true, false | Force the purge, even it it breaks a data contract. If set to true, the request will fail, a general exception will be thrown and the return code will be 500. See http://fedora-commons.org/jira/browse/FCREPO-613 | false | false |
...
PUT /objects/{pid}/datastreams/{dsID} - modify datastream
...
PUT /objects/\{pid}/datastreams/\{dsID}?\[dsLocation]\[altIDs]\[dsLabel]\[versionable]\[dsState]\[formatURI]\[checksumType]\[checksum]\[mimeType]\[logMessage]\[force]\[ignoreContent]
+ multipart file as request content
The behaivour depends on the datastream controlGroup and the content provided and the ignoreContent parameter
...
POST /objects/{pid}/datastreams/{dsID} - modify or create datastream
...
POST /objects/\{pid}/datastreams/\{dsID}?\[controlGroup]\[dsLocation]\[altIDs]\[dsLabel]\[versionable]\[dsState]\[formatURI]\[checksumType]\[checksum]\[mimeType]\[logMessage]
+ multipart file as request content
Modify or create a datastream. Functions almost identical to the above method PUT /objects/{pid}/datastreams/{dsID} but with a few differences. There is no ignoreContent parameter, so the functioning with dsLocation and message content is more complex.
...