Wire Types
INK uses two distinct identifier formats for message types. Implementations MUST distinguish between them.
Convention
| Purpose | Format | Example |
|---|---|---|
| AT Protocol Lexicon ID | camelCase, includes ink segment | network.tulpa.ink.auditQuery |
Wire type field | snake_case, omits ink segment | network.tulpa.audit_query |
The lexicon ID follows AT Protocol conventions (camelCase NSID with hierarchical namespacing). The wire type is the value in the "type" field of every INK message, it is what implementations match on when routing messages.
Implementations MUST key off the wire type field, not the lexicon ID.
Complete Mapping
Wire Type (type field) | Lexicon ID | Description |
|---|---|---|
network.tulpa.intent | network.tulpa.ink.intent | Intent message |
network.tulpa.challenge | network.tulpa.ink.challenge | Context challenge |
network.tulpa.rejection | network.tulpa.ink.rejection | Rejection response |
network.tulpa.resolution | network.tulpa.ink.resolution | Resolution outcome |
network.tulpa.encrypted | network.tulpa.ink.encrypted | ECIES encrypted envelope |
network.tulpa.receipt | network.tulpa.ink.receipt | Delivery receipt |
network.tulpa.audit_query | network.tulpa.ink.auditQuery | Audit exchange request |
network.tulpa.audit_response | network.tulpa.ink.auditResponse | Audit exchange response |
network.tulpa.audit_submit | network.tulpa.ink.auditSubmit | Third-party audit submission |
network.tulpa.audit_inclusion | network.tulpa.ink.auditInclusion | Audit inclusion receipt |
network.tulpa.agent_card_query | network.tulpa.ink.agentCardQuery | Authenticated agent-card query |
network.tulpa.agent_card_response | network.tulpa.ink.agentCardResponse | Authenticated agent-card response |
network.tulpa.agent_card_denied | network.tulpa.ink.agentCardDenied | Authenticated agent-card denial |
Why Two Formats
For single-word types, the distinction is invisible: network.tulpa.intent maps to network.tulpa.ink.intent.
For multi-word types, it matters: network.tulpa.audit_query (wire) vs. network.tulpa.ink.auditQuery (lexicon).
The wire format uses snake_case for consistency with the JSON body convention. The lexicon format uses camelCase to match AT Protocol’s NSID registry convention.