# `Raxol.AgentClientProtocol.Ext.Schema`
[🔗](https://github.com/DROOdotFOO/raxol-agent/blob/raxol_agent_client_protocol-v0.1.0/packages/raxol_agent_client_protocol/lib/raxol/agent_client_protocol/ext/schema.ex#L1)

Wire schema structs for the reattach extension's `_raxol/*` notification
vocabulary.

These are the RECEIVER-side decode structs for the frames the reattach
subscriber emits. The sender (`Raxol.AgentClientProtocol.Ext.Reattach`)
builds JSON-safe string-keyed maps directly on the `notify` path — the
stamp-location rule is: fields on `_raxol/*` frames are FIRST-CLASS
(our vocabulary), while riders on core-protocol frames travel in
`_meta["raxol.io"]`. An offset-aware client decodes these structs; a stock
client drops the `_raxol/*` notifications as unknown (legal).

Every struct follows the package convention: a total `from_json/1`
(`{:ok, t} | {:error, reason}`, never raises), a `to_json/1`, and a
`Jason.Encoder` impl. All fields are grow-only (add optional-with-default;
never rename/retype/reorder/narrow) — a reader that meets an unknown field
folds it into `_meta` and passes it through.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
