Changelog
Notable, developer-facing changes to the Phosra API, the platform conventions, and
the published SDKs — newest first. API version v1 is additive: entries here add
capability or documentation, they do not break existing v1 calls.
Version and date facts on this page are drawn from the public npm registry and the live sandbox census. For how versions pin together, see Versioning. For the SDK packages, see the SDK overview.
- Partial removal is now explicit — Link
0.7.53wires signed v2 platform release events through the Golden provider server. Removing one child from a shared platform profile acknowledges that child withnativeRestored: false; the remaining children and the profile's effective controls stay active. - Final release stays distinct — only removing the last authorized child
may complete the aggregate release with
nativeRestored: true. Provider applications receive and persist the signed platform result without adding app-specific release parsing. - Recovery replays proof, not policy — Gatekeeper
0.8.65lets a later signed parent recovery check resend the identical immutable release event if its original delivery exhausted. It does not reopen the child, recompute the shared profile, or disturb retained siblings. - Synthetic qualification — the candidate was exercised against the Custo ↔ Notflix reference-fixture lifecycle, including terminal test-delivery history and retry recovery. This is not customer or production-network evidence.
- Durable endpoint minting —
POST /api/v1/enforcement-endpointsnow honors the Link SDK's canonicalrequest_idlane. A retry with the same request authority returns200plusOCSS-Replay: originaland the byte-identical initial result without creating a second binding; changed authority under the same ID returns409. - Encrypted recovery — endpoint labels and connect secrets used for durable recovery are protected with a dedicated AES-256-GCM key and bound to the caller, request ID, and request digest. They are never stored as plaintext and the legacy cleartext-once lane remains compatible.
- Reference-fixture fix — resolves the post-consent
MINT_PHASE_ERRORobserved in the synthetic Custo → Notflix walkthrough. The sandbox browser ceremony was rerun after the change.
- Evaluation manifest work — signed-manifest and client-directory shapes were exercised internally. This is not a public production routing endpoint.
- Private evaluation candidates — Link
0.7.10, Gatekeeper0.8.7, and OCSS0.1.6were private test artifacts; public npm remained Link0.6.1, Gatekeeper0.7.0, and OCSS0.1.5. - Synthetic release gate — qualification used test accounts, reference applications, screenshots, traces, and a shared-profile fixture. No customer deployment or real-platform adoption is implied.
@phosra/gatekeeper0.3.0— EXT-04 §3.6 connect state-machine: a newConnectSessionStore+gk.mintConnectState()lethandleConnectvalidate the connectstate(single-use / TTL / session-binding) and atomically bind eachendpoint_id_labelto the right child (unknown/expired state →404; a label already bound to a different child →409). Breaking:handleConnectnow fails closed (503) whenconnectSecretis unset — setallowUnauthenticatedConnect: truefor a trusted-network deployment to restore the prior passthrough.@openchildsafety/ocss0.1.4— newreceiptToWire()export: decodes a Receipt'sUint8Arraybody to nested JSON so a hand-rolled §8.3.8 confirmation POST is accepted (the raw confirm path works with one extra call;verdict.confirm()already did this internally).
Pin exact (0.x minors may break) — see SDK versioning.
New reference pages for the cross-cutting platform contracts, each verified against the live sandbox:
- Rate limits — the
100 req/mindefault, theX-RateLimit-*+Retry-Afterheaders, and copy-paste backoff in four languages. - Pagination — the two list shapes (offset arrays on the product
plane,
next_cursorenvelopes on the census rails) and how to walk each. - Idempotency — where the key lives (there is no
Idempotency-Keyheader), the200 + OCSS-Replay: originalfaithful-replay contract, and the409 replaypitfall. - Versioning — the API path,
OCSS-v1.0-pre, dated Annex B editions,ETag/If-None-Match, and exact SDK pinning.
@openchildsafety/ocss0.1.3— the OCSS protocol + RFC 9421 request signer (signRequest) used across the signed examples in these docs.@phosra/link0.1.2— parent-facing connect flow.@phosra/gatekeeper0.2.2— tighten-only enforcement overlay.
Pin exact (0.x minors may break) — see SDK versioning.
- Self-serve developer orgs — sign up, auto-provision a dev org, and mint a
phosra_test_key with no sales call. See Create an account. @phosra/sdk0.1.0— the first published server SDK line.@phosra/cli0.2.0and@phosra/mcp0.4.0published.- Free-tier orgs default to 100 requests/minute (Rate limits).
- First release of the
@phosra/mcpMCP server, exposing Phosra tools to agents. See the MCP server SDK.
Current platform conventions
These are the standing contracts of the v1 surface, not point-in-time releases.
They are documented and verified on their own pages:
| Convention | Value | Reference |
|---|---|---|
| API version | /api/v1 (in the path) | Versioning |
| OCSS spec version | OCSS-v1.0-pre | Versioning |
| Default rate limit | 100 req / 60 s (free tier) | Rate limits |
| Idempotency marker | OCSS-Replay: original on faithful replays | Idempotency |
| Error classes | closed set of seven | Errors |
Looking for infrastructure status and incidents rather than API changes? That lives on the status page.