Skip to content

CAP-PFM-INT-001Publish integration releases for eligible customers

Markdown

CAP-PFM-INT-001

Publish integration releases for eligible customers

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleIntegration access, customer extensions and shared workflow configurationRevision1

Read atservices-platform ad3f6a65macroservice-libraries 54536a44

The Formal Contract

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

Outcomes
Contract validation precedes a release’s admission to the catalogue.Customers keep the published manifest their connection uses.Availability distinguishes public offers, named customers and Rhythm’s internal use.
Surfaces
apijob
Intent sources
services-platform:docs/milestones/INTG-M1-find-install-connect.md#D3services-platform:docs/milestones/INTG-M1-find-install-connect.plan.md#A5

Controls

38 controls apply, from the corpus control catalogue.

TC-AVL-001 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-CRY-001 TC-CRY-002 TC-CRY-003 TC-CRY-004 TC-DAT-004 TC-IAM-001 TC-IAM-003 TC-IAM-006 TC-LOG-001 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-003 TC-PI-005 TC-SEC-001 TC-SEC-002 TC-SEC-003 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
hq.integrations.publishapiglobal
hq.integrations.operateapiglobal

Business Rules

12 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
Only an adapter’s own principal may register its integration key, except that Platform may register any key outside production; unauthorized registration is refused without writes.
permissionservicetest
services-platform:modules/integrations/tests/integration/services/registration/register-integration-version.integration.spec.js#refuses an adapter principal registering another adapter’s key (403), and writes nothing
02must prove
Proposed
Registration accepts a release only if its manifest fits the shared schemas, declares known capability majors and features, uses no newer contract package and matches its recomputed fingerprint; invalid releases leave no records.
validationservicetest
03must prove
Proposed
First registration gives an integration internal availability until Rhythm changes the offer.
policyservicetest
04must prove
Proposed
Publication freezes a version’s manifest through deprecation and retirement; a changed fingerprint is refused, while identical registration preserves the version and may replace its deployment.
invariantserviceobserved
05must prove
Proposed
Registration records deployment location, permits one active deployment per release and environment, and drains the deployment being replaced.
invariantservice, databasetest
06must prove
Proposed
Authorized Rhythm staff move a validated version to published, a published version to deprecated and a deprecated version to retired, with every other transition refused.
lifecycleapi, serviceobserved
07must prove
Proposed
Retirement is refused while any customer has a non-disconnected connection pinned to that version.
policyserviceobserved
08must prove
Proposed
A published release becomes current if it is newer than the current published release, or if the current release is absent or no longer published.
calculationserviceobserved
09must prove
Proposed
Rhythm staff choose public, internal or restricted availability; restricted grants replace the whole customer list, and supplying grants for another availability is refused.
policyapi, servicetest
10must prove
Proposed
The staff catalogue includes integrations of every availability with their versions, deployments and release notes; customer callers cannot read it.
permissionapitest
11must prove
Proposed
Rhythm staff list declared platform-secret purposes and versions without values, write only declared purposes and leave a security record for each write; customer administrators are refused.
permissionapi, servicetest
services-platform:modules/integrations/tests/e2e/credentials.e2e.spec.js#lists the integration’s declared secrets by name and version, never a value
12must prove
Proposed
Registration rejects external hosting, mismatched deployment principal, runtime or environment, duplicate capabilities and unsupported execution modes before saving the release.
validationserviceobserved

Scenarios

IdGivenWhenThenProvenance
01A test adapter release is deployed to development.Its pipeline registers a releasable version.The published version becomes current and its replacement deployment drains the earlier one.test
02A principal belongs to one provider adapter.It registers a different provider’s integration key.Registration refuses the request and saves no release records.test
services-platform:modules/integrations/tests/integration/services/registration/register-integration-version.integration.spec.js#refuses an adapter principal registering another adapter’s key (403), and writes nothing

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.