@shoalrun/cli 0.1.0-alpha.12 → 0.1.0-alpha.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +45 -5
  3. package/agent-docs/.well-known/shoalrun/navigation/project-updates-50f26fe22670.txt +3 -1
  4. package/agent-docs/SNAPSHOT.json +5 -5
  5. package/agent-docs/api-docs/support.md +11 -10
  6. package/agent-docs/author/components.md +13 -1
  7. package/agent-docs/author/frontmatter-reference.md +28 -25
  8. package/agent-docs/author/frontmatter-reference.sections/choose-a-publication-and-visibility.md +3 -1
  9. package/agent-docs/author/frontmatter-reference.sections/control-output-details.md +3 -1
  10. package/agent-docs/author/frontmatter-reference.sections/global-defaults-and-enforced-values.md +3 -1
  11. package/agent-docs/author/frontmatter-reference.sections/html-markdown-and-agents.md +3 -1
  12. package/agent-docs/author/frontmatter-reference.sections/identify-and-route-a-page.md +3 -1
  13. package/agent-docs/author/frontmatter-reference.sections/point-agents-to-it.md +3 -1
  14. package/agent-docs/author/frontmatter-reference.sections/project-defined-fields.md +3 -1
  15. package/agent-docs/author/frontmatter-reference.sections/related-reading.md +3 -1
  16. package/agent-docs/author/frontmatter-reference.sections/use-the-local-files-while-authoring.md +3 -1
  17. package/agent-docs/author/frontmatter-reference.sections/when-the-files-update.md +3 -1
  18. package/agent-docs/author/frontmatter.md +5 -2
  19. package/agent-docs/author/frontmatter.sections/audience-badges.md +1 -1
  20. package/agent-docs/author/frontmatter.sections/give-deprecation-guidance.md +1 -1
  21. package/agent-docs/author/frontmatter.sections/global-defaults-and-enforced-values.md +1 -1
  22. package/agent-docs/author/frontmatter.sections/optional-native-fields.md +5 -2
  23. package/agent-docs/author/frontmatter.sections/publication-fields.md +1 -1
  24. package/agent-docs/author/frontmatter.sections/publishing-policy.md +1 -1
  25. package/agent-docs/author/frontmatter.sections/related-metadata-tasks.md +1 -1
  26. package/agent-docs/author/frontmatter.sections/related-reading.md +1 -1
  27. package/agent-docs/author/frontmatter.sections/required-after-inheritance.md +1 -1
  28. package/agent-docs/author/frontmatter.sections/seo-fields.md +1 -1
  29. package/agent-docs/author/frontmatter.sections/validation-rules.md +1 -1
  30. package/agent-docs/author/markdown-metadata.md +13 -5
  31. package/agent-docs/author/navigation.md +12 -1
  32. package/agent-docs/author/navigation.sections/arrange-authored-pages.md +1 -1
  33. package/agent-docs/author/navigation.sections/fill-an-api-tag-group.md +1 -1
  34. package/agent-docs/author/navigation.sections/hide-group-page-counts.md +12 -1
  35. package/agent-docs/author/navigation.sections/html-markdown-and-agents.md +1 -1
  36. package/agent-docs/author/navigation.sections/local-api-preview.md +1 -1
  37. package/agent-docs/author/navigation.sections/mix-guides-and-api-references.md +1 -1
  38. package/agent-docs/author/navigation.sections/optionally-split-a-large-menu-into-files.md +1 -1
  39. package/agent-docs/author/navigation.sections/reach-navigation-while-reading.md +1 -1
  40. package/agent-docs/author/navigation.sections/related-reading.md +1 -1
  41. package/agent-docs/author/navigation.sections/split-navigation-into-tabs.md +1 -1
  42. package/agent-docs/author/navigation.sections/subject-lifecycle-labels.md +1 -1
  43. package/agent-docs/author/templates.md +10 -2
  44. package/agent-docs/author/templates.sections/built-in-feature-templates.md +1 -1
  45. package/agent-docs/author/templates.sections/built-in-templates.md +1 -1
  46. package/agent-docs/author/templates.sections/choose-formatting-enforcement-for-your-project.md +1 -1
  47. package/agent-docs/author/templates.sections/create-or-edit-a-project-template.md +10 -2
  48. package/agent-docs/author/templates.sections/keep-the-four-shapes-distinct.md +1 -1
  49. package/agent-docs/author/templates.sections/project-added-templates.md +1 -1
  50. package/agent-docs/author/templates.sections/related-reading.md +1 -1
  51. package/agent-docs/author/templates.sections/scaffold-a-page.md +1 -1
  52. package/agent-docs/author/templates.sections/short-cli-and-derived-values.md +1 -1
  53. package/agent-docs/author/templates.sections/what-every-template-gives-you.md +1 -1
  54. package/agent-docs/author/workspace.md +7 -1
  55. package/agent-docs/author/writing-style.md +13 -1
  56. package/agent-docs/author/writing-style.sections/adapt-this-example.md +1 -1
  57. package/agent-docs/author/writing-style.sections/choose-components-by-reader-need.md +1 -1
  58. package/agent-docs/author/writing-style.sections/evidence-and-uncertainty.md +1 -1
  59. package/agent-docs/author/writing-style.sections/example-audience-and-scope.md +1 -1
  60. package/agent-docs/author/writing-style.sections/feature-availability.md +36 -0
  61. package/agent-docs/author/writing-style.sections/ingredients-recipes-and-cookbooks.md +1 -1
  62. package/agent-docs/author/writing-style.sections/page-purpose-and-structure.md +1 -1
  63. package/agent-docs/author/writing-style.sections/procedures-and-examples.md +1 -1
  64. package/agent-docs/author/writing-style.sections/related-reading.md +1 -1
  65. package/agent-docs/author/writing-style.sections/review-a-draft.md +1 -1
  66. package/agent-docs/author/writing-style.sections/reviewed-writing-examples.md +1 -1
  67. package/agent-docs/author/writing-style.sections/voice-and-explanations.md +1 -1
  68. package/agent-docs/changelog/2026-10-28.md +89 -0
  69. package/agent-docs/changelog.md +9 -1
  70. package/agent-docs/config/outputs.md +15 -11
  71. package/agent-docs/config/outputs.sections/exports.md +14 -11
  72. package/agent-docs/config/outputs.sections/metadata.md +1 -1
  73. package/agent-docs/config/outputs.sections/related-reading.md +1 -1
  74. package/agent-docs/content-delivery/agents.md +86 -0
  75. package/agent-docs/content-delivery/api.md +130 -0
  76. package/agent-docs/content-delivery/client.md +79 -0
  77. package/agent-docs/content-delivery/http-api/operations/get-content-representation-fa1d2e3f.md +394 -0
  78. package/agent-docs/content-delivery/http-api/operations/get-content-representation-head-4052375c.md +256 -0
  79. package/agent-docs/content-delivery/http-api/operations/get-content-resource-849f1c49.md +911 -0
  80. package/agent-docs/content-delivery/http-api/operations/get-content-resource-head-0a352acd.md +246 -0
  81. package/agent-docs/content-delivery/http-api/operations/list-content-resources-8e977ec7.md +913 -0
  82. package/agent-docs/content-delivery/http-api/operations/list-content-resources-head-b67cbad9.md +236 -0
  83. package/agent-docs/content-delivery/http-api.md +78 -0
  84. package/agent-docs/content-delivery/manifest.md +79 -0
  85. package/agent-docs/content-delivery/publish.md +72 -0
  86. package/agent-docs/content-delivery/render.md +73 -0
  87. package/agent-docs/content-delivery/rest.md +108 -0
  88. package/agent-docs/content-delivery/sections.md +110 -0
  89. package/agent-docs/content-delivery/select.md +100 -0
  90. package/agent-docs/content-delivery.md +79 -0
  91. package/agent-docs/documents.json +6748 -5073
  92. package/agent-docs/provenance.json +4 -4
  93. package/agent-docs/publish/content-export.md +32 -16
  94. package/agent-docs/publish/content-export.sections/assets-downloads-and-notices.md +3 -3
  95. package/agent-docs/publish/content-export.sections/check-the-result.md +2 -2
  96. package/agent-docs/publish/content-export.sections/export-selected-pages.md +12 -9
  97. package/agent-docs/publish/content-export.sections/inspect-the-manifest.md +5 -3
  98. package/agent-docs/publish/content-export.sections/prerequisites.md +3 -3
  99. package/agent-docs/publish/content-export.sections/related-reading.md +2 -2
  100. package/agent-docs/publish/content-export.sections/review-exported-api-material.md +3 -3
  101. package/agent-docs/publish/content-export.sections/try-the-help-drawer-example.md +3 -3
  102. package/agent-docs/publish/content-export.sections/upgrade-an-existing-integration.md +34 -0
  103. package/agent-docs/publish/content-export.sections/what-the-representations-retain.md +4 -4
  104. package/agent-docs/publish/mcp.md +3 -1
  105. package/agent-docs/publish/mcp.sections/check-budgets-and-errors.md +1 -1
  106. package/agent-docs/publish/mcp.sections/choose-the-documentation-source.md +1 -1
  107. package/agent-docs/publish/mcp.sections/configure-the-client.md +1 -1
  108. package/agent-docs/publish/mcp.sections/generate-a-vercel-endpoint.md +1 -1
  109. package/agent-docs/publish/mcp.sections/related-reading.md +3 -1
  110. package/agent-docs/publish/mcp.sections/search-then-read.md +1 -1
  111. package/agent-docs/publish/mcp.sections/serve-a-public-endpoint-on-node.md +1 -1
  112. package/agent-docs/publish/mcp.sections/verify-the-connection.md +1 -1
  113. package/agent-docs/publish/mcp.sections/why-offer-mcp-for-public-docs.md +1 -1
  114. package/agent-docs/publish/seo.md +16 -2
  115. package/agent-docs/publish/seo.sections/related-reading.md +28 -0
  116. package/agent-docs/publish/seo.sections/set-the-public-address.md +36 -0
  117. package/agent-docs/publish/seo.sections/what-agents-receive.md +28 -0
  118. package/agent-docs/publish/seo.sections/what-the-build-adds.md +42 -0
  119. package/agent-docs/publish/seo.sections/write-the-page-title-and-summary.md +43 -0
  120. package/agent-docs/search-index.json +1 -1
  121. package/agent-docs/styling/layouts.md +21 -3
  122. package/agent-docs/styling/layouts.sections/build-a-landing-page.md +6 -3
  123. package/agent-docs/styling/layouts.sections/build-a-splash-page.md +6 -3
  124. package/agent-docs/styling/layouts.sections/control-navigation-tabs.md +6 -3
  125. package/agent-docs/styling/layouts.sections/customize-the-hero.md +6 -3
  126. package/agent-docs/styling/layouts.sections/hero.md +6 -3
  127. package/agent-docs/styling/layouts.sections/hide-the-table-of-contents-or-give-content-more-room.md +54 -0
  128. package/agent-docs/styling/layouts.sections/html-markdown-and-agents.md +6 -3
  129. package/agent-docs/styling/layouts.sections/related-reading.md +6 -3
  130. package/dist/api.js +70 -3
  131. package/dist/authoring-hints.d.ts +3 -0
  132. package/dist/authoring-hints.js +35 -0
  133. package/dist/authoring-project.d.ts +1 -1
  134. package/dist/authoring-project.js +2 -0
  135. package/dist/authoring-validation.js +2 -0
  136. package/dist/code-samples.js +22 -11
  137. package/dist/compiler-config.d.ts +1 -0
  138. package/dist/compiler-config.js +13 -0
  139. package/dist/compiler.js +2 -1
  140. package/dist/component-names.js +1 -1
  141. package/dist/component-transform.js +7 -1
  142. package/dist/content-delivery-contract.d.ts +108 -0
  143. package/dist/content-delivery-contract.js +15 -0
  144. package/dist/content-delivery-transport.d.ts +3 -0
  145. package/dist/content-delivery-transport.js +47 -0
  146. package/dist/content-delivery-validation.d.ts +7 -0
  147. package/dist/content-delivery-validation.js +122 -0
  148. package/dist/content-delivery.d.ts +21 -0
  149. package/dist/content-delivery.js +119 -0
  150. package/dist/content-export-anchors.d.ts +11 -0
  151. package/dist/content-export-anchors.js +79 -0
  152. package/dist/content-export-command.d.ts +4 -2
  153. package/dist/content-export-command.js +15 -2
  154. package/dist/content-export-comparison.d.ts +16 -0
  155. package/dist/content-export-comparison.js +48 -0
  156. package/dist/content-export-config.d.ts +17 -0
  157. package/dist/content-export-config.js +47 -3
  158. package/dist/content-export-render.js +20 -1
  159. package/dist/content-export.d.ts +5 -1
  160. package/dist/content-export.js +193 -40
  161. package/dist/content-mount.d.ts +11 -0
  162. package/dist/content-mount.js +73 -0
  163. package/dist/content-rest-client.d.ts +12 -0
  164. package/dist/content-rest-client.js +162 -0
  165. package/dist/content-rest-contract.d.ts +27 -0
  166. package/dist/content-rest-contract.js +9 -0
  167. package/dist/content-rest-server.d.ts +7 -0
  168. package/dist/content-rest-server.js +99 -0
  169. package/dist/content-source.d.ts +3 -1
  170. package/dist/frontmatter.js +8 -7
  171. package/dist/html-renderer.js +25 -0
  172. package/dist/markdown-sections.d.ts +2 -1
  173. package/dist/markdown-sections.js +8 -18
  174. package/dist/page-renderer.js +5 -3
  175. package/dist/publication-plan.js +2 -1
  176. package/dist/scaffold-placeholders.d.ts +2 -0
  177. package/dist/scaffold-placeholders.js +19 -0
  178. package/dist/section-identity.d.ts +24 -0
  179. package/dist/section-identity.js +137 -0
  180. package/examples/content-delivery/README.md +87 -0
  181. package/examples/content-delivery/app.js +91 -0
  182. package/examples/content-delivery/content/billing.mdx +22 -0
  183. package/examples/content-delivery/docs.config.yaml +36 -0
  184. package/examples/content-delivery/index.html +25 -0
  185. package/examples/content-delivery/preview.mjs +86 -0
  186. package/examples/content-delivery/snippets/refund-window.mdx +3 -0
  187. package/examples/help-drawer/README.md +2 -2
  188. package/examples/help-drawer/app.js +3 -3
  189. package/package.json +6 -3
  190. package/schemas/content-export.schema.json +469 -33
  191. package/schemas/content-rest.openapi.json +1627 -0
  192. package/skills/shoalrun-author/SKILL.md +2 -0
  193. package/styles/site.css +9 -4
@@ -0,0 +1,911 @@
1
+ ---
2
+ id: reference.content-rest.getContentResource
3
+ title: Read resource metadata
4
+ summary: GET /resources/{key}
5
+ type: api-reference
6
+ area: api
7
+ subarea: api-reference
8
+ canonical: /content-delivery/http-api/operations/get-content-resource-849f1c49
9
+ ---
10
+
11
+ # Read resource metadata
12
+
13
+ > Documentation index: [llms.min.txt](https://www.shoalrun.com/llms.min.txt) · Document manifest: [documents.json](https://www.shoalrun.com/documents.json)
14
+
15
+ Navigation section: [Reference](https://www.shoalrun.com/.well-known/shoalrun/navigation/reference-tab-50f26fe22670.txt) (ID: reference-tab). [All sections and pages](https://www.shoalrun.com/llms.min.txt)
16
+
17
+ Breadcrumbs: [Reference](https://www.shoalrun.com/cli.md) > Content delivery > Content REST API > Other > Read resource metadata
18
+
19
+ **Updated: 2026-09-27.**
20
+
21
+ This reference is generated from the OpenAPI description. It shows the operation contract; follow any related guides below for task steps and context.
22
+
23
+ OpenAPI for this operation: [Download JSON](https://www.shoalrun.com/api/operations/production/current/en/content-rest-getcontentresource-4b468f0730abbf5c55d4ff2f678fc6f5f742e2032607aeae96fcc11fb62addb4.json).
24
+
25
+ ## GET /resources/{key}
26
+
27
+ Read resource metadata
28
+
29
+ Query parameters are single-valued; unknown or duplicate parameters are rejected. Publication and revision checks run before conditional ETag checks. No pagination, search, writes, authentication, or cross-origin policy is supplied by this reference adapter.
30
+
31
+ ### Servers
32
+
33
+ `/content/v1`
34
+
35
+ ### Parameters
36
+
37
+ #### channel (query)
38
+
39
+ Required
40
+
41
+ Exact publication channel. No default or fallback.
42
+
43
+ string; minLength: 1; maxLength: 2048
44
+
45
+ **Default example**: `"production"`
46
+
47
+ #### version (query)
48
+
49
+ Required
50
+
51
+ Exact publication version. No default or fallback.
52
+
53
+ string; minLength: 1; maxLength: 2048
54
+
55
+ **Default example**: `"current"`
56
+
57
+ #### language (query)
58
+
59
+ Required
60
+
61
+ Exact publication language. No default or fallback.
62
+
63
+ string; minLength: 1; maxLength: 2048
64
+
65
+ **Default example**: `"en"`
66
+
67
+ #### revision (query)
68
+
69
+ Required
70
+
71
+ Exact revision returned by the list endpoint. A different revision returns 409; it never silently reads newer content.
72
+
73
+ string; pattern: ^\[a-f0-9]{64}$
74
+
75
+ **Default example**: `"0770e6d70db51967fac8dcc7bb4ff5a5bff87378eb2e2bbb63dea93d090c82e8"`
76
+
77
+ #### key (path)
78
+
79
+ Required
80
+
81
+ Opaque stable typed-reference key. Use the returned key. It is k\_ followed by unpadded base64url of UTF-8 JSON for \["page",documentId], \["section",documentId,sectionId], or \["snippet",id]. Publication and revision are separate selectors.
82
+
83
+ string; pattern: ^k\_\[A-Za-z0-9\_-]+$
84
+
85
+ **Default example**: `"k_WyJwYWdlIiwiZ3VpZGUuYmlsbGluZyJd"`
86
+
87
+ #### If-None-Match (header)
88
+
89
+ Optional
90
+
91
+ An ETag, comma-separated ETags, or \*. Weak comparison is supported for GET and HEAD.
92
+
93
+ string
94
+
95
+ ### Example request
96
+
97
+ ```bash
98
+ curl --request GET \
99
+ --url 'https://YOUR_API_HOST/content/v1/resources/YOUR_KEY?channel=YOUR_CHANNEL&version=YOUR_VERSION&language=YOUR_LANGUAGE&revision=YOUR_REVISION'
100
+ ```
101
+
102
+ ### Responses
103
+
104
+ #### 200: OK
105
+
106
+ `application/json`
107
+
108
+ The selected resource or inventory.
109
+
110
+ ##### Response headers
111
+
112
+ ###### ETag
113
+
114
+ Optional
115
+
116
+ Strong SHA-256 validator of the exact UTF-8 response bytes.
117
+
118
+ Serialization: simple; explode: false.
119
+
120
+ string
121
+
122
+ ###### Cache-Control
123
+
124
+ Optional
125
+
126
+ Unpinned discovery uses no-cache. Revision-pinned success uses public, max-age=31536000, immutable. Errors use no-store.
127
+
128
+ Serialization: simple; explode: false.
129
+
130
+ string
131
+
132
+ 5 properties
133
+
134
+ - `schemaVersion` `number` **always present** 
135
+
136
+ const: 1
137
+
138
+ - `revision` `string` **always present** 
139
+
140
+ pattern: ^\[a-f0-9]{64}$
141
+
142
+ - `publication` `object` **always present** 
143
+
144
+ 3 properties
145
+
146
+ - `channel` `string` **always present** 
147
+
148
+ minLength: 1
149
+
150
+ - `version` `string` **always present** 
151
+
152
+ minLength: 1
153
+
154
+ - `language` `string` **always present** 
155
+
156
+ minLength: 1
157
+
158
+ Additional properties: not allowed.
159
+
160
+ - `key` `string` **always present** 
161
+
162
+ Opaque stable typed-reference key. Use the returned key. It is k\_ followed by unpadded base64url of UTF-8 JSON for \["page",documentId], \["section",documentId,sectionId], or \["snippet",id]. Publication and revision are separate selectors.
163
+
164
+ pattern: ^k\_\[A-Za-z0-9\_-]+$
165
+
166
+ - `resource` `object` **always present** 
167
+
168
+ 10 properties
169
+
170
+ - `publication` `object` **always present** 
171
+
172
+ 3 properties
173
+
174
+ - `channel` `string` **always present** 
175
+
176
+ minLength: 1
177
+
178
+ - `version` `string` **always present** 
179
+
180
+ minLength: 1
181
+
182
+ - `language` `string` **always present** 
183
+
184
+ minLength: 1
185
+
186
+ Additional properties: not allowed.
187
+
188
+ - `title` `string` **always present** 
189
+
190
+ - `summary` `string` **always present** 
191
+
192
+ - `type` `string` **always present** 
193
+
194
+ - `canonicalUrl` `string` **may be absent** 
195
+
196
+ format: uri
197
+
198
+ - `representations` `object` **always present** 
199
+
200
+ minProperties: 1
201
+
202
+ 2 properties
203
+
204
+ - `html` `object` **may be absent** 
205
+
206
+ 6 properties
207
+
208
+ - `path` `string` **always present** 
209
+
210
+ pattern: ^(?:NOTICES\\.txt|(?:content|assets)/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+(?:/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+)\*)$
211
+
212
+ - `bytes` `integer` **always present** 
213
+
214
+ minimum: 0
215
+
216
+ - `digest` `string` **always present** 
217
+
218
+ pattern: ^\[a-f0-9]{64}$
219
+
220
+ - `mediaType` `string` **always present** 
221
+
222
+ - `anchors` `list of object` **always present** 
223
+
224
+ Array items:
225
+
226
+ object
227
+
228
+ 3 properties
229
+
230
+ - `id` `string` **always present** 
231
+
232
+ - `exportedId` `string` **always present** 
233
+
234
+ - `title` `string` **may be absent** 
235
+
236
+ Additional properties: not allowed.
237
+
238
+ - `links` `list of one of several types` **always present** 
239
+
240
+ Array items:
241
+
242
+ The response has exactly one of these shapes:
243
+
244
+ **Shape 1** · 6 properties
245
+
246
+ object
247
+
248
+ 6 properties
249
+
250
+ - `key` `string` **always present** 
251
+
252
+ - `kind` `enum<string>` **always present**&#x20;
253
+
254
+ Available options: `"resource"`
255
+
256
+ - `href` `string` **always present**&#x20;
257
+
258
+ - `fragment` `string` **may be absent**&#x20;
259
+
260
+ - `query` `string` **may be absent**&#x20;
261
+
262
+ - `ref` `one of several types` **always present**&#x20;
263
+
264
+ The response has exactly one of these shapes:
265
+
266
+ **Shape 1** · 2 properties
267
+
268
+ object
269
+
270
+ 2 properties
271
+
272
+ - `kind` `string` **always present**&#x20;
273
+
274
+ const: "page"
275
+
276
+ - `documentId` `string` **always present**&#x20;
277
+
278
+ minLength: 1
279
+
280
+ Additional properties: not allowed.
281
+
282
+ **Shape 2** · 3 properties
283
+
284
+ object
285
+
286
+ 3 properties
287
+
288
+ - `kind` `string` **always present**&#x20;
289
+
290
+ const: "section"
291
+
292
+ - `documentId` `string` **always present**&#x20;
293
+
294
+ minLength: 1
295
+
296
+ - `sectionId` `string` **always present**&#x20;
297
+
298
+ pattern: ^\[a-z0-9]\[a-z0-9-]{0,511}$
299
+
300
+ Additional properties: not allowed.
301
+
302
+ **Shape 3** · 2 properties
303
+
304
+ object
305
+
306
+ 2 properties
307
+
308
+ - `kind` `string` **always present**&#x20;
309
+
310
+ const: "snippet"
311
+
312
+ - `id` `string` **always present**&#x20;
313
+
314
+ pattern: ^\[A-Za-z\_]\[A-Za-z0-9\_.-]\*$
315
+
316
+ Additional properties: not allowed.
317
+
318
+ Additional properties: not allowed.
319
+
320
+ **Shape 2** · 6 properties
321
+
322
+ object
323
+
324
+ 6 properties
325
+
326
+ - `key` `string` **always present**&#x20;
327
+
328
+ - `kind` `enum<string>` **always present**&#x20;
329
+
330
+ Available options: `"asset"`
331
+
332
+ - `href` `string` **always present**&#x20;
333
+
334
+ - `fragment` `string` **may be absent**&#x20;
335
+
336
+ - `query` `string` **may be absent**&#x20;
337
+
338
+ - `asset` `string` **always present**&#x20;
339
+
340
+ pattern: ^(?:NOTICES\\.txt|(?:content|assets)/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+(?:/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+)\*)$
341
+
342
+ Additional properties: not allowed.
343
+
344
+ **Shape 3** · 5 properties
345
+
346
+ object
347
+
348
+ 5 properties
349
+
350
+ - `key` `string` **always present**&#x20;
351
+
352
+ - `kind` `enum<string>` **always present**&#x20;
353
+
354
+ Available options: `"canonical"`, `"external"`
355
+
356
+ - `href` `string` **always present**&#x20;
357
+
358
+ - `fragment` `string` **may be absent**&#x20;
359
+
360
+ - `query` `string` **may be absent**&#x20;
361
+
362
+ Additional properties: not allowed.
363
+
364
+ Additional properties: not allowed.
365
+
366
+ - `markdown` `object` **may be absent**&#x20;
367
+
368
+ 6 properties
369
+
370
+ - `path` `string` **always present**&#x20;
371
+
372
+ pattern: ^(?:NOTICES\\.txt|(?:content|assets)/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+(?:/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+)\*)$
373
+
374
+ - `bytes` `integer` **always present**&#x20;
375
+
376
+ minimum: 0
377
+
378
+ - `digest` `string` **always present**&#x20;
379
+
380
+ pattern: ^\[a-f0-9]{64}$
381
+
382
+ - `mediaType` `string` **always present**&#x20;
383
+
384
+ - `anchors` `list of object` **always present**&#x20;
385
+
386
+ Array items:
387
+
388
+ object
389
+
390
+ 3 properties
391
+
392
+ - `id` `string` **always present**&#x20;
393
+
394
+ - `exportedId` `string` **always present**&#x20;
395
+
396
+ - `title` `string` **may be absent**&#x20;
397
+
398
+ Additional properties: not allowed.
399
+
400
+ - `links` `list of one of several types` **always present**&#x20;
401
+
402
+ Array items:
403
+
404
+ The response has exactly one of these shapes:
405
+
406
+ **Shape 1** · 6 properties
407
+
408
+ object
409
+
410
+ 6 properties
411
+
412
+ - `key` `string` **always present**&#x20;
413
+
414
+ - `kind` `enum<string>` **always present**&#x20;
415
+
416
+ Available options: `"resource"`
417
+
418
+ - `href` `string` **always present**&#x20;
419
+
420
+ - `fragment` `string` **may be absent**&#x20;
421
+
422
+ - `query` `string` **may be absent**&#x20;
423
+
424
+ - `ref` `one of several types` **always present**&#x20;
425
+
426
+ The response has exactly one of these shapes:
427
+
428
+ **Shape 1** · 2 properties
429
+
430
+ object
431
+
432
+ 2 properties
433
+
434
+ - `kind` `string` **always present**&#x20;
435
+
436
+ const: "page"
437
+
438
+ - `documentId` `string` **always present**&#x20;
439
+
440
+ minLength: 1
441
+
442
+ Additional properties: not allowed.
443
+
444
+ **Shape 2** · 3 properties
445
+
446
+ object
447
+
448
+ 3 properties
449
+
450
+ - `kind` `string` **always present**&#x20;
451
+
452
+ const: "section"
453
+
454
+ - `documentId` `string` **always present**&#x20;
455
+
456
+ minLength: 1
457
+
458
+ - `sectionId` `string` **always present**&#x20;
459
+
460
+ pattern: ^\[a-z0-9]\[a-z0-9-]{0,511}$
461
+
462
+ Additional properties: not allowed.
463
+
464
+ **Shape 3** · 2 properties
465
+
466
+ object
467
+
468
+ 2 properties
469
+
470
+ - `kind` `string` **always present**&#x20;
471
+
472
+ const: "snippet"
473
+
474
+ - `id` `string` **always present**&#x20;
475
+
476
+ pattern: ^\[A-Za-z\_]\[A-Za-z0-9\_.-]\*$
477
+
478
+ Additional properties: not allowed.
479
+
480
+ Additional properties: not allowed.
481
+
482
+ **Shape 2** · 6 properties
483
+
484
+ object
485
+
486
+ 6 properties
487
+
488
+ - `key` `string` **always present**&#x20;
489
+
490
+ - `kind` `enum<string>` **always present**&#x20;
491
+
492
+ Available options: `"asset"`
493
+
494
+ - `href` `string` **always present**&#x20;
495
+
496
+ - `fragment` `string` **may be absent**&#x20;
497
+
498
+ - `query` `string` **may be absent**&#x20;
499
+
500
+ - `asset` `string` **always present**&#x20;
501
+
502
+ pattern: ^(?:NOTICES\\.txt|(?:content|assets)/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+(?:/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+)\*)$
503
+
504
+ Additional properties: not allowed.
505
+
506
+ **Shape 3** · 5 properties
507
+
508
+ object
509
+
510
+ 5 properties
511
+
512
+ - `key` `string` **always present**&#x20;
513
+
514
+ - `kind` `enum<string>` **always present**&#x20;
515
+
516
+ Available options: `"canonical"`, `"external"`
517
+
518
+ - `href` `string` **always present**&#x20;
519
+
520
+ - `fragment` `string` **may be absent**&#x20;
521
+
522
+ - `query` `string` **may be absent**&#x20;
523
+
524
+ Additional properties: not allowed.
525
+
526
+ Additional properties: not allowed.
527
+
528
+ Additional properties: not allowed.
529
+
530
+ - `assets` `list of string` **always present**&#x20;
531
+
532
+ uniqueItems: true
533
+
534
+ Array items:
535
+
536
+ string; pattern: ^(?:NOTICES\\.txt|(?:content|assets)/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+(?:/(?!\\.{1,2}(?:/|$))\[A-Za-z0-9\_.-]+)\*)$
537
+
538
+ - `externalDependencies` `list of object` **always present**&#x20;
539
+
540
+ Array items:
541
+
542
+ object
543
+
544
+ 2 properties
545
+
546
+ - `url` `string` **always present**&#x20;
547
+
548
+ format: uri
549
+
550
+ - `kind` `string` **always present**&#x20;
551
+
552
+ const: "image"
553
+
554
+ Additional properties: not allowed.
555
+
556
+ - `ref` `one of several types` **always present**&#x20;
557
+
558
+ The response has exactly one of these shapes:
559
+
560
+ **Shape 1** · 2 properties
561
+
562
+ object
563
+
564
+ 2 properties
565
+
566
+ - `kind` `string` **always present**&#x20;
567
+
568
+ const: "page"
569
+
570
+ - `documentId` `string` **always present**&#x20;
571
+
572
+ minLength: 1
573
+
574
+ Additional properties: not allowed.
575
+
576
+ **Shape 2** · 3 properties
577
+
578
+ object
579
+
580
+ 3 properties
581
+
582
+ - `kind` `string` **always present**&#x20;
583
+
584
+ const: "section"
585
+
586
+ - `documentId` `string` **always present**&#x20;
587
+
588
+ minLength: 1
589
+
590
+ - `sectionId` `string` **always present**&#x20;
591
+
592
+ pattern: ^\[a-z0-9]\[a-z0-9-]{0,511}$
593
+
594
+ Additional properties: not allowed.
595
+
596
+ **Shape 3** · 2 properties
597
+
598
+ object
599
+
600
+ 2 properties
601
+
602
+ - `kind` `string` **always present**&#x20;
603
+
604
+ const: "snippet"
605
+
606
+ - `id` `string` **always present**&#x20;
607
+
608
+ pattern: ^\[A-Za-z\_]\[A-Za-z0-9\_.-]\*$
609
+
610
+ Additional properties: not allowed.
611
+
612
+ - `source` `object` **may be absent**&#x20;
613
+
614
+ minProperties: 1
615
+
616
+ 3 properties
617
+
618
+ - `documentId` `string` **may be absent**&#x20;
619
+
620
+ minLength: 1
621
+
622
+ - `snippetId` `string` **may be absent**&#x20;
623
+
624
+ minLength: 1
625
+
626
+ - `valuesDigest` `string` **may be absent**&#x20;
627
+
628
+ pattern: ^\[a-f0-9]{64}$
629
+
630
+ Additional properties: not allowed.
631
+
632
+ Additional properties: not allowed.
633
+
634
+ Additional properties: not allowed.
635
+
636
+ ##### Example: Illustrative content; discover keys and revision from your own host.
637
+
638
+ Key: illustrative. Location: response 200; application/json. Authored in OpenAPI.
639
+
640
+ ```json
641
+ {
642
+ "schemaVersion": 1,
643
+ "revision": "0770e6d70db51967fac8dcc7bb4ff5a5bff87378eb2e2bbb63dea93d090c82e8",
644
+ "publication": {
645
+ "channel": "production",
646
+ "version": "current",
647
+ "language": "en"
648
+ },
649
+ "key": "k_WyJwYWdlIiwiZ3VpZGUuYmlsbGluZyJd",
650
+ "resource": {
651
+ "ref": {
652
+ "kind": "page",
653
+ "documentId": "guide.billing"
654
+ },
655
+ "publication": {
656
+ "channel": "production",
657
+ "version": "current",
658
+ "language": "en"
659
+ },
660
+ "title": "Billing",
661
+ "summary": "Contact billing support.",
662
+ "type": "guide",
663
+ "representations": {
664
+ "html": {
665
+ "path": "content/resource-example.html",
666
+ "mediaType": "text/html",
667
+ "bytes": 24,
668
+ "digest": "0a97b73701c659be016f97a7be571c14c1cdad440cf79dfc1c8a0238a8b4787f",
669
+ "anchors": [],
670
+ "links": []
671
+ },
672
+ "markdown": {
673
+ "path": "content/resource-example.md",
674
+ "mediaType": "text/markdown",
675
+ "bytes": 17,
676
+ "digest": "d37729e92d86a1133926632326a5d61a3e65610a169d65211726924af02dac5c",
677
+ "anchors": [],
678
+ "links": []
679
+ }
680
+ },
681
+ "assets": [],
682
+ "externalDependencies": []
683
+ }
684
+ }
685
+ ```
686
+
687
+ #### 304: Not Modified
688
+
689
+ The validated selected response matches If-None-Match. No response body.
690
+
691
+ ##### Response headers
692
+
693
+ ###### ETag
694
+
695
+ Optional
696
+
697
+ Strong SHA-256 validator of the exact UTF-8 response bytes.
698
+
699
+ Serialization: simple; explode: false.
700
+
701
+ string
702
+
703
+ ###### Cache-Control
704
+
705
+ Optional
706
+
707
+ Unpinned discovery uses no-cache. Revision-pinned success uses public, max-age=31536000, immutable. Errors use no-store.
708
+
709
+ Serialization: simple; explode: false.
710
+
711
+ string
712
+
713
+ #### 400: Bad Request
714
+
715
+ `application/json`
716
+
717
+ invalid_request: missing, duplicate, unknown, or malformed query parameter.
718
+
719
+ ##### Response headers
720
+
721
+ ###### Cache-Control
722
+
723
+ Optional
724
+
725
+ Serialization: simple; explode: false.
726
+
727
+ const: "no-store"
728
+
729
+ 1 property
730
+
731
+ - `error` `object` **always present**&#x20;
732
+
733
+ 2 properties
734
+
735
+ - `code` `enum<string>` **always present**&#x20;
736
+
737
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
738
+
739
+ - `message` `string` **always present**&#x20;
740
+
741
+ Additional properties: not allowed.
742
+
743
+ Additional properties: not allowed.
744
+
745
+ #### 404: Not Found
746
+
747
+ `application/json`
748
+
749
+ not_found: unknown publication, resource, or route.
750
+
751
+ ##### Response headers
752
+
753
+ ###### Cache-Control
754
+
755
+ Optional
756
+
757
+ Serialization: simple; explode: false.
758
+
759
+ const: "no-store"
760
+
761
+ 1 property
762
+
763
+ - `error` `object` **always present**&#x20;
764
+
765
+ 2 properties
766
+
767
+ - `code` `enum<string>` **always present**&#x20;
768
+
769
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
770
+
771
+ - `message` `string` **always present**&#x20;
772
+
773
+ Additional properties: not allowed.
774
+
775
+ Additional properties: not allowed.
776
+
777
+ #### 405: Method Not Allowed
778
+
779
+ `application/json`
780
+
781
+ method_not_allowed: only GET and HEAD are supported; Allow lists both.
782
+
783
+ ##### Response headers
784
+
785
+ ###### Cache-Control
786
+
787
+ Optional
788
+
789
+ Serialization: simple; explode: false.
790
+
791
+ const: "no-store"
792
+
793
+ ###### Allow
794
+
795
+ Optional
796
+
797
+ Serialization: simple; explode: false.
798
+
799
+ const: "GET, HEAD"
800
+
801
+ 1 property
802
+
803
+ - `error` `object` **always present**&#x20;
804
+
805
+ 2 properties
806
+
807
+ - `code` `enum<string>` **always present**&#x20;
808
+
809
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
810
+
811
+ - `message` `string` **always present**&#x20;
812
+
813
+ Additional properties: not allowed.
814
+
815
+ Additional properties: not allowed.
816
+
817
+ #### 406: Not Acceptable
818
+
819
+ `application/json`
820
+
821
+ unsupported_format: unsupported or unavailable representation format.
822
+
823
+ ##### Response headers
824
+
825
+ ###### Cache-Control
826
+
827
+ Optional
828
+
829
+ Serialization: simple; explode: false.
830
+
831
+ const: "no-store"
832
+
833
+ 1 property
834
+
835
+ - `error` `object` **always present**&#x20;
836
+
837
+ 2 properties
838
+
839
+ - `code` `enum<string>` **always present**&#x20;
840
+
841
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
842
+
843
+ - `message` `string` **always present**&#x20;
844
+
845
+ Additional properties: not allowed.
846
+
847
+ Additional properties: not allowed.
848
+
849
+ #### 409: Conflict
850
+
851
+ `application/json`
852
+
853
+ stale_revision: revision unavailable, or source bytes no longer match the pinned snapshot.
854
+
855
+ ##### Response headers
856
+
857
+ ###### Cache-Control
858
+
859
+ Optional
860
+
861
+ Serialization: simple; explode: false.
862
+
863
+ const: "no-store"
864
+
865
+ 1 property
866
+
867
+ - `error` `object` **always present**&#x20;
868
+
869
+ 2 properties
870
+
871
+ - `code` `enum<string>` **always present**&#x20;
872
+
873
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
874
+
875
+ - `message` `string` **always present**&#x20;
876
+
877
+ Additional properties: not allowed.
878
+
879
+ Additional properties: not allowed.
880
+
881
+ #### 500: Internal Server Error
882
+
883
+ `application/json`
884
+
885
+ internal_error: the source could not complete the request.
886
+
887
+ ##### Response headers
888
+
889
+ ###### Cache-Control
890
+
891
+ Optional
892
+
893
+ Serialization: simple; explode: false.
894
+
895
+ const: "no-store"
896
+
897
+ 1 property
898
+
899
+ - `error` `object` **always present**&#x20;
900
+
901
+ 2 properties
902
+
903
+ - `code` `enum<string>` **always present**&#x20;
904
+
905
+ Available options: `"invalid_request"`, `"not_found"`, `"unsupported_format"`, `"stale_revision"`, `"method_not_allowed"`, `"internal_error"`
906
+
907
+ - `message` `string` **always present**&#x20;
908
+
909
+ Additional properties: not allowed.
910
+
911
+ Additional properties: not allowed.