API for manipulation and administration of OCFL directories.
The WebDAV API implements the WebDAV Specification:
The purpose of this WebDAV API is to manage OCFL directories. Manipulation of OCFL directories is restricted by several HTTP-Method rules as described below in order to keep the OCFL structure consistent.
Direct authoring of OCFL content data is not supported by design. Authoring is intended to take place in a remote cloud directory. Authored content files must then be transmitted to the OCFL directory.
Compared to the official WebDAV specification, this WebDAV API implements the following specifics:
The following WebDAV clients are tested with this WebDAV API:
Other clients may work too but problems may occur e.g. with special characters such as german umlauts.
{scheme}://{server}/{repository}/
Statically returns the five main WebDAV subdirectories. Listing these directories is the only method allowed.
[root] ├── cache ├── config ├── cloud ├── data └── log
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
PROPFIND / | Allowed. Http Header <Depth> is ignored, though. | |
COPY / | Forbidden. | |
DELETE / | Forbidden. | |
GET / | Forbidden. | |
MKCOL / | Forbidden. | |
MOVE / | Forbidden. | |
PUT / | Forbidden. | |
LOCK / | Not implemented. | |
PROPPATCH / | Not implemented. | |
UNLOCK / | Not implemented. |
{scheme}://{server}/{repository}/cache/**
Methods to administrate media derivatives produced and used by the Media API. Besides listing and reading media files, the DELETE method is supported in order to delete single stale or corrupt media files or to empty the cache completely.
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
GET /cache/** | Allowed without restriction for any URI </cache/**>. | |
DELETE /cache/** | Allowed without restriction for any URI </cache/**>. | |
PROPFIND /cache/** | Allowed without restriction for any URI </cache/**>. | |
COPY /cache/** | Forbidden for any URI </cache/**>. | |
MKCOL /cache/** | Forbidden for any URI </cache/**>. | |
MOVE /cache/** | Forbidden for any URI </cache/**>. | |
PUT /cache/** | Forbidden for any URI </cache/**>. | |
LOCK /cache/** | Not implemented for any URI </cache/**>. | |
PROPPATCH /cache/** | Not implemented for any URI </cache/**>. | |
UNLOCK /cache/** | Not implemented for any URI </cache/**>. |
{scheme}://{server}/{repository}/config/**
Methods to author the configuration files needed by the Ingest API.
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
GET /config/** | Allowed without restriction for any URI </config/**>. | |
DELETE /config/** |
/config/repository.xml
|
Allowed without restriction for any URI /config/** besides the <repository.xml> configuration file, which is required. |
MKCOL /config/** | Allowed without restriction for any URI </config/**>. | |
PROPFIND /config/** | Allowed without restriction for any URI </config/**>. | |
PUT /config/** | Allowed without restriction for any URI </config/**>. | |
COPY /config/** | Forbidden for any URI </config/**>. | |
MOVE /config/** | Forbidden for any URI </config/**>. | |
LOCK /config/** | Not implemented for any URI </config/**>. | |
PROPPATCH /config/** | Not implemented for any URI </config/**>. | |
UNLOCK /config/** | Not implemented for any URI </config/**>. |
{scheme}://{server}/{repository}/cloud/**
Methods to browse remote cloud directories (OwnCloud, NextCloud) and to transmit data collections from a remote cloud directory to a OCFL content directory.
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
GET /cloud/** | Allowed without restriction for any URI </cloud/**>. | |
PROPFIND /cloud/** | Allowed without restriction for any URI </cloud/**>. | |
COPY /cloud/** | Allowed for any URI </cloud/**>, but only if and only if Http Header <Target> is an OCFL content directory and if and only if the <Target> Header points to an OCFL content directory that belongs to the latest(!) version of an OCFL object. During the copy operation, the whole repository file system gets locked. | |
MOVE /cloud/** | Allowed for any URI </cloud/**>, but only if and only if Http Header <Target> is an OCFL content directory and if and only if the <Target> Header points to an OCFL content directory that belongs to the latest(!) version of an OCFL object. During the move operation, the whole repository file system gets locked. | |
DELETE /cloud/** | Forbidden for any URI </cloud/**>. | |
MKCOL /cloud/** | Forbidden for any URI </cloud/**>. | |
PUT /cloud/** | Forbidden for any URI </cloud/**>. | |
LOCK /cloud/** | Not implemented for any URI </cloud/**>. | |
PROPPATCH /cloud/** | Not implemented for any URI </cloud/**>. | |
UNLOCK /cloud/** | Not implemented for any URI </cloud/**>. |
{scheme}://{server}/{repository}/data/**
Methods to create new OCFL objects and new OCFL versions as well as for ACL administration. Deletion of OCFL objects and OCFL versions is supported for convenience. Please use with care.
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
GET /data/** | Allowed without restriction for any URI </data/**>. | |
PROPFIND /data/** | Allowed without restriction for any URI </data/**>. | |
COPY /data/** | Forbidden for any URI </data/**>. | |
DELETE /data/** |
/data/{dir1}
/data/acl.json
/data/{dir1}/{dir2}
/data/{dir1}/{dir2}/{version}
/data/{dir1}/{dir2}/acl.json
|
Deletion of OCFL objects and ACLs is allowed for convenience. An OCFL version can be deleted if it is the latest version of an OCFL object. Otherwise, forbidden for any URI </data/**>. |
MKCOL /data/** |
/data/{dir1}
/data/{dir1}/{dir2}
/data/{dir1}/{dir2}/{version}
|
</data/{dir1}> starts the creation of a new OCFL object, </data/{dir1}/{dir2}> finishes the creation of a new OCFL object. </data/{dir1}/{dir2}/{version}> creates a new OCFL version if and only if the version number is higher by one than the latest version of the OCFL object. Otherwise, forbidden for any URI </data/**>. |
MOVE /data/** | Forbidden for any URI </data/**>. | |
PUT /data/** |
/data/acl.json
/data/{dir1}/{dir2}/acl.json
|
Administration of the repository default ACL </data/acl.json> and the ACL of an OCFL object </data/{dir1}/{dir2}/acl.json> is allowed. Otherwise, forbidden for any URI </data/**>. |
LOCK /data/** | Not implemented for any URI </data/**>. | |
PROPPATCH /data/** | Not implemented for any URI </data/**>. | |
UNLOCK /data/** | Not implemented for any URI </data/**>. |
{scheme}://{server}/{repository}/log/**
Methods to check log files of the Ingest API.
Default HTTP-Method Rules | Exceptional Cases | Description |
---|---|---|
GET /log/** | Allowed without restriction for any URI </log/**>. | |
PROPFIND /log/** | Allowed without restriction for any URI </log/**>. | |
COPY /log/** | Forbidden for any URI </log/**>. | |
DELETE /log/** | Forbidden for any URI </log/**>. | |
MKCOL /log/** | Forbidden for any URI </log/**>. | |
MOVE /log/** | Forbidden for any URI </log/**>. | |
PUT /log/** | Forbidden for any URI </log/**>. | |
LOCK /log/** | Not implemented for any URI </log/**>. | |
PROPPATCH /log/** | Not implemented for any URI </log/**>. | |
UNLOCK /log/** | Not implemented for any URI </log/**>. |