Science Museum Group Documents API

Documents, archives, and written records in the collection

OpenAPI Specification

science-museum-group-documents-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Science Museum Group Collection Documents 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: Documents
  description: Documents, archives, and written records in the collection
paths:
  /search/documents:
    get:
      operationId: searchDocuments
      summary: Search Collection Documents
      description: Search for documents, archives, and written records in the Science Museum Group collection. Supports filtering by makers, associated people, and archive reference.
      tags:
      - Documents
      parameters:
      - name: q
        in: query
        description: Full-text search query term
        required: false
        schema:
          type: string
      - name: makers
        in: query
        description: Filter by document creator or maker
        required: false
        schema:
          type: string
      - name: people
        in: query
        description: Filter by associated person
        required: false
        schema:
          type: string
      - name: archive
        in: query
        description: Filter by archive reference
        required: false
        schema:
          type: string
      - 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: images
        in: query
        description: Filter to documents with available images
        required: false
        schema:
          type: boolean
      - 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 document search response
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/DocumentSearchResponse'
  /documents/{id}:
    get:
      operationId: getDocument
      summary: Get Collection Document
      description: Retrieve a single document record by its unique identifier. Returns the full JSONAPI resource record including document metadata, image references, archive location, and relationships to people and objects.
      tags:
      - Documents
      parameters:
      - name: id
        in: path
        description: Unique document identifier
        required: true
        schema:
          type: string
        example: cd23456
      responses:
        '200':
          description: Successful document retrieval
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
        '404':
          description: Document not found
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    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
    DocumentSearchResponse:
      type: object
      description: JSONAPI search response for collection documents
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CollectionResource'
        meta:
          type: object
          properties:
            total:
              type: integer
              description: Total number of matching documents
        links:
          $ref: '#/components/schemas/PaginationLinks'
    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
    DocumentResponse:
      type: object
      description: JSONAPI response for a single document record
      properties:
        data:
          $ref: '#/components/schemas/CollectionResource'