Evidence items
Each snapshot contains anevidence[] array. Every item has a required provenance object that answers four questions:
- Authority — who is the original source of truth?
- Write principal — who called the
/attestAPI and submitted this evidence? - Verification — what mechanism produced or checked the data?
- Custody artifacts — what can be independently validated after the fact?
attribute_paths field on the envelope links each JSON Pointer path to the evidence items that support it:
provenance object
authority — original source of truth
Two variants, distinguished by kind:
kind: "external_authority" — an institution outside Tally.
authority_code is a controlled vocabulary key, not a UUID. Known values include usdos_passport, gleif, ny_dmv, sec_edgar, ny_dos. The list is illustrative, not exhaustive.
kind: "subject" — the subject record itself is the asserting authority. Used for self-asserted data by an individual or an organization. The subject may assert data through a service account (see write_principal).
subject_id is always a server-generated UUID — no prefixes.
write_principal — who submitted the evidence
The principal that called the /attest endpoint. Always populated server-side from the auth context. The caller cannot supply this field.
principal_type is "human" | "service_account" | "ai_agent" — the same enum as the Tally principals table. write_principal and authority are deliberately separate fields: the iOS service account that submitted NFC-derived passport data is not the US Department of State.
verification — what mechanism was used
For methods not in this list, use
method: "other" and supply method_code:
verification_signals — mechanism-level facts
An optional array of raw signals produced by the verification mechanism. Grantees and auditors read these to make their own trust judgment. Tally does not prescribe an assurance level.
passive_authentication, issuer_signature, csca_chain, registry_response_status, lei_registration_status, principal_authenticated, write_authorized_for_subject.
custody_artifacts — what auditors can verify
An optional array of hashed, optionally signed artifacts. Each artifact is something a read-side verifier or compliance auditor can independently check after the fact — by re-fetching, re-hashing, or verifying a cryptographic signature.
artifact_type values: mrtd_sod, dg1, dg2, mdl_device_response, registry_api_response, assertion_payload. Known format values: icao9303_sod, icao9303_dg1, iso18013_5_device_response, gleif_lei_record, tally_self_assertion_v1.
Full examples
NFC passport read
Individual self-assertion
Organization asserting data through a service account
The authority is the organization subject; the write principal is the service account acting on its behalf.Envelope and schema versions
Every snapshot envelope contains two version fields:
These advance independently. A snapshot can have
envelope_version: "entity_state_envelope_v1" and schema_version: "2.0" — the container is unchanged; the attributes inside follow the v2 grouped vocabulary.
For full field-level change history by schema version, see tally_ops/registries/schema_tag_registry.json.