Client grants
What a client declared in clients.yaml holds, where a decision fixed it and a test can pin
it. The scope families are described in
scopes-and-permissions.md.
REQ-0004 — svc-onboarding holds its write scopes as optional and its reads as default
For the manager features and the registry sync
(ADR-0011),
svc-onboarding's declaration in clients.yaml holds, over clients.yaml alone and merged
with the ds-host overlay:
provisioning.reconcileandrec-registry.community.writeas optional scopes, and in neither as a default scope. Onboarding requests each for the one call that needs it, so a default-scope token of this client carries no community write and no sweep.digital-twin.values.readandrec-registry.readas default scopes. The first resolves a supply address to a boundary and validates a template's boundary ids; the second reads a community's areas, topology and member counts, which the registry's communityGETroutes require.- Exactly those two optional scopes. A token onboarding uses for everything else carries
neither, so the provisioning service refuses it on
POST /reconcile/{community}with403 insufficient_scope; a token that requestedprovisioning.reconcileis accepted there. - Nothing wider than before in the provisioning family.
provisioning.participants.writestays a default scope,provisioning.adminstays refused, and REQ-0001 still holds.
REQ-0005 — svc-community holds its registry writes as optional scopes, and no wider one
For the manager's meter and profile dialogs
(ADR-0011),
over clients.yaml alone and merged with the ds-host overlay:
rec-registry.members.profile.writeis declared in the registry's family, owned bysvc-rec-registry: change one member's role and area, nothing else.svc-communityholdsrec-registry.assets.writeandrec-registry.members.profile.writeas optional scopes, and a sync plans both as optional assignments. The BFF requests each for the one write that needs it, so the default-scope token the Digital Twin forwards carries no registry write: its only registry scope isrec-registry.read.svc-communitynever holdsrec-registry.members.writeorrec-registry.admin, as a default or an optional scope. Its registry scopes are exactlyrec-registry.read(default) and the two writes (optional), plus the per-field role and area writes of REQ-0008 (optional).
REQ-0008 — member writes are granted per field
For the registry's per-field member routes (rec-registry, "member writes are granted per
field"), over clients.yaml alone and merged with the ds-host overlay:
- Four scopes are declared in the registry's family, owned by
svc-rec-registry, namedrec-registry.members.<field>.write:name,role,area,delivery_points. svc-communityholdsrec-registry.members.role.writeand.area.writeas optional scopes, besiderec-registry.members.profile.write, which it keeps until the BFF calls the new routes. It holds neithername.writenordelivery_points.write.svc-onboardingholdsrec-registry.members.name.writeand.delivery_points.writeas default scopes, besiderec-registry.members.write, which it keeps because creating a member needs it. It holds neitherrole.writenorarea.write, and its optional scopes are still exactly REQ-0004's two.