...
REST
...
API
...
docs
...
Table of Contents |
---|
General principles
Content | Location |
---|---|
search objects | GET/objects |
nextPid | POST /objects/nextPid |
Object | GET/DELETE/POST/PUT |
...
/objects/ |
...
{pid} |
...
Object Export | GET /objects/ |
...
{pid}\export |
...
Object Versions | GET /objects/ |
...
{pid}\versions |
...
Object XML | GET /objects/ |
...
{pid}\objectXML |
...
Datastreams | GET/objects/ |
...
{pid}/datastreams |
...
Specific datastream | GET/DELETE/PUT/POST |
...
/objects/ |
...
{pid}/datastreams/ |
...
{dsID} |
...
content of Datastream | GET/objects/ |
...
{pid}/datastreams/ |
...
{dsID}/content |
...
List Methods on Object | GET/objects/ |
...
{pid}/methods |
...
list methods for sdef on Object | GET/objects/ |
...
{pid}/methods/ |
...
{sdef} |
...
get-invoke |
...
method | GET/objects/ |
...
{pid}/methods/ |
...
{sdef}/ |
...
{method} |
...
Repository Resources
Object Resources
GET /objects/
...
{pid}
...
-
...
get
...
object
...
profile
Wiki Markup |
---|
GET /objects/\{pid}?\[asOfDateTime\]\[format\] |
...
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 |
Profile of an object, which includes key metadata fields and URLs for the object Dissemination Index and the object Item Index. Can be thought of as a default view of the object.
Return code | Meaning |
---|---|
200 | OK, returning the object profile as body, see below |
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, most likely from format or asOfDateTime. Exception as body, text/plain |
500 | Other, unknown error encountered |
- ObjectProfile Contains these fields
- String pid The pid of the object
- String objLabel The label of the object
- String objOwnerID The ownerID of the object
- String[] objModels The pids of the content models of the object
- String objCreateDate The creation date
- String objLastModDate The last modification time
- String objDissIndexViewURL The REST url for the Dissemination index, as known from the built in search service
- String objItemIndexViewURL The REST url for the Datastream index, as known from the built in search service
- String objState The object state, either A (active), I (inactive) or D (deleted)
Examples:
Get the object profile of the object as it looked at the specified date in the xml format
GET /objects/{pid}?asOfDateTime=2009-01-01T03:00:00:000Z&format=text/xml
Example of html format
TODO
Example of xml format
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
h4. Example of html format TODO h4. Example of xml format {code:xml|title=Without asOfDateTime set} <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} {code:xml|title=With asOfDateTime set} |
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}
{code: |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
xml|title=Schema for XML return value} <?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> {code} h3. DELETE |
DELETE /objects/
...
{pid}
...
-
...
purge
...
object
Wiki Markup |
---|
DELETE /objects/\{pid}?\[logMessage\]\[force\] |
...
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 |
Permanently removes an object from the repository.
Return code | Meaning |
---|---|
200 | 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 |
TODO POST /objects/{pid} - ingest or create new object
PUT /objects/{pid} - modify object
Wiki Markup |
---|
PUT /objects/\{pid}?\[label]\[logMessage]\[ownerId]\[state] |
...
Modify
...
an
...
object.
...
Modifies
...
only
...
the
...
object
...
level
...
properties,
...
ie.
...
label,
...
ownerId
...
and
...
state.
...
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
label | String | The new object label | no change | "My object" |
logMessage | String | The message to store in the log, about the purge | Empty string | "Deleted this object because it was not used anymore" |
ownerID | String | The new owner id | no change | "FedoraAdmin" |
state | String, one of A (active), I (inactive) or D (deleted) | The new object state. Note that if you do not set this parameter, the default value will set the object to Active. See https://fedora-commons.org/jira/browse/FCREPO-608 |
...
A | D |
Return code | Meaning |
---|---|
200 | OK, Modifying 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 |
TODO GET /objects/{pid}\export
GET /objects/{pid}\versions
Wiki Markup |
---|
GET /objects/\{pid}/versions?\[format] |
...
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.
...
Please
...
note
...
that
...
this
...
timestamp
...
list
...
is
...
generated
...
by
...
requesting
...
the
...
timestamp
...
list
...
of
...
all
...
CURRENTLY
...
Active
...
datastreams,
...
and
...
sorting
...
it.
...
Inactive
...
and
...
Deleted
...
datastreams
...
are
...
disregarded.
...
See
...
http://fedora-commons.org/jira/browse/FCREPO-610
...
Please
...
note
...
that
...
this
...
timestamp
...
list
...
does
...
not
...
include
...
changes
...
to
...
object
...
properties,
...
but
...
only
...
datastream
...
changes.
...
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
format | one of text/xml, |
...
text/html, |
...
html, xml | The format of the return value | text/html | text/xml |
Return code | Meaning |
---|---|
200 | OK, Object history in the specified format |
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 |
Example of html format
TODO
Example of xml format
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
xml \\ | The format of the return value \\ | text/html \\ | text/xml \\ | || Return code \\ || Meaning || | 200 \\ | OK, Object history in the specified format\\ | | 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 \\ | h4. Example of html format TODO h4. Example of xml format {code:xml|title=Exampe of xml return} <fedoraObjectHistory pid="demo:testObject"> <!--1 or more repetitions:--> <objectChangeDate>2008-09-29T03:49:450Z</objectChangeDate> <objectChangeDate>2008-10-29T05:47:000Z</objectChangeDate> </fedoraObjectHistory> {code} {code:xml|title=Xml schema} |
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>
{code}
h3. TODO GET |
TODO GET /objects/
...
{pid}\objectXML
...
Datastream Resources
GET /objects/
...
{pid}/datastreams
...
-
...
list
...
datastreams
...
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.
...
Wiki Markup |
---|
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 |
Return code | Meaning |
---|---|
200 | OK, Return information in the specified format |
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 |
Example of html format
TODO
Example of xml format
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
xml \\ | The format of the return value \\ | text/html \\ | text/xml \\ | || Return code \\ || Meaning || | 200 \\ | OK, Return information in the specified format\\ | | 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 \\ | h4. Example of html format TODO h4. Example of xml format {code:xml|title=Exampe of xml return} <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> {code} |
The
...
asOfDateTime
...
attribute
...
is
...
not
...
present
...
if
...
the
...
parameter
...
was
...
not
...
specified.
...
The
...
baseURL
...
is
...
the
...
used
...
to
...
create
...
datastream
...
urls,
...
as
...
in
...
baseURL+pid+/+dsId.
...
The
...
label
...
and
...
the
...
mimeType
...
will
...
be
...
empty
...
strings
...
if
...
they
...
are
...
not
...
specified
...
for
...
the
...
particular
...
datastream
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
{code:xml|title=Xml schema} <?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> {code} h3. GET |
GET /objects/
...
{pid}/datastreams/
...
{dsID}
...
-
...
get
...
datastream
...
profile
Wiki Markup |
---|
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.
...
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
asOfDateTime | yyyy-MM-ddTHH:mm:ss.SSSZ |
...
The datastream profile as it looked at the specific time | Now | 2009-01-01T03:00:00:000Z | ||
validateChecksum | one of true, false | Recompute the checksum for the content, and compare this to the stored checksum. Beware, this might take a while, if the content is external or big | false | true |
Return code | Meaning |
---|---|
200 | OK, Return information in the specified format |
404 | Object or datastream 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 |
Example of html format
TODO
Example of xml format
Code Block | ||||
---|---|---|---|---|
| ||||
\\ | | validateChecksum \\ | one of true, false \\ | Recompute the checksum for the content, and compare this to the stored checksum. Beware, this might take a while, if the content is external or big \\ | false \\ | true \\ | || Return code \\ || Meaning || | 200 \\ | OK, Return information in the specified format\\ | | 404 \\ | Object or datastream 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 \\ | h4. Example of html format TODO h4. Example of xml format {code:xml} <datastreamProfile xsi:schemaLocation="http://www.fedora.info/definitions/1/0/management/ http://localhost:8080/datastreamProfile.xsd" pid="changeme:1" dsID="DC" datetime="2009-11-26T15:31:40.099Z"> <dsLabel>Dublin Core Record for this object</dsLabel> <dsVersionID>DC1.0</dsVersionID> <dsCreateDate>2009-11-26T15:31:40.099Z</dsCreateDate> <dsState>A</dsState> <dsMIME>text/xml</dsMIME> <dsFormatURI>http://www.openarchives.org/OAI/2.0/oai_dc/</dsFormatURI> <dsControlGroup>X</dsControlGroup> <dsSize>339</dsSize> <dsVersionable>true</dsVersionable> <dsInfoType/> <dsLocation>changeme:1+DC+DC1.0</dsLocation> <dsLocationType/> <dsChecksumType>DISABLED</dsChecksumType> <dsChecksum>none</dsChecksum> </datastreamProfile> {code} |
Notes:
...
- datetime:
...
- This
...
- attribute
...
- is
...
- not
...
- in
...
- the
...
- schema.
...
- See
...
...
- 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
{code:xml|title=Xml schema} <?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> {code} h3. DELETE |
DELETE /objects/
...
{pid}/datastreams/
...
{dsID}
...
-
...
purge
...
datastream
Wiki Markup |
---|
DELETE /objects/\{pid}/datastreams/\{dsID}?\[startDT]\[endDT]\[logMessage]\[force] |
...
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 |
If called without startDT and endDT all versions will be purged, along with the datastream itself.
Return code | Meaning |
---|---|
200 | OK, purged datastream. No content. |
404 | Object or datastream 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}/datastreams/
...
{dsID}
...
-
...
modify
...
datastream
Wiki Markup |
---|
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
...
- Inline:
...
- If
...
- the
...
- request
...
- includes
...
- content
...
- this
...
- is
...
- used,
...
- otherwhice
...
- the
...
- dsLocation
...
- is
...
- dereferenced.
...
- If
...
- ignoreContent
...
- is
...
- set,
...
- the
...
- content
...
- is
...
- never
...
- used,
...
- only
...
- the
...
- dsLocation.
...
- Managed:
...
- If
...
- dsLocation
...
- is
...
- provided,
...
- it
...
- is
...
- dereferenced,
...
- otherwise
...
- the
...
- request
...
- content
...
- is
...
- read.
...
- External:
...
- The
...
- dsLocation
...
- parameter
...
- is
...
- used,
...
- and
...
- must
...
- be
...
- set.
...
- Request
...
- content
...
- is
...
- disregarded
...
Modify
...
an
...
existing
...
datastream,
...
by
...
creating
...
a
...
new
...
version
...
of
...
the
...
datastream.
...
If
...
the
...
datastream
...
is
...
versionable,
...
the
...
old
...
version
...
is
...
kept,
...
otherwise
...
it
...
is
...
deleted.
...
Each
...
request
...
will
...
generate
...
a
...
new
...
version,
...
but
...
one
...
request
...
(that
...
changes
...
numerous
...
properties)
...
will
...
only
...
generate
...
one
...
object.
...
The
...
default
...
for
...
all
...
the
...
parameters
...
is
...
not
...
to
...
change
...
the
...
existing
...
value.
...
Not
...
all
...
properties
...
are
...
versionable,
...
so
...
changing
...
these
...
will
...
not
...
generate
...
a
...
new
...
version:
...
These
...
are
...
- versionable
- dsState
Note the order of the changes
- New datastream version is created and stored
- Datastream state is changed
- Versionable is changed
If the datastream is in the D(eleted) state, it cannot be modified, and return code 500 is given. Except, if the request modify both the datastream and sets the state to A(ctive) or I(nactive). Note, only the old state is checked, it is possible to modify a datastream and set it to deleted in one operation.
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
dsLocation | String | The new content location. If datastream is internal, the content will be uploaded. If datastream is external, the content location will be stored in the datastream | no change | an url |
altIDs | List of Strings | The new alternative IDs for the datastream | no change | |
dsLabel | String | The new datastream label | no change | "My datastream" |
versionable | true or false | should the datastream be versionable. As the default is true, if you modify a datastream without setting this parameter, the datastream will be made versionable. | true | versionable=true |
dsState | one of A(ctive), I(nactive) or D(eleted) | Set the datastream state | no change | dsState=A |
formatURI | String (a valid URI) | The new format URI of the datastream | no change | formatURI=info:pronom/fmt/42 |
...
checksumType | One of DISABLED, MD5, SHA-1, |
...
SHA-256, |
...
SHA-384, |
...
SHA-512, |
...
HAVAL, |
...
TIGER, |
...
WHIRLPOOL | Set the datastream checksum type | no change | TODO | |
checksum | hex String | The value of the checksum. Fedora will read the content of the stream, and compute the checksum for comparison. This might take a while. If no checksumType is provided, use the one in the datastream. If no checksumType is in the datastream, use type DISABLED, and do nothing further. | none | TODO |
mimeType | String | The new mimeType the datastream | no change | text/xml |
logMessage | String | The message to store in the log, about the operation | 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 |
...
false | false | |||
ignoreContent | one of true, false | Ignore the message content, and use the content location. | false | false |
Return code | Meaning |
---|---|
200 | OK, modified datastream. Returns the new datastream profile, like GET /objects/{pid}/datastreams/ |
...
{dsID}?format=xml |
...
404 | Object or datastream 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. Please note that this request spans multiple fedora methods, and you could thus modify the datastream, but fail to modify the state, and get a 401. The datastream will still be modified, but the state will not be. Many other combinations are also possible. |
400 | Wrong syntax in request. Exception as body, text/plain |
500 | Other, unknown error encountered |
POST /objects/{pid}/datastreams/{dsID} - modify or create datastream
Wiki Markup |
---|
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.
...
If
...
the
...
datastream
...
does
...
not
...
exist
...
already,
...
it
...
is
...
created
...
with
...
the
...
specified
...
control
...
group.
...
- Internal:
...
- If
...
- the
...
- dsLocation
...
- parameter
...
- not
...
- set,
...
- the
...
- request
...
- content
...
- is
...
- stored
...
- as
...
- the
...
- new
...
- content
...
- of
...
- the
...
- datastream
...
- External:
...
- The
...
- dsLocation
...
- parameter
...
- is
...
- used,
...
- and
...
- must
...
- be
...
- set.
...
- Request
...
- content
...
- is
...
- disregarded
...
If
...
the
...
datastream
...
already
...
exist,
...
the
...
provided
...
control
...
group
...
is
...
disregarded
...
and
...
the
...
one
...
from
...
the
...
existing
...
datastream
...
is
...
used
...
- Inline:
...
- If
...
- the
...
- request
...
- includes
...
- content
...
- this
...
- is
...
- used,
...
- otherwhice
...
- the
...
- dsLocation
...
- is
...
- dereferenced.
...
- Note
...
- the
...
- difference
...
- between
...
- managed
...
- and
...
- internal
...
- here.
...
- Managed:
...
- If
...
- dsLocation
...
- is
...
- provided,
...
- it
...
- is
...
- dereferenced,
...
- otherwise
...
- the
...
- request
...
- content
...
- is
...
- read.
...
- External:
...
- The
...
- dsLocation
...
- parameter
...
- is
...
- used,
...
- and
...
- must
...
- be
...
- set.
...
- Request
...
- content
...
- is
...
- disregarded
Parameter | Format | Meaning | Default | Example |
---|---|---|---|---|
controlGroup | String. One of X (inline Xml), M (Managed content), E (External) or R (Redirect). | The control group of a new datastream. Ignored if the datastream already exists. | X | an url |
dsLocation | String | The new content location. Required for external datastreams. See above. | no change | an url |
altIDs | List of Strings | The new alternative IDs for the datastream | no change | |
dsLabel | String | The new datastream label | no change | "My datastream" |
versionable | true or false | should the datastream be versionable. As the default is true, if you modify a datastream without setting this parameter, the datastream will be made versionable. | true | versionable=true |
dsState | one of A(ctive), I(nactive) or D(eleted) | Set the datastream state. You can create a datastream in the Deleted state. | no change | dsState=A |
formatURI | String (a valid URI) | The new format URI of the datastream | no change | formatURI=info:pronom/fmt/42 |
...
checksumType | One of DISABLED, MD5, SHA-1, |
...
SHA-256, |
...
SHA-384, |
...
SHA-512, |
...
HAVAL, |
...
TIGER, |
...
WHIRLPOOL | Set the datastream checksum type | no change | TODO | |
checksum | hex String | The value of the checksum. Fedora will read the content of the stream, and compute the checksum for comparison. This might take a while. If no checksumType is provided, use the one in the datastream. If no checksumType is in the datastream, use type DISABLED, and do nothing further. | none | TODO |
mimeType | String | The new mimeType the datastream | no change | text/xml |
logMessage | String | The message to store in the log, about the operation | Empty string | "Deleted this object because it was not used anymore" |
Return values
Return code | Meaning |
---|---|
201 | Created. Locationheader corresponding the new datastream. Updated or created the datastream. Returns the new datastream profile, like GET /objects/{pid}/datastreams/{dsID}?format=xml |
404 | Object or datastream 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. Please note that this request spans multiple fedora methods, and you could thus modify the datastream, but fail to modify the state, and get a 401. The datastream will still be modified, but the state will not be. Many other combinations are also possible. |
400 | Wrong syntax in request. Exception as body, text/plain |
500 | Other, unknown error encountered |