specs/provision/integration/v0_3/payload library

Classes

AdminRotationAsk
Admin-only mint. No integration DID is produced. Used by holders that bring (or will mint elsewhere) their own integration-side identity and only need an admin credential at this maintainer.
BootstrapRequest
W3C Verifiable Presentation 2.0 (§6.1: VPs MAY omit verifiableCredential). Custom members nonce, validUntil, label, and ask sit alongside the standard VP fields and are covered by the same DataIntegrityProof.
DataIntegrityProof
W3C Data Integrity proof. Spec body pins cryptosuite and proofPurpose; this schema permits the standard property bag so future cryptosuites can ride the same shape.
DidTemplateRef
Reference to a DID template already registered at the maintainer. Inline template definitions are deliberately not supported — templates must be uploaded out-of-band first (operator-authored or built-in) so the maintainer can validate vars against the template's declared schema.
Payload
Relayer presents a VP-signed bootstrap request from an integration holder; the maintainer mints the integration's DIDs and admin credential from a registered DID template and ships the material back HPKE-sealed to the holder's ephemeral did:key. Two ask variants are supported: TemplateBootstrap (mint integration DID + optional admin DID) and AdminRotation (mint only the long-term admin DID).
ProvisionSummary
Audit-grade metadata about the provisioning outcome. Mirrors the existing vta_sdk::provision_integration::http::ProvisionSummary Rust type but uses camelCase wire fields per Trust Task convention.
Response
Carried in a Trust Task document whose type is https://trusttasks.org/spec/provision/integration/0.1#response. The sealed bundle is the secret-bearing artefact; summary is non-secret audit metadata.
TemplateBootstrapAsk
Mint an integration DID from template, and (when adminTemplate is present) atomically roll over the holder to a fresh long-term admin DID minted from adminTemplate.

Extension Types

PayloadAdminScope
How wide the ACL entry the maintainer writes for the minted admin is. context (the default, and what every integration-class consumer wants) binds the admin to context alone. unrestricted binds it to no context at all — the shape an ACL reads as a super-admin, able to act in every context the maintainer holds today and in every one created later — and is what an operator console asks for. context is resolved and authoritative in BOTH cases: it is where the admin DID is minted and the home a consumer stores its own configuration under, so unrestricted widens the grant without making the target context optional. A maintainer MUST refuse unrestricted with provision/integration:forbidden unless the relayer is itself a super-admin, because no admin may confer authority it does not hold. A maintainer that does not implement this member ignores it and writes a context-scoped entry; that is why the outcome is echoed as summary.adminScope rather than assumed from the ask.
PayloadAssertion
Producer-assertion mode the maintainer should apply to the returned sealed bundle. didSigned (default) — Ed25519 signature over the bundle's domain-bound digest, verified by the holder against the maintainer's published key. pinnedOnly — holder pins the bundle's SHA-256 digest as the sole integrity anchor; for dev/test only. Maintainers MAY support additional modes (e.g. attested for TEE deployments) and respond with provision/integration:assertionUnsupported to unsupported requests.
ProvisionSummaryAdminScope
The scope of the ACL entry the maintainer actually wrote for adminDid. Echoed rather than assumed: a maintainer that does not implement payload.adminScope ignores an unrestricted ask and writes a context-scoped entry, and a producer that read its own request back would record authority it does not have. Absent from maintainers that predate this member, which a producer MUST read as context.

Constants

payloadSchemaJson → const String
This specification's payload schema, as JSON text.
responsePayloadSchemaJson → const String
As payloadSchemaJson, for the success-response variant.
responseSpec → const SpecPolicy
The SPEC §7.2 policy for the success-response variant.
responseTypeUri → const String
The success-response form of typeUri (SPEC §4.4.1).
spec → const SpecPolicy
The SPEC §7.2 policy for the request variant, taken from this specification's front matter.
typeUri → const String
The Trust Task type URI this library's Payload is carried under.

Typedefs

BootstrapAsk = Object?
Discriminated union of bootstrap intents. Extensible — future minor versions MAY add variants.
DigestMultibase = String
A cryptographic digest as a multibase-encoded multihash — the encoding the W3C Verifiable Credentials Data Model 2.0 defines for digestMultibase, and the one did:webvh uses for its SCID and entry hashes. Multihash carries the hash algorithm in-band, so the value is self-describing and the wire format survives an algorithm change without a schema revision; multibase does the same for the base encoding, so a verifier never infers base58 from base64url by context. A bare hex string or a sha-256:-style prefix hard-codes one algorithm into the wire contract and is non-conforming here. This definition constrains the encoding only. What the digest is computed over is stated by each referencing field, because it differs legitimately: a digest over a JSON document is taken over its RFC 8785 (JCS) canonicalization, while a digest over an opaque artifact is taken over its bytes. A field whose input is a JSON document and which does not name a canonicalization is not reproducible. Restricted to the two multibase headers W3C Controlled Identifiers 1.0 §2.4 normatively requires — z (base58btc) and u (base64url-no-pad). CID permits others but states that "interoperability is not guaranteed between implementations using such values", and a registry whose purpose is interoperability should not mint digests a conforming verifier may be unable to read. The alphabets are enforced rather than assumed: base58btc excludes 0, O, I and l, and an earlier permissive pattern let three published examples carry digests that were not valid base58 at all. base58btc is RECOMMENDED, for consistency with did:key and did:webvh.
Ext = Map<String, dynamic>
Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.