APIObjects

Objects

115 objects, in the order the schema defines them.

AccountDeletionScheduleobject

A pending account deletion.

FieldTypeDescription
scheduledForDateTime!

When the grace period ends and the account is purged. Until then the account works as before and cancelAccountDeletion keeps it.

Used by Mutation.requestAccountDeletion

Attachmentobject

FieldTypeDescription
idID!
statusAttachmentStatusEnum!
filenameString!
contentTypeString!
sizeBytesInt!
blobSha256String

Unpadded base64url SHA-256 of an encrypted conversation's blob.

Used by Message, Mutation.finalizeAttachment

AuditLogEntryobject

FieldTypeDescription
idID!
actorUserIdID!
serverIdID!
commandIdString!
initiatorString!
argsRedactedJSON!
sensitivityString!
dangerousBoolean!
confirmationKindString!
typedVerbTypedVerbGql
outcomeAuditOutcomeGql!
errorKindString
capabilityCheckOutcomeString
confirmationOutcomeString
createdAtString!

Used by AuditLogPage

AuditLogPageobject

FieldTypeDescription
items[AuditLogEntry!]!
nextCursorString

Opaque cursor pointing after the last item; pass to after on next query.

pageInfoAuditLogPageInfo!

Used by Query.listAuditLog

AuditLogPageInfoobject

FieldTypeDescription
hasNextPageBoolean!
hasPrevPageBoolean!

Used by AuditLogPage

ChannelCursorOutputobject

FieldTypeDescription
createdAtDateTime!
conversationIdID!

Used by ChannelPage

ChannelLensobject

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
createdByID!
nameString!
filterSpecFilterSpecGql!
isSharedBoolean!
createdAtDateTime!
updatedAtDateTime!

Used by Mutation.createChannelLens, Mutation.updateChannelLens, Query.channelLenses

ChannelPageobject

FieldTypeDescription
items[Conversation!]!
nextChannelCursorOutput
prevChannelCursorOutput
pageInfoPageInfo!

Used by Query.channels

ClaimedKeyPackageobject

FieldTypeDescription
userIdID!
principalIdString!
deviceIdID!
keyPackageString!
keyPackageRefString!
lastResortBoolean!

Used by Mutation.claimMlsKeyPackages

Commandobject

FieldTypeDescription
idString!
titleString!
descriptionString!
categoryString!
sourceKindCommandSourceKind!
executionTargetCommandExecutionTarget!
arguments[CommandArgument!]!

The arguments the command accepts, in order. Clients build the palette form and the AI tool schema from them.

requiredContext[String!]!
requiredCapabilities[String!]!
visibleInPaletteBoolean!
visibleInContextMenusBoolean!
keybindCapableBoolean!
dangerousBoolean!
nlDescriptionString

AI-optimised natural-language description; falls back to description when absent. Sanitized at registration time, so the frontend can trust this field even when rendering inside a prompt template.

intentSamples[String!]!

Example phrases a user might speak/type to invoke this command. Individually sanitized at registration; bounded in count and length.

aiCallableBoolean!

true when an AI agent may call the command. Only these commands appear on the AI surface and in commandDiscover. Always false while the instance has the AI command surface off.

sensitivityCommandSensitivity!

Classification tier driving audit verbosity, mutating-call caps, and the UX confirm-modal placement.

Used by Mutation.createUserCommand, Mutation.updateUserCommand, Query.commands, Query.commandDiscover

CommandArgumentobject

One argument a command accepts. defaultValue is JSON because arguments may be strings, numbers, booleans or objects; allowedValues lists the choices of an ENUM argument.

FieldTypeDescription
nameString!
titleString!
descriptionString!
argumentTypeCommandArgumentType!
requiredBoolean!
defaultValueJSON
allowedValues[String!]

Used by Command

CommandResultobject

FieldTypeDescription
statusCommandResultStatus!
messageString!
payloadJSON
followUpCommands[String!]!
pipelineStages[PipeStageResult!]
confirmationRequiredConfirmationChallenge

Populated iff status == CONFIRMATION_REQUIRED. Carries the server-issued challenge (token + argsHash + expiresAt). The frontend presents the modal, then re-issues the original executeCommand mutation with confirmation: { inBandToken: { ... } }.

Used by Mutation.executeCommand, Mutation.executeMacro

ConfirmationChallengeobject

A confirmation challenge the server issued for one command call. The client asks the user to confirm, then re-submits the call with token and argsHash as its confirmation proof before expiresAt.

FieldTypeDescription
tokenString!
argsHashString!
expiresAtDateTime!

Used by CommandResult

Contactobject

FieldTypeDescription
principalIdString!
relayUrls[String!]!
addedAtDateTime!

Used by Mutation.addContact, Query.contacts

Conversationobject

FieldTypeDescription
idID!
serverIdID!
conversationTypeConversationTypeEnum!
titleString
topicString
memberIds[ID!]!
isPrivateBoolean!

Channels only: visible to its members alone. Fixed at creation.

isArchivedBoolean!
archivedAtDateTime
memberCountInt!
createdByID
slowModeSecondsInt!

Slow mode: minimum seconds between two messages of the same non-moderator member; 0 when off.

encryptedAtDateTime

When the conversation became end-to-end encrypted; null for plaintext. Messages from then on are encrypted.

pendingMemberIds[ID!]!

Members invited to an encrypted conversation who have no device set up for encryption yet. They cannot read or send; they join with acceptConversationInvite once a device is ready, without the history before that, or declineConversationInvite. Not in memberIds or memberCount.

isMutedBoolean!
isMemberBoolean!

Whether the viewer is a member (for channels: has joined it).

notificationLevelNotificationLevel

The viewer's own notification level for this conversation; null inherits the workspace default.

effectiveNotificationLevelNotificationLevel!

The level that applies to the viewer now: NONE while muted, else notificationLevel, else the workspace default.

mlsGroupMlsGroup

The conversation's current MLS group; null for plaintext, before the first Commit, and for a pending member.

predecessorConversationPredecessor

The conversation this one succeeds, on the host that held it; null for any other.

dmRequestPendingBoolean

For a DM: whether the other member's DM request for it is still pending, so the caller sees their messages wait for acceptance; false once it is accepted or ignored, when there is none, and for another member whose relay is another server. Null for groups and channels.

Used by ChannelPage, ConversationPage, Mutation.createConversation, Mutation.updateConversationTopic, Mutation.joinChannel, Mutation.addConversationMembers, Mutation.setConversationArchived, Mutation.setSlowMode, Mutation.acceptConversationInvite, Notification, Query.conversation

ConversationMessageChangesobject

The changes of one conversation after the requested cursor, oldest first.

FieldTypeDescription
conversationIdID!
statusConversationChangesStatus!
changes[MessageChange!]!
cursorString!

Store this and pass it as after next time. Opaque.

hasMoreBoolean!

More changes follow cursor; ask again with it right away.

Used by Query.messageChanges

ConversationNotificationLevelobject

The viewer's level for one conversation, as returned by setConversationNotificationLevel.

FieldTypeDescription
conversationIdID!
levelNotificationLevel

The conversation's own level; null inherits the workspace default.

effectiveLevelNotificationLevel!

What applies now: NONE while muted, else level, else the workspace default.

mutedUntilDateTime

Used by Mutation.setConversationNotificationLevel

ConversationPageobject

FieldTypeDescription
items[Conversation!]!
nextInboxCursorOutput
prevInboxCursorOutput
pageInfoPageInfo!

Used by Query.inboxConversations

ConversationPredecessorobject

The conversation a successor replaces, on the host that held it.

FieldTypeDescription
hostServerIdString!
conversationIdID!

Used by Conversation

CreateInvitePayloadobject

FieldTypeDescription
inviteTokenString!
inviteIdID!

Used by Mutation.createInvite

CustomEmojiobject

FieldTypeDescription
idID!
serverIdID!
nameString!
imageUrlString!
uploadedByID!
createdAtDateTime!

Used by Mutation.createCustomEmoji, Query.customEmojis

DeleteWorkspacePayloadobject

FieldTypeDescription
deletedBoolean!

Whether the workspace was deleted.

Used by Mutation.deleteWorkspace

DeviceKeyobject

FieldTypeDescription
deviceIdID!

The client-chosen device id from the certificate.

publicKeyString!

The device key in tagged form, <algorithm>:<base64url> (today always ed25519:…).

nameString!
keySeqInt!

Key log seq whose identity key signed the certificate.

certificateSignedStatement!
addedAtDateTime!
lastUsedAtDateTime
revokedAtDateTime

Used by KeyIdentity, Mutation.addDeviceKey, Mutation.revokeDeviceKey

DeviceLinkobject

FieldTypeDescription
stateDeviceLinkState!
expiresAtDateTime!
offerSealedMessage

The new device's sealed offer, while OFFERED or ANSWERED.

Used by Mutation.sendDeviceLinkAnswer, Query.deviceLink

DmFloorSourceobject

Where the floor that refuses DMs from outside comes from.

FieldTypeDescription
kindDmFloorSourceKind!
workspaceIdID

The workspace, for WORKSPACE.

workspaceNameString

Used by MyDmSettings

DmRequestobject

A conversation started by someone outside the caller's contacts.

FieldTypeDescription
idID!
fromPrincipalIdString!
cardSignedStatement!

The sender's profile card as the host sent it.

hostServerIdString!
conversationIdID!
heldItems[RelayItem!]!

Up to three items of the conversation, held while the request is pending.

statusDmRequestStatus!
createdAtDateTime!
expiresAtDateTime!

Used by Mutation.acceptDmRequest, Mutation.ignoreDmRequest, Query.dmRequests

DndWindowobject

A daily do-not-disturb window. start/end are "HH:MM" wall-clock times in timezone (an IANA name); the window crosses midnight when end is before start.

FieldTypeDescription
startString!
endString!
timezoneString!

Used by NotificationSettings

FilterConditionGqlobject

FieldTypeDescription
fieldFilterField!
opFilterOp!
valueJSON!

Used by FilterSpecGql

FilterSpecGqlobject

FieldTypeDescription
conditions[FilterConditionGql!]!
logicFilterLogic!

Used by ChannelLens

InboxCursorOutputobject

FieldTypeDescription
lastActivityAtDateTime!
conversationIdID!

Used by ConversationPage

InstanceAbuseReportobject

An abuse report filed with this server, by a local user or from the abuse address.

FieldTypeDescription
idID!

The report's id.

reporterUserIdID

The local user who filed the report; null for one the operator filed from the abuse address.

reporterUsernameString

The reporter's username; null with reporterUserId.

subjectPrincipalIdString

The principal reported (rimp1_…); null for a report naming only a server.

subjectUsernameString

The username of the account holding the reported principal here; null when no local account holds it.

subjectServerIdString

The server reported (rims1_…); null for a report naming only a principal.

requestIdID

The DM request the report was filed on; null for one filed otherwise.

reasonString!

Why the report was filed.

createdAtDateTime!

When the report was filed.

resolvedAtDateTime

When the report was resolved; null while it is open.

resolvedBoolean!

Whether the report is resolved.

Used by Mutation.instanceResolveReport, Query.instanceReports

InstanceAccountobject

A local account, as the moderation queue names it.

FieldTypeDescription
userIdID!

The account's user id.

usernameString!

The account's username.

principalIdString

The account's principal (rimp1_…); null for an account that never enrolled a key.

createdAtDateTime!

When the account was created.

Used by InstancePrincipalBlockOutcome

InstanceIpBlockobject

An address or range on this server's IP deny list, refused on every route but the liveness probe.

FieldTypeDescription
cidrString!

The address or range in CIDR form, IPv4 or IPv6.

reasonString!

Why the address or range was blocked.

expiresAtDateTime

When the block lifts; null for a block that lasts until it is removed.

createdAtDateTime!

When the block was made, or its reason and expiry last replaced.

expiredBoolean!

Whether the block has expired and is no longer in force.

Used by InstanceIpBlockOutcome, Query.instanceIpBlocks

InstanceIpBlockOutcomeobject

What blocking an address or range did.

FieldTypeDescription
blockInstanceIpBlock!

The block now in force.

newlyBlockedBoolean!

False when the range was blocked already; its reason and expiry were replaced.

Used by Mutation.instanceBlockIp

InstancePrincipalBlockobject

A principal this server refuses: its sessions were ended, and its signups, logins and deliveries are refused.

FieldTypeDescription
principalIdString!

The principal blocked (rimp1_…).

usernameString

The username of the account holding the principal here; null when no local account holds it.

reasonString!

Why the principal was blocked.

createdAtDateTime!

When the principal was blocked.

Used by Query.instancePrincipalBlocks

InstancePrincipalBlockOutcomeobject

What blocking one principal or account did.

FieldTypeDescription
principalIdString

The principal blocked; null for an account of a cascade that has no key identity.

newlyBlockedBoolean!

False when it was blocked already; its reason was replaced.

accountInstanceAccount

The local account blocked; null when no local account holds the principal.

reasonString!

The reason recorded; a cascade's accounts carry an "(invited by …)" suffix.

endedSessionsInt!

How many of the account's sessions were ended.

ignoredRequestsInt!

How many pending DM requests from the principal were ignored.

revokedInvitesInt!

How many of the account's invites with uses left were revoked.

emailBlockedBoolean!

Whether the account's email is now refused at signup and password login.

invitees[InstanceAccount!]!

The accounts the account's invites created, oldest first.

Used by Mutation.instanceBlockPrincipal

InstancePrincipalUnblockOutcomeobject

What lifting a principal's block did.

FieldTypeDescription
liftedBoolean!

Whether the principal was blocked.

emailUnblockedBoolean!

Whether the account's email was blocked and no longer is.

Used by Mutation.instanceUnblockPrincipal

InviteTokenPreviewGqlobject

Read-only preview of a registration token.

Does NOT consume the token. Workspace-invite previews carry server and inviter info; instance-invite previews are minimal.

FieldTypeDescription
tokenTypeInviteTokenTypeGql!
expiresAtDateTime

None for workspace invites that were issued without an expiry.

workspaceWorkspaceInvitePreviewGql

Populated only when token_type == WORKSPACE.

Used by Query.previewInviteToken

JoinServerByInvitePayloadobject

FieldTypeDescription
serverIdID!

Used by Mutation.joinServerByInvite

KeyIdentityobject

What this server holds about the signed-in account's key identity. Before the account enrolls a key, principalId and keySeq are null and the lists are empty.

FieldTypeDescription
principalIdString
keySeqInt
keyLog[KeyLogEntry!]!

Oldest entry first.

devices[DeviceKey!]!

Every device, revoked ones included, oldest first.

profileCardProfileCard

Used by Mutation.enrollIdentityKey, Mutation.rotateIdentityKey, Query.myKeyIdentity

KeyLogEntryobject

FieldTypeDescription
seqInt!
kindKeyLogEntryKind!
statementSignedStatement!
createdAtDateTime!

Used by KeyIdentity, Query.keyLog

KeyLoginChallengeobject

FieldTypeDescription
challengeIdID!
nonceString!

Copy into the login statement's nonce.

expiresAtDateTime!

Used by Mutation.keyLoginChallenge

Keybindobject

FieldTypeDescription
idID!
sourceKeybindSource!
scopeKeybindScope!
workspaceIdID
keystrokeString!
commandIdString!
contextKeybindContext!
presetArgsJSON
isEnabledBoolean!

Used by Mutation.createKeybind, Mutation.updateKeybind, Query.resolvedKeybinds

LinkPreviewobject

FieldTypeDescription
idID!
messageIdID!
urlString!
titleString
descriptionString
imageUrlString
siteNameString
fetchedAtDateTime!

Used by Message

LoginPayloadobject

Payload returned from login and loginWithKey.

FieldTypeDescription
userIdID!
csrfTokenString!

The new session's CSRF token, the value of the rim_csrf cookie. A client that cannot read that cookie keeps it in memory and sends it in the X-CSRF-Token header.

Used by Mutation.login, Mutation.loginWithKey

MacroDefobject

FieldTypeDescription
idID!
serverIdID!
userIdID!
nameString!
descriptionString
steps[MacroStep!]!
aiCallableBoolean!
nlDescriptionString!
intentSamples[String!]!
sensitivityCommandSensitivity!
createdAtDateTime!

Used by Mutation.createMacro, Mutation.updateMacro, Query.myMacros, Query.macroByName

MacroStepobject

FieldTypeDescription
commandIdString!
argsJSON

Used by MacroDef

MemberTimeoutobject

A member's timeout: until until they can read but not write in the workspace.

FieldTypeDescription
serverIdID!
userIdID!
untilDateTime!
reasonString
setByID
createdAtDateTime!

Used by Mutation.timeoutMember

Messageobject

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
threadIdID
rootThreadIdID
authorIdID!
textString
hasAttachmentsBoolean!
attachments[Attachment!]!
parentMessageIdID
forwardedFromMessageIdID
forwardedFromMessage

The forwarded message; null when the viewer cannot read its conversation or it is gone.

isDeletedBoolean!
sentAtDateTime!
authorUser
reactions[ReactionGroup!]!
isPinnedBoolean!
mentionedUserIds[ID!]!
linkPreviews[LinkPreview!]!
mentions[User!]!
encryptionMessageEncryption

The MLS envelope of an encrypted message, whose text is always null; null for plaintext messages.

Used by Message, MessageChange, MessagePage, Mutation.sendMessage, Mutation.replyToMessage, Mutation.editMessage, Mutation.forwardMessage, Mutation.sendEncryptedMessage, Mutation.editEncryptedMessage, Notification, Query.message, Query.pinnedMessages, Query.applyChannelLens

MessageChangeobject

A message as it is now, at its newest change. A message appears at most once per page.

FieldTypeDescription
kindMessageChangeKind!
versionString!

The message's position in its conversation's change sequence, as a decimal string. Increases with every change; compare it to a cached copy to keep the newer one.

editedAtDateTime

When the text last changed; null for a never-edited message.

messageMessage!

The message. Deleted messages come back with isDeleted: true and null text.

Used by ConversationMessageChanges

MessageCursorOutputobject

FieldTypeDescription
sentAtDateTime!
messageIdID!

Used by MessagePage, SearchResultPage

MessageEncryptionobject

The MLS envelope of an encrypted message.

FieldTypeDescription
incarnationInt!
epochInt!

The epoch the message was sent in.

senderDeviceIdID!
ciphertextString

The MLSMessage; null once the message is deleted.

frankingReceiptString!
frankingKeyIdInt!
sentAtUsString!

sentAt in microseconds since the Unix epoch, as decimal text, as the receipt covers it.

Used by Message

MessagePageobject

FieldTypeDescription
items[Message!]!
nextMessageCursorOutput
prevMessageCursorOutput
pageInfoPageInfo!

Used by Query.messages, Query.threadMessages

MessageReportobject

A member's report of a message. messageText and messageAuthorId are present only when the viewing moderator can read the conversation (messageReadable); otherwise only the ids and the reporter's reason are shown. messageText is also null for a deleted message.

A report of an encrypted message is franked: the server verified that its content is what the sender's device sent (frankingVerifiedAt). Its author, send time and sender device are shown to every moderator; its content (frankedContent) only by messageReport.

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
messageIdID!
reporterUserIdID!
reasonString!
statusMessageReportStatus!
resolvedByID
resolvedAtDateTime
createdAtDateTime!
messageReadableBoolean!
messageTextString
messageAuthorIdID
messageSentAtDateTime

When the reported message was sent; null when its details are not shown.

frankingVerifiedAtDateTime

Set when the server verified a franked report of an encrypted message.

frankedSenderDeviceIdID

The client device id that sent the reported encrypted message.

frankedContentString

The exact content bytes of a verified report, unpadded base64url. Only messageReport fills it; null in lists and once retention cleared it.

frankedContentExpiresAtDateTime

When the verified content is deleted: 90 days after the report was resolved or dismissed; null while it is open.

Used by MessageReportPage, Mutation.reportMessage, Mutation.resolveReport, Query.messageReport

MessageReportCursorOutputobject

FieldTypeDescription
createdAtDateTime!
reportIdID!

Used by MessageReportPage

MessageReportPageobject

Reports ordered createdAt ASC, id ASC, with the standard cursor semantics.

FieldTypeDescription
items[MessageReport!]!
nextMessageReportCursorOutput
prevMessageReportCursorOutput
pageInfoPageInfo!

Used by Query.messageReports

MlsCommitobject

FieldTypeDescription
idID!
incarnationInt!
epochInt!

The epoch the Commit was created in; the group moved to the next.

senderPrincipalIdString
senderDeviceIdID
messageString!
createdAtDateTime!

Used by MlsCommitPage, Mutation.submitMlsCommit

MlsCommitPageobject

FieldTypeDescription
commits[MlsCommit!]!
hasMoreBoolean!

Used by Query.mlsCommits

MlsDeviceobject

FieldTypeDescription
userIdID!
principalIdString!
deviceIdID!
addedEpochInt!

Used by MlsGroup

MlsGroupobject

A conversation's current MLS group and the changes it waits for.

FieldTypeDescription
groupIdString!
incarnationInt!
cipherSuiteInt!
epochInt!

The epoch the next Commit must be created in.

devices[MlsDevice!]!
pendingAdds[MlsPendingDevice!]!

MLS-active devices of members that are not in the group yet.

pendingRemoves[MlsDevice!]!

Devices in the group that no longer belong: their member left, they were revoked, or they uploaded no key package for 60 days.

readdRequests[MlsReaddRequest!]!

Used by Conversation

MlsKeyPackageStatusobject

What the session's device has stored for one cipher suite.

FieldTypeDescription
cipherSuiteInt!
availableInt!

Unclaimed one-time key packages that can still be handed out (valid for 14 more days).

lastResortNotAfterDateTime
lastResortClaimsInt!

How often the last-resort key package was handed out; past 5 the device replaces it.

oldestNotAfterDateTime

The earliest expiry among the available one-time key packages.

Used by Mutation.uploadMlsKeyPackages, Query.myMlsKeyPackageStatus

MlsPendingDeviceobject

FieldTypeDescription
userIdID!
principalIdString!
deviceIdID!
hasKeyPackageBoolean!

Used by MlsGroup

MlsReaddRequestobject

FieldTypeDescription
principalIdString!
deviceIdID!
requestSignedStatement!

The mls-readd statement as the device signed it.

createdAtDateTime!

Used by MlsGroup

MlsWelcomeobject

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
incarnationInt!
epochInt!

The epoch the device joins at.

messageString!
expiresAtDateTime!

Used by Query.myMlsWelcomes

MutedConversationobject

FieldTypeDescription
conversationIdID!
mutedUntilDateTime

Used by Query.mutedConversations

MyDmSettingsobject

Who may start a DM with the caller, as they chose and as it applies.

FieldTypeDescription
outsideDmOutside!

Their choice for DMs from outside their workspaces.

workspaces[WorkspaceDmSetting!]!

Their choice for each of their workspaces' members.

effectiveOutsideDmOutside!

What applies to DMs from outside: their choice, or NONE under a floor that refuses them.

outsideFloorFromDmFloorSource

The floor that refuses DMs from outside; null when none does.

Used by Mutation.setMyDmSettings, Mutation.setMyWorkspaceDmSetting, Query.myDmSettings

Notificationobject

One entry of the viewer's notification inbox.

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
messageIdID!
reasonNotificationReason!
createdAtDateTime!
readAtDateTime
conversationConversation

Null when the viewer can no longer read the conversation.

messageMessage

The message (timeline or thread reply); null when the viewer can no longer read the conversation or the message is gone.

reactionEmojiString

The latest reaction's emoji; null unless reason is REACTION.

reactedByUser

Who added the latest reaction; null unless reason is REACTION.

Used by NotificationPage

NotificationCursorOutputobject

FieldTypeDescription
createdAtDateTime!
notificationIdID!

Used by NotificationPage

NotificationPageobject

Notifications ordered createdAt DESC, id DESC (newest first), with the standard cursor semantics: AFTER pages go to older notifications.

FieldTypeDescription
items[Notification!]!
nextNotificationCursorOutput
prevNotificationCursorOutput
pageInfoPageInfo!

Used by Query.myNotifications

NotificationSettingsobject

The viewer's notification settings in one workspace (defaults until first saved).

FieldTypeDescription
serverIdID!
defaultLevelNotificationLevel!

Applies to every conversation without its own level.

keywords[String!]!

Lower-cased; a whole-word, case-insensitive hit notifies (level MENTIONS or ALL).

dndDndWindow
dndPausedBoolean!

The manual do-not-disturb pause (setDoNotDisturb, notifications.dnd).

dndPausedUntilDateTime

When the manual pause ends; null while dndPaused is false or the pause has no end.

digestDigestFrequency!
reactionsBoolean!

Whether reactions to the viewer's messages notify them (level MENTIONS or ALL).

Used by Mutation.updateNotificationSettings, Mutation.setDoNotDisturb, Query.myNotificationSettings

PageInfoobject

FieldTypeDescription
hasNextBoolean!
hasPrevBoolean!

Used by ChannelPage, ConversationPage, MessagePage, MessageReportPage, NotificationPage, SearchResultPage

PipeStageResultobject

FieldTypeDescription
stageIndexInt!
commandIdString!
statusCommandResultStatus!
messageString!
payloadJSON

Used by CommandResult

PipelineActionGqlobject

FieldTypeDescription
actionTypeString!
commandIdString
argsJSON

Used by PipelineGql

PipelineFilterConditionGqlobject

FieldTypeDescription
conditionTypeString!
patternString
userIdID
conversationIdID

Used by PipelineFilterGql

PipelineFilterGqlobject

FieldTypeDescription
conditions[PipelineFilterConditionGql!]!

Used by PipelineGql

PipelineGqlobject

FieldTypeDescription
idID!
serverIdID!
nameString!
descriptionString
triggerPipelineTriggerGql!
filterPipelineFilterGql
actions[PipelineActionGql!]!
enabledBoolean!
cooldownSecsInt
createdByID!
schemaVersionInt!
lastFiredAtDateTime
createdAtDateTime!
updatedAtDateTime!

Used by Mutation.createPipeline, Mutation.updatePipeline, Mutation.togglePipeline, Query.pipelines

PipelineTriggerGqlobject

FieldTypeDescription
kindPipelineTriggerKindGql!
conversationIdID

Used by PipelineGql

PluginSourceobject

Where an entry's code comes from: the bundle fields for BUNDLE, the git fields for GIT. Hashes are lowercase hex.

FieldTypeDescription
kindPluginSourceKind!
bundleUrlString

Where to fetch the bundle. Not signed: the hash decides whether the bytes are right.

bundleSha256String
bundleSizeInt
gitUrlString
gitCommitString
gitTreeSha256String

Used by WorkspacePlugin

PrincipalDeviceobject

A certified device of a principal, revoked or not.

FieldTypeDescription
deviceIdID!
nameString!
certificateSignedStatement!
revokedAtDateTime
revocationSignedStatement
mlsActiveBoolean!

Not revoked and uploaded key packages in the last 60 days: the device is set up for encryption and belongs in its member's encrypted groups.

Used by PrincipalDevices

PrincipalDevicesobject

FieldTypeDescription
principalIdString!
devices[PrincipalDevice!]!

Used by Query.principalDevices

ProfileCardobject

FieldTypeDescription
versionInt!
statementSignedStatement!
updatedAtDateTime!

Used by KeyIdentity, Mutation.publishProfileCard

ReactionGroupobject

FieldTypeDescription
emojiString!
countInt!
reactedByMeBoolean!
userIds[ID!]!

Used by Message, Mutation.toggleReaction

RelayInfoobject

This server as its users' relay.

FieldTypeDescription
serverIdString!

This server's id (rims1_…).

roles[String!]!

host, relay or both.

directSpaceIdID!

The space holding the DMs and groups this relay's users start with anyone.

Used by Query.relayInfo

RelayItemobject

A host event queued for the caller, signed by its host.

FieldTypeDescription
idID!
hostServerIdString!
workspaceIdID!
envelopeSignedStatement!

Used by DmRequest, RelayItemPage

RelayItemPageobject

FieldTypeDescription
items[RelayItem!]!
hasMoreBoolean!

Used by Query.relayItems

RemoteIdentityobject

A principal's identity as their relay serves it. The app verifies the log against the principal id, each certificate against the log and the card against the head.

FieldTypeDescription
principalIdString!
keyLog[SignedStatement!]!
devices[RemotePrincipalDevice!]!
cardSignedStatement
servedByString!

Server id of the relay that served it.

Used by Query.remoteIdentity

RemoteJoinChallengeobject

A login challenge from a host, fetched through the relay, for a device to sign with the host's server id as audience.

FieldTypeDescription
challengeIdID!
nonceString!
expiresAtDateTime!
workspaceIdID

The workspace the invite names, for the delegation; null without an invite.

Used by Mutation.remoteJoinChallenge

RemoteJoinResultobject

A workspace joined on another host.

FieldTypeDescription
hostServerIdString!
workspaceIdID!
userIdID!

The member's user id at the host.

roleString!

owner, moderator, member or guest.

Used by Mutation.joinRemoteWorkspace

RemotePrincipalDeviceobject

A device of a principal from another server.

FieldTypeDescription
deviceIdID!
certificateSignedStatement!
revocationSignedStatement
mlsActiveBoolean!

Whether the device uploaded key packages recently enough to be added to groups.

Used by RemoteIdentity

RemoteServerobject

Another server, pinned through this relay.

FieldTypeDescription
serverIdString!
originString!
discoveryString!

The discovery document as JSON text, for the app to verify and pin.

Used by Query.remoteServer

RemoteSubscriptionobject

The relay's subscription to a workspace on another host, or a delegation the host refused.

FieldTypeDescription
hostServerIdString!
workspaceIdID!
statusString!

active, lapsed or ended; refused for a delegation the host did not accept.

expiresAtDateTime

When the host stops honouring the delegation that keeps it active.

reasonString

Why a delegation was refused (not_member, expired, relay_key, …).

Used by Mutation.renewDelegations, Query.remoteSubscriptions

RevocationFanoutobject

A device revocation at one host.

FieldTypeDescription
hostServerIdString!
statusRevocationFanoutStatus!
ackSignedStatement

The host's signed revocation-ack, checked against its key.

attemptsInt!

Used by Query.deviceRevocationStatus

SealedMessageobject

A sealed message exactly as it was sent.

FieldTypeDescription
nonceString!
ciphertextString!

Used by DeviceLink, Query.deviceLinkAnswer

SearchResultMessageobject

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
conversationTitleString
conversationTypeConversationTypeEnum!
threadIdID
rootMessageIdID
authorIdID!
textString
sentAtDateTime!
rankFloat!

Relevance score of the match. Informational, or for a sort within the page: results are paginated by recency (sentAt, id), not by rank.

headlineString

ts_headline snippet with <mark>...</mark> highlights around matched terms. None when the query had no free-text component (a purely operator-based search, e.g. from:@alice).

authorUser

Used by SearchResultPage

SearchResultPageobject

Cursor-paginated searchMessages result. Same (sentAt, messageId) cursors as MessagePage: search results are paginated by recency, not by relevance.

FieldTypeDescription
items[SearchResultMessage!]!
nextMessageCursorOutput
prevMessageCursorOutput
pageInfoPageInfo!

Used by Query.searchMessages

Serverobject

FieldTypeDescription
idID!
nameString!
viewerRoleServerMemberRoleGql!

The requesting actor's effective role in this server. Display/affordance signal only — not an authorization boundary. Every mutation independently re-checks the role server-side (defense in depth); this field just lets the client avoid rendering controls the viewer can't use. Non-null: every viewer who can query a Server is necessarily a member of it (query-level visibility already guards non-members), so there is no "not a member" variant to represent here.

ownerUser

The account holding the owner role; null when there is none, as in the direct space or once the owner's account is deleted. Workspace metadata: every member sees it, guests included.

dmOutsideFloorDmOutsideFloor

The workspace's floor for DMs to its members from people outside their workspaces; null in the direct space, which has no rules. Every member sees it.

dmMemberDefaultDmMembers

How a DM from a fellow member arrives unless the recipient chose; null in the direct space. Every member sees it.

Used by Mutation.createServer, Mutation.transferWorkspaceOwnership, Query.myServers, Query.server

ServerBanobject

A workspace ban. Active bans block every way of joining the workspace.

FieldTypeDescription
serverIdID!
userIdID!
reasonString
bannedByID
createdAtDateTime!
expiresAtDateTime

Null for a ban that lasts until it is lifted.

userUser

The banned user (null if the account no longer exists).

Used by Mutation.banMember, Query.serverBans

ServerFeatureInfoobject

One optional feature and whether it works here.

FieldTypeDescription
keyString!

The feature's name, as RIM_FEATURES_DISABLED takes it: attachments, link_previews, email, custom_emoji, workspace_plugins or ai_commands. A client ignores a name it does not know.

stateServerFeatureState!
reasonString

Why an unavailable feature is unavailable; null otherwise.

Used by ServerInfo

ServerInfoobject

The running server build, the API version it speaks and the optional features it runs.

FieldTypeDescription
versionString!

The server's release version, e.g. 0.1.0.

apiVersionInt!

The major version of this GraphQL API.

features[ServerFeatureInfo!]!

Every optional feature with its state on this instance.

auditRetentionDaysInt

Days a command audit row is kept before it is exported and deleted; null keeps rows forever.

instanceNoticeString

A short text the operator shows people on this instance, at most 500 characters; null when there is none.

termsUrlString

The terms of service a signup accepts, an absolute http(s) URL; null when the instance has none. A signup sends it back as acceptedTermsUrl.

limitsServerLimits!

The instance-wide caps, so a client can show "5 of 5" before it tries.

signupRequiresKeysBoolean!

Whether new accounts sign up with a key only: signupWithInvite is refused with FORBIDDEN and signupWithKey is the signup. Password sign-in of existing accounts works either way.

dmInboundDmInbound!

DMs from people on other servers, and from people here outside the recipient's workspaces (RIM_DM_INBOUND): a floor for every account here.

dmOutboundDmOutbound!

DMs people here start with people on other servers (RIM_DM_OUTBOUND).

dmPartners[String!]!

The server ids the PARTNERS settings name (RIM_DM_PARTNERS).

defaultWorkspaceID

The workspace every new account joins as a Member, so a client can open it after a signup; null when the server names none (RIM_DEFAULT_WORKSPACE).

Used by Query.serverInfo

ServerLimitsobject

The instance-wide caps; each is null when this instance sets none, but devices and DM requests always have one. Creating one more past a cap answers VALIDATION naming it.

FieldTypeDescription
workspacesPerUserInt

Workspaces one user owns.

membersPerWorkspaceInt

Members of one workspace; the direct space has no cap.

channelsPerWorkspaceInt

Channels of one workspace, public and private.

devicesPerUserInt

Devices on one account: the stricter of the instance cap and the relay quota.

dmRequestsPerDayInt

DM requests one user sends to strangers per day: the stricter of the instance cap and the relay quota.

macrosPerWorkspaceInt

Macros of one workspace.

pipelinesPerWorkspaceInt

Pipelines of one workspace.

pluginsPerWorkspaceInt

Plugins of one workspace's registry.

invitesPerUserPerDayInt

Invites one user creates per day.

inviteMaxUsesInt

Uses one invite may have.

messageBytesInt

Bytes of one message's text.

probationHoursInt

Hours after its creation during which an account cannot create a workspace or send a DM request to a stranger, and sends messages at a lower rate; me.probationEndsAt says when the caller's ends.

pendingInvitesPerUserInt

Pending invitations to encrypted conversations one user holds; past it, adding them to one more answers VALIDATION.

Used by ServerInfo

ServerMemberobject

FieldTypeDescription
serverIdID!
userIdID!
usernameString!
displayNameString
avatarUrlString
statusTextString
bioString
memberRoleServerMemberRoleGql!
joinedAtDateTime!
timeoutUntilDateTime

End of the member's timeout while one is in force, else null.

principalIdString

The member's key identity (rimp1_…), once enrolled; null for a password-only account.

Used by Mutation.setMemberRole, Query.serverMembers

SignedStatementobject

A stored signed statement, exactly as it was signed, so the client can verify it again.

FieldTypeDescription
payloadString!
signatureString!

Used by DeviceKey, DmRequest, KeyLogEntry, MlsReaddRequest, Mutation.applyRemoteRevocation, PrincipalDevice, ProfileCard, RelayItem, RemoteIdentity, RemotePrincipalDevice, RevocationFanout, WorkspacePlugin

SignupWithInvitePayloadGqlobject

Payload returned from signupWithInvite and signupWithKey.

server_id is Some only when a workspaceInviteToken was used; the instance-invite and open paths land in "no workspaces yet" state.

FieldTypeDescription
userIdID!
serverIdID
csrfTokenString!

The new session's CSRF token, the value of the rim_csrf cookie. A client that cannot read that cookie keeps it in memory and sends it in the X-CSRF-Token header.

Used by Mutation.signupWithInvite, Mutation.signupWithKey

StartedDeviceLinkobject

FieldTypeDescription
linkIdString!

16 bytes, unpadded base64url. The server keeps only its hash, so it is shown once.

expiresAtDateTime!

Used by Mutation.startDeviceLink

StreamHeadobject

The current seq of a host event stream, as a decimal string.

FieldTypeDescription
streamString!
seqString!

Used by Query.streamHeads

Threadobject

FieldTypeDescription
idID!
serverIdID!
conversationIdID!
rootMessageIdID
rootAuthorIdID
rootTextString
createdAtDateTime!
lastMessageAtDateTime!

Used by Query.thread, Query.threadByRootMessage

UnreadCountobject

FieldTypeDescription
conversationIdID!
countInt!

Used by Query.unreadCounts

UploadTicketobject

FieldTypeDescription
attachmentIdID!
uploadTokenString!
maxSizeBytesInt
expiresAtDateTime

Used by Mutation.createAttachment

Userobject

FieldTypeDescription
idID!
usernameString!
displayNameString
avatarUrlString
statusTextString
bioString
principalIdString

Key-based principal id (rimp1_...) once the account enrolled a key; null before. Plugins see this id, and the host maps a provisional rimp0_ id to it once.

probationEndsAtDateTime

When the account leaves probation, while it is in it. Read on me only; null for everyone else and once probation is over.

deletionScheduledForDateTime

When the account's pending deletion runs, after its grace period (requestAccountDeletion); null while none is pending, and always null except on me. Once it runs, the account is purged and only a tombstone named "Deleted account" stays as the author of its encrypted messages.

instanceOperatorBoolean!

Whether the account is an instance operator, who may run the instance moderation queue (instanceReports and the other instance… roots). Read on me only; false for everyone else.

Used by Message, Mutation.updateMyProfile, Notification, Query.me, SearchResultMessage, Server, ServerBan, WorkspacePlugin

UserPresenceGqlobject

FieldTypeDescription
userIdID!
statusPresenceStatus!
lastSeenAtDateTime!

Used by Query.workspacePresence

WorkspaceDmPolicyobject

A workspace's DM rules.

FieldTypeDescription
workspaceIdID!
outsideFloorDmOutsideFloor!

The floor for DMs to its members from outside their workspaces.

memberDefaultDmMembers!

How a DM from a fellow member arrives unless the recipient chose.

Used by Mutation.setWorkspaceDmPolicy

WorkspaceDmSettingobject

The caller's choice for DMs from the members of one of their workspaces.

FieldTypeDescription
workspaceIdID!
membersDmMembers!

Their choice, or the workspace's default when they made none.

memberDefaultDmMembers!

The workspace's default.

Used by MyDmSettings

WorkspaceInvitePreviewGqlobject

Minimal workspace info included in a workspace-invite preview. The workspace name and the inviter's and owner's display names are shown to anyone holding the invite link.

FieldTypeDescription
serverIdID!
serverNameString!
invitedByDisplayNameString!
ownerDisplayNameString

The workspace owner's display name, else username; null when the workspace has no owner.

Used by InviteTokenPreviewGql

WorkspacePluginobject

FieldTypeDescription
idID!
serverIdID!
pluginIdString!
versionString!
displayNameString!
runtimeKindPluginRuntimeKind!
statusWorkspacePluginStatus!
sourcePluginSource!
manifestString!

The exact text of rim-plugin.json inside the statement.

statementSignedStatement!
publisherPrincipalIdString!
publisherNameString!

Chosen by the publisher: it proves nothing about who they are.

publisherKeySeqInt!
publisherKeyLog[SignedStatement!]!

This server's key log of the publisher when they are enrolled here, else the one stored with the entry.

signatureStatusPluginSignatureStatus!
approvedByUser

Who approved the entry last; null once that account is deleted, and for a guest who shares no conversation with them.

approvedAtDateTime!
updatedAtDateTime!

Used by Mutation.addWorkspacePlugin, Mutation.updateWorkspacePlugin, Query.workspacePlugins

WorkspaceStateEntryGqlobject

FieldTypeDescription
idID!
serverIdID!
keyString!
valueJSON!
scopeWorkspaceStateScopeGql!
userIdID
versionInt!
expiresAtDateTime
createdAtDateTime!
updatedAtDateTime!

Used by Mutation.setWorkspaceState, Query.workspaceState, Query.workspaceStateList