Skip to main content
Every attribute in a Tally snapshot can be linked to one or more evidence items. Each evidence item records a single verification event — the data, how it was obtained, who submitted it, and what artifacts can be independently validated. Tally records the mechanism. The grantee decides the risk.

Evidence items

Each snapshot contains an evidence[] 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 /attest API and submitted this evidence?
  • Verification — what mechanism produced or checked the data?
  • Custody artifacts — what can be independently validated after the fact?
The 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

Known methods: 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.
Signal types are open strings. Known values include 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.
Known 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.