Receiving a message with a photo
A MessageAction for a message Alex sent you. The Message has the text in body, you as its recipient, and the photo in contains.
Alex is identified by a handle in the icloud source. The handle is an email address, so sameAs links Alex to the agent with that address in the email source. The photo is an ImageObject with a contentPath and mimeType.
{
"@type": "MessageAction",
"@key": ["source", "sourceId", "@type"],
"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!",
"recipient": [
{
"@type": "Person",
"@key": ["@type", "source", "handle"],
"source": "phone",
"handle": "+15555550123",
"sameAs": ["@me"]
}
],
"contains": [
{
"@type": "ImageObject",
"@key": ["source", "sourceId"],
"source": "imessage",
"sourceId": "E4A7C2D9-1B6F-4F3A-8C5E-7D2B9A0F6E13",
"contentPath": "/Users/sam/Library/Messages/Attachments/4f/15/trailhead.jpg",
"mimeType": "image/jpeg",
"description": "trailhead.jpg"
}
]
}
}{
"@context": {
"@vocab": "https://schema.chronicle.app/",
"doc": "https://schema.chronicle.app/docs/"
},
"@type": "MessageAction",
"doc:key": {
"@list": ["source", "sourceId", "@type"]
},
"source": "imessage",
"sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
"timestamp": {
"@value": "2026-05-09T18:22:07.000Z",
"@type": "http://www.w3.org/2001/XMLSchema#dateTime"
},
"agent": {
"@type": "Agent",
"doc:key": {
"@list": ["@type", "source", "handle"]
},
"source": "icloud",
"handle": "alex@example.com",
"name": "Alex Chen",
"sameAs": [
{
"@type": "Agent",
"doc:key": {
"@list": ["@type", "source", "handle"]
},
"source": "email",
"handle": "alex@example.com"
}
]
},
"object": {
"@type": "Message",
"doc:key": {
"@list": ["@type", "source", "sourceId"]
},
"source": "imessage",
"sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
"body": "Found the trailhead!",
"recipient": [
{
"@type": "Person",
"doc:key": {
"@list": ["@type", "source", "handle"]
},
"source": "phone",
"handle": "+15555550123",
"sameAs": ["@me"]
}
],
"contains": [
{
"@type": "ImageObject",
"doc:key": {
"@list": ["source", "sourceId"]
},
"source": "imessage",
"sourceId": "E4A7C2D9-1B6F-4F3A-8C5E-7D2B9A0F6E13",
"contentPath": "/Users/sam/Library/Messages/Attachments/4f/15/trailhead.jpg",
"mimeType": "image/jpeg",
"description": "trailhead.jpg"
}
]
}
}@prefix : <https://schema.chronicle.app/> .
@prefix doc: <https://schema.chronicle.app/docs/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
[
a :MessageAction;
doc:key ("source" "sourceId" "@type");
:source "imessage";
:sourceId "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5";
:timestamp "2026-05-09T18:22:07.000Z"^^xsd:dateTime;
:agent [
a :Agent;
doc:key ("@type" "source" "handle");
:source "icloud";
:handle "alex@example.com";
:name "Alex Chen";
:sameAs [
a :Agent;
doc:key ("@type" "source" "handle");
:source "email";
:handle "alex@example.com"
]
];
:object [
a :Message;
doc:key ("@type" "source" "sourceId");
:source "imessage";
:sourceId "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5";
:body "Found the trailhead!";
:recipient [
a :Person;
doc:key ("@type" "source" "handle");
:source "phone";
:handle "+15555550123";
:sameAs "@me"
];
:contains [
a :ImageObject;
doc:key ("source" "sourceId");
:source "imessage";
:sourceId "E4A7C2D9-1B6F-4F3A-8C5E-7D2B9A0F6E13";
:contentPath "/Users/sam/Library/Messages/Attachments/4f/15/trailhead.jpg";
:mimeType "image/jpeg";
:description "trailhead.jpg"
]
]
] .
Terms in this example
AgentImageObjectMediaObjectMessageMessageActionbodycontainscontentPathmimeTyperecipientsourceId