{"meta":{"dataset_id":"praxikon:sys:registry:dataset:ai-act-implementation-graph","dataset_version":"2.1.0","schema_version":"1.4.0","openapi_version":"1.11.0-beta.1","documentation":"https://www.praxikon.com/api/v1/openapi"},"data":{"release":{"dataset_id":"praxikon:sys:registry:dataset:ai-act-implementation-graph","dataset_version":"2.1.0","schema_version":"1.4.0","openapi_version":"1.11.0-beta.1","known_at":"2026-08-14T00:00:00.000Z","effective_at":"2026-08-08T00:00:00.000Z","last_reviewed_at":"2026-08-08T00:00:00.000Z","append_only":true,"licence":"https://www.praxikon.com/nl/legal/terms","graph_fingerprint_sha256":"31db5e79ef22bc948969d8916d780116fc4b4e3df151100fcb9a03e06d45428c","fingerprint_basis":"sha256 over the canonical JSON of the whole dataset, including its metadata. It identifies the release as a whole and is not a citation anchor: for a citation, use the payload_hash_sha256 of the object version."},"objects":{"entities":424,"entity_versions":425,"sources":13,"by_type":{"action":37,"actor":11,"change":20,"control":31,"definition":64,"evidence":36,"example":121,"guidance":38,"obligation":27,"standard":12,"template":27},"counted_over":"Every entity in the published dataset and every version of it, independent of a temporal pin. A query with an effective_at and a known_at returns at most one version per object and therefore fewer objects than this count."},"release_guards":{"status":"passed","command":"npm run lint:content","recorded_at":"2026-08-21T18:42:37.063Z","guard_count":79,"dataset_version":"2.1.0","schema_version":"1.4.0","basis":"The recorded run covers this exact dataset: the fingerprint written when the guard chain completed equals the fingerprint of the dataset served here. The chain runs before the application is built and a failing guard fails the build, so a release that is served has passed it.","covers":["the shape and the invariants of the implementation graph, including the closed set of obligations and the pinned calendar anchors","the recomputation of every payload hash and every source record hash","the review status of every version, which fails the build when an open version passes its due date","the correction register, the release snapshots and the published changelog","the language rules of the published data: bilingual, no dash characters, no liability framing"],"does_not_cover":"Whether an external source has changed since we last checked it. That is what the review status on each version and GET /api/v1/changes are for."},"service_level":{"committed":false,"uptime_measured":false,"latency_measured":false,"detail":"This is a free public beta with no service level: no uptime figure, no latency figure and no support commitment. This endpoint answers what the published dataset is and whether it passed its own release guards. It does not report availability, because we publish no measurement of it and a number nobody measures is worse than an honest absence. What is guaranteed is in the stability contract: stable identifiers, an append only dataset, and the temporal semantics.","contract":"https://www.praxikon.com/api/v1/openapi"},"rate_limit":{"committed_limit":false,"detail":"There is no committed rate limit on this API and no quota to apply for. Two endpoints carry a request cap that is genuinely enforced; everything else is uncapped today. An uncapped endpoint is not a promise that it stays uncapped: a limit may be introduced, and it will be announced in the OpenAPI document before it takes effect.","enforced":[{"path":"/api/v1/answer","max_requests":60,"window_seconds":60,"scope":"client_ip_per_server_instance","storage":"in_process_memory","shared_across_instances":false,"survives_restart":false,"limitation":"The counter lives in the memory of one server process. It is not shared between instances and it resets when the process restarts, so it throttles a runaway client rather than granting or guaranteeing a quota."},{"path":"/api/v1/enforcement","max_requests":60,"window_seconds":60,"scope":"client_ip_per_server_instance","storage":"in_process_memory","shared_across_instances":false,"survives_restart":false,"limitation":"The counter lives in the memory of one server process. It is not shared between instances and it resets when the process restarts, so it throttles a runaway client rather than granting or guaranteeing a quota."},{"path":"/api/v1/naleving-index","max_requests":60,"window_seconds":60,"scope":"client_ip_per_server_instance","storage":"in_process_memory","shared_across_instances":false,"survives_restart":false,"limitation":"The counter lives in the memory of one server process. It is not shared between instances and it resets when the process restarts, so it throttles a runaway client rather than granting or guaranteeing a quota."}],"unlimited":[{"path":"/api/v1/obligations","enforced":false},{"path":"/api/v1/changes","enforced":false},{"path":"/api/v1/entities","enforced":false},{"path":"/api/v1/search","enforced":false},{"path":"/api/v1/corrections","enforced":false},{"path":"/api/v1/diff","enforced":false},{"path":"/api/v1/dataset","enforced":false},{"path":"/api/v1/openapi","enforced":false},{"path":"/api/v1/status","enforced":false},{"path":"/api/v1/implementation-map","enforced":false},{"path":"/api/v1/manifest","enforced":false},{"path":"/api/v1/manifest/validate","enforced":false},{"path":"/api/v1/impact","enforced":false}],"when_limited":{"status":429,"body":"The standard error object, with code rate_limited.","header":"Retry-After, in seconds."},"if_a_limit_is_introduced":["it is announced in the OpenAPI document before it takes effect, under the notice rule in VERSIONING.md section 4.1;","it is returned as 429 with the standard error object and a Retry-After header, the same shape as the two enforced caps use today;","no number is committed here in advance, because a number nobody enforces is worse than an honest absence."]},"registers":{"corrections":{"register_id":"praxikon:sys:registry:register:corrections","started_at":"2026-08-08T00:00:00.000Z","recorded":0,"complete_from_start_date":true,"url":"https://www.praxikon.com/api/v1/corrections"},"graph_snapshots":{"register_id":"praxikon:sys:registry:register:graph-snapshots","started_at":"2026-08-13T00:00:00.000Z","recorded_dataset_versions":["1.1.0","2.0.0","2.1.0"],"url":"https://www.praxikon.com/api/v1/diff"},"changelog":{"register_id":"praxikon:sys:registry:register:dataset-releases","started_at":"2026-08-08","url":"https://www.praxikon.com/changelog.json","human_page":"https://www.praxikon.com/en/releases"}}},"links":{"self":"https://www.praxikon.com/api/v1/status","changelog":"https://www.praxikon.com/changelog.json","dataset":"https://www.praxikon.com/api/v1/dataset","documentation":"https://www.praxikon.com/api/v1/openapi","corrections":"https://www.praxikon.com/api/v1/corrections","diff":"https://www.praxikon.com/api/v1/diff","methodology":"https://www.praxikon.com/en/methodologie","licence":"https://www.praxikon.com/nl/legal/terms"}}