Science Museum Group Objects API

Scientific instruments, industrial artifacts, and cultural items in the collection

OpenAPI Specification

science-museum-group-objects-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Science Museum Group Collection Documents Objects API
  description: 'A JSONAPI-compliant REST API providing open access to the Science Museum Group''s collection of over 7 million objects, people, and documents across five UK museums: the Science Museum (London), the Science and Industry Museum (Manchester), the National Railway Museum (York), the National Science and Media Museum (Bradford), and Locomotion (Shildon). The API supports full-text search, filtering, and individual record retrieval with rich metadata, image references, and curatorial annotations.'
  version: 1.0.0
  contact:
    name: Science Museum Group Collections
    url: https://www.sciencemuseumgroup.org.uk/our-work/our-collection/using-our-collection-api
  license:
    name: Open Government License
    url: https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/
servers:
- url: https://collection.sciencemuseumgroup.org.uk
  description: Science Museum Group Collection API
tags:
- name: Objects
  description: Scientific instruments, industrial artifacts, and cultural items in the collection
paths:
  /search/objects:
    get:
      operationId: searchObjects
      summary: Search Collection Objects
      description: Search for physical objects and artifacts in the Science Museum Group collection. Supports filtering by object type, makers, people, categories, museum branch, on-display status, and location.
      tags:
      - Objects
      parameters:
      - name: q
        in: query
        description: Full-text search query term
        required: false
        schema:
          type: string
      - name: type
        in: query
        description: Filter by object type
        required: false
        schema:
          type: string
      - name: makers
        in: query
        description: Filter by maker or manufacturer name
        required: false
        schema:
          type: string
      - name: people
        in: query
        description: Filter by associated person
        required: false
        schema:
          type: string
      - name: categories
        in: query
        description: Filter by collection category
        required: false
        schema:
          type: string
      - name: museum
        in: query
        description: Filter by museum code (NRM, SMG, NMeM, MSI)
        required: false
        schema:
          type: string
          enum:
          - NRM
          - SMG
          - NMeM
          - MSI
      - name: on_display
        in: query
        description: Filter to objects currently on display
        required: false
        schema:
          type: boolean
      - name: location
        in: query
        description: Filter by gallery or storage location
        required: false
        schema:
          type: string
      - name: images
        in: query
        description: Filter to objects with available images
        required: false
        schema:
          type: boolean
      - name: places
        in: query
        description: Filter by geographical association
        required: false
        schema:
          type: string
      - name: date[from]
        in: query
        description: Filter from date
        required: false
        schema:
          type: string
      - name: date[to]
        in: query
        description: Filter to date
        required: false
        schema:
          type: string
      - name: page[number]
        in: query
        description: Zero-indexed page number
        required: false
        schema:
          type: integer
          default: 0
      - name: page[size]
        in: query
        description: Results per page (max 100)
        required: false
        schema:
          type: integer
          maximum: 100
          default: 50
      responses:
        '200':
          description: Successful object search response
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ObjectSearchResponse'
  /objects/{id}:
    get:
      operationId: getObject
      summary: Get Collection Object
      description: Retrieve a single collection object by its unique identifier. Returns the full JSONAPI resource record including all metadata, image references, relationships to people and documents, and curatorial notes.
      tags:
      - Objects
      parameters:
      - name: id
        in: path
        description: Unique collection object identifier (e.g., co26704)
        required: true
        schema:
          type: string
        example: co26704
      responses:
        '200':
          description: Successful object retrieval
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ObjectResponse'
        '404':
          description: Object not found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ObjectResponse:
      type: object
      description: JSONAPI response for a single collection object
      properties:
        data:
          $ref: '#/components/schemas/CollectionResource'
    CollectionResource:
      type: object
      description: A JSONAPI resource item in the collection
      properties:
        id:
          type: string
          description: Unique resource identifier
        type:
          type: string
          enum:
          - objects
          - people
          - documents
          description: Resource type
        attributes:
          type: object
          description: Resource attributes and metadata
          properties:
            name:
              type: object
              description: Name information with primary and alternate names
            summary:
              type: string
              description: Brief summary of the item
            description:
              type: string
              description: Detailed description
            date:
              type: object
              description: Date information including earliest and latest dates
            images:
              type: object
              description: Image references and media information
            museums:
              type: array
              description: Museums where the item is held
              items:
                type: string
            on_display:
              type: boolean
              description: Whether the item is currently on public display
            location:
              type: object
              description: Gallery or storage location information
        relationships:
          type: object
          description: Related resources
          properties:
            makers:
              type: object
              description: People or organizations who made or created the item
            people:
              type: object
              description: People associated with this item
            documents:
              type: object
              description: Related documents
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              description: Canonical URL for this resource
    ErrorResponse:
      type: object
      description: JSONAPI error response
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              status:
                type: string
                description: HTTP status code
              title:
                type: string
                description: Error title
              detail:
                type: string
                description: Error detail message
    PaginationLinks:
      type: object
      description: JSONAPI pagination links
      properties:
        first:
          type: string
          format: uri
          description: Link to the first page
        last:
          type: string
          format: uri
          description: Link to the last page
        prev:
          type: string
          format: uri
          nullable: true
          description: Link to the previous page
        next:
          type: string
          format: uri
          nullable: true
          description: Link to the next page
    ObjectSearchResponse:
      type: object
      description: JSONAPI search response for collection objects
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CollectionResource'
        meta:
          type: object
          properties:
            total:
              type: integer
              description: Total number of matching objects
        links:
          $ref: '#/components/schemas/PaginationLinks'