Skip to content

DesignMuseumGent/dmg-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

578 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DESIGN MUSEUM GENT β€” REST API

Warning

v1 of this API is deprecated and will be sunset on 31 December 2026. Please migrate to v2. See the migration guide for breaking changes.

This REST API exposes linked data related to Design Museum Gent. It provides access to collection objects, agents, exhibitions and thesaurus concepts as CIDOC-CRM compliant JSON-LD. The data is harvested from the Linked Data Event Streams and all URIs are compliant with the Flemish URI standard.

πŸ“– Full documentation: data.designmuseumgent.be πŸ”§ Swagger UI: data.designmuseumgent.be/api-docs


v2 (current)

Collections

Endpoint URI Description
Objects GET /v2/id/objects Paginated collection of all objects
Agents GET /v2/id/agents Paginated collection of all agents
Exhibitions GET /v2/id/exhibitions Paginated collection of all exhibitions
Concepts GET /v2/id/concepts Paginated collection of the thesaurus
Private objects GET /v2/id/private/objects Authenticated private stream

All collection endpoints support ?fullRecord=true for bulk harvesting, ?modifiedSince=YYYY-MM-DD for incremental updates, ?q= for full text search, and use Hydra Core Vocabulary for pagination with Link headers.

Single entities

Endpoint URI Description
Object GET /v2/id/object/{PID} Single collection object
Agent GET /v2/id/agent/{PID} Single agent record
Exhibition GET /v2/id/exhibition/{PID} Single exhibition record
Concept GET /v2/id/concept/{PID} Single thesaurus concept

All single entity endpoints support HEAD requests for lightweight existence checks and cache validation.

Discovery & index endpoints

Endpoint URI Description
Colors GET /v2/id/colors Color index with weighted collection statistics
Colors β€” dominant GET /v2/id/colors/dominant Objects sorted by color dominance
Types GET /v2/id/types Object type index with counts
Materials GET /v2/id/materials Material index with counts
Nationalities GET /v2/id/nationalities Nationality index with counts
Roles GET /v2/id/roles Agent role index with counts
DCAT GET /v2/ Machine-readable data catalog

Query parameters

Parameter Applies to Description
?fullRecord=true all collections Return full CIDOC-CRM records
?modifiedSince=YYYY-MM-DD all collections Incremental harvest
?q= objects, agents, concepts Full text search
?hasImages=true objects Only objects with a IIIF manifest
?color= objects Filter by base color
?cssColor= objects Filter by CSS color name
?colors=true objects (fullRecord) Include color data
?type= objects Filter by object type
?material= objects Filter by material
?hasParts=true objects Only koepelrecords
?isPartOf=true objects Only components
?onDisplay=true objects, types, materials, colors Only objects in collection presentation
?nationality= agents Filter by nationality
?role= agents Filter by role (designer, producer)

Quick start

# fetch a single object
curl https://data.designmuseumgent.be/v2/id/object/1987-1105

# fetch a single agent
curl https://data.designmuseumgent.be/v2/id/agent/DMG-A-00162

# paginate through all objects
curl "https://data.designmuseumgent.be/v2/id/objects?page=1&itemsPerPage=50&fullRecord=true"

# full text search
curl "https://data.designmuseumgent.be/v2/id/objects?q=roze+glas&hasImages=true"

# filter by color and type
curl "https://data.designmuseumgent.be/v2/id/objects?color=pink&type=vaas&hasImages=true"

# objects currently on display
curl "https://data.designmuseumgent.be/v2/id/objects?onDisplay=true&fullRecord=true"
// harvest the full collection
async function harvest(url) {
    const res = await fetch(url)
    const data = await res.json()

    // process data["hydra:member"]
    console.log(`fetched ${data["hydra:member"].length} objects`)

    if (data["hydra:view"]["hydra:next"]) {
        await new Promise(r => setTimeout(r, 250)) // polite delay
        await harvest(data["hydra:view"]["hydra:next"])
    } else {
        console.log('harvest complete')
    }
}

harvest('https://data.designmuseumgent.be/v2/id/objects?fullRecord=true&itemsPerPage=50')

What's new in v2

v1 v2
Data model Linked Art / OSLO Pure CIDOC-CRM
Serialization JSON-LD (mixed vocabularies) JSON-LD (strict CIDOC-CRM)
Multilingual single language fields crm:E41_Appellation per language
Nationality plain string EU Publications Office URI
Biographies crm:P3_has_note crm:E33_Linguistic_Object + CC BY-SA
Color data separate endpoints crm:E36_Visual_Item inline
Full text search β€” ?q= on objects, agents, concepts
Color filters β€” ?color=, ?cssColor=
Color index β€” /v2/id/colors with weighted stats
Type / material filters β€” ?type=, ?material=
Incremental harvest β€” ?modifiedSince=
Pagination headers β€” RFC 8288 Link header
HEAD requests β€” Lightweight existence checks
Base URI /v1/ /v2/

v1 (deprecated β€” migrate to v2)

Caution

v1 is deprecated and will be shut down on 31 December 2026. The documentation below is archived for reference only. All new integrations should use v2. See the migration guide for breaking changes.

Data catalogues

Top level data catalogues (DCAT) using the OSLO standard:

https://data.designmuseumgent.be/v1

Collections:

Single entities

https://data.designmuseumgent.be/v1/id/{type}/{referencenumber}

ARK-compliant alternative routes are also available: https://data.designmuseumgent.be/v1/id/ark:/29417/{type}/{referencenumber}

Curated collections

Color API

GET /v1/color-api/{color}
GET /v1/color-api/{color}?image=true

Example: https://data.designmuseumgent.be/v1/color-api/vanilla?image=true

Full color list: https://data.designmuseumgent.be/v1/colors/


Standards

Support


Development and coordination by Olivier Van D'huynslager β€” Studio Digitaal, Design Museum Gent

About

rest-api to access metadata related to the collection and program of Design Museum gent

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors