← Documentation home

Canonical Markdown source · Oct 20, 2018

Victoria and Albert Museum (V&A) Collections API Integration Plan

providers/vanda-collections-api.md · 97 lines · SHA-256 755d93972233

Status: Planned (B5 provider slice)

Updated: May 30, 2026

Official source

  • Developer docs: <https://developers.vam.ac.uk/>
  • API base: <https://api.vam.ac.uk/v2/>

Key platform facts (from official docs)

  • API v2 provides JSON and CSV outputs.
  • Core search endpoint pattern: `GET /v2/objects/search`
  • Supports rich searching/filtering/restriction/result controls (identifier filters, keyword filters, random, search mode).
  • Response commonly includes:
  • `info` (including `record_count`, pagination metadata)
  • `records`
  • V&A supports IIIF:
  • Image API base pattern via framemark URLs
  • Presentation manifest URLs under `https://iiif.vam.ac.uk/collections/{objectidentifier}/manifest.json`
  • Typical image metadata fields in search records:
  • `_primaryImageId`
  • `_images._iiif_image_base_url`
  • `_images._iiif_presentation_url`

Integration goals

  • Add V&A as a first-class B5 provider through `provider-interface`.
  • Normalize V&A object/search responses into canonical Linked Art JSON-LD boundary records.
  • Preserve IIIF image/presentation references for downstream deep-zoom/presentation features.

Proposed implementation slice

Adapter

  • `src/adapters/vanda.ts`
  • profile descriptor
  • identifier + keyword filter request helpers
  • object/result normalization to `SourceRecord` + `Artwork` DTO boundary
  • IIIF projection helpers (`info.json`, image base URL, presentation manifest URL)

Routes

  • `GET /api/vanda/profile`
  • `POST /api/vanda/search`
  • `POST /api/vanda/object`
  • `POST /api/vanda/import`

UI

  • add `vanda` source toggle in `/explore`
  • preserve attribution/reuse indicators and IIIF manifest links in detail views

Env configuration

  • `VANDA_API_BASE` (default: `https://api.vam.ac.uk/v2`)
  • `VANDA_MAX_PAGE_SIZE` (default: `100`, hard cap = 100)
  • `VANDA_IIIF_IMAGE_BASE` (default: `https://framemark.vam.ac.uk/collections`)
  • `VANDA_IIIF_PRESENTATION_BASE` (default: `https://iiif.vam.ac.uk/collections`)

Operational and terms guardrails

  • For bulk data workflows, API is not preferred; use dataset/export collaboration where appropriate.
  • Respect V&A terms of use for data/images and cite V&A in downstream outputs.
  • Preserve source image URLs from provider (no local image copying as default policy unless rights/terms explicitly permit).

Standards mapping + tests

Required rounds (minimum): object/provenance/shared-structure + protocol/search rounds.

Required tests (failing-first):

  • `tests/adapters/vanda.test.ts`
  • `tests/api/vanda/profile.test.ts`
  • `tests/api/vanda/search.test.ts`
  • `tests/api/vanda/object.test.ts`
  • `tests/api/vanda/import.test.ts`

Provider-specific conformance tests:

  • identifier filter path coverage (`id_material`, etc.) and keyword filter path coverage (`kw_*`)
  • search mode handling (`broad` vs `narrow`) where supported by route
  • IIIF field extraction and URL normalization

Protocol checks (B8):

  • OPTIONS/CORS behavior on V&A routes
  • response shape conformance
  • URI opacity + array-cardinality safety where applicable

Exit criteria

  • Adapter + routes + tests green.
  • `/explore` can search/import V&A records.
  • PR includes Standards Mapping note with round + fixture anchor coverage.