Object API

API for retrieving technical and structural information about data items.

Not a complete implementation of but conform to the following OASIS standards:

[OData-Part2]
OData Version 4.0. Part 2: URL Conventions Plus Errata 03. Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl. 02 June 2016. OASIS Standard incorporating Approved Errata 03.
[OData-JSON-Format-v4.0]
OData JSON Format Version 4.0 Plus Errata 03. Edited by Ralf Handl, Michael Pizzo, and Mark Biamonte. 02 June 2016. OASIS Standard incorporating Approved Errata 03.
Contents

Response Format

Object Entity

Example: /object/a5-1/Object(hdl:11341/00-0000-0000-0000-1BD6-5)?pretty

{
  "@odata.context": "a5:/object/a5-1/Object",
  "@odata.id": "hdl:11341/00-0000-0000-0000-1BD6-5",
  "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1BD6-5)",
  "@odata.mediaReadLink": "/media/a5-1/hdl:11341/00-0000-0000-0000-1BD6-5",
  "@a5.selector": {
    "repository": "a5-1",
    "identifier": "hdl:11341/00-0000-0000-0000-1BD6-5",
    "$expand": null,
    "pretty": true
  },
  "@a5.expandable": 
  [
    "parentOf"
  ],
  "id": "hdl:11341/00-0000-0000-0000-1BD6-5",
  "label": "Family Problems Mercy and Alex",
  "objectType": "Collection",
  "contentType": "text/cmdi+xml",
  "containerId": "ocfl:/pair/tree",
  "containerVersion": "v2",
  "containerVersionPredecessors": 
  [
    "v1"
  ],
  "containerVersionSuccessors": 
  [
  ],
  "containerVersionIsLatest": true,
  "containerVersionCreated": "2020-07-01T08:19:42Z",
  "fileUri": "/pair/tree/v1/content/elasticsearch/MercyAlex.cmdi",
  "fileUriVersion": "/pair/tree/v2/content/elasticsearch/MercyAlex.cmdi",
  "fileExists": true,
  "fileUpdated": "2020-08-18T13:50:43Z",
  "fileCreated": "2020-08-18T13:50:43Z",
  "fileSize": 24979,
  "parentOf": 
  [
    "hdl:11341/00-0000-0000-0000-1C6E-6",
    "hdl:11341/00-0000-0000-0000-1C6D-F",
    "hdl:11341/00-0000-0000-0000-1C6C-1",
    "hdl:11341/00-0000-0000-0000-1C6B-3",
    "hdl:11341/00-0000-0000-0000-1C70-0",
    "hdl:11341/00-0000-0000-0000-1C6F-2",
    "hdl:11341/00-0000-0000-0000-1BFE-0",
    "hdl:11341/00-0000-0000-0000-1BFF-A",
    "hdl:11341/00-0000-0000-0000-1BFB-2",
    "hdl:11341/00-0000-0000-0000-1BFD-E",
    "hdl:11341/00-0000-0000-0000-1BFC-3",
    "hdl:11341/00-0000-0000-0000-1BD9-D",
    "hdl:11341/00-0000-0000-0000-1BD8-6",
    "hdl:11341/00-0000-0000-0000-1BD7-3"
  ],
  "accessRights": 
  [
    "foaf:Agent"
  ],
  "checksum": {
    "md5": "fecae0ef9711e88415b7fe1cc883b12e",
    "sha1": "6cc327da2c693c71302b064dc839471a5ffea5d1",
    "sha256": "85a2ac3c3b291ac0ace2deaa61b92fa5e14491d35d8724d988c3107c8e341b7e",
    "sha512": "027c9db3a21669a693f262a05132490c1c553d6a99a908c3d769110af3c56503a03c6190ce79c2a09d2575354b45068f3a500a3e945f247394d10a826f7831ac"
  }
}

Object Collection

Example: /object/a5-1/Objects?pretty

{
  "@odata.context": "a5:/object/a5-1/Objects",
  "@odata.nextLink": "?$skip=10",
  "@a5.selector": {
    "repository": "a5-1",
    "$count": false,
    "$filter": null,
    "$orderby": null,
    "$select": null,
    "$skip": 0,
    "$top": 10,
    "pretty": true
  },
  "value": 
  [
    {
      "@odata.id": "a5:demo-mp4-50mb",
      "@odata.readLink": "/object/a5-1/Object(a5:demo-mp4-50mb)",
      "@odata.mediaReadLink": "/media/a5-1/a5:demo-mp4-50mb",
      "Thumbnail@odata.mediaReadLink": "/media/a5-1/a5:demo-mp4-50mb/1,0/full/{size}/0/thumbnail/default.jpg",
      "Waveform@odata.mediaReadLink": "/media/a5-1/a5:demo-mp4-50mb/{section}/full/{size}/0/waveform/default.png",
      "Spectrum@odata.mediaReadLink": "/media/a5-1/a5:demo-mp4-50mb/{section}/full/{size}/0/spectrum/default.png",
      "id": "a5:demo-mp4-50mb",
      "label": "SampleVideo_1280x720_50mb.mp4",
      "objectType": "Resource",
      "contentType": "video/mp4",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/demo/Media/SampleVideo_1280x720_50mb.mp4",
      "fileUriVersion": "/pair/tree/v2/content/demo/Media/SampleVideo_1280x720_50mb.mp4",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:44Z",
      "fileCreated": "2020-08-18T13:50:44Z",
      "fileSize": 52464391,
      "duration": 281.899,
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "9e0ee775ddb60cef4733f46447f3db61",
        "sha1": "858661e50794a1ba6b0071cd66ba02952053292c",
        "sha256": "5c2b6bebfb2a051c967f556b72f6dd6082642a244f71730d974ac8f715a2c553",
        "sha512": "3e6fe5f6d6da57a6986aacd435836bec28f1da5735b39bcaad638f7d74824c40427f685c32807a2c2ea27f77a1f747be3e1cc62be4284b3a0d59dd4c38fbe070"
      }
    },
    {
      "@odata.id": "a5:test-xml",
      "@odata.readLink": "/object/a5-1/Object(a5:test-xml)",
      "@odata.mediaReadLink": "/media/a5-1/a5:test-xml",
      "id": "a5:test-xml",
      "label": "test.xml",
      "objectType": "Resource",
      "contentType": "application/xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/demo/Media/test.xml",
      "fileUriVersion": "/pair/tree/v2/content/demo/Media/test.xml",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:44Z",
      "fileCreated": "2020-08-18T13:50:44Z",
      "fileSize": 17,
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "21b69a1b8e3fb6df1bd382c5c80b0e32",
        "sha1": "ef6c23bcb950ef74386dcd9915bce927eca26694",
        "sha256": "0d0ad70677d7512548361992886bba3fd1da15f9abe79ba28e30a06914f10f0e",
        "sha512": "23fa613e8f91d8ece2879c1a770ce0ece97418df3acb963445f641e4821c9ebbe7497725ea763c6793f5c117fd2bb73718bf2c9a09d07a99dbaab66e9c7798b3"
      }
    },
    {
      "@odata.id": "a5:test-eaf",
      "@odata.readLink": "/object/a5-1/Object(a5:test-eaf)",
      "@odata.mediaReadLink": "/media/a5-1/a5:test-eaf",
      "id": "a5:test-eaf",
      "label": "ZAG_EOI_20141009_1.eaf",
      "objectType": "Resource",
      "contentType": "text/eaf+xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/demo/Annotations/ZAG_EOI_20141009_1.eaf",
      "fileUriVersion": "/pair/tree/v2/content/demo/Annotations/ZAG_EOI_20141009_1.eaf",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:44Z",
      "fileCreated": "2020-08-18T13:50:44Z",
      "fileSize": 100053,
      "relatedTo": 
      [
        "a5:/test-wav"
      ],
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "fff12a4b78356263e38cb61976a15ed2",
        "sha1": "84bb1c1a165e26c0e234087e92c093fd7e1aa4c0",
        "sha256": "030cbfd7ea47ec1f373f53351574c28640419b6da17e6249e5c74cf7ef149ddb",
        "sha512": "44380a41b817f894af0712d5a676895c7707a88a4e5e9b727a887b22387c8d730dffc8c9221925858baf5d14cb4c97aecb9cde108431215ccba1ab7012f84994"
      }
    },
    {
      "@odata.id": "pid:12345/00-1234-5678-9A1B-CDEF-1",
      "@odata.readLink": "/object/a5-1/Object(pid:12345/00-1234-5678-9A1B-CDEF-1)",
      "@odata.mediaReadLink": "/media/a5-1/pid:12345/00-1234-5678-9A1B-CDEF-1",
      "id": "pid:12345/00-1234-5678-9A1B-CDEF-1",
      "label": "auth.txt",
      "objectType": "Resource",
      "contentType": "text/plain",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/demo/Media/auth.txt",
      "fileUriVersion": "/pair/tree/v2/content/demo/Media/auth.txt",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:44Z",
      "fileCreated": "2020-08-18T13:50:44Z",
      "fileSize": 432,
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "b0d5d8e5bed0f991b2f6a64b12c1195a",
        "sha1": "3257dc8f4fede7f128fd2b17a79be5ab4b27f5f5",
        "sha256": "71bbb93aa6e1a450fc69160056be326bc934a84b7dc10cae4e07e129c122da0d",
        "sha512": "24f7157892c422e485e682a2428346f5b88b079e534b469cdfd95832e113d7a5c7ea94f32cb6085e9c7ab881304905ffca804ecc22e3c035943a0858bb3ad3fa"
      }
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1AED-1",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1AED-1)",
      "@odata.mediaReadLink": "/media/a5-1/hdl:11341/00-0000-0000-0000-1AED-1",
      "id": "hdl:11341/00-0000-0000-0000-1AED-1",
      "label": "Valence increasing and decreasing processes 1",
      "objectType": "Collection",
      "contentType": "text/cmdi+xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/elasticsearch/ZAG_EOI_20141112_2.cmdi",
      "fileUriVersion": "/pair/tree/v2/content/elasticsearch/ZAG_EOI_20141112_2.cmdi",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:43Z",
      "fileCreated": "2020-08-18T13:50:43Z",
      "fileSize": 13980,
      "parentOf": 
      [
        "hdl:11341/00-0000-0000-0000-1B37-8",
        "hdl:11341/00-0000-0000-0000-1B38-D"
      ],
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "0fbb20f0021f5a8f6d977d96d42d7d00",
        "sha1": "8e1227e96839f4b9fc164a5a88a65f5a124845aa",
        "sha256": "dd66d4e1a1ee4a941c09af79832ec8fafd2e50cc9379c85ff415238b9cb49885",
        "sha512": "de0df57041b8433fcd1ade4078578c6e6bcaf4b86721413e95b6a4a4f2a5936d403349e76636519ba67af3ceb7e09690818461f8d44ee6ceafde04743d988298"
      }
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1CB0-2",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1CB0-2)",
      "@odata.mediaReadLink": "/media/a5-1/hdl:11341/00-0000-0000-0000-1CB0-2",
      "id": "hdl:11341/00-0000-0000-0000-1CB0-2",
      "label": "Multi-CAST Vera'a (pala text, \"Marriage to a Devil\")",
      "objectType": "Collection",
      "contentType": "text/cmdi+xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUri": "/pair/tree/v1/content/elasticsearch/multicast_veraa_pala.cmdi",
      "fileUriVersion": "/pair/tree/v2/content/elasticsearch/multicast_veraa_pala.cmdi",
      "fileExists": true,
      "fileUpdated": "2020-08-18T13:50:43Z",
      "fileCreated": "2020-08-18T13:50:43Z",
      "fileSize": 19647,
      "parentOf": 
      [
        "hdl:11341/00-0000-0000-0000-1CD0-D",
        "hdl:11341/00-0000-0000-0000-1CCF-5",
        "hdl:11341/00-0000-0000-0000-1D10-D",
        "hdl:11341/00-0000-0000-0000-1CCD-E",
        "hdl:11341/00-0000-0000-0000-1CCE-4",
        "hdl:11341/00-0000-0000-0000-1CCB-1",
        "hdl:11341/00-0000-0000-0000-1CCC-C",
        "hdl:11341/00-0000-0000-0000-1CCA-7"
      ],
      "accessRights": 
      [
        "foaf:Agent"
      ],
      "checksum": {
        "md5": "17048212089c92c54d0ca843beb8c2e3",
        "sha1": "1d31bcda595451edb65c7f00fff4592e18c9099b",
        "sha256": "66136ede82b57725746403acaf87e68f049ee400d4202189e3810fe3c13f7ff0",
        "sha512": "9225bce23a425f13ee7909f11a92d87111bb6036321769099b93203ea4967a702506849c4dae00d4929bec10ad3ab9b58d00b99fa3cf36026df3bf218244658d"
      }
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1CCB-1",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1CCB-1)",
      "id": "hdl:11341/00-0000-0000-0000-1CCB-1",
      "label": "veraa_palaa.eaf",
      "objectType": "Resource",
      "contentType": "text/eaf+xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUriVersion": "/pair/tree/v2/content/Annotations/veraa_palaa.eaf",
      "fileExists": false,
      "relatedTo": 
      [
        "hdl:11341/00-0000-0000-0000-1CCF-5"
      ],
      "accessRights": 
      [
        "foaf:Agent"
      ]
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1CCA-7",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1CCA-7)",
      "id": "hdl:11341/00-0000-0000-0000-1CCA-7",
      "label": "veraa_palaa_graid-raw.txt",
      "objectType": "Resource",
      "contentType": "text/plain",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUriVersion": "/pair/tree/v2/content/Annotations/veraa_palaa_graid-raw.txt",
      "fileExists": false,
      "accessRights": 
      [
        "foaf:Agent"
      ]
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1B5E-2",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1B5E-2)",
      "id": "hdl:11341/00-0000-0000-0000-1B5E-2",
      "label": "ZAG_EOI_20150206_2.wav",
      "objectType": "Resource",
      "contentType": "audio/x-wav",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUriVersion": "/pair/tree/v2/content/Media/ZAG_EOI_20150206_2.wav",
      "fileExists": false,
      "accessRights": 
      [
        "foaf:Agent"
      ]
    },
    {
      "@odata.id": "hdl:11341/00-0000-0000-0000-1B46-D",
      "@odata.readLink": "/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1B46-D)",
      "id": "hdl:11341/00-0000-0000-0000-1B46-D",
      "label": "ZAG_EOI_20150127_1.eaf",
      "objectType": "Resource",
      "contentType": "text/eaf+xml",
      "containerId": "ocfl:/pair/tree",
      "containerVersion": "v2",
      "containerVersionPredecessors": 
      [
        "v1"
      ],
      "containerVersionSuccessors": 
      [
      ],
      "containerVersionIsLatest": true,
      "containerVersionCreated": "2020-07-01T08:19:42Z",
      "fileUriVersion": "/pair/tree/v2/content/Annotations/ZAG_EOI_20150127_1.eaf",
      "fileExists": false,
      "relatedTo": 
      [
        "hdl:11341/00-0000-0000-0000-1B45-8"
      ],
      "accessRights": 
      [
        "foaf:Agent"
      ]
    }
  ]
}

Requests

Object Request

GET {scheme}://{server}/object/{repository}/Object({$identifier})

Returns a single object.

Example: /object/a5-1/Object(hdl:11341/00-0000-0000-0000-1BD6-5)?pretty

Expanding Related Objects [$expand]

GET {scheme}://{server}/object/{repository}/Object({$identifier})?$expand=field1,field2

Expands related objects.

Example Description
/object/a5-1/Object(hdl:11341/00-0000-0000-0000-1BD6-5)?pretty&$expand=parentOf Replaces all ids found in field "parentOf" with the expanded object.

Object Collection Request

GET {scheme}://{server}/object/{repository}/Objects

Returns a collection of objects.

Example: /object/a5-1/Objects?pretty

By default the first 10 objects are returned. A @odata.nextLink property appears if more objects are available.

Filtering Objects [$filter]

GET {scheme}://{server}/object/{repository}/Objects?$filter={field1 (eq|ne|gt|ge|lt|le) 'term1' (and|or|not) field2 (eq|ne|gt|ge|lt|le) 'term2' ...}

Filters objects according to field values.

Example Description
/object/a5-1/Objects?pretty&$filter=id eq hdl:11341/00-0000-0000-0000-1BD6-5 Returns object with id "hdl:11341/00-0000-0000-0000-1BD6-5". No quotes are used here to enclose the term.
/object/a5-1/Objects?pretty&$filter=contentType eq 'text/eaf%2Bxml' Returns all objects with content type "text/eaf+xml". Note that the plus sign "+" has to be encoded as "%2B".
/object/a5-1/Objects?pretty&$filter=parentOf eq 'hdl:11341/00-0000-0000-0000-1BD6-5' Returns the parent of object "hdl:11341/00-0000-0000-0000-1BD6-5". The term is enclosed in single quotes here.
/object/a5-1/Objects?pretty&$filter=fileCreated lt 2016-10-24T11:31:09.342655Z and contentType eq video/mp4 Returns all objects with files created before "2016-10-24T11:31:09.342655Z" and content type "video/mp4".
/object/a5-1/Objects?pretty&$filter=(contentType eq text/eaf%2Bxml or contentType eq audio/x-wav) and fileExists eq true Returns all objects with content type equals "text/eaf+xml" or "audio/x-wav" that property "fileExists" equals to "true".

Sorting Objects [$sort]

GET {scheme}://{server}/object/{repository}/Objects?$orderby=field1 (asc|desc),field2 (asc|desc),..

Sorts objects according to selected field values.

Example Description
/object/a5-1/Objects?pretty&$orderby=fileUpdated asc Returns all objects of repository "a5-1" sorted by field "fileUpdated" in ascending order.
/object/a5-1/Objects?pretty&$orderby=fileCreated desc Returns all objects of repository "a5-1" sorted by field "fileCreated" in descending order.
/object/a5-1/Objects?pretty&$orderby=fileUpdated asc,fileCreated desc Returns all objects of repository "a5-1" primarily sorted by field "fileUpdated" in ascending order and secondarily sorted by field "fileCreated" in descending order.

Paging [$skip&$top]

GET {scheme}://{server}/object/{repository}/Objects?$skip={integer}&$top={integer}

Allows navigation inside a object collection.

Example Description
/object/a5-1/Objects?pretty&$skip=10&$top=10 Returns objects 10 to 20.
/object/a5-1/Objects?pretty&$skip=20&$top=1 Returns the 20th object.

Counting Objects [$count]

GET {scheme}://{server}/object/{repository}/Objects?$count

If true includes number of hits of a object collection request. Default is true.

Example Description
/object/a5-1/Objects?pretty&$count A "@odata.count" parameter appears if "$count" is set.
/object/a5-1/Objects?pretty&$count&$top=0 A typical usage is to combine "$count" with the "$top" parameter set to "0".

Result Serialization [$select]

GET {scheme}://{server}/object/{repository}/Objects?$select={field1,field2,field3,..}

Defines which fields to include in the JSON result.

Example Description
/object/a5-1/Objects?pretty&$select=fileCreated,fileExists Returns all objects of repository a5-1 only showing fields fileCreated and fileExists.

Pretty Printing [pretty]

GET {scheme}://{server}/object/{repository}/Objects?pretty

Whether to return the JSON response pretty printed.

Example Description
/object/a5-1/Objects Prints any JSON response in compact form in format "application/json" for production use.
/object/a5-1/Objects?pretty Prints any JSON response in human readable form in format "text/plain" for debbuging only.