RESTful HTTP API
— The Fedora HTTP API is generally a RESTful API. HTTP methods like GET, PUT, POST and DELETE are implemented on most resource paths. The API also relies heavily on content negotiation to deliver context-appropriate responses, and a HATEOAS-driven text/html response (providing a decent GUI experience on top of the repository).
— Fedora supports the ability to wrap multiple REST API calls into a single transaction that can be committed or rolled back as an atomic operation.
— Versioning in Fedora implements the Memento protocol. Its formal name is HTTP Framework for Time-based Access to Resource States – Memento. This document focuses exclusively on how the Fedora software implements the Memento software and best practices when using Fedora Versioning.
Backup and Restore
— The Fedora Backup capability allows a user, such as the repository manager, to make a REST call to have the repository binaries and metadata exported to the local file system. The Restore capability allows a user to make a REST call to have the repository restored from the contents of a previous Backup operation. In addition, with the default configuration, files are stored on disk named according to their SHA1 digest, so a filesystem backup approach can also be used.
— When referencing content hosted outside of the repository, you can create an empty binary to act as a placeholder for the external content, specifying the URL of the external content.
— Identifiers can be specified in REST API calls and generated either automatically using the internal PID minter or via an external REST service.
Linked Data Platform
— The W3C Linked Data Platform (LDP) specification details a simple approach for a read-write Linked Data architecture; lays out a set of best practices for Linked Data architecture; and defines a basic interaction model based on HTTP access to web resources that describe their state using the RDF data model. Fedora implements the LDP specification for create, read, update and delete (CRUD) operations, allowing HTTP, REST, and linked data clients to make requests to the repository.