{"id":"linked-art/api/protocol","relativePath":"linked-art/api/protocol.md","title":"Linked Art API: Protocol","markdown":"# Linked Art API: Protocol\n\n**Last refreshed:** 2026-07-06\n\nSource: [Protocol](https://linked.art/api/1.0/protocol/), part of Linked Art API 1.0, published under [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/). This is a project summary; the upstream page is authoritative.\n\n## Purpose\n\nThe Linked Art API protocol defines how consuming applications retrieve Linked Art records from publishing systems over the web. Linked Art favors a resource-centric REST style over service-oriented operations, using HTTP as the transport and keeping network interaction minimal, familiar, cacheable, and easy for independent implementers to support.\n\nThe protocol is intentionally retrieval-focused. Version 1.0 describes how to get representations from endpoints; it does not define create, update, or delete operations for Linked Art API resources.\n\n## HTTP And HTTPS\n\nPublishers should use HTTPS for endpoint URIs whenever possible. HTTPS protects user privacy even for open data and leaves room for deployments that require authentication or access control. A typical endpoint URI is a normal web URI, such as:\n\n```text\nhttps://linked.art/example/object/1\n```\n\nServers must support HTTP/1.1 and should support HTTP/2 or newer so clients can make concurrent requests efficiently.\n\n## Operations\n\nLinked Art API 1.0 is read-only at the protocol layer:\n\n- Publishers must support `GET` for retrieving resource representations.\n- Publishers must support `OPTIONS` so browser-based clients can complete CORS preflight checks.\n- Publishers should support `HEAD` for header-only metadata, but consumers must not rely on it.\n- The API does not use `POST`, `PUT`, or `DELETE` for Linked Art API 1.0 resource operations.\n\nThis retrieval-only rule is separate from project-specific operational APIs. For Meta Museum, mutation or workflow routes must not be described as Linked Art API 1.0 protocol operations unless they are clearly outside the public Linked Art record API.\n\n## Content Negotiation\n\nConsumers request Linked Art JSON-LD with the `Accept` header:\n\n```http\nAccept: application/ld+json;profile=\"https://linked.art/ns/v1/linked-art.json\"\n```\n\nPublishers respond with the matching `Content-Type`:\n\n```http\nContent-Type: application/ld+json;profile=\"https://linked.art/ns/v1/linked-art.json\"\n```\n\nServers may support other serializations at the same URI, but Linked Art does not require those formats and does not define a discovery mechanism for every alternative representation. Future major Linked Art versions are expected to use different profile URIs, letting clients request a specific API/model version through content negotiation.\n\n## CORS\n\nBrowser access is part of the protocol expectation. Publishers must send:\n\n```http\nAccess-Control-Allow-Origin: *\n```\n\nThat header must appear on normal responses and on `OPTIONS` preflight responses, allowing browser-based clients from other origins to retrieve Linked Art API data.\n\n## URI Practices\n\nLinked Art does not require one URI structure. Existing institutional URIs can be reused, and consumers must not infer behavior or semantics from path segments.\n\nWhen there are no stronger local constraints, the preferred practical shape is:\n\n```text\nscheme://hostname/prefix/endpoint/identifier\n```\n\nUseful conventions:\n\n- `scheme`: preferably `https`.\n- `hostname`: the domain of the institution that owns or manages the data.\n- `prefix`: optional path hierarchy for publishing the data.\n- `endpoint`: a fixed path component for an entity family.\n- `identifier`: an opaque unique identifier for the entry.\n\nPreferred endpoint names include `concept`, `digital`, `event`, `group`, `object`, `person`, `place`, `provenance`, `set`, `text`, and `visual`.\n\nPersistence matters more than readability. Avoid technology names, volatile departments, or implementation-specific identifiers in public record URIs when those parts may change.\n\n## Meta Museum Notes\n\nMeta Museum already follows most of this protocol surface: public Linked Art records use web-native `GET`, docs and datasets are reachable through normal HTTP, CORS behavior is tested on public routes that need browser access, JSON-LD responses use the Linked Art profile media type where applicable, and URI handling remains opaque in both docs and tests.\n\nThe main guardrail from this page is language discipline: ActivityStreams callbacks, dataset exports, partner verification POSTs, and operator workflows can exist alongside Linked Art, but they are not Linked Art API 1.0 record-mutation operations. Linked Art API conformance should be evaluated against retrieval, content negotiation, CORS, and stable dereferenceable URI behavior.\n\n## Test Ideas\n\n- Assert public Linked Art record endpoints support `GET` and expected CORS `OPTIONS`.\n- Keep record consumers from relying on `HEAD`.\n- Verify Linked Art JSON-LD responses use `application/ld+json` with the Linked Art profile when profile-specific content negotiation is under test.\n- Keep public record URI handling opaque in code and tests.\n- Ensure documentation distinguishes Linked Art retrieval endpoints from project-specific mutation, callback, and evidence workflows.\n","sections":[{"level":2,"heading":"Purpose","anchor":"purpose"},{"level":2,"heading":"HTTP And HTTPS","anchor":"http-and-https"},{"level":2,"heading":"Operations","anchor":"operations"},{"level":2,"heading":"Content Negotiation","anchor":"content-negotiation"},{"level":2,"heading":"CORS","anchor":"cors"},{"level":2,"heading":"URI Practices","anchor":"uri-practices"},{"level":2,"heading":"Meta Museum Notes","anchor":"meta-museum-notes"},{"level":2,"heading":"Test Ideas","anchor":"test-ideas"}],"html":"<h1 id=\"linked-art-api-protocol\">Linked Art API: Protocol</h1>\n<p><strong>Last refreshed:</strong> 2026-07-06</p>\n<p>Source: <a href=\"https://linked.art/api/1.0/protocol/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"doc-link\">Protocol</a>, part of Linked Art API 1.0, published under <a href=\"http://creativecommons.org/licenses/by/4.0/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"doc-link\">CC BY 4.0</a>. This is a project summary; the upstream page is authoritative.</p>\n<h2 id=\"purpose\">Purpose</h2>\n<p>The Linked Art API protocol defines how consuming applications retrieve Linked Art records from publishing systems over the web. Linked Art favors a resource-centric REST style over service-oriented operations, using HTTP as the transport and keeping network interaction minimal, familiar, cacheable, and easy for independent implementers to support.</p>\n<p>The protocol is intentionally retrieval-focused. Version 1.0 describes how to get representations from endpoints; it does not define create, update, or delete operations for Linked Art API resources.</p>\n<h2 id=\"http-and-https\">HTTP And HTTPS</h2>\n<p>Publishers should use HTTPS for endpoint URIs whenever possible. HTTPS protects user privacy even for open data and leaves room for deployments that require authentication or access control. A typical endpoint URI is a normal web URI, such as:</p>\n<pre><code>\nhttps://linked.art/example/object/1\n</code></pre>\n<p>Servers must support HTTP/1.1 and should support HTTP/2 or newer so clients can make concurrent requests efficiently.</p>\n<h2 id=\"operations\">Operations</h2>\n<p>Linked Art API 1.0 is read-only at the protocol layer:</p>\n<ul><li>Publishers must support `GET` for retrieving resource representations.</li><li>Publishers must support `OPTIONS` so browser-based clients can complete CORS preflight checks.</li><li>Publishers should support `HEAD` for header-only metadata, but consumers must not rely on it.</li><li>The API does not use `POST`, `PUT`, or `DELETE` for Linked Art API 1.0 resource operations.</li></ul>\n<p>This retrieval-only rule is separate from project-specific operational APIs. For Meta Museum, mutation or workflow routes must not be described as Linked Art API 1.0 protocol operations unless they are clearly outside the public Linked Art record API.</p>\n<h2 id=\"content-negotiation\">Content Negotiation</h2>\n<p>Consumers request Linked Art JSON-LD with the `Accept` header:</p>\n<pre><code>\nAccept: application/ld+json;profile=&quot;https://linked.art/ns/v1/linked-art.json&quot;\n</code></pre>\n<p>Publishers respond with the matching `Content-Type`:</p>\n<pre><code>\nContent-Type: application/ld+json;profile=&quot;https://linked.art/ns/v1/linked-art.json&quot;\n</code></pre>\n<p>Servers may support other serializations at the same URI, but Linked Art does not require those formats and does not define a discovery mechanism for every alternative representation. Future major Linked Art versions are expected to use different profile URIs, letting clients request a specific API/model version through content negotiation.</p>\n<h2 id=\"cors\">CORS</h2>\n<p>Browser access is part of the protocol expectation. Publishers must send:</p>\n<pre><code>\nAccess-Control-Allow-Origin: *\n</code></pre>\n<p>That header must appear on normal responses and on `OPTIONS` preflight responses, allowing browser-based clients from other origins to retrieve Linked Art API data.</p>\n<h2 id=\"uri-practices\">URI Practices</h2>\n<p>Linked Art does not require one URI structure. Existing institutional URIs can be reused, and consumers must not infer behavior or semantics from path segments.</p>\n<p>When there are no stronger local constraints, the preferred practical shape is:</p>\n<pre><code>\nscheme://hostname/prefix/endpoint/identifier\n</code></pre>\n<p>Useful conventions:</p>\n<ul><li>`scheme`: preferably `https`.</li><li>`hostname`: the domain of the institution that owns or manages the data.</li><li>`prefix`: optional path hierarchy for publishing the data.</li><li>`endpoint`: a fixed path component for an entity family.</li><li>`identifier`: an opaque unique identifier for the entry.</li></ul>\n<p>Preferred endpoint names include `concept`, `digital`, `event`, `group`, `object`, `person`, `place`, `provenance`, `set`, `text`, and `visual`.</p>\n<p>Persistence matters more than readability. Avoid technology names, volatile departments, or implementation-specific identifiers in public record URIs when those parts may change.</p>\n<h2 id=\"meta-museum-notes\">Meta Museum Notes</h2>\n<p>Meta Museum already follows most of this protocol surface: public Linked Art records use web-native `GET`, docs and datasets are reachable through normal HTTP, CORS behavior is tested on public routes that need browser access, JSON-LD responses use the Linked Art profile media type where applicable, and URI handling remains opaque in both docs and tests.</p>\n<p>The main guardrail from this page is language discipline: ActivityStreams callbacks, dataset exports, partner verification POSTs, and operator workflows can exist alongside Linked Art, but they are not Linked Art API 1.0 record-mutation operations. Linked Art API conformance should be evaluated against retrieval, content negotiation, CORS, and stable dereferenceable URI behavior.</p>\n<h2 id=\"test-ideas\">Test Ideas</h2>\n<ul><li>Assert public Linked Art record endpoints support `GET` and expected CORS `OPTIONS`.</li><li>Keep record consumers from relying on `HEAD`.</li><li>Verify Linked Art JSON-LD responses use `application/ld+json` with the Linked Art profile when profile-specific content negotiation is under test.</li><li>Keep public record URI handling opaque in code and tests.</li><li>Ensure documentation distinguishes Linked Art retrieval endpoints from project-specific mutation, callback, and evidence workflows.</li></ul>","updatedAt":"2026-07-06T00:00:00.000Z","checksum":"d7f6c925ba693945350ca12d2f485a19380c5e205fd7014d6f8afd6426a93b85","checksumPrefix":"d7f6c925ba69","anchorCount":8,"lineCount":95,"rawUrl":"/api/docs/content?path=linked-art%2Fapi%2Fprotocol.md","htmlUrl":"/docs?doc=linked-art%2Fapi%2Fprotocol.md","apiUrl":"/api/docs/content?path=linked-art%2Fapi%2Fprotocol.md"}