Field Ownership — click any field to see who sets it and why
flowchart TD subgraph AP ["Activity Provider — you set these"] actor["actor"]:::client verb["verb"]:::client object["object"]:::client result["result"]:::client context["context"]:::client id["id
negotiated"]:::negotiated timestamp["timestamp"]:::client end POST["POST /statements
click for wire details"]:::wire subgraph LRSS ["LRS — it sets these"] stored["stored"]:::lrsset authority["authority"]:::lrsset version["version"]:::lrsset end AP --> POST --> LRSS click actor call showOwnership("actor") click verb call showOwnership("verb") click object call showOwnership("object") click result call showOwnership("result") click context call showOwnership("context") click id call showOwnership("id") click timestamp call showOwnership("timestamp") click POST call showOwnership("post") click stored call showOwnership("stored") click authority call showOwnership("authority") click version call showOwnership("version") classDef client fill:#4338ca,stroke:#312e81,color:#fff,font-size:14px classDef lrsset fill:#16a34a,stroke:#14532d,color:#fff,font-size:14px classDef negotiated fill:#f59e0b,stroke:#b45309,color:#1e293b,font-size:14px classDef wire fill:#0369a1,stroke:#0c4a6e,color:#fff,font-size:13px linkStyle default stroke:#64748b,stroke-width:2px

Field Ownership

Click any field to see who sets it, when, and what happens if a client tries to set an LRS-owned field.

Activity Provider sets
LRS sets (client value ignored)
Negotiated (client may set; LRS mints if absent)
The wire protocol