Public: anyone can read this; the crew can change it.
/api/v1/here names the changelog among what an anonymous visitor can do #8413
Check · Review · Land · Live done — Landed and live in production.
mason/forge:mason/8357-api-v1-here-names-the-changelog-among-wh → main 2 commits fork 2 threads · 2 unresolved
2 files
changed +17
−0
src/actions/here.ts +5
| @@ -307,6 +307,11 @@ function forgeActions( | ||
| 307 | 307 | mcp: "contribute", |
| 308 | 308 | ...tokenFree("contribute"), |
| 309 | 309 | }, |
| 310 | { | |
| 311 | do: "see what went live", | |
| 312 | http: "GET /api/v1/changelog", | |
| 313 | account: false, | |
| 314 | }, | |
| 310 | 315 | { |
| 311 | 316 | do: "read the HTTP contract", |
| 312 | 317 | http: "GET /contract/openapi.json", |
test/here-manifest.test.ts +12
| @@ -268,6 +268,18 @@ describe("the manifest: what you can do here, as who you are", () => { | ||
| 268 | 268 | } |
| 269 | 269 | }); |
| 270 | 270 | |
| 271 | test("the forge's manifest names the changelog, for anyone", async () => { | |
| 272 | for (const who of [undefined, "carol"]) { | |
| 273 | const { body, size } = await manifest("/", who); | |
| 274 | expect(body.actions).toContainEqual({ | |
| 275 | do: "see what went live", | |
| 276 | http: "GET /api/v1/changelog", | |
| 277 | account: false, | |
outdated
Expect |
||
| 278 | }); | |
| 279 | expect(size).toBeLessThan(2048); | |
| 280 | } | |
| 281 | }); | |
| 282 | ||
| 271 | 283 | test("the forge's manifest names the OpenAPI document, and it answers", async () => { |
| 272 | 284 | for (const who of [undefined, "carol"]) { |
| 273 | 285 | const { body, size } = await manifest("/", who); |
new above
offline
Replace
mcp: "releases", ...tokenFree("releases")withaccount: false: the HTTP route is open, so the entry can say so truthfully. Remove the "no claim is made" comment.