Usable IPv4 LAN interfaces
Canonical success envelope: { "data": T, "ts": <unix millis i64> }.
ts is chrono::Utc::now().timestamp_millis(), set in the webserver handler via [ApiEnvelope::now] (the contract carries only the type + the clock helper, not a hard dependency on when the handler reads the clock). rename_all = "camelCase" is a no-op for the single-word fields here but is declared for forward-compat.
IMPORTANT (utoipa v4): every concrete ApiEnvelope<X> that needs a named OpenAPI component is declared in the #[aliases(...)] block below. Add a new alias line whenever a new payload type needs enveloping. NEVER register the bare ApiEnvelope in components(schemas(...)) — utoipa errors on a bare generic, and an un-aliased generic inlines an anonymous schema.
Server time when the response was built (unix epoch milliseconds).