GET/organizations/{organizationId}/read-model
Reconcile the organization read model
Operation organizations.readModel.get
Description
Returns the organization read model: display and navigation data for the directory, groups, group memberships, grants, and organization policy. Without a cursor it returns an atomic snapshot; with one, only lanes changed since. Any organization member may call it; the read model is not authority, so clients still verify signed policies and manifests.
Authentication
Requires a signed-in session: the client sends its session token as a bearer token in the Authorization header.
Parameters
| Name | In | Type | Details |
|---|---|---|---|
organizationId | path | string | required
|
cursor | query | string | optional |
Responses
200 OK
application/jsonOrganizationReadModelResponse
A page of the organization read model: an atomic snapshot when the request had no cursor, otherwise only the lanes changed since it. Display data only, never authority.
- object
7 fields
currentUserobjectrequired1 field
isOrgAdminbooleanrequired
hasMorebooleanrequirednextCursorstringrequired- not empty
organizationIdstringrequiredversionnumberrequired- always
6
- always
lanesobjectrequired5 fields
directoryobjectoptional3 fields
organizationIdstringrequiredprofileDocumentIdstringrequirednullableuserslist of objectrequired15 fields
createdAtstringrequireddisabledAtstringrequirednullabledisabledByUserIdstringrequirednullableencapsulationKeyFingerprintstringrequiredencapsulationPublicKeystringrequiredisPersonalOrganizationOwnerbooleanrequiredisSelfbooleanrequiredjoinedAtstringrequiredprofileDocumentIdstringrequirednullablesigningKeyFingerprintstringrequiredsigningPublicKeystringrequiredstatusstringrequired- one of
active,disabled
- one of
updatedAtstringrequireduserIdstringrequired
grantsobjectoptional2 fields
grantslist of objectrequired15 fields
accessLevelstringrequired- one of
admin,read,write
- one of
containerIdstringrequiredcreatedAtstringrequireddepthintegerrequired- at least 0
isBuiltinbooleanrequiredmetadataAccessEpochintegerrequired- greater than 0
metadataAccessStateHashstringrequired- not empty
metadataDocumentIdstringrequirednullableparentIdstringrequirednullableupdatedAtstringrequiredgroupIdstringrequirednullablesigningKeyFingerprintstringrequirednullablesubjectIdstringrequiredsubjectTypestringrequired- one of
group,user
- one of
userIdstringrequirednullable
organizationIdstringrequired
groupMembershipsobjectoptional3 fields
deletedGroupIdslist of stringrequired- each item: not empty
groupslist of objectrequired3 fields
groupIdstringrequiredmemberslist of objectrequired2 fields
rolestringrequired- one of
member,admin
- one of
userIdstringrequired
stateHashstringrequired- not empty
organizationIdstringrequired
groupsobjectoptional3 fields
groupslist of objectrequired5 fields
createdAtstringrequiredcurrentStateobjectrequirednullable5 fields
keyEpochintegerrequired- at least 1
keyFingerprintstringrequired- not empty
memberCountintegerrequired- at least 0
stateHashstringrequiredversionintegerrequired- at least 1
groupIdstringrequiredisBuiltinbooleanrequiredorganizationIdstringrequired
memberGroupIdstringrequiredorganizationIdstringrequired
organizationPolicyobjectoptional2 fields
currentStateobjectrequired5 fields
keyEpochintegerrequired- at least 1
keyFingerprintstringrequired- not empty
memberCountintegerrequired- at least 0
stateHashstringrequired- not empty
versionintegerrequired- at least 1
organizationIdstringrequired
modestringrequired- always
delta
- always
- object
7 fields
currentUserobjectrequired1 field
isOrgAdminbooleanrequired
hasMorebooleanrequired- always
false
- always
nextCursorstringrequired- not empty
organizationIdstringrequiredversionnumberrequired- always
6
- always
lanesobjectrequired5 fields
directoryobjectrequired3 fields
organizationIdstringrequiredprofileDocumentIdstringrequirednullableuserslist of objectrequired15 fields
createdAtstringrequireddisabledAtstringrequirednullabledisabledByUserIdstringrequirednullableencapsulationKeyFingerprintstringrequiredencapsulationPublicKeystringrequiredisPersonalOrganizationOwnerbooleanrequiredisSelfbooleanrequiredjoinedAtstringrequiredprofileDocumentIdstringrequirednullablesigningKeyFingerprintstringrequiredsigningPublicKeystringrequiredstatusstringrequired- one of
active,disabled
- one of
updatedAtstringrequireduserIdstringrequired
grantsobjectrequired2 fields
grantslist of objectrequired15 fields
accessLevelstringrequired- one of
admin,read,write
- one of
containerIdstringrequiredcreatedAtstringrequireddepthintegerrequired- at least 0
isBuiltinbooleanrequiredmetadataAccessEpochintegerrequired- greater than 0
metadataAccessStateHashstringrequired- not empty
metadataDocumentIdstringrequirednullableparentIdstringrequirednullableupdatedAtstringrequiredgroupIdstringrequirednullablesigningKeyFingerprintstringrequirednullablesubjectIdstringrequiredsubjectTypestringrequired- one of
group,user
- one of
userIdstringrequirednullable
organizationIdstringrequired
groupMembershipsobjectrequired3 fields
deletedGroupIdslist of stringrequired- each item: not empty
groupslist of objectrequired3 fields
groupIdstringrequiredmemberslist of objectrequired2 fields
rolestringrequired- one of
member,admin
- one of
userIdstringrequired
stateHashstringrequired- not empty
organizationIdstringrequired
groupsobjectrequired3 fields
groupslist of objectrequired5 fields
createdAtstringrequiredcurrentStateobjectrequirednullable5 fields
keyEpochintegerrequired- at least 1
keyFingerprintstringrequired- not empty
memberCountintegerrequired- at least 0
stateHashstringrequiredversionintegerrequired- at least 1
groupIdstringrequiredisBuiltinbooleanrequiredorganizationIdstringrequired
memberGroupIdstringrequiredorganizationIdstringrequired
organizationPolicyobjectrequired2 fields
currentStateobjectrequired5 fields
keyEpochintegerrequired- at least 1
keyFingerprintstringrequired- not empty
memberCountintegerrequired- at least 0
stateHashstringrequired- not empty
versionintegerrequired- at least 1
organizationIdstringrequired
modestringrequired- always
snapshot
- always
Other responses
| Status | Meaning | Body |
|---|---|---|
| 400 | Bad Request |
|
| 401 | Unauthorized |
|
| 403 | Forbidden |
|
| 404 | Not Found |
|
| 500 | Internal Server Error |
|
| 503 | Service Unavailable |
|
Additional rules
The server also enforces these rules, which the schema above cannot express.
Read-model lanes match the response organization; grants and memberships are unambiguous; snapshot lanes are complete and contain no deletions.