Request metadata
Chooseinclude_meta=body or include_meta=headers. The equivalent request
header is X-Lasso-Include-Meta: body or headers; the query parameter takes
precedence. Omit both to keep the ordinary response format.
Metadata fields
The released metadata builder removes top-level nil values. Nested attempt fields can still benull.
Treat missing optional evidence as unknown, and tolerate additional fields.
A channel identity contains
profile, provider_id, instance_id, transport
and route_generation. Instance/profile identifiers are opaque. The recorded
attempt contains channel, outcome, category and code; successful attempts
can have null category/code. See the released
request context.
Core generates an opaque request ID when needed; its fallback is 32 lowercase
hexadecimal characters. Do not validate all IDs against that fallback shape or
confuse this correlation ID with the JSON-RPC request’s id.
Body mode
include_meta=body adds lasso_meta beside result or error. Read the raw HTTP
JSON response when you need this outer field: SDK methods commonly return only
result and discard the envelope.
These examples were generated with the v0.4.3 metadata builder and channel-history
helpers, which are unchanged in v0.5.0. Provider identities and timings are fixed
hermetic fixture inputs, not live performance measurements. The fixtures follow the released
success and failover test setup.
Successful first attempt
Successful failover
The failed primary and successful backup are both inattempted_channels.
executed_channel identifies the backup. A candidate label alone would not
establish either attempt.
Headers mode
include_meta=headers puts the same metadata object in X-Lasso-Meta as
base64url-encoded JSON without padding. X-Lasso-Request-ID is the correlation
ID. There is no promised X-Lasso-Latency header.
Decode the header and handle its absence explicitly:
max_meta_header_bytes (default 4,096 bytes),
Core omits X-Lasso-Meta and retains X-Lasso-Request-ID. Body mode avoids this
metadata-header limit; it is not a promise of unlimited response size.
Record evidence safely
Store the correlation ID, result/error, source revision and available timing and channel fields. Record missing metadata explicitly. A successful request proves neither independent operator redundancy nor that every candidate was attempted. Do not usecandidate_providers as an upstream amplification counter.
Block protection metadata
These optional fields help diagnose Block regression protection. They are not required to enable protection or read several values at one block. Whenhead_policy.policy is local, a protected latest-block response can include:
Compare nonoverlapping requests within the same service profile, chain, instance
and generation to assess local protection. These fields do not prove that a
particular number of peers received an update or predict recovery time.
Global policies report
policy=global and can include attributed
chain-change observations. Their retained number/header responses have no
executing upstream provider.
Explicit-number/hash requests can legitimately have no head_policy object.
State-read results do not independently attest which block the provider used
to execute them. For correlation, use x-lasso-request-id, or x-request-id
when no routing context was created. service_profile_id identifies the service profile and profile_id identifies
the effective route. Core currently uses the same file-profile identity for
both fields; treat them as opaque values.
HTTP batch headers expose only one item’s routing context. Oversized metadata
can be omitted. If complete per-request diagnostics are required, use individual
HTTP requests and record missing metadata explicitly; this is a diagnostics
choice, not a requirement for consistent reads.