Skip to main content
A primitive is one verified action against the user’s wallet credential. Each step in a workflow names a primitive and its params; publishing preserves the customer-selected order for every new session run. In a wallet-backed completion, Alentra builds the request, verifies the signed response, and returns a normalized result.

identify

Disclose attested fields

age_verify

Business-redacted age threshold

light_sign

Sign inline terms

sign

Sign documents

identify

Disclose specific government-attested fields, called blocks. You request only what you need; the user consents to exactly that.
Blocks (mapped to the credential’s data elements): If blocks is omitted, Alentra requests a sensible default (first_name, last_name, dob, country). A requested block the credential doesn’t carry comes back as JSON null rather than failing the step.
country is the issuing jurisdiction, not residence. A route profile supplies its fixed jurisdiction only when the verified credential omits issuing_country. Google Sandbox uses fictional Utopia data. Claim availability remains profile- specific; a requested block not carried by that profile returns null.
Result (step.completed → data.claims):

age_verify

Prove the holder meets an age threshold without disclosing their birth date. Alentra reads the date from the credential, computes the result, and returns only the boolean verdict plus the requested threshold. The birth date never reaches your age-result webhook.
min_age is a whole number (1–120; defaults to 18). Result (step.completed):
This is “anonymous to you, not to Alentra”: the signer claims and wallet evidence used to compute the result are sealed in the audit record, flagged as redacted, and never exposed on your webhook or session reads.

light_sign

The same device signature, over short inline terms text — no file upload. For consent, acceptance, and disclosure flows.
  • Terms are limited to ~1,000 words (about a 5-minute read).
  • Alentra canonicalizes the text (normalizes line endings), hashes it, and the wallet signs that hash. The exact terms + hash + signature are kept in the audit, so the signature stays provable.
Terms are shown through the capability URL and retained in cleartext in the immutable audit proof. Do not include secrets or unnecessary personal data.
Result (step.completed; includes the default signer identity fields):

sign

The holder’s device signs a hash of one or more documents you provide—a what-you-see-is-what-you-sign signature bound to their wallet credential. The workflow definition contains the sign action but no file bytes or document ids. Each run supplies its own files as multipart/form-data.
  • Alentra computes the SHA-256 of each file and a single manifest digest over all of them (in declared order). The wallet signs the manifest; you never supply a hash.
  • The user reads the exact bytes Alentra hashed on the hosted page before signing.
  • Up to 50 files, 50 MB combined. When the step verifies, every referenced original is promoted atomically to immutable evidence alongside the result and audit. Customers cannot delete those completed originals. An upload that never joins a completed sign result remains transient and may be purged after the cleanup window.
Result (step.completed; includes the default signer identity fields):

Ordering and chaining

Chaining is not a primitive. Add steps in the workflow builder, drag them into the exact order the user should complete them, then publish. API callers pass only that published workflow_id plus run-specific data. Alentra creates one logical step.completed event per step and then a terminal session.* event; delivery retries can arrive late or out of order, so use stage and the delivery id.

Gates (pause for a decision)

Existing API-controlled gates in an API-only workflow use a non-final step to pause the session after it completes, so your server can decide whether to continue. Useful when a later step should depend on an earlier result (e.g. only sign if the identity matched your records).
On a gated step the session moves to awaiting_decision after step.completed. Resume with POST /v1/sessions/{id}/continue or end it with POST /v1/sessions/{id}/stop. A caller-controlled pause on the final step is rejected. Configured Conditions can follow any primitive, including the final one, and execute automatically in every access mode. They continue to the next proof or result delivery, or stop while keeping verified results.

Reserved: envelope (multi-party)

All primitives today are single-subject. Multi-party signing (Alice → Bob → Carol) is a reserved primitive, not yet available.