Skip to content

CAP-PFM-QRY-011Maintain a shared report library

Markdown

CAP-PFM-QRY-011

Maintain a shared report library

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
Staff find built-in and customer reports in one catalog.Layout sharing preserves execution access checks.Catalog filtering excludes reports without accessible base sources.
Surfaces
consoleapi
Intent sources
services-platform:docs/milestones/plans/RPT-M1-plan.md#A3services-platform:docs/milestones/plans/RPT-M1-plan.md#A4services-platform:docs/milestones/plans/RPT-M1-plan.md#D3services-platform:docs/milestones/plans/RPT-M1-plan.md#D4services-platform:docs/milestones/plans/RPT-M1-plan.md#D5services-platform:docs/milestones/plans/RPT-M1-plan.md#D9

Controls

27 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-005 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-004 TC-DAT-005 TC-IAM-001 TC-IAM-003 TC-IAM-006 TC-LOG-001 TC-LOG-004 TC-LOG-005 TC-MON-002 TC-PI-001 TC-PI-003 TC-PI-005 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.reports.readapitenant
platform.reports.useapitenant
platform.reports.shareservicerecord
platform.reports.manageservicerecord
platform.saved-queries.read and the dataset's query key (to read a report's data)servicetenant

Business Rules

14 rules, 12 to be proved before approval. A rule's product intent is derived from its origin: 14 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
A report’s audience includes its owner, selected-role holders, the workspace for organization sharing, and report managers, with other readers receiving a not-found response.
permissionservicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers a colleague’s read of a private report as 404, exactly as an id nobody holds
02must prove
Confirmed
Report reading requires read permission, whereas every write requires use permission, preventing Read Only users from creating, copying, saving, sharing or deleting reports.
permissionapitest
services-platform:modules/queries/tests/e2e/read-tier.e2e.spec.js#is refused creating a report, which includes copying one, with 403
03must prove
Confirmed
Stored-report catalog reads check source-query visibility and base-dataset access for every reader, including managers, without validating the full definition or every joined dataset.
policyserviceobserved
04must prove
Confirmed
A report cannot have a wider audience than its saved query, and selected report roles must be contained in the query’s roles, with the narrower source identified on refusal.
policyservicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a report shared wider than its saved query as 409 ReportSharedWiderThanQuery, naming the query
05must prove
Confirmed
Owners and managers maintain reports; owners need share permission for audience changes, managers use manage permission, and an unchanged audience needs neither sharing grant.
permissionservicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses sharing without platform.reports.share as 403
06must prove
Confirmed
Rhythm staff working under a workspace grant receive report-management powers over private and shared reports, while data-readability filtering still applies.
permissionservicetest
services-platform:modules/queries/tests/unit/services/reports/report-access.spec.ts#gives staff every write power over a colleague’s private report, as a manager has
07must prove
Confirmed
An authorized report-use holder can copy a visible report into a new private report they own; Read Only readers cannot create copies.
policyservicetest
services-platform:modules/queries/tests/integration/services/reports/report-library.integration.spec.js#lets a colleague copy an organization report it can see, the copy its own and private
08must prove
Confirmed
Creating or saving a report requires a visible saved-query source, rejecting unseen sources as unavailable.
validationservicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a saved query the caller may not see as 400 naming saved_query_id
09must prove
Confirmed
Reports have owner-unique case-insensitive names of one to 120 characters, descriptions of at most one thousand characters, one of four kinds and exact stored layouts bounded by 512 KiB.
validationservice, databasetest
services-platform:modules/queries/tests/integration/services/persistence/reports.integration.spec.js#refuses a second report of the owner whose name differs only in case, storing nothing
10must prove
Confirmed
Saves carry the read version in their body and deletes supply it as a parameter, rejecting missing versions and conflicting stale changes.
validationapi, servicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a replacement that states no version as 400 MissingVersion
11must prove
Confirmed
Report reads flag source definitions changed since the report was saved, and another report save records the latest source versions.
calculationservicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers saved_query_changed once the saved query has been edited since the report was saved
12must prove
Confirmed
Report deletion releases its saved-query dependency without deleting the query and pauses dependent schedules atomically.
lifecycleservice, databasetest
services-platform:modules/queries/tests/e2e/query-schedules.e2e.spec.js#pauses the schedule report_deleted, its report gone
13
Confirmed
The catalog returns newest-updated reports without layouts in pages of at most one hundred, filtered by scope, name, kind or source query.
policyapi, servicetest
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#answers each item without its definition, with its owner’s name
14
Confirmed
Rhythm’s built-in reports ship in the console rather than stored records, and stored reports have no system-sharing audience.
policyconsoledocumented

Scenarios

IdGivenWhenThenProvenance
01A reader lacks query access to the report’s base dataset.They request the report catalog.The report is omitted.test
02Two clients hold the same report version.They submit successive changes against that version.The first succeeds and the stale change receives a conflict.test
services-platform:modules/queries/tests/e2e/reports.e2e.spec.js#refuses a replacement at a version no longer in force as 409

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.