Skip to content

Shared Types And Enums

Shared message and enum definitions used by the ConnectRPC service pages.

Metadata about a pending external identity flow. The provider subject is not exposed; clients only need user-facing provider/profile hints.

FieldTypeDescription
kindExternalIdentityFlowKindPending flow kind.
provider_idstringProvider ID that produced the identity.
provider_typestringProvider type that produced the identity.
provider_labelstringProvider label shown to the user.
verified_emailstringVerified email supplied by the provider, when available.
login_hintstringSuggested username derived from provider profile hints.
display_name_hintstringSuggested display name derived from provider profile hints.
bound_user_idstringUser ID this link flow is bound to. Empty for create flows.
redirect_pathstringInternal path the client should return to after confirmation.

Image transform parameters for generated image URLs.

FieldTypeDescription
widthint32Target image width in pixels.
heightint32Target image height in pixels.
fitImageFitModeImage crop/fit behavior.

Browser-supplied image upload payload.

FieldTypeDescription
imagebytesRaw image bytes.
filenamestringOriginal browser filename, for diagnostics and future compatibility.
content_typestringBrowser-provided content type, for diagnostics and future compatibility.

Public login/provider metadata shared by discovery and account-linking APIs.

FieldTypeDescription
idstringStable configured provider ID.
typestringProvider type, such as “password”, “oidc”, “github”, or “discord”.
labelstringHuman-readable provider label.
login_urlstringURL that starts login for this provider.

Public metadata for a configured external login provider.

FieldTypeDescription
link_urlstringURL that starts authenticated account linking for this provider. Clients should use StartExternalIdentityLink instead of navigating here directly.
linkedboolTrue when this provider is already linked to the authenticated user.
linked_identity_subject_hashstringLinked identity subject hash for this provider, when linked.
providerProviderMetadataShared provider metadata.

Linked provider identity metadata for the authenticated user’s settings UI.

FieldTypeDescription
provider_idstringProvider ID recorded when the identity was linked.
provider_typestringProvider type recorded when the identity was linked.
provider_labelstringCurrent or fallback provider label.
subject_hashstringStable one-way subject hash, useful only as a UI/list key.

Custom status shown on a user profile, separate from presence.

FieldTypeDescription
emojistringShort emoji marker displayed with the status.
textstringUser-written status text.
expires_atgoogle.protobuf.TimestampOptional time after which clients should stop showing the status.

Public user fields.

FieldTypeDescription
idstringStable user ID.
loginstringLogin name.
display_namestringDisplay name, when set.
deletedboolTrue when the user account has been deleted.
avatar_urloptional stringAvatar image URL, when available.
presence_statusPresenceStatusCurrent live presence status.
custom_statusCustomUserStatusCustom profile status, when set.

Stored and effective notification preference.

FieldTypeDescription
levelNotificationLevelExplicit level stored for the current user.
effective_levelNotificationLevelLevel after applying defaults and inheritance.

Effective decision for one capability key.

Built-in keys currently include:

  • admin.view
  • dm.start
  • admin.view-users
  • user.manage-accounts
  • role.assign
  • role.view
  • role.manage
  • admin.view-system
  • admin.view-audit
  • user.manage-permissions

Clients should ignore unknown keys so servers can add capabilities over time.

FieldTypeDescription
capabilitystringStable capability key, such as “admin.view” or “dm.start”.
grantedboolWhether the capability is currently available.

Effective decision for one permission key.

FieldTypeDescription
permissionstringStable permission key, such as “server.manage”.
grantedboolWhether the permission is currently granted.

Room notification preference for one joined room.

FieldTypeDescription
room_idstringRoom whose preference is represented.
preferenceNotificationPreferenceStored and effective notification preference.

Effective server/channel permission decisions for the authenticated user.

FieldTypeDescription
permissionsrepeated PermissionGrantOne row per permission known to the server.

Non-permission server state for the authenticated user.

FieldTypeDescription
has_unread_roomsboolWhether any joined channel room has unread messages.

Server-level display settings for the authenticated user.

FieldTypeDescription
timezoneoptional stringOptional IANA timezone override. Absent means the client should use the browser’s local timezone.
time_formatTimeFormatPreferred time format.

Permission-derived capabilities for the authenticated user.

FieldTypeDescription
grantsrepeated CapabilityGrantKeyed capability decisions for the authenticated user.
has_unread_followed_threadsboolWhether the user has unread followed threads.

Current authenticated user’s public profile plus self-only settings.

FieldTypeDescription
has_verified_emailboolWhether the account has at least one verified email address.
settingsUserSettingsCurrent user’s display settings.
viewer_can_delete_accountboolWhether the authenticated user may delete this account.
last_login_changegoogle.protobuf.TimestampLast time a login credential changed, when known.
profileUserPublic user fields for the authenticated user.
has_passwordboolWhether this account currently has a password sign-in credential.

Link preview metadata used by message composers and room timeline events.

Clients should treat optional metadata as unavailable when absent. Message creation accepts only the preview_token returned by FetchLinkPreview, not client-provided metadata fields.

FieldTypeDescription
urlstringPreviewed URL.
titleoptional stringPage or embed title.
descriptionoptional stringPage or embed description.
image_urloptional stringPreview image URL, when available.
image_asset_idoptional stringExisting server asset ID for the preview image, when cached or stored with the message.
site_nameoptional stringSite name, when known.
embed_typeoptional stringEmbed provider or type, when recognized.
embed_idoptional stringProvider-specific embed ID, when recognized.

Renderable message data.

The same shape is used for top-level room messages, thread replies, and thread echo entries. Thread-related fields let clients render reply counts, thread participants, and follow state without additional per-message requests.

FieldTypeDescription
idstringStable message event ID.
room_idstringRoom containing the message.
created_atgoogle.protobuf.TimestampTime when the message was created.
actor_idstringUser ID of the message actor.
bodyoptional stringMessage body text, when available. A present empty string is distinct from an absent body.
attachmentsrepeated MessageAttachmentAttachments sent with the message.
link_previewLinkPreviewLink preview extracted for the message, when available.
updated_atgoogle.protobuf.TimestampTime when the message was last edited.
in_reply_tostringEvent ID this message directly replies to, when this is a reply.
thread_root_event_idstringEvent ID of the root message for the thread this message belongs to.
echo_of_event_idstringEvent ID this event echoes into the current view, when applicable. Echoes allow thread activity to appear in another timeline context.
echo_from_thread_root_event_idstringThread root ID of the echoed event, when applicable.
channel_echo_event_idstringChannel timeline event ID for a thread echo, when applicable.
reactionsrepeated MessageReactionReaction summaries for this message.
threadThreadSummaryAggregated thread state, when known for a thread root message.

Time-limited URL for an asset attached to a message.

Clients should expect these URLs to expire and refresh the asset through AssetService when a URL is no longer usable.

FieldTypeDescription
urlstringSigned asset URL.
expires_atgoogle.protobuf.TimestampTime when the signed URL expires.

Attachment metadata included with a message.

Image and video dimensions are best-effort metadata for layout. Asset URLs can be absent while processing is pending or when the source is unavailable.

FieldTypeDescription
idstringStable attachment ID.
filenamestringOriginal filename.
content_typestringMIME content type.
widthint32Image or video width in pixels, when known.
heightint32Image or video height in pixels, when known.
asset_urlMessageAssetUrlSigned URL for the original asset, when available.
thumbnail_asset_urlMessageAssetUrlSigned URL for a thumbnail image, when available.
video_processingMessageVideoProcessingVideo-specific processing metadata, when this attachment is a video.

Aggregated reaction state for one emoji on one message.

This state is scoped to the current message and includes whether the current user has reacted with the same emoji.

FieldTypeDescription
emojistringEmoji or reaction key.
countint32Number of users who reacted with this emoji.
has_reactedboolTrue when the current user reacted with this emoji.
preview_user_idsrepeated stringPreview of up to five user IDs that reacted with this emoji.

Processing metadata for a video attachment.

Clients can use this object to show upload/transcoding progress and decide whether to play a processed variant, show a thumbnail, or display a failure state.

FieldTypeDescription
statusMessageVideoProcessingStatusCurrent processing status.
duration_msint64Video duration in milliseconds.
widthint32Source video width in pixels.
heightint32Source video height in pixels.
source_availableboolTrue when the original source asset is currently available.
reason_codestringStable reason code for a failed or incomplete processing state.
thumbnail_asset_urlMessageAssetUrlSigned URL for the generated thumbnail, when available.
variantsrepeated MessageVideoVariantAvailable transcoded renditions.

One transcoded video rendition.

FieldTypeDescription
qualitystringQuality label for the rendition.
widthint32Video width in pixels.
heightint32Video height in pixels.
sizeint64Rendition size in bytes.
asset_urlMessageAssetUrlSigned URL for the rendition.

Aggregated state for one message thread.

FieldTypeDescription
thread_root_event_idstringEvent ID of the root message for the thread.
reply_countint32Number of replies in this message’s thread.
last_reply_atgoogle.protobuf.TimestampCreation time of the most recent reply in this message’s thread.
participant_preview_user_idsrepeated stringPreview of up to five user IDs that have participated in this message’s thread.
participant_countint32Total number of distinct users that have participated in this message’s thread.
viewer_stateThreadViewerStateState resolved for the current user.

Viewer-specific state for one message thread.

FieldTypeDescription
is_followingoptional boolWhether the current user follows this message’s thread, when known.
has_unreadoptional boolTrue when the thread has unread replies for the current user, when known.

Room-scoped binary asset metadata and freshly signed URLs.

FieldTypeDescription
idstringStable asset ID.
filenamestringOriginal filename.
content_typestringMIME content type.
sizeint64Stored file size in bytes.
widthint32Media width when known.
heightint32Media height when known.
asset_urlMessageAssetUrlSigned URL for the original asset bytes.
thumbnail_asset_urlMessageAssetUrlSigned URL for a transformed image thumbnail.
video_processingMessageVideoProcessingVideo processing state when this asset is a video attachment.

One current room attachment and its message anchor.

FieldTypeDescription
attachmentAssetAttachment metadata and signed URLs.
message_event_idstringMessage event containing the attachment.
thread_root_event_idstringThread root event ID when the containing message is a thread reply.
created_atgoogle.protobuf.TimestampMessage creation timestamp.

Current server-side state for one room-scoped attachment upload.

FieldTypeDescription
upload_idstringUpload session ID.
room_idstringRoom the resulting attachment asset will belong to.
statusAssetUploadStatusCurrent upload status.
committed_offsetint64Number of bytes committed so far.
sizeint64Total declared file size in bytes.
max_chunk_sizeint32Maximum accepted chunk size in bytes.
sha256stringSHA-256 digest of the complete file, lowercase hexadecimal.
expires_atgoogle.protobuf.TimestampUpload expiry. Clients should create a new upload after this time.
asset_idstringAsset ID after completion.

Offset-based page metadata returned by list RPCs.

FieldTypeDescription
total_countint64Total matching item count before pagination.
has_moreboolTrue when another page exists after this response.

Offset-based page request for list RPCs whose result order is stable enough for simple list browsing.

FieldTypeDescription
limitint32Maximum number of items to request. Each RPC defines its default and effective maximum; this shared request shape accepts values up to 500.
offsetint32Zero-based number of matching items to skip.

Public user/member row used by user directory, room membership, and mention surfaces.

FieldTypeDescription
userUserPublic user fields.
rolesrepeated stringExplicit roles assigned to the user. Member listings include the virtual everyone role for parity with Chatto’s permission model.
created_atgoogle.protobuf.TimestampAccount creation time when known.

Payload for a message-posted timeline event.

FieldTypeDescription
messageMessageRenderable message created by this timeline event.

One event in a room or thread timeline.

Clients should inspect the event oneof to choose the renderer for the event.

FieldTypeDescription
idstringStable event ID.
created_atgoogle.protobuf.TimestampTime when the event was created.
actor_idstringUser ID of the event actor.
event.message_postedRoomMessagePostedA message was posted.
event.room_createdRoomTimelineRoomEventThe room was created.
event.room_updatedRoomTimelineRoomEventThe room metadata was updated.
event.room_deletedRoomTimelineRoomEventThe room was deleted.
event.room_archivedRoomTimelineRoomEventThe room was archived.
event.room_unarchivedRoomTimelineRoomEventThe room was unarchived.
event.user_joined_roomRoomTimelineRoomEventA user joined the room.
event.user_left_roomRoomTimelineRoomEventA user left the room.

Related entities included beside timeline/feed events.

Includes are reserved for hot paginated feed paths where many events may repeatedly reference the same render data. Other APIs should return resources directly and rely on BatchGet-style follow-up hydration instead of adding includes maps.

FieldTypeDescription
usersmap<string, User>Users keyed by user ID.

Cursor page of room or thread timeline events.

Use opaque start_cursor and end_cursor values with before/after requests to continue paging in either direction. Clients must treat cursor values as server-owned tokens and must not parse or construct them. The has_older and has_newer flags tell clients whether another request can extend the current window.

FieldTypeDescription
eventsrepeated RoomTimelineEventEvents in display order.
start_cursorstringOpaque cursor for the first event in the page.
end_cursorstringOpaque cursor for the last event in the page.
has_olderboolTrue when older events are available before start_cursor.
has_newerboolTrue when newer events are available after end_cursor.
includesRoomTimelineIncludesHot-path related entities needed to render the page without per-event hydration.

Payload for room lifecycle and membership timeline events.

FieldTypeDescription
room_idstringRoom affected by the event.

Public room metadata returned by room commands.

FieldTypeDescription
idstringStable room ID.
kindRoomKindRoom kind.
namestringRoom name. Direct-message rooms may have an empty name because clients derive their display label from participants.
descriptionstringOptional room description.
archivedboolTrue when the room is archived and hidden from active room lists.
group_idstringRoom group ID for channel rooms. Empty for direct-message rooms.
universalboolTrue when a channel grants effective membership to eligible server members.

Active channel room ban with optional hydrated room and user references.

FieldTypeDescription
idstringStable ban event ID.
room_idstringChannel room ID.
roomRoomChannel room metadata, when the referenced room still exists.
user_idstringBanned user ID.
userDirectoryMemberBanned user profile, when the referenced user still exists.
moderator_idstringModerator user ID that created the ban.
moderatorDirectoryMemberModerator profile, when the referenced user still exists.
reasonstringModerator-entered ban reason.
created_atgoogle.protobuf.TimestampTime the ban was created.
expires_atgoogle.protobuf.TimestampOptional future time when the ban expires.

Lightweight room reference for cross-resource rows.

FieldTypeDescription
idstringStable room ID.
kindRoomKindRoom kind.
namestringRoom name. Direct-message rooms may have an empty name because clients derive their display label from participants.

Direct-message notification payload.

FieldTypeDescription
event_idstringMessage event ID.
roomRoomSummaryDM room where the message was posted.

Mention notification payload.

FieldTypeDescription
roomRoomSummaryRoom where the mention occurred.
event_idstringMessage event ID.
thread_root_event_idoptional stringThread root event ID when the mention happened inside a thread.

One pending notification for the authenticated viewer.

FieldTypeDescription
idstringStable notification ID.
created_atgoogle.protobuf.TimestampCreation time.
actorUserUser who triggered the notification, when still resolvable.
kind.direct_messageDirectMessageNotificationDirect-message notification.
kind.mentionMentionNotificationMention notification.
kind.replyReplyNotificationReply notification.
kind.room_messageRoomMessageNotificationAll-messages room notification.

Reply notification payload.

FieldTypeDescription
roomRoomSummaryRoom where the reply occurred.
event_idstringReply event ID.
in_reply_to_idstringEvent ID of the message being replied to.
thread_root_event_idoptional stringThread root event ID when the reply happened inside a thread.

All-messages room notification payload.

FieldTypeDescription
roomRoomSummaryRoom where the message was posted.
event_idstringMessage event ID.

Pending notification count for one room.

FieldTypeDescription
room_idstringRoom ID.
total_countint32Pending notification count for the authenticated viewer in this room.

Public role metadata used for rendering role mentions, labels, and catalogs.

FieldTypeDescription
namestringStable role name used in permission and assignment records.
display_namestringDisplay name shown in user-facing role UIs.
descriptionstringOptional role description.
is_systemboolWhether this is a built-in role.
positionint32Display/order position.
pingableboolWhether messages may notify users assigned to this role.

Ordered group of channel rooms and sidebar links.

FieldTypeDescription
idstringStable room group ID.
namestringDisplay name.
descriptionstringPublic group description, when set.
itemsrepeated RoomGroupItemMixed room/sidebar-link entries in sidebar order.
viewer_stateRoomGroupViewerStateState and permissions resolved for the current user.

One ordered item in a room group.

FieldTypeDescription
item.roomRoomWithViewerStateVisible room entry.
item.sidebar_linkSidebarLinkSidebar link entry.

Viewer-specific state for one room group.

FieldTypeDescription
permissionsrepeated PermissionGrantEffective group-scoped permission decisions after group state constraints.

Viewer-specific state and permission decisions for one room.

FieldTypeDescription
is_memberboolTrue when the current user is an effective room member.
has_unreadboolTrue when the room has unread root messages for the current user.
permissionsrepeated PermissionGrantEffective room-scoped permission decisions after room state constraints.

Room metadata plus state and capabilities resolved for the authenticated viewer.

FieldTypeDescription
roomRoomPublic room metadata.
viewer_stateRoomViewerStateState and permission decisions resolved for the current user.

Sidebar link metadata for room group navigation.

FieldTypeDescription
idstringStable sidebar link ID.
labelstringDisplay label.
urlstringAbsolute http(s) URL or server-local path.

Login and registration options exposed before authentication.

FieldTypeDescription
direct_registration_enabledboolWhether users can create accounts through the public UI.
providersrepeated ProviderMetadataConfigured login providers.
authorize_urlstringURL for the legacy authorization flow, when enabled.

Public server profile, identity, and branding fields.

FieldTypeDescription
namestringDisplay name of the Chatto server.
versionstringServer software version.
logo_urloptional stringOptional server logo URL.
banner_urloptional stringOptional server banner URL.
welcome_messageoptional stringOptional welcome message.
descriptionoptional stringOptional server description.

Authenticated server runtime settings used by clients.

FieldTypeDescription
push_notifications_enabledboolWhether Web Push notifications are fully configured.
vapid_public_keyoptional stringOptional VAPID public key for Web Push registration.
livekit_urloptional stringOptional LiveKit URL for voice and video calls.
video_processing_enabledboolWhether video processing is enabled.
max_upload_sizeint64Maximum general upload size in bytes.
max_video_upload_sizeint64Maximum video upload size in bytes.
message_edit_window_secondsint32Message edit window in seconds.

One followed thread for the current user.

FieldTypeDescription
root_messageMessageRenderable root message, when the root is still visible.
roomRoomSummaryRoom containing the thread.
threadThreadSummaryAggregated thread state.

Current follow state for one thread and viewer.

FieldTypeDescription
room_idstringRoom containing the thread.
thread_root_event_idstringEvent ID of the root message for the thread.
followingboolTrue when the current user follows the thread.

Current active call snapshot for one room.

FieldTypeDescription
roomRoomSummaryRoom containing the active call.
call_idstringActive call session ID.
participantsrepeated CallParticipantParticipants currently projected for this call.

User currently participating in a room call.

FieldTypeDescription
userUserParticipant user.
joined_atgoogle.protobuf.TimestampWhen the user joined this call.
call_idstringActive call session ID.

JetStream account limits and usage.

FieldTypeDescription
memoryint64Maximum memory storage in bytes. Values less than or equal to zero mean unlimited.
memory_usedint64Used memory storage in bytes.
storageint64Maximum file storage in bytes. Values less than or equal to zero mean unlimited.
storage_usedint64Used file storage in bytes.
streamsint32Maximum number of streams. Values less than or equal to zero mean unlimited.
streams_usedint32Current number of streams.
consumersint32Maximum number of consumers. Values less than or equal to zero mean unlimited.
consumers_usedint32Current number of consumers.

Current NATS server connection metadata.

FieldTypeDescription
connectedboolWhether Chatto is currently connected to NATS.
server_idstringConnected NATS server ID.
server_namestringConnected NATS server name.
versionstringConnected NATS server version.
max_payloadint64Maximum payload accepted by the connected NATS server.
rttstringRound-trip latency to the connected NATS server.

JetStream consumer state.

FieldTypeDescription
streamstringStream that owns the consumer.
namestringConsumer name.
durablestringDurable name, when the consumer is durable.
filter_subjectstringSingle filter subject, when configured.
filter_subjectsrepeated stringMultiple filter subjects, when configured.
ack_policystringNATS acknowledgement policy.
pull_basedboolWhether this is a pull consumer.
push_boundboolWhether this push consumer has an active subscription.
pendingint64Pending messages for this consumer.
ack_pendingint32Messages waiting for acknowledgement.
redeliveredint32Redelivered message count.
waitingint32Pull requests waiting for messages.
delivered_consumer_sequencestringDelivered consumer sequence.
delivered_stream_sequencestringDelivered stream sequence.
ack_floor_consumer_sequencestringAcknowledgement floor consumer sequence.
ack_floor_stream_sequencestringAcknowledgement floor stream sequence.

JetStream stream and consumer diagnostics.

FieldTypeDescription
total_messagesint64Total messages stored across all streams.
total_bytesint64Total bytes stored across all streams.
total_consumer_pendingint64Total pending messages across all consumers.
total_ack_pendingint32Total messages currently waiting for acknowledgement.
streamsrepeated AdminNatsStreamInfoStreams sorted by name.
consumersrepeated AdminNatsConsumerInfoConsumers sorted by stream and name.

JetStream stream state.

FieldTypeDescription
namestringStream name.
descriptionstringStream description.
subjectsrepeated stringSubjects stored in the stream.
storagestringStorage backend name.
messagesint64Number of messages in the stream.
bytesint64Number of bytes in the stream.
first_sequencestringFirst stream sequence.
last_sequencestringLast stream sequence.
consumer_countint32Number of stream consumers.
replicasint32Configured stream replica count.
cluster_leaderstringCurrent cluster leader, when reported by NATS.

Projection-specific diagnostic metric.

FieldTypeDescription
namestringMetric name.
valueint64Metric value.
bytesint64Estimated memory represented by this metric in bytes.

Event-sourced projection health and memory estimates.

FieldTypeDescription
keystringStable projection key.
namestringDisplay name.
subjectsrepeated stringEVT subjects consumed by this projection.
startedboolWhether the projection projector is running.
startup_duration_secondsoptional doubleStartup duration in seconds, set after startup completes.
last_applied_sequencestringLast event sequence applied by the projection.
matching_stream_sequencestringTarget sequence among the projection’s matching subjects.
stream_last_sequencestringCurrent last sequence of the EVT stream.
lagint64Matching-subject lag between target and applied sequence.
failedboolWhether the projection failed.
failed_sequencestringSequence that failed, when failed is true.
failurestringFailure message, when failed is true.
entry_countint64Estimated number of entries held by the projection.
estimated_bytesint64Estimated memory used by the projection in bytes.
average_entry_bytesint64Estimated average memory per entry in bytes.
metricsrepeated AdminProjectionMetricProjection-specific diagnostic metrics.

Aggregate Chatto object counts.

FieldTypeDescription
user_countint32Registered user count.
channel_room_countint32Channel room count.
dm_room_countint32Direct-message room count.

Broker and application diagnostics shown on the server admin system page.

FieldTypeDescription
connectionAdminConnectionInfoCurrent NATS server connection metadata.
accountAdminAccountInfoJetStream account limits and usage.
natsAdminNatsStatsJetStream stream and consumer diagnostics.
statsAdminServerStatsAggregate Chatto object counts.

One durable EVT entry decoded for operator inspection.

FieldTypeDescription
sequencestringEVT stream sequence.
subjectstringNATS subject.
aggregate_typestringAggregate type parsed from the subject.
aggregate_idstringAggregate ID parsed from the subject.
event_typestringEvent oneof payload type, or decode-error when decoding failed.
event_idstringDurable event ID.
actor_idstringActor user ID stored on the event.
created_atgoogle.protobuf.TimestampEvent creation timestamp.
payload_jsonstringPretty-printed JSON representation of the event payload.

Filter for owner/auditor event-log inspection.

FieldTypeDescription
event_typestringEvent oneof payload type, such as MessagePostedEvent.
actor_idstringActor user ID.
created_at_fromgoogle.protobuf.TimestampInclusive lower creation timestamp bound.
created_at_togoogle.protobuf.TimestampInclusive upper creation timestamp bound.

Role metadata plus administrative permission state.

FieldTypeDescription
rolechatto.api.v1.RolePublic role metadata shared with ordinary role catalog reads.
permissionsrepeated stringPermissions granted by this role.
permission_denialsrepeated stringPermissions denied by this role.

User row returned by server-admin member management reads.

The embedded user record carries public identity fields; remaining fields are admin/member metadata with visibility controlled by the service.

FieldTypeDescription
rolesrepeated stringExplicit role assignments. The implicit everyone role is omitted.
created_atgoogle.protobuf.TimestampAccount creation time, when known.
has_verified_emailboolWhether the caller may see that the user has a verified email and one exists.
verified_emailsrepeated stringVerified email addresses visible to the caller.
viewer_can_delete_accountboolWhether the caller may delete this account.
last_login_changegoogle.protobuf.TimestampLast self-service username change, when visible and known.
userchatto.api.v1.UserPublic identity fields for this user.

Stored permission decision returned after a write.

FieldTypeDescription
permissionstringPermission identifier.
scopePermissionScopeServer, group, or room scope this decision applies to.
decisionPermissionDecisionStored decision after the write. NONE means no explicit decision remains.

Full decision trace for one permission and target user.

FieldTypeDescription
permissionstringPermission identifier.
statePermissionDecisionOverall decision after applying deny-wins resolution.
decided_atPermissionDecisionLevelLevel of the winning decision, when state is not NONE.
decided_by_rolestringRole name or policy marker that produced the winning decision.
tracerepeated PermissionTraceEntryOrdered decision trace. The first entry is the winning decision.

Matrix cell for one permission and scope.

FieldTypeDescription
permissionstringPermission identifier.
scope_idstringScope ID matching PermissionMatrixScope.id.
overridePermissionDecisionExplicit decision at this scope.
effectivePermissionDecisionEffective decision at this scope.

Matrix column scope.

FieldTypeDescription
idstringStable scope ID for the server, a group, or a room.
labelstringHuman-readable label.
kindPermissionScopeKindScope tier.
parent_group_idstringParent group ID for room scopes.

Permission scope reference.

FieldTypeDescription
kindPermissionScopeKindScope tier.
idstringScope ID for group or room scope. Empty for server scope.

One explicit decision encountered while explaining a permission.

FieldTypeDescription
levelPermissionDecisionLevelLevel at which this decision was observed.
role_namestringRole name or policy marker that produced the decision.
decisionPermissionDecisionDecision observed at this trace step.
appliedboolWhether this entry is the winning decision.

Permission matrix for one role across all scopes.

FieldTypeDescription
role_namestringRole name.
applicable_permissionsrepeated stringPermissions rendered as rows.
scopesrepeated PermissionMatrixScopeScopes rendered as columns.
cellsrepeated PermissionMatrixCellSparse matrix cells.

One resource-oriented permission decision at a concrete scope.

This is the row-oriented counterpart to PermissionMatrixCell. Prefer this shape when building integrations that do not need matrix column joins.

FieldTypeDescription
permissionstringPermission identifier.
scopePermissionScopeServer, group, or room scope this decision applies to.
overridePermissionDecisionExplicit decision stored at this scope.
effectivePermissionDecisionEffective decision after inherited broader scopes are applied.

Permission grants and denials at a single tier.

FieldTypeDescription
permissionsrepeated stringExplicitly granted permissions.
permission_denialsrepeated stringExplicitly denied permissions.

One role’s permission state at a single tier.

FieldTypeDescription
overrideTierPermissionsExplicit state at this tier.
inherited_allowsrepeated stringAllows inherited from broader tiers.
inherited_denialsrepeated stringDenials inherited from broader tiers.
rolechatto.api.v1.RolePublic role metadata.

Role permission matrix for one tier.

FieldTypeDescription
applicable_permissionsrepeated stringPermissions configurable at this tier.
rolesrepeated TierRoleRoles sorted by position.

Permission matrix for one user across all scopes.

FieldTypeDescription
user_idstringUser ID.
applicable_permissionsrepeated stringPermissions rendered as rows.
scopesrepeated PermissionMatrixScopeScopes rendered as columns.
cellsrepeated PermissionMatrixCellSparse matrix cells.

Ordered room group returned after admin layout mutations.

FieldTypeDescription
idstringStable room group ID.
namestringDisplay name.
descriptionstringPublic group description, when set.
itemsrepeated AdminRoomLayoutItemMixed room/sidebar-link entries in sidebar order.
can_create_roomboolWhether the viewer can create rooms in this group.

One ordered sidebar item in an admin room group layout.

FieldTypeDescription
item.roomchatto.api.v1.RoomChannel room entry.
item.sidebar_linkchatto.api.v1.SidebarLinkSidebar link entry.

One item reference in a sidebar order replacement.

FieldTypeDescription
kindAdminRoomLayoutItemKindItem kind.
idstringRoom ID when kind is ROOM, sidebar link ID when kind is SIDEBAR_LINK.

Runtime-editable server profile settings.

FieldTypeDescription
server_namestringServer name for page titles. Empty means the default is used.
descriptionstringShort server description for OG link-preview metadata.
motdstringMessage of the day for the authenticated header.
welcome_messagestringWelcome message shown on the login page.

Mode of a pending external identity confirmation flow.

NameNumberDescription
EXTERNAL_IDENTITY_FLOW_KIND_UNSPECIFIED0The flow kind was not specified.
EXTERNAL_IDENTITY_FLOW_KIND_CREATE_ACCOUNT1Create a new passwordless account and link the provider identity.
EXTERNAL_IDENTITY_FLOW_KIND_LINK_ACCOUNT2Link the provider identity to the authenticated account.

Fit mode used when generating transformed image URLs.

NameNumberDescription
IMAGE_FIT_MODE_UNSPECIFIED0The fit mode was not specified.
IMAGE_FIT_MODE_CONTAIN1Preserve the whole source image within the requested bounds.
IMAGE_FIT_MODE_COVER2Fill the requested bounds, cropping when needed.

Live presence status returned by public read APIs.

Offline is a read-side state only. Clients cannot update their presence to Offline through the account presence RPC; they should stop refreshing and let the server’s live presence record expire.

NameNumberDescription
PRESENCE_STATUS_UNSPECIFIED0No presence status was specified.
PRESENCE_STATUS_ONLINE1The user is actively available.
PRESENCE_STATUS_AWAY2The user is connected but away or idle.
PRESENCE_STATUS_DO_NOT_DISTURB3The user does not want notifications while this live status is active.
PRESENCE_STATUS_OFFLINE4The user has no active live presence record.

Notification delivery level for a room.

NameNumberDescription
NOTIFICATION_LEVEL_UNSPECIFIED0The level was not specified.
NOTIFICATION_LEVEL_DEFAULT1Use the inherited default for the room.
NOTIFICATION_LEVEL_MUTED2Do not notify for this room.
NOTIFICATION_LEVEL_NORMAL3Notify according to the normal room rules.
NOTIFICATION_LEVEL_ALL_MESSAGES4Notify for every message in the room.

User preference for rendering times in clients.

NameNumberDescription
TIME_FORMAT_UNSPECIFIED0No explicit preference was stored.
TIME_FORMAT_AUTO1Let the client choose based on locale and browser settings.
TIME_FORMAT_12_HOUR2Render times using a 12-hour clock.
TIME_FORMAT_24_HOUR3Render times using a 24-hour clock.

Processing state for a video attachment.

NameNumberDescription
MESSAGE_VIDEO_PROCESSING_STATUS_UNSPECIFIED0The processing status was not specified.
MESSAGE_VIDEO_PROCESSING_STATUS_PROCESSING1Video processing is still running.
MESSAGE_VIDEO_PROCESSING_STATUS_COMPLETED2Video processing completed successfully.
MESSAGE_VIDEO_PROCESSING_STATUS_FAILED3Video processing failed.

Upload lifecycle state for a room-scoped attachment upload.

NameNumberDescription
ASSET_UPLOAD_STATUS_UNSPECIFIED0The upload status was not specified.
ASSET_UPLOAD_STATUS_OPEN1The upload accepts more chunks.
ASSET_UPLOAD_STATUS_COMPLETED2The upload has been completed and produced an attachment asset.
ASSET_UPLOAD_STATUS_CANCELLED3The upload was cancelled or expired.

Kind of room represented by the public API.

NameNumberDescription
ROOM_KIND_UNSPECIFIED0The room kind was not specified.
ROOM_KIND_CHANNEL1A regular channel governed by server and room permissions.
ROOM_KIND_DM2A direct-message conversation between members.

Room kinds to include in directory responses.

NameNumberDescription
ROOM_DIRECTORY_SCOPE_UNSPECIFIED0Include both visible channel rooms and the caller’s active DM rooms.
ROOM_DIRECTORY_SCOPE_ALL1Include both visible channel rooms and the caller’s active DM rooms.
ROOM_DIRECTORY_SCOPE_CHANNELS2Include visible channel rooms only.
ROOM_DIRECTORY_SCOPE_DMS3Include the caller’s active DM rooms only.

Trinary permission decision used by permission matrices and write requests.

NameNumberDescription
PERMISSION_DECISION_UNSPECIFIED0Unspecified decision; rejected for writes.
PERMISSION_DECISION_ALLOW1Explicit allow.
PERMISSION_DECISION_DENY2Explicit deny.
PERMISSION_DECISION_NONE3No explicit decision; clears the permission state on writes.

Level at which a permission explanation found a decision.

NameNumberDescription
PERMISSION_DECISION_LEVEL_UNSPECIFIED0No decision level was reached.
PERMISSION_DECISION_LEVEL_SERVER1Server-level role or user decision.
PERMISSION_DECISION_LEVEL_GROUP2Room-group-level role or user decision.
PERMISSION_DECISION_LEVEL_ROOM3Room-level role or user decision.

Scope tier for permission matrices and write requests.

NameNumberDescription
PERMISSION_SCOPE_KIND_UNSPECIFIED0Unspecified scope; treated as server scope where older clients omit it.
PERMISSION_SCOPE_KIND_SERVER1Server tier.
PERMISSION_SCOPE_KIND_GROUP2Room-group tier.
PERMISSION_SCOPE_KIND_ROOM3Room tier.

Sidebar item kind used in reorder requests.

NameNumberDescription
ADMIN_ROOM_LAYOUT_ITEM_KIND_UNSPECIFIED0The item kind was not specified.
ADMIN_ROOM_LAYOUT_ITEM_KIND_ROOM1Channel room entry.
ADMIN_ROOM_LAYOUT_ITEM_KIND_SIDEBAR_LINK2Sidebar link entry.