Skip to content

CAP-PFM-NOT-001Declare application notification types

Markdown

CAP-PFM-NOT-001

Declare application notification types

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleStaff Notifications and Association CommunicationsRevision1

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
Applications declare the event contracts used for later publication.Retirement commits before best-effort cancellation of pending requests.
Surfaces
apijob
Intent sources
services-platform:docs/proposals/notifications/23-decisions.md#D-03services-platform:docs/milestones/plans/PLAT-M23-plan.humanized.md#PLAT-M23-S10

Controls

42 controls apply, from the corpus control catalogue.

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

Permissions

KeyChecked atScope
hq.notifications.readapiglobal

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Proposed
Keys consist of three dot-separated segments beginning with lowercase letters; subsequent digits and underscores are allowed; the first segment identifies the registering application; registration rejects another application's key and repeated keys.
✓ accounting.batch.posting_failed from accounting✗ crm.batch.posting_failed declared by accounting
no proof recorded yet
validationservice, databasetest
02must prove
Proposed
Category, severity, preference mode, delivery requirement, replacement scope and audience types use fixed enumerations; a declaration includes at least one audience type.
no proof recorded yet
validationservice, databasetest
03must prove
Proposed
Console support is compulsory; default channels form a subset of supported channels, and mandatory definitions default to the console plus e-mail whenever e-mail is supported.
no proof recorded yet
validationservicetest
services-platform:modules/notifications/tests/unit/registration-manifest.spec.js#refuses a mandatory definition whose defaults leave out e-mail where e-mail is supported
04must prove
Proposed
The request-data schema is valid JSON Schema with a closed root; its fields cannot use Platform's organization, recipient, record or destination variable names; Between one and ten examples satisfy that schema.
no proof recorded yet
validationservicetest
05must prove
Proposed
Templates use safe syntax, declared data and Platform's supplied objects; All examples render a nonempty console title of at most 140 characters, a console body of at most 2,000, a text message of at most 306 and a nonempty e-mail subject; English wording is present, together with templates for supported e-mail and text channels.
no proof recorded yet
validationservicetest
06must prove
Proposed
Route placeholders correspond to declared destination parameters; Up to ten open, route or operation actions are allowed; operation actions reference the application's own console API operations and retain their required permissions.
no proof recorded yet
validationservicetest
07
Proposed
An unavailable API registry produces a warning instead of blocking registration; Permissions supplied without an application permission catalog are retained as unverified.
policyservicetest
08must prove
Proposed
An existing key retains its category and preference mode across releases; changing either requires a different key.
no proof recorded yet
invariantservicetest
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#refuses a category that changes between releases, telling the owner to re-key the definition
09must prove
Proposed
Invalid manifests leave the registry unchanged; the registration response identifies the definition and offending field so deployment can report the refusal.
no proof recorded yet
validationservicetest
services-platform:modules/notifications/tests/integration/services/registration/register-service-notifications.integration.spec.js#answers a refused manifest as { ok: false, error } rather than throwing, so the deploy reports why
10must prove
Proposed
Registration leaves identical definitions untouched, increments the version of changed definitions and records their release; Omitted definitions become retired rather than deleted; a subsequent declaration reactivates them.
no proof recorded yet
lifecycleservice, databasetest
11must prove
Proposed
Retirement commits before Platform tries to cancel accepted, unsettled requests across operational workspaces; Settled requests and settings survive; cancellation errors are logged without reversing registration.
no proof recorded yet
lifecycleserviceobserved
12
Proposed
Platform registers its test notice, four responsibility notices and two provisioning alerts using the application registration interface.
policyservicetest
services-platform:modules/notifications/tests/unit/platform-notification-definitions.spec.js#registers the test notification, the responsibilities producer’s four and the tenant provisioning alerts
13must prove
Proposed
The global definition list requires the HQ notification-read permission; Staff can filter by application and status; entries exclude template content and data schemas.
no proof recorded yet
permissionapi, servicetest
services-platform:modules/notifications/tests/integration/services/centre/hq-notifications.integration.spec.js#answers each definition’s declaration without its templates or data schema
14must prove
Proposed
Manifest validation accepts format one, no more than two hundred definitions and twenty locales per definition, and bounded labels, descriptions and templates; Extra fields, duplicate declaration values and invalid locale or duration values are rejected.
no proof recorded yet
validationserviceobserved

Scenarios

IdGivenWhenThenProvenance
01Accounting declares batch-posting content that references a field outside its data contract.Deployment submits the manifest.Registration rejects the whole manifest and identifies the definition and template field.test
02An application omits a previously registered type with an open workspace request.The application registers its next release and the workspace cancellation succeeds.The type remains retained as retired and the open request becomes cancelled.test

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.