Identity and organization workspaces
A protected request has a signed actor and an effective workspace principal. Omit organization selection to use the actor's Personal workspace. Select an organization to operate as its stable principal; the actor remains separately identified for attribution. Publication access belongs to the effective principal's current membership.
Authentication
Use an M7 access token with the Blog API audience. Organization discovery and
selection additionally require the orgs scope and current direct Management
membership disclosed to Blog. Every organization-scoped operation, including a
read, checks that membership again. A displayed or cached organization list
does not grant access. See Authorization.
Routes
| Route | Required input | Optional input | Result |
|---|---|---|---|
POST /v1/member/me |
None | — | member.principal_id, and username and user_id for a user actor; those two fields are null for a machine actor. |
POST /v1/orgs/list |
None | orgs_dpop |
Current actor's discoverable organizations; a display result may come from cache. |
POST /v1/orgs/refresh |
None | orgs_dpop |
Fresh organization discovery, replacing the previous display result. |
The identity endpoint describes the actor even when the client has an
organization selected. The organization response includes caller_principal_id,
orgs, and cache information. An organization has its native id, stable
principal_id, name, slug, access_level, and verified management_groups.
Use its native id for selection and its stable principal_id for publication
membership. Names are display labels.
Select an organization
Send the native organization UUID in Org or JSON org_id on protected
publication operations. If both are supplied they must match, ignoring case.
Null, nil, malformed, and conflicting selectors return 400.
curl -sS https://api.blog.service.m7.org/v1/publication/list \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Org: ORGANIZATION_UUID' \
-H 'Content-Type: application/json' \
-d '{}'
The server resolves the selected organization using the original caller token. An organization name, a body principal override, or a previously returned organization object cannot replace the current verified facts. The org's Management tag-name grants are intersected with its publication membership permissions. The actor's personal memberships are not inherited.
If the upstream organization lookup requires a sender proof, carry the proof
for that lookup in Org-DPoP, or orgs_dpop in JSON. An upstream nonce can be
returned in DPoP-Nonce; regenerate the proof for the upstream lookup before
retrying. This proof does not add DPoP protection to the Blog resource endpoint.
Load publication context after selection and discard old context, capability state, and pending responses whenever the actor, workspace, or publication changes. A revoked membership or unavailable live lookup fails closed; do not retry the action as Personal without explicit user selection.