{"id":"providers/museumsvictoria-collections-api","relativePath":"providers/museumsvictoria-collections-api.md","title":"Museums Victoria Collections API Integration","markdown":"# Museums Victoria Collections API Integration\n\nStatus: Implemented (items-first provider slice)\nUpdated: July 4, 2026\n\n## Official Source\n\n- Developer docs: <https://collections.museumsvictoria.com.au/developers>\n- API base: <https://collections.museumsvictoria.com.au/api>\n\n## Key Platform Facts\n\n- The API is a GET-only JSON service.\n- Requests should include a `User-Agent` header.\n- Search/list endpoints support `page`, `perpage`, and `envelope=true`.\n- Default list size is 40 records; maximum `perpage` is 100.\n- Pagination appears in response headers and, with `envelope=true`, in the JSON body.\n- Search supports facets such as `recordtype`, `hasimages`, `imagelicence`, `category`, `collectingarea`, and `culturalgroup`.\n\n## Implemented Slice\n\nThe current Meta Museum provider slice is intentionally item-first:\n\n- `recordtype=item`\n- `hasimages=yes` for discovery search\n- bounded import/search pages capped at 100 records\n- articles, species, and specimen endpoints excluded until they receive dedicated semantic mapping\n\n## Adapter And Routes\n\n- Adapter: `src/adapters/museumsvictoria.ts`\n- Direct routes:\n  - `GET /api/museumsvictoria/profile`\n  - `POST /api/museumsvictoria/search`\n  - `POST /api/museumsvictoria/object`\n  - `POST /api/museumsvictoria/import`\n- Facade routes:\n  - `GET /api/providers/museumsvictoria/profile`\n  - `POST /api/providers/museumsvictoria/search`\n  - `POST /api/providers/museumsvictoria/import`\n\n## Mapping Notes\n\n- Item records are normalized through the shared expansion-provider boundary, then annotated with Museums Victoria source constraints.\n- `displayTitle`, object summary, physical description, significance, associations, keywords, and media are preserved in source snapshots.\n- Media URLs are projected into `representation` entries with media-level licence and rights-statement context.\n- First Peoples and cultural-context fields are carried as review-sensitive source notes rather than flattened into generic claims.\n\n## Operational Guardrails\n\n- Preserve item and media-level rights before any publication workflow.\n- Keep imports bounded to one official API page.\n- Use the official item API URL as the stable source URL when an item identifier is available.\n- Treat articles, species, and specimens as future provider slices, not implicit artwork records.\n\n## Test Coverage\n\n- `tests/adapters/museumsvictoria.test.ts`\n- `tests/api/museumsvictoria/search.test.ts`\n- `tests/api/museumsvictoria/object.test.ts`\n- `tests/api/providers/expansion-routes.test.ts`\n- `tests/fixtures/validation/providers/museumsvictoria/pass.json`\n- `tests/fixtures/validation/providers/museumsvictoria/fail.json`\n","sections":[{"level":2,"heading":"Official Source","anchor":"official-source"},{"level":2,"heading":"Key Platform Facts","anchor":"key-platform-facts"},{"level":2,"heading":"Implemented Slice","anchor":"implemented-slice"},{"level":2,"heading":"Adapter And Routes","anchor":"adapter-and-routes"},{"level":2,"heading":"Mapping Notes","anchor":"mapping-notes"},{"level":2,"heading":"Operational Guardrails","anchor":"operational-guardrails"},{"level":2,"heading":"Test Coverage","anchor":"test-coverage"}],"html":"<h1 id=\"museums-victoria-collections-api-integration\">Museums Victoria Collections API Integration</h1>\n<p>Status: Implemented (items-first provider slice)</p>\n<p>Updated: July 4, 2026</p>\n<h2 id=\"official-source\">Official Source</h2>\n<ul><li>Developer docs: &lt;https://collections.museumsvictoria.com.au/developers&gt;</li><li>API base: &lt;https://collections.museumsvictoria.com.au/api&gt;</li></ul>\n<h2 id=\"key-platform-facts\">Key Platform Facts</h2>\n<ul><li>The API is a GET-only JSON service.</li><li>Requests should include a `User-Agent` header.</li><li>Search/list endpoints support `page`, `perpage`, and `envelope=true`.</li><li>Default list size is 40 records; maximum `perpage` is 100.</li><li>Pagination appears in response headers and, with `envelope=true`, in the JSON body.</li><li>Search supports facets such as `recordtype`, `hasimages`, `imagelicence`, `category`, `collectingarea`, and `culturalgroup`.</li></ul>\n<h2 id=\"implemented-slice\">Implemented Slice</h2>\n<p>The current Meta Museum provider slice is intentionally item-first:</p>\n<ul><li>`recordtype=item`</li><li>`hasimages=yes` for discovery search</li><li>bounded import/search pages capped at 100 records</li><li>articles, species, and specimen endpoints excluded until they receive dedicated semantic mapping</li></ul>\n<h2 id=\"adapter-and-routes\">Adapter And Routes</h2>\n<ul><li>Adapter: `src/adapters/museumsvictoria.ts`</li><li>Direct routes:</li><li>`GET /api/museumsvictoria/profile`</li><li>`POST /api/museumsvictoria/search`</li><li>`POST /api/museumsvictoria/object`</li><li>`POST /api/museumsvictoria/import`</li><li>Facade routes:</li><li>`GET /api/providers/museumsvictoria/profile`</li><li>`POST /api/providers/museumsvictoria/search`</li><li>`POST /api/providers/museumsvictoria/import`</li></ul>\n<h2 id=\"mapping-notes\">Mapping Notes</h2>\n<ul><li>Item records are normalized through the shared expansion-provider boundary, then annotated with Museums Victoria source constraints.</li><li>`displayTitle`, object summary, physical description, significance, associations, keywords, and media are preserved in source snapshots.</li><li>Media URLs are projected into `representation` entries with media-level licence and rights-statement context.</li><li>First Peoples and cultural-context fields are carried as review-sensitive source notes rather than flattened into generic claims.</li></ul>\n<h2 id=\"operational-guardrails\">Operational Guardrails</h2>\n<ul><li>Preserve item and media-level rights before any publication workflow.</li><li>Keep imports bounded to one official API page.</li><li>Use the official item API URL as the stable source URL when an item identifier is available.</li><li>Treat articles, species, and specimens as future provider slices, not implicit artwork records.</li></ul>\n<h2 id=\"test-coverage\">Test Coverage</h2>\n<ul><li>`tests/adapters/museumsvictoria.test.ts`</li><li>`tests/api/museumsvictoria/search.test.ts`</li><li>`tests/api/museumsvictoria/object.test.ts`</li><li>`tests/api/providers/expansion-routes.test.ts`</li><li>`tests/fixtures/validation/providers/museumsvictoria/pass.json`</li><li>`tests/fixtures/validation/providers/museumsvictoria/fail.json`</li></ul>","updatedAt":"2018-10-20T01:46:40.000Z","checksum":"a5408e229cdc97f6e430172058b1e658920afa45491122d07178f7135fb6a7bf","checksumPrefix":"a5408e229cdc","anchorCount":7,"lineCount":64,"rawUrl":"/api/docs/content?path=providers%2Fmuseumsvictoria-collections-api.md","htmlUrl":"/docs?doc=providers%2Fmuseumsvictoria-collections-api.md","apiUrl":"/api/docs/content?path=providers%2Fmuseumsvictoria-collections-api.md"}