ak.schema.content_block_poll.v1
ak.schema.content_block_poll.v1 · file: schemas/content-block-poll.schema.json Canonical content-block schema for ak.content.poll and ak.content.poll.response.
* $ · oneOf[2]
Canonical content-block schema for ak.content.poll and ak.content.poll.response.
oneOf · oneOf[0] · object · $ref #/$defs/poll_block
* kind ·
const "ak.content.poll"enum:
"ak.content.poll"* body ·
stringformat ·
string (enum) · $ref #/$defs/formatenum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2] · $ref #/$defs/formatted_body
oneOf · oneOf[0] ·
stringoneOf · oneOf[1] ·
objectreply_context · object · $ref #/$defs/reply_context
message_ref ·
stringpattern:
^ak:(message|event):[A-Za-z0-9_-]{44}$sender_actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind ·
const "account"enum:
"account"* account_id ·
$ref #/$defs/account_id · $ref #/$defs/account_idoneOf · oneOf[1] · object
* kind ·
const "service"enum:
"service"* service_id ·
$ref #/$defs/did_core_id · $ref #/$defs/did_core_idexcerpt ·
string* poll · object · $ref #/$defs/poll_body
Poll configuration. max_selections is validated against responses by reducers because JSON Schema cannot compare a response to its referenced poll message.
* kind ·
const "disclosed"enum:
"disclosed"* max_selections ·
integerquestion · object · $ref #/$defs/content_block
allOf · allOf[0] ·
?allOf · allOf[1] ·
?allOf · allOf[2] ·
?* kind ·
$ref #/$defs/content_kind · $ref #/$defs/content_kind* body ·
stringformat ·
string (enum)enum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2]
oneOf · oneOf[0] ·
stringoneOf · oneOf[1] ·
objectparts · array<$ref #/$defs/content_block>
items · object · $ref #/$defs/content_block
allOf · allOf[0] ·
?allOf · allOf[1] ·
?allOf · allOf[2] ·
?* kind ·
$ref #/$defs/content_kind · $ref #/$defs/content_kind* body ·
stringformat ·
string (enum)enum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2]
oneOf · oneOf[0] ·
stringoneOf · oneOf[1] ·
objectparts · array<$ref #/$defs/content_block>
items · object · $ref #/$defs/content_block
allOf · allOf[0] ·
?allOf · allOf[1] ·
?allOf · allOf[2] ·
?* kind ·
$ref #/$defs/content_kind · $ref #/$defs/content_kind* body ·
stringformat ·
string (enum)enum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2]
oneOf · oneOf[0] ·
…recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] ·
…recursion truncated at depth 8; see source schema for full shape
parts · array<$ref #/$defs/content_block>
items ·
…recursion truncated at depth 8; see source schema for full shape
mentions · array<$ref #/$defs/mention_node>
Structured direct mention AST nodes for this Content Block. This is the only carrier of a direct mention: authorization, notification routing and audit attribution read mention_node.subject_account_id exclusively, and compare it as a complete AccountId (zh/models/strand-and-message.md §9.4.1-§9.4.2).
items ·
…recursion truncated at depth 8; see source schema for full shape
audience_mentions · array<$ref #/$defs/audience_mention_node>
Structured broadcast mention AST nodes for this Content Block (zh/models/strand-and-message.md §9.4.3).
items ·
…recursion truncated at depth 8; see source schema for full shape
attachments · array<object>
Profile-defined attachment hints. At most 32; canonical durable attachment relations SHOULD use Relation attached_to.
items ·
…recursion truncated at depth 8; see source schema for full shape
reply_context · object
message_ref ·
…recursion truncated at depth 8; see source schema for full shape
sender_actor_id ·
…recursion truncated at depth 8; see source schema for full shape
excerpt ·
…recursion truncated at depth 8; see source schema for full shape
mentions · array<$ref #/$defs/mention_node>
Structured direct mention AST nodes for this Content Block. This is the only carrier of a direct mention: authorization, notification routing and audit attribution read mention_node.subject_account_id exclusively, and compare it as a complete AccountId (zh/models/strand-and-message.md §9.4.1-§9.4.2).
items ·
$ref #/$defs/mention_node · $ref #/$defs/mention_nodeaudience_mentions · array<$ref #/$defs/audience_mention_node>
Structured broadcast mention AST nodes for this Content Block (zh/models/strand-and-message.md §9.4.3).
items ·
$ref #/$defs/audience_mention_node · $ref #/$defs/audience_mention_nodeattachments · array<object>
Profile-defined attachment hints. At most 32; canonical durable attachment relations SHOULD use Relation attached_to.
items ·
objectreply_context · object
message_ref ·
stringpattern:
^ak:(message|event):[A-Za-z0-9_-]{44}$sender_actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind ·
…recursion truncated at depth 8; see source schema for full shape
* account_id ·
…recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object
* kind ·
…recursion truncated at depth 8; see source schema for full shape
* service_id ·
…recursion truncated at depth 8; see source schema for full shape
excerpt ·
stringmentions · array<$ref #/$defs/mention_node>
Structured direct mention AST nodes for this Content Block. This is the only carrier of a direct mention: authorization, notification routing and audit attribution read mention_node.subject_account_id exclusively, and compare it as a complete AccountId (zh/models/strand-and-message.md §9.4.1-§9.4.2).
items ·
$ref #/$defs/mention_node · $ref #/$defs/mention_nodeaudience_mentions · array<$ref #/$defs/audience_mention_node>
Structured broadcast mention AST nodes for this Content Block (zh/models/strand-and-message.md §9.4.3).
items ·
$ref #/$defs/audience_mention_node · $ref #/$defs/audience_mention_nodeattachments · array<object>
Profile-defined attachment hints. At most 32; canonical durable attachment relations SHOULD use Relation attached_to.
items ·
objectreply_context · object
message_ref ·
stringpattern:
^ak:(message|event):[A-Za-z0-9_-]{44}$sender_actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind ·
const "account"enum:
"account"* account_id ·
$ref #/$defs/account_id · $ref #/$defs/account_idoneOf · oneOf[1] · object
* kind ·
const "service"enum:
"service"* service_id ·
$ref #/$defs/did_core_id · $ref #/$defs/did_core_idexcerpt ·
string* answers · array<$ref #/$defs/poll_answer>
items · object · $ref #/$defs/poll_answer
One visible answer option. answer.id values MUST be unique within a poll; reducers and conformance vectors enforce that cross-item constraint.
* id ·
string · $ref #/$defs/answer_idpattern:
^[A-Za-z0-9._~-]+$* text · object · $ref #/$defs/content_block
allOf · allOf[0] ·
?allOf · allOf[1] ·
?allOf · allOf[2] ·
?* kind ·
$ref #/$defs/content_kind · $ref #/$defs/content_kind* body ·
stringformat ·
string (enum)enum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2]
oneOf · oneOf[0] ·
stringoneOf · oneOf[1] ·
objectparts · array<$ref #/$defs/content_block>
items · object · $ref #/$defs/content_block
allOf · allOf[0] ·
?allOf · allOf[1] ·
?allOf · allOf[2] ·
?* kind ·
$ref #/$defs/content_kind · $ref #/$defs/content_kind* body ·
stringformat ·
string (enum)enum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2]
oneOf · oneOf[0] ·
…recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] ·
…recursion truncated at depth 8; see source schema for full shape
parts · array<$ref #/$defs/content_block>
items ·
…recursion truncated at depth 8; see source schema for full shape
mentions · array<$ref #/$defs/mention_node>
Structured direct mention AST nodes for this Content Block. This is the only carrier of a direct mention: authorization, notification routing and audit attribution read mention_node.subject_account_id exclusively, and compare it as a complete AccountId (zh/models/strand-and-message.md §9.4.1-§9.4.2).
items ·
…recursion truncated at depth 8; see source schema for full shape
audience_mentions · array<$ref #/$defs/audience_mention_node>
Structured broadcast mention AST nodes for this Content Block (zh/models/strand-and-message.md §9.4.3).
items ·
…recursion truncated at depth 8; see source schema for full shape
attachments · array<object>
Profile-defined attachment hints. At most 32; canonical durable attachment relations SHOULD use Relation attached_to.
items ·
…recursion truncated at depth 8; see source schema for full shape
reply_context · object
message_ref ·
…recursion truncated at depth 8; see source schema for full shape
sender_actor_id ·
…recursion truncated at depth 8; see source schema for full shape
excerpt ·
…recursion truncated at depth 8; see source schema for full shape
mentions · array<$ref #/$defs/mention_node>
Structured direct mention AST nodes for this Content Block. This is the only carrier of a direct mention: authorization, notification routing and audit attribution read mention_node.subject_account_id exclusively, and compare it as a complete AccountId (zh/models/strand-and-message.md §9.4.1-§9.4.2).
items ·
$ref #/$defs/mention_node · $ref #/$defs/mention_nodeaudience_mentions · array<$ref #/$defs/audience_mention_node>
Structured broadcast mention AST nodes for this Content Block (zh/models/strand-and-message.md §9.4.3).
items ·
$ref #/$defs/audience_mention_node · $ref #/$defs/audience_mention_nodeattachments · array<object>
Profile-defined attachment hints. At most 32; canonical durable attachment relations SHOULD use Relation attached_to.
items ·
objectreply_context · object
message_ref ·
stringpattern:
^ak:(message|event):[A-Za-z0-9_-]{44}$sender_actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind ·
…recursion truncated at depth 8; see source schema for full shape
* account_id ·
…recursion truncated at depth 8; see source schema for full shape
oneOf · oneOf[1] · object
* kind ·
…recursion truncated at depth 8; see source schema for full shape
* service_id ·
…recursion truncated at depth 8; see source schema for full shape
excerpt ·
stringoneOf · oneOf[1] · object · $ref #/$defs/poll_response_block
* kind ·
const "ak.content.poll.response"enum:
"ak.content.poll.response"* body ·
stringformat ·
string (enum) · $ref #/$defs/formatenum:
"plain" "markdown" "prosemirror_json"formatted_body · oneOf[2] · $ref #/$defs/formatted_body
oneOf · oneOf[0] ·
stringoneOf · oneOf[1] ·
objectreply_context · object · $ref #/$defs/reply_context
message_ref ·
stringpattern:
^ak:(message|event):[A-Za-z0-9_-]{44}$sender_actor_id · oneOf[2] · $ref ./common-ids.schema.json#/$defs/actor_id
Complete protocol identity for an Event author or Realm member: account carries the exact AccountId for every Station-hosted principal; service identifies a service acting as itself. The discriminator is validated against accepted registration and admission evidence; it never authorizes itself. Account and service are distinct, and no comparison may fall back to a bare principal_id. Agent and integration classification, provisioning, controller binding and credential authorization are independently verified facts, not identity variants. Account actors at different Stations MUST NOT share or inherit authority merely because their principal_id, DID controller or signing key matches, including membership, capability, RealmCommit-signing and recovery authority.
oneOf · oneOf[0] · object
* kind ·
const "account"enum:
"account"* account_id ·
$ref #/$defs/account_id · $ref #/$defs/account_idoneOf · oneOf[1] · object
* kind ·
const "service"enum:
"service"* service_id ·
$ref #/$defs/did_core_id · $ref #/$defs/did_core_idexcerpt ·
string* poll_response · object · $ref #/$defs/poll_response_body
* poll_ref ·
string · $ref #/$defs/message_idpattern:
^ak:message:[A-Za-z0-9_-]{44}$* selections · array<$ref #/$defs/answer_id>
items ·
string · $ref #/$defs/answer_idpattern:
^[A-Za-z0-9._~-]+$Source
- registry row:
spec/v1/artifacts/registry/schema-registry.json - schema document:
spec/v1/artifacts/schemas/content-block-poll.schema.json