API Documentation

ID Management Service
Service for creating, updating and managing links between identifiers.
Last updated: 2026-03-30
See revision history

API - Motivation and Generator endpoints

API calls to list, add, delete and update motivation URIs and Generator URIs in the system.

Get list of registered Motivations

A motivation is a concept that defines how and for what reason two URIs are linked. (Specifically, it should correspond to a SKOS concept.) While there is no implied direction of the link in the Web Annotation model, it is common for the body URI to be the source or the reason for the link, and the target URI to be the item or thing that it is linked to. For example, an essay that talks about a museum item, the motivation in the link describing this would commonly have the essay URI to be the body, and the museum item to be the target.

Retrieve the list of registered Motivation URIs. Any attempt to add a link with an unregistered motivation will fail, as these must be added to the system before use. Each motivation added should have a description, especially if it is a bespoke URI.

URL : /motivations

Method : GET

Auth required : NO

Permissions required : None

HTML/JSON : Both

Success Response

Code : 200 OK

Content examples

JSON

The list will contain each motivation in the system, with the full uri being the value that should be used as its ID in requests.

{
  "motivations": [
    {
      "description": "dcterms:source to link a target to a body representation that it was sourced or derived from. If the body changes, the target should be updated.",
      "id": 11,
      "uri": "http://purl.org/dc/terms/source"
    },
    {
      "description": "The body object contains a 'RefId' identifier, represented here as the target id",
      "id": 12,
      "uri": "https://data.getty.edu/local/thesaurus/motivations/contains-refid"
    },
    {
      "description": "The body object contains Accession or Acquisition ID, represented here as the target id",
      "id": 13,
      "uri": "https://data.getty.edu/local/thesaurus/motivations/contains-acqno"
    },
    {
      "description": "The body object contains Accession or Acquisition ID and a RefID. The target represents an amalgamation of the two to ensure uniqueness.",
      "id": 14,
      "uri": "https://data.getty.edu/local/thesaurus/motivations/contains-acqno-refid"
    },

    ...


}

Get list of registered Generators

The Generators are specific to the URIs they describe, and will be representative of the systems that control, create and administer the URI in question. This can be an instance of a system, or it can refer to a organization. Often, the link URIs describe resources that do not natively have a URI of their own as the system they are in may not be present on the internet, or may only have an API or DB with its own primary keys. Together, an ID and its generator is used to describe a resource precisely.

Retrieve the list of registered Generator URIs. Any attempt to add a link with an unregistered generator will fail, as these must be added to the system before use. Each generator added should have a description, especially if it is a bespoke URI.

URL : /generators

Method : GET

Auth required : NO

Permissions required : None

HTML/JSON : Both

Success Response

Code : 200 OK

Content examples

JSON

The list will contain each generator in the system, with the full uri being the value that should be used as its ID in requests.

{
  "generators": [
    {
      "description": "Getty Museum Collection LOD Gateway",
      "id": 134,
      "uri": "https://data.getty.edu/local/thesaurus/generators/museum-collection-lod-gateway"
    },
    {
      "description": "Gallery Systems' The Museum System (TMS)",
      "id": 6,
      "uri": "https://data.getty.edu/local/thesaurus/generators/tms"
    },
    {
      "description": "OpenText Media Manager (OTMM)",
      "id": 4,
      "uri": "https://data.getty.edu/local/thesaurus/generators/otmm"
    },
    {
      "description": "Getty Union List of Artist Names (ULAN)",
      "id": 166,
      "uri": "https://data.getty.edu/local/thesaurus/generators/ulan"
    },

    ...

}

Register a Motivation

Add a motivation to the registered list

URL : /motivations

Method : POST

Auth required : YES

HTML/JSON : JSON

Data requirements

{
  "uri": "MOTIVATION_URI", 
  "description": "Textual description of the purpose of the motivation"
}

Success Response

Code : 201 Created

{
  "uri": "MOTIVATION_URI", 
  "description": "Textual description of the purpose of the motivation",
  "id": PRIMARY_KEY_INTEGER
}

Error Responses

Code: 403 - if the user does not have sufficient authorization to add a motivation

Code: 400 Bad Request

{
  "errors": [
    {
      "title": "Bad request.",
      "detail": "Check that the request body contains a suitable JSON payload.",
    }
  ]
}

Register a Generator

Add a generator to the registered list

URL : /generators

Method : POST

Auth required : YES

HTML/JSON : JSON

Data requirements

{
  "uri": "GENERATOR_URI", 
  "description": "Textual description of the generator"
}

Success Response

Code : 201 Created

{
  "uri": "GENERATOR_URI", 
  "description": "Textual description of the generator",
  "id": PRIMARY_KEY_INTEGER
}

Error Responses

Code: 403 - if the user does not have sufficient authorization to add a motivation

Code: 400 Bad Request

{
  "errors": [
    {
      "title": "Bad request.",
      "detail": "Check that the request body contains a suitable JSON payload.",
    }
  ]
}

Delete a Motivation

Delete a motivation AND WILL DELETE ALL LINKS USING IT. Important, no undo!

URL : /motivations/MOTIVATION_URI

Method : DELETE

Auth required : YES

HTML/JSON : JSON

Success Response

Code : 200 Okay

{"title": "Motivation URI Deleted"}

Error Responses

Code: 403 - if the user does not have sufficient authorization to add a motivation

Code: 400 Bad Request - can also occur if the motivation does not exist

{
  "errors": 
    [
      {"title": "Not Found."}
    ]
}

Delete a Generator

Delete a generator AND WILL DELETE ALL LINKS USING IT. Important, no undo!

URL : /generators/GENERATOR_URI

Method : POST

Auth required : YES

HTML/JSON : JSON

Success Response

Code : 200 Okay

{"title": "Generator URI Deleted"}

Error Responses

Code: 403 - if the user does not have sufficient authorization to add a motivation

Code: 400 Bad Request

{
  "errors": [
    {
      "title": "Bad request.",
      "detail": "Check that the request body contains a suitable JSON payload.",
    }
  ]
}