Identity and organization workspaces
The signed actor, selected workspace, and Post project are separate identities. Personal requests act as the authenticated user or machine. Organization requests act as the organization's stable principal while retaining the actor for attribution. Project membership belongs to that effective principal.
Authentication and selection
Use an M7 access token with audience https://api.post.service.m7.org and
current service-list admission. Organization discovery and selection additionally
require the orgs scope and direct current Management membership disclosed to
Post. See Authorization.
| Route | Required input | Optional input | Success result |
|---|---|---|---|
POST /v1/member/me |
None | — | member.principal_id; username and user_id for a user actor, otherwise null. |
POST /v1/orgs/list |
None | orgs_dpop |
orgs, caller_principal_id, and display-cache information. |
POST /v1/orgs/refresh |
None | orgs_dpop |
Fresh discovery, replacing earlier display data. |
POST /v1/workspace/context |
None | Organization selection | workspace (personal or organization), effective principal, and real actor. |
member/me always identifies the signed actor. Organization entries provide
native id, stable principal_id, name, slug, access_level, and verified
management_groups. Use the native id to select an organization and the
stable principal_id for project membership.
Send Org: ORGANIZATION_UUID or JSON org_id on protected workspace and project
operations. If both are present they must match, ignoring case. Malformed, nil,
null, or conflicting selectors return 400. Omit both for Personal.
curl -sS https://api.post.service.m7.org/v1/workspace/context \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Org: ORGANIZATION_UUID' \
-H 'Content-Type: application/json' \
-d '{}'
Every organization-scoped operation, including a read, repeats the live recipient-authenticated membership check. A cached selection, name, roster reference, or caller-supplied organization object is not authority. The actor's Personal project memberships are not inherited by the organization.
When the upstream organization lookup requires a sender proof, pass it in
Org-DPoP or JSON orgs_dpop. An upstream nonce can be returned in DPoP-Nonce;
regenerate the proof for that lookup before retrying. This does not add DPoP
protection to the Post resource endpoint.
Reload project context after changing actor, workspace, or project. Discard old capability state and pending responses. A revoked or unavailable organization check fails closed; never silently retry a write as Personal.