Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Fix github links (master -> raml1.0)




The Codex Metadata Model



The initial model consists of 5 objects (in orange). It is anticipated that more objects will be added to the model. Some of the future objects are already known (in blue): Work and Subject.


Field TypeRequiredRepeatableDescription
idstringY The internal id of the Instance record (UUID)
titlestringY The primary title (or label) associated with the resource
altTitlestring  An alternative title for the resource. (e.g. original language version title of a Movie)
seriesstring  A series title associated with the resource (e.g. Harry Potter)
contributorstring YA set of secondary authors/creators tied to the resource
publisherstring  The publisher, or provider, of the resource
datestring  A date associated with the resource (e.g. publication date)
typestring  The resource type. (e.g.: serial; monograph; audio recording; etc..)
formatstring  The material type or distribution format of the resource. (e.g.: hardcover; cassette tape; dvd; etc..)
identifier object YAn extensible set of name-value pairs of identifiers associated with the resource
 typestring  identifier type : e.g. ISSN
 valuestring  identifier value
sourcestring  a link back to the source record for this metadata
languagestring Ythe set of languages used by the resource
rightsstring  Access rights associated with the resource
versionstring  This is where the edition can be found in the case of a monograph
lastModifiedstring  Adminstrative field indicating date at which the resource was added to the Codex.

Instance JSON schema.

Item / Holding

This objects represents two distinct concepts: (1) an Item in the sense of a specific copy of an Instance; (2) a Holding which describes the relationship of the library or institution to the Item. From a data modeling point of view there is so much overlap in the set of metadata needed to describe them both, that it only makes sense to use a single object to represent both concepts together.  The term Item in the rest of this document should be understood to be interchangeable with Item/Holding.


Field TypeRequiredRepeatableDescription
idstringY The internal id of the Item record (UUID)
instanceidstringY Link back to the parent Instance
descriptionstring  Free-form description of the resource
titlestringY Inherited from Instance: see above
altTitlestring  Inherited from Instance: see above
seriesstring  Inherited from Instance: see above
contributorstring YInherited from Instance: see above
publisherstring  Inherited from Instance: see above
datestring  Inherited from Instance: see above
typestring  Inherited from Instance: see above
formatstring  Inherited from Instance: see above
identifier object YInherited from Instance: see above
 typestring  Inherited from Instance: see above
 valuestring  Inherited from Instance: see above
sourcestring  Inherited from Instance: see above
languagestring YInherited from Instance: see above
rightsstring  Inherited from Instance: see above
copyNumbernumber  the "bad old" copy number. Required for backwards compatibilitycodex.location.jsonThe Codex Metadata Model.
barcodestring  barcode on the Item
vendorPackagestring  name of vendor package associated with item. (Not to be confused with the Codex Package object.)
coverageobject  See Coverage object
locationobject YSee Location object. There can be multiple locations associated with an Item: e.g. Permanent and Termporary
itemStatusstring  Item state: e.g. on order
isSelectedboolean  Holding property. Selection state ("is it held?") of the Item. Mostly relevant for e-resources
isCustomizedboolean  Administrative flag to indicate that inherited fields have been overwritten

Item JSON schema.


The Package represents a container of either Instances and/or Items. As such it provides the ability to group these together for any number of reasons. A given Instance or Item may be placed in any number of Packages since these are ostensibly independent groupings and there are many possible ways to group resources.


idstringY The internal id of the Package record (UUID)
identifierstring  An external identifier used to track the Package (e.g. a barcode)
namestring  A name (or label) associated with the Package
descriptionstring  A free-form description of the Package
typestring  The type of package - what sort of collection does it represent. (e.g. DVD box set; boundwidth; archival cardboard box; etc..)
vendoridstring  Link to vendor object associated with this resource (could be in another domain)
vendorstring  Name of vendor for display purposes
platformstring  Platform hosting the e-resource.
itemsarrayY Array containing Instance or Item objects
itemCountnumber  Number of items found in the itemsArray
selectedCountnumber  Number of items in the ItemsArray that are selected ("are held"). Mostly relevant for e-resources
coverageobject  Coverage object for the package itself, rather than its contents. See Content object
isSelectedboolean  Selection state ("is it held?") of the package itself, rather than its contents. Mostly relevant for e-resources

Package JSON schema.


The Location object will be typically be found nested within the Item or Package object. However, it warrants its own representation as it is a powerful object with potential reuse in other parts of Folio. To this end it has it’s own data model description (JSON schema).


Field TypeRequiredRepeatableDescription
idstringY The internal id of the Location record (UUID)
institutionstring  Top level administrative organization (e.g. University)
campusstring  Geographic level (e.g. City)
librarystring  Building level (e.g. individual libraries)
parkingobject YExtensible collection of name value pairs. Can represent common location properties (e.g. cal numbers) or library specific location details (e.g. shelf number or department)
 name   Name of the parking value (e.g. LCCallNumber or ShelfLocation)
 value   Value tied to the specific parking name
platformstring  Delivery platform (for e-resources)
uristring  URI to access a resource (for e-resources)

.Location JSON schema.


The Coverage object allows the definition of coverage ranges associated with a resource. This is some of what would traditionally be found in a library’’s holding record (holding in the non-Codex sense).


Field TypeRequiredRepeatableDescription
idstringYYThe internal id of the Coverage record (UUID)
rangeobject Y

A set of ranges to describe coverage for the resource

  • Begin and End values specify a range
  • End value is optional (i.e. when specifying date singleton)
  • Range can be specified in time (dates) or volume-issue units
 beginstring  Beginning point in a range
 endstring  Ending point in a range
statementstring  A free form text statement to describe coverage for the resource
embargoobject YA set of ranges to describe embargo periods for a resource
 beginstring  Beginning of embargo
 endstring  End of embargo

Coverage JSON schema.