ChronicleSchema

Alex sent you a message on iMessage. The MessageAction and the Message are keyed by iMessage's own ID for the message, its source and sourceId.

Alex is keyed twice. The first key is a handle in the icloud source. The second, through sameAs, is Alex's email address in the email namespace. That key doesn't belong to iMessage: any source that knows Alex's email address can use the same key.

{
  "@type": "MessageAction",
  "@key": ["@type", "source", "sourceId"],
  "source": "imessage",
  "sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
  "timestamp": "2026-05-09T18:22:07.000Z",
  "agent": {
    "@type": "Agent",
    "@key": ["@type", "source", "handle"],
    "source": "icloud",
    "handle": "alex@example.com",
    "name": "Alex Chen",
    "sameAs": [
      {
        "@type": "Agent",
        "@key": ["@type", "source", "handle"],
        "source": "email",
        "handle": "alex@example.com"
      }
    ]
  },
  "object": {
    "@type": "Message",
    "@key": ["@type", "source", "sourceId"],
    "source": "imessage",
    "sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
    "body": "Found the trailhead!"
  }
}

Terms in this example

handlesameAs

Esc

↑↓ to move↵ to open/ or ⌘K to search