How do people create Manifests?
In this workshop we are going to take you through creating a Manifest using a Manifest Editor. This works well for a small number of manifests and to give you an idea of what a Manifest contains. If you are going to create thousands or millions of manifests then you would need to look at automating this process.
Generally the data required to create a manifest generator are as follows:
- Accessible IIIF Images
- Structural data on how the images relate to each other. For example the order of the pages in a manuscript
- Descriptive metadata for example:
- Title - Name of the item this is called a
label
in IIIF - Description (optional)
- Rights or licensing (optional)
- Metadata useful for discovery (optional) - this will be explained later
- Title - Name of the item this is called a
Generally the format of the incoming metadata means that often these manifest generation tools are custom to each institution although there are the following libraries that can assist in the process:
- biiif Organise your files according to a simple naming convention to generate IIIF v3 manifests.
- demetsiiify - Web service for creating IIIF manifests from METS/MODS documents.
Presentation API Libraries
- IIIF Manifest Generator - PHP library for generating IIIF manifests.
- iiif-apis - Java IIIF API libraries.
- iiif-prezi - Python library providing a reference implementation.
- O'Sullivan - Ruby API for creating IIIF manifests.
- Swiiift - IIIF presentation API library for Swift.
- tabula-rasa - npm module for creating and manipulating IIIF manifests.
- ViewDir - Documentation on IIIF-related libraries and components.
Once the Manifests are generated they can be stored on any Web Server and don't need a specific server like the Image API.
Important Considerations
When publishing manifests there are a couple of considerations you need to take in account.
Use https not http
Most of the web has moved to secure data transfer: https
(http over TLS/SSL) and not http
. If you publish your manifests as http
it means they will not work in most online viewers and tools because browsers enforce rule forbidding mixing secure and insecure access. Using http
will work only in unusual and restricted circumstances.
CORS headers are required for reuse
Another requirement for IIIF interoperability is to enable CORS headers. CORS headers tell the browser that its OK to open this JSON on a website which doesn't match the location of your Manifest. For example it says projectmirador.org
can open a manifest from the Library of Congress (domain loc.gov
). Without CORS headers being set then you will only be able to open your Manifest on your website. For more details see:
JSON validity
Finally, if you are hand editing JSON documents it is very easy to miss required commas and brackets so the following tool is useful to validate your JSON:
If your Manifest is valid JSON but its not working in a viewer there is a IIIF Validator which will let you know if the JSON has fields that are not part of the IIIF specifications: