app.zeens.message

zeens.app

Documentation

A single chat message, written to the SENDER's repo. The body is base64-obfuscated (NOT encrypted) so it isn't plainly readable when browsing the repo, but it is not secret — anyone can decode it. Chats are public on the user's PDS. The convoId groups a 1:1 conversation. Carries the app.zeens.v marker so the firehose recognises it.

main record

A single chat message, written to the SENDER's repo. The body is base64-obfuscated (NOT encrypted) so it isn't plainly readable when browsing the repo, but it is not secret — anyone can decode it. Chats are public on the user's PDS. The convoId groups a 1:1 conversation. Carries the app.zeens.v marker so the firehose recognises it.

Record Key tid Timestamp-based ID

Properties

app.zeens.v integer Required

Zeens version marker (always 1).

body string Required

Base64-obfuscated message text (UTF-8 bytes, base64-encoded). Obfuscation only, not encryption.

maxLength: 16384 bytes
convoId string Required

Deterministic 1:1 conversation id = sha256(sorted([didA, didB]).join('|')). Both parties derive the same id without coordination.

maxLength: 128 bytes
createdAt string datetime Required

Client-declared send time.

enc string Required

Obfuscation scheme for the body. 'b64' = base64 of UTF-8 bytes.

Allowed: b64
recipient string did Required

DID of the intended recipient.

View raw schema
{
  "description": "A single chat message, written to the SENDER's repo. The body is base64-obfuscated (NOT encrypted) so it isn't plainly readable when browsing the repo, but it is not secret — anyone can decode it. Chats are public on the user's PDS. The convoId groups a 1:1 conversation. Carries the app.zeens.v marker so the firehose recognises it.",
  "key": "tid",
  "record": {
    "properties": {
      "app.zeens.v": {
        "description": "Zeens version marker (always 1).",
        "type": "integer"
      },
      "body": {
        "description": "Base64-obfuscated message text (UTF-8 bytes, base64-encoded). Obfuscation only, not encryption.",
        "maxLength": 16384,
        "type": "string"
      },
      "convoId": {
        "description": "Deterministic 1:1 conversation id = sha256(sorted([didA, didB]).join('|')). Both parties derive the same id without coordination.",
        "maxLength": 128,
        "type": "string"
      },
      "createdAt": {
        "description": "Client-declared send time.",
        "format": "datetime",
        "type": "string"
      },
      "enc": {
        "description": "Obfuscation scheme for the body. 'b64' = base64 of UTF-8 bytes.",
        "enum": [
          "b64"
        ],
        "type": "string"
      },
      "recipient": {
        "description": "DID of the intended recipient.",
        "format": "did",
        "type": "string"
      }
    },
    "required": [
      "convoId",
      "recipient",
      "body",
      "enc",
      "createdAt",
      "app.zeens.v"
    ],
    "type": "object"
  },
  "type": "record"
}

Lexicon Garden

@