One-to-one messaging
createDirect is idempotent for a pair. Direct chats do not accept a retention policy write. Senders can use persistent, after-duration, or after-read when the type policy allows it. See conversations and messages.
Recipes
GozWire supplies membership, messages, threads, reactions, structured mentions, private aliases, blocks, media, and moderation. Discovery feeds, votes, ranking, account authentication, and product UI remain host application concerns. These recipes match the public engine API.
createDirect is idempotent for a pair. Direct chats do not accept a retention policy write. Senders can use persistent, after-duration, or after-read when the type policy allows it. See conversations and messages.
createGroup assigns owner to the creator. Additional users are members unless you add them as admin or moderator. Only owners and admins can add participants. Direct conversations cannot add participants. See groups.
createChannel uses the same membership model. Access is membership-based. Workspace directories and channel browsers belong in your application. Default retention is persistent only until staff expand policy. See community.
createForum plus messages.history with rootsOnly lists posts. messages.thread pages a reply tree. Upvotes, ranking, and subreddit discovery are not engine features. See channels, forums, and threads.
Clients upload directly to S3-compatible storage after media.createUpload. messages.send stores object keys, not bytes. Audio and video skip the moderation pipeline. SVG is not allowed. See storage.
Mentions are identity IDs in metadata.mentions. Body text is never parsed. Autocomplete is conversations.membersForMention for the current room. Unknown, self, duplicate, blocked, and over-cap IDs are dropped. Edits never enqueue push. See conversations and messages.
identities.aliases are owner-only. The owner sees them on participants and mention members. Events, push, and identities.list stay canonical. See conversations and messages.
Either direction suppresses new DMs, invites, mention targeting, and push both ways. Shared-room ordinary messages and thread replies stay allowed. Errors match a missing user. See conversations and messages.
Send still commits in PostgreSQL first. Text and images can be held until the sidecar returns scores. Named presets (default lenient text, strict image) and the resolved maps decide allow, review, or block. See moderation.
Optional Web Push, FCM HTTP v1, and APNs HTTP/2. Default push.enabled is false. A provider 2xx is acceptance, not device display. Missed events recover with messages.sync. See push.
Expiration is a field on every message: persistent, after_duration, or after_read. Channel and forum default to persistent only. Integrators own who may change modes. See retention.