pub struct FullContext {
pub body: Body,
pub registry_state: RegistryState,
pub registry_receipt: Option<Value>,
pub lineage_head_receipt: Option<Value>,
pub log_inclusion: Option<Value>,
pub extensions: Map<String, Value>,
pub raw_body: Option<Value>,
}Expand description
The full context object returned by GET /contexts/{ctx_id}.
acdp-context.schema.json is additionalProperties: true: future
ACDP versions may add top-level keys without a schema bump, and
v0.1.0 consumers MUST tolerate unknown top-level keys. body,
registry_state, and the reserved registry_receipt are modelled
explicitly; any other top-level field is preserved verbatim in
Self::extensions. These top-level fields are NOT part of
ProducerContent, so unlike Body::extensions this carry-through
is a forward-compatibility contract, not a hash-stability one.
Raw body retention (RFC-ACDP-0001 §5.7 “Hash verification over raw
JSON”). Deserializing a FullContext also keeps the body object
exactly as received in Self::raw_body, so verifiers recompute
content_hash over the producer’s bytes rather than over a typed
re-serialization (which can respell a valid timestamp — can-013).
Fields§
§body: BodyProducer-signed body.
registry_state: RegistryStateMutable registry-derived state (status etc).
registry_receipt: Option<Value>Optional registry receipt — reserved for RFC-ACDP-0009 §2.7. Opaque to the library; preserved verbatim if present.
lineage_head_receipt: Option<Value>Optional lineage-head receipt (ACDP 0.3, RFC-ACDP-0011): the
registry’s signed serve-time attestation of the current head of
the lineage. REQUIRED on GET /lineages/{id}/current responses
from registries advertising acdp-registry-head-receipts; MAY
appear on full retrieval; tolerated (and preserved verbatim)
when absent — non-advertising registries never emit it.
log_inclusion: Option<Value>Optional transparency-log inclusion proof (ACDP 0.3,
RFC-ACDP-0012 §10): the RFC 6962 audit path plus signed
checkpoint proving this context is committed by the registry’s
append-only log. MAY be carried on full retrieval by registries
advertising acdp-registry-transparency-log; never on the
body-only endpoint and never on the publish response. A
top-level sibling of registry_receipt — deliberately NOT a
member of it (the receipt is closed, fully signed, and
byte-immutable). Parse with
crate::log::LogInclusion::from_value; verify per
RFC-ACDP-0012 §9 — the log verdict is independent of the body
and receipt verdicts.
extensions: Map<String, Value>Unknown top-level context fields, preserved per
acdp-context.schema.json additionalProperties: true. Retained
for forward compatibility with future ACDP versions that add
top-level registry fields.
raw_body: Option<Value>The body object exactly as received on the wire — populated by
Deserialize, None for a hand-built context. Never serialized
(the typed Self::body is). Verifiers hash this when it still
describes Self::body (see acdp_verify::verify_context_hash);
a caller that mutates body after parsing gets the typed path,
so the mutation is detected, not masked.