@openvtc/trust-tasks 0.28.2 → 0.28.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/dist/_extends.d.ts.map +1 -1
- package/dist/_extends.js +7 -1
- package/dist/_extends.js.map +1 -1
- package/dist/_shared/components.d.ts +530 -3
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/records/put/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.1/payload.js +1 -1
- package/dist/rooms/records/put/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.2/payload.js +1 -1
- package/dist/rooms/records/put/0.3/payload.d.ts +14 -2
- package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -1
- package/dist/rooms/records/put/0.3/payload.js +1 -1
- package/dist/rooms/records/put/0.3/payload.js.map +1 -1
- package/dist/rooms/records/put/0.4/payload.d.ts +1474 -0
- package/dist/rooms/records/put/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/records/put/0.4/payload.js +804 -0
- package/dist/rooms/records/put/0.4/payload.js.map +1 -0
- package/dist/vta/_shared/0.3/did-key-roles.d.ts +1 -1
- package/dist/vta/_shared/0.9/did-template.d.ts +16 -0
- package/dist/vta/_shared/0.9/did-template.d.ts.map +1 -0
- package/dist/vta/_shared/0.9/did-template.js +6 -0
- package/dist/vta/_shared/0.9/did-template.js.map +1 -0
- package/dist/vta/did-templates/create/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/create/2.0/payload.js +1 -1
- package/dist/vta/did-templates/create/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/create/3.0/payload.js +1 -1
- package/dist/vta/did-templates/create/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/create/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/create/3.1/payload.js +1 -1
- package/dist/vta/did-templates/create/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/create/3.2/payload.d.ts +1310 -0
- package/dist/vta/did-templates/create/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/create/3.2/payload.js +832 -0
- package/dist/vta/did-templates/create/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/get/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/get/2.0/payload.js +1 -1
- package/dist/vta/did-templates/get/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/get/3.0/payload.js +1 -1
- package/dist/vta/did-templates/get/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/get/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/get/3.1/payload.js +1 -1
- package/dist/vta/did-templates/get/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/get/3.2/payload.d.ts +928 -0
- package/dist/vta/did-templates/get/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/get/3.2/payload.js +593 -0
- package/dist/vta/did-templates/get/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/list/2.0/payload.d.ts +4 -4
- package/dist/vta/did-templates/list/2.0/payload.js +1 -1
- package/dist/vta/did-templates/list/3.0/payload.d.ts +4 -4
- package/dist/vta/did-templates/list/3.0/payload.js +1 -1
- package/dist/vta/did-templates/list/3.1/payload.d.ts +14 -2
- package/dist/vta/did-templates/list/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/list/3.1/payload.js +1 -1
- package/dist/vta/did-templates/list/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/list/3.2/payload.d.ts +985 -0
- package/dist/vta/did-templates/list/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/list/3.2/payload.js +619 -0
- package/dist/vta/did-templates/list/3.2/payload.js.map +1 -0
- package/dist/vta/did-templates/update/2.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/update/2.0/payload.js +1 -1
- package/dist/vta/did-templates/update/3.0/payload.d.ts +3 -3
- package/dist/vta/did-templates/update/3.0/payload.js +1 -1
- package/dist/vta/did-templates/update/3.1/payload.d.ts +12 -2
- package/dist/vta/did-templates/update/3.1/payload.d.ts.map +1 -1
- package/dist/vta/did-templates/update/3.1/payload.js +1 -1
- package/dist/vta/did-templates/update/3.1/payload.js.map +1 -1
- package/dist/vta/did-templates/update/3.2/payload.d.ts +1324 -0
- package/dist/vta/did-templates/update/3.2/payload.d.ts.map +1 -0
- package/dist/vta/did-templates/update/3.2/payload.js +838 -0
- package/dist/vta/did-templates/update/3.2/payload.js.map +1 -0
- package/dist/vta/dids/_shared/0.1/key-roles.d.ts +16 -0
- package/dist/vta/dids/_shared/0.1/key-roles.d.ts.map +1 -0
- package/dist/vta/dids/_shared/0.1/key-roles.js +6 -0
- package/dist/vta/dids/_shared/0.1/key-roles.js.map +1 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.d.ts +11 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.d.ts.map +1 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.js +6 -0
- package/dist/vta/dids/_shared/0.1/method-profiles/webvh-parameters.js.map +1 -0
- package/dist/vta/dids/create/1.0/payload.d.ts +2613 -0
- package/dist/vta/dids/create/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/create/1.0/payload.js +1554 -0
- package/dist/vta/dids/create/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/add/1.0/payload.d.ts +2447 -0
- package/dist/vta/dids/keys/add/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/add/1.0/payload.js +1469 -0
- package/dist/vta/dids/keys/add/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/list/1.0/payload.d.ts +1855 -0
- package/dist/vta/dids/keys/list/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/list/1.0/payload.js +1116 -0
- package/dist/vta/dids/keys/list/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/retire/1.0/payload.d.ts +2449 -0
- package/dist/vta/dids/keys/retire/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/retire/1.0/payload.js +1469 -0
- package/dist/vta/dids/keys/retire/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.d.ts +2701 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.js +1597 -0
- package/dist/vta/dids/keys/revoke/1.0/payload.js.map +1 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.d.ts +2628 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.js +1555 -0
- package/dist/vta/dids/keys/rotate/1.0/payload.js.map +1 -0
- package/dist/vta/dids/recover/1.0/payload.d.ts +2702 -0
- package/dist/vta/dids/recover/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/recover/1.0/payload.js +1597 -0
- package/dist/vta/dids/recover/1.0/payload.js.map +1 -0
- package/dist/vta/dids/update/1.0/payload.d.ts +1422 -0
- package/dist/vta/dids/update/1.0/payload.d.ts.map +1 -0
- package/dist/vta/dids/update/1.0/payload.js +861 -0
- package/dist/vta/dids/update/1.0/payload.js.map +1 -0
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/add/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/add/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/list/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/list/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/retire/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/keys/revoke/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.d.ts +2 -14
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/rotate-keys/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js +1 -1
- package/dist/vta/webvh/dids/rotate-keys/2.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.d.ts +2 -14
- package/dist/vta/webvh/dids/update/1.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.js +1 -1
- package/dist/vta/webvh/dids/update/1.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts +4 -4
- package/dist/vta/webvh/dids/update/2.0/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.js +1 -1
- package/dist/vta/webvh/dids/update/2.0/payload.js.map +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.d.ts +14 -2
- package/dist/vta/webvh/dids/update/2.1/payload.d.ts.map +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.js +1 -1
- package/dist/vta/webvh/dids/update/2.1/payload.js.map +1 -1
- package/dist/vtc/_shared/0.2/invite.d.ts +16 -0
- package/dist/vtc/_shared/0.2/invite.d.ts.map +1 -0
- package/dist/vtc/_shared/0.2/invite.js +6 -0
- package/dist/vtc/_shared/0.2/invite.js.map +1 -0
- package/dist/vtc/admin/invites/create/0.1/payload.d.ts +12 -2
- package/dist/vtc/admin/invites/create/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/admin/invites/create/0.1/payload.js +1 -1
- package/dist/vtc/admin/invites/create/0.1/payload.js.map +1 -1
- package/dist/vtc/admin/invites/create/0.2/payload.d.ts +404 -0
- package/dist/vtc/admin/invites/create/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/admin/invites/create/0.2/payload.js +230 -0
- package/dist/vtc/admin/invites/create/0.2/payload.js.map +1 -0
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts +12 -2
- package/dist/vtc/admin/invites/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.js +1 -1
- package/dist/vtc/admin/invites/list/0.1/payload.js.map +1 -1
- package/dist/vtc/admin/invites/list/0.2/payload.d.ts +431 -0
- package/dist/vtc/admin/invites/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/admin/invites/list/0.2/payload.js +264 -0
- package/dist/vtc/admin/invites/list/0.2/payload.js.map +1 -0
- package/dist/vtc/credentials/reissue/0.1/payload.d.ts +3 -3
- package/dist/vtc/credentials/reissue/0.1/payload.js +1 -1
- package/dist/vtc/credentials/reissue/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/_extends.ts +5 -0
- package/src/_shared/components.ts +556 -3
- package/src/index.ts +57 -0
- package/src/rooms/records/put/0.1/payload.ts +5 -5
- package/src/rooms/records/put/0.2/payload.ts +5 -5
- package/src/rooms/records/put/0.3/payload.ts +15 -3
- package/src/rooms/records/put/0.4/payload.ts +905 -0
- package/src/vta/_shared/0.3/did-key-roles.ts +1 -1
- package/src/vta/_shared/0.9/did-template.ts +17 -0
- package/src/vta/did-templates/create/2.0/payload.ts +4 -4
- package/src/vta/did-templates/create/3.0/payload.ts +4 -4
- package/src/vta/did-templates/create/3.1/payload.ts +13 -3
- package/src/vta/did-templates/create/3.2/payload.ts +869 -0
- package/src/vta/did-templates/get/2.0/payload.ts +4 -4
- package/src/vta/did-templates/get/3.0/payload.ts +4 -4
- package/src/vta/did-templates/get/3.1/payload.ts +13 -3
- package/src/vta/did-templates/get/3.2/payload.ts +630 -0
- package/src/vta/did-templates/list/2.0/payload.ts +5 -5
- package/src/vta/did-templates/list/3.0/payload.ts +5 -5
- package/src/vta/did-templates/list/3.1/payload.ts +15 -3
- package/src/vta/did-templates/list/3.2/payload.ts +665 -0
- package/src/vta/did-templates/update/2.0/payload.ts +4 -4
- package/src/vta/did-templates/update/3.0/payload.ts +4 -4
- package/src/vta/did-templates/update/3.1/payload.ts +13 -3
- package/src/vta/did-templates/update/3.2/payload.ts +879 -0
- package/src/vta/dids/_shared/0.1/key-roles.ts +17 -0
- package/src/vta/dids/_shared/0.1/method-profiles/webvh-parameters.ts +11 -0
- package/src/vta/dids/create/1.0/payload.ts +1648 -0
- package/src/vta/dids/keys/add/1.0/payload.ts +1553 -0
- package/src/vta/dids/keys/list/1.0/payload.ts +1178 -0
- package/src/vta/dids/keys/retire/1.0/payload.ts +1553 -0
- package/src/vta/dids/keys/revoke/1.0/payload.ts +1697 -0
- package/src/vta/dids/keys/rotate/1.0/payload.ts +1658 -0
- package/src/vta/dids/recover/1.0/payload.ts +1700 -0
- package/src/vta/dids/update/1.0/payload.ts +940 -0
- package/src/vta/webvh/dids/keys/add/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/list/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/retire/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/keys/revoke/1.0/payload.ts +15 -3
- package/src/vta/webvh/dids/rotate-keys/1.0/payload.ts +3 -15
- package/src/vta/webvh/dids/rotate-keys/2.0/payload.ts +15 -3
- package/src/vta/webvh/dids/update/1.0/payload.ts +3 -15
- package/src/vta/webvh/dids/update/2.0/payload.ts +5 -5
- package/src/vta/webvh/dids/update/2.1/payload.ts +15 -3
- package/src/vtc/_shared/0.2/invite.ts +17 -0
- package/src/vtc/admin/invites/create/0.1/payload.ts +13 -3
- package/src/vtc/admin/invites/create/0.2/payload.ts +289 -0
- package/src/vtc/admin/invites/list/0.1/payload.ts +13 -3
- package/src/vtc/admin/invites/list/0.2/payload.ts +294 -0
- package/src/vtc/credentials/reissue/0.1/payload.ts +2 -2
|
@@ -0,0 +1,1422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/vta/dids/update/1.0/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { ApprovalEvidenceKind, DidMethodName, DidVerificationRelationship, Ext, IdentityChange, IdentityChangePreview, IdentityKeyRole, KeyChangeApprovalState, KeyChangeOutcome, KeyType, PreviewWarning, Publication, PublishedArtifact, RecordedApproval, RecoverySigningRequest } from "../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* Ask a Verifiable Trust Agent to change a key-role identity's non-key members — services, `alsoKnownAs`, method parameters such as witnesses. Keys change only through the key-role tasks (vta/dids/_shared/0.1/CONVENTIONS.md).
|
|
8
|
+
*/
|
|
9
|
+
export interface VTADIDsUpdatePayload {
|
|
10
|
+
/**
|
|
11
|
+
* The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).
|
|
12
|
+
*/
|
|
13
|
+
did: string;
|
|
14
|
+
/**
|
|
15
|
+
* The new identifier document, for methods whose controller writes it. Omit to leave it unchanged. It MUST carry, unchanged, `verificationMethod`, every verification relationship and `keyRoles`: a change to any of them is refused with `vta/dids/update:keyMembersManaged`, because keys change only through the key-role tasks.
|
|
16
|
+
*/
|
|
17
|
+
document?: {};
|
|
18
|
+
/**
|
|
19
|
+
* Validated against the method profile's `UpdateParameters` schema (method-profiles/<method>-parameters.schema.json); a member it does not define, or one fixed at creation, is refused with `vta/dids:methodParameterUnsupported`.
|
|
20
|
+
*/
|
|
21
|
+
methodParameters?: {};
|
|
22
|
+
/**
|
|
23
|
+
* Operator-facing audit label.
|
|
24
|
+
*/
|
|
25
|
+
label?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Optimistic-concurrency precondition: the version identifier (method profile §3) the caller based this change on, for example `keys/list`'s `versionId`. The VTA MUST refuse with `vta/dids:versionConflict` if the identity has moved past it. Not optional for anything a person looked at.
|
|
28
|
+
*/
|
|
29
|
+
expectedVersionId?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Compute and return the preview without writing anything but the plan (CONVENTIONS.md §6.1). Absent reads as false.
|
|
32
|
+
*/
|
|
33
|
+
dryRun?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Apply exactly the plan a previous dry run of this same request returned, or nothing (CONVENTIONS.md §6.1); what every approval is bound to.
|
|
36
|
+
*/
|
|
37
|
+
previewId?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Why the change is being made, for the audit trail and for the other approvers. Never published.
|
|
40
|
+
*/
|
|
41
|
+
reason?: string;
|
|
42
|
+
ext?: Ext;
|
|
43
|
+
}
|
|
44
|
+
export interface VTADIDsUpdateResponsePayload {
|
|
45
|
+
did: string;
|
|
46
|
+
outcome: KeyChangeOutcome;
|
|
47
|
+
/**
|
|
48
|
+
* Present when `outcome` is `preview`, `pendingApproval` or `awaitingRecoveryProof`: the plan, and what an approval is bound to.
|
|
49
|
+
*/
|
|
50
|
+
preview?: IdentityChangePreview;
|
|
51
|
+
/**
|
|
52
|
+
* Present when `outcome` is `pendingApproval`.
|
|
53
|
+
*/
|
|
54
|
+
approvals?: KeyChangeApprovalState;
|
|
55
|
+
/**
|
|
56
|
+
* Present when `outcome` is `applied`: the version identifier of the change. Pass it as the next change's `expectedVersionId`.
|
|
57
|
+
*/
|
|
58
|
+
newVersionId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Present when `outcome` is `applied`.
|
|
61
|
+
*/
|
|
62
|
+
publication?: Publication;
|
|
63
|
+
ext?: Ext;
|
|
64
|
+
}
|
|
65
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
66
|
+
export type { ApprovalEvidenceKind, DidMethodName, DidVerificationRelationship, Ext, IdentityChange, IdentityChangePreview, IdentityKeyRole, KeyChangeApprovalState, KeyChangeOutcome, KeyType, PreviewWarning, Publication, PublishedArtifact, RecordedApproval, RecoverySigningRequest };
|
|
67
|
+
/** Trust Task type URI. */
|
|
68
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/vta/dids/update/1.0";
|
|
69
|
+
/**
|
|
70
|
+
* The earlier version of this specification that this one declares it
|
|
71
|
+
* extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
|
|
72
|
+
* `null`. Only the direct declaration — follow the chain with
|
|
73
|
+
* `extendsChain` / `readForSpec`.
|
|
74
|
+
*/
|
|
75
|
+
export declare const EXTENDS: string | null;
|
|
76
|
+
/**
|
|
77
|
+
* Why this version is deprecated, or `null` while it is current. A
|
|
78
|
+
* superseded or retired version is still supported, and is withdrawn from
|
|
79
|
+
* this package in a later scheduled batch (SPEC "Superseded and Withdrawn
|
|
80
|
+
* Versions").
|
|
81
|
+
*/
|
|
82
|
+
export declare const DEPRECATION: string | null;
|
|
83
|
+
/** Stable alias for this specification's request payload shape. */
|
|
84
|
+
export type Payload = VTADIDsUpdatePayload;
|
|
85
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
86
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vta/dids/update/1.0#response";
|
|
87
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
88
|
+
export type Response = VTADIDsUpdateResponsePayload;
|
|
89
|
+
/**
|
|
90
|
+
* This specification's payload schema, as a value.
|
|
91
|
+
*
|
|
92
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
93
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
94
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
95
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
96
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
97
|
+
*/
|
|
98
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
99
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
100
|
+
readonly $id: "https://trusttasks.org/spec/vta/dids/update/1.0";
|
|
101
|
+
readonly title: "VTA DIDs — Update — payload";
|
|
102
|
+
readonly description: "Ask a Verifiable Trust Agent to change a key-role identity's non-key members — services, `alsoKnownAs`, method parameters such as witnesses. Keys change only through the key-role tasks (vta/dids/_shared/0.1/CONVENTIONS.md).";
|
|
103
|
+
readonly type: "object";
|
|
104
|
+
readonly additionalProperties: false;
|
|
105
|
+
readonly required: readonly ["did"];
|
|
106
|
+
readonly properties: {
|
|
107
|
+
readonly did: {
|
|
108
|
+
readonly type: "string";
|
|
109
|
+
readonly minLength: 1;
|
|
110
|
+
readonly description: "The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).";
|
|
111
|
+
};
|
|
112
|
+
readonly document: {
|
|
113
|
+
readonly type: "object";
|
|
114
|
+
readonly description: "The new identifier document, for methods whose controller writes it. Omit to leave it unchanged. It MUST carry, unchanged, `verificationMethod`, every verification relationship and `keyRoles`: a change to any of them is refused with `vta/dids/update:keyMembersManaged`, because keys change only through the key-role tasks.";
|
|
115
|
+
};
|
|
116
|
+
readonly methodParameters: {
|
|
117
|
+
readonly type: "object";
|
|
118
|
+
readonly description: "Validated against the method profile's `UpdateParameters` schema (method-profiles/<method>-parameters.schema.json); a member it does not define, or one fixed at creation, is refused with `vta/dids:methodParameterUnsupported`.";
|
|
119
|
+
};
|
|
120
|
+
readonly label: {
|
|
121
|
+
readonly type: "string";
|
|
122
|
+
readonly maxLength: 256;
|
|
123
|
+
readonly description: "Operator-facing audit label.";
|
|
124
|
+
};
|
|
125
|
+
readonly expectedVersionId: {
|
|
126
|
+
readonly type: "string";
|
|
127
|
+
readonly minLength: 1;
|
|
128
|
+
readonly description: "Optimistic-concurrency precondition: the version identifier (method profile §3) the caller based this change on, for example `keys/list`'s `versionId`. The VTA MUST refuse with `vta/dids:versionConflict` if the identity has moved past it. Not optional for anything a person looked at.";
|
|
129
|
+
};
|
|
130
|
+
readonly dryRun: {
|
|
131
|
+
readonly type: "boolean";
|
|
132
|
+
readonly description: "Compute and return the preview without writing anything but the plan (CONVENTIONS.md §6.1). Absent reads as false.";
|
|
133
|
+
};
|
|
134
|
+
readonly previewId: {
|
|
135
|
+
readonly type: "string";
|
|
136
|
+
readonly minLength: 16;
|
|
137
|
+
readonly description: "Apply exactly the plan a previous dry run of this same request returned, or nothing (CONVENTIONS.md §6.1); what every approval is bound to.";
|
|
138
|
+
};
|
|
139
|
+
readonly reason: {
|
|
140
|
+
readonly type: "string";
|
|
141
|
+
readonly maxLength: 1024;
|
|
142
|
+
readonly description: "Why the change is being made, for the audit trail and for the other approvers. Never published.";
|
|
143
|
+
};
|
|
144
|
+
readonly ext: {
|
|
145
|
+
readonly $ref: "#/$defs/Ext";
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
readonly $defs: {
|
|
149
|
+
readonly Response: {
|
|
150
|
+
readonly $anchor: "response";
|
|
151
|
+
readonly title: "VTA DIDs — Update — response payload";
|
|
152
|
+
readonly type: "object";
|
|
153
|
+
readonly additionalProperties: false;
|
|
154
|
+
readonly required: readonly ["did", "outcome"];
|
|
155
|
+
readonly properties: {
|
|
156
|
+
readonly did: {
|
|
157
|
+
readonly type: "string";
|
|
158
|
+
readonly minLength: 1;
|
|
159
|
+
};
|
|
160
|
+
readonly outcome: {
|
|
161
|
+
readonly $ref: "#/$defs/KeyChangeOutcome";
|
|
162
|
+
};
|
|
163
|
+
readonly preview: {
|
|
164
|
+
readonly $ref: "#/$defs/IdentityChangePreview";
|
|
165
|
+
readonly description: "Present when `outcome` is `preview`, `pendingApproval` or `awaitingRecoveryProof`: the plan, and what an approval is bound to.";
|
|
166
|
+
};
|
|
167
|
+
readonly approvals: {
|
|
168
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
169
|
+
readonly description: "Present when `outcome` is `pendingApproval`.";
|
|
170
|
+
};
|
|
171
|
+
readonly newVersionId: {
|
|
172
|
+
readonly type: "string";
|
|
173
|
+
readonly description: "Present when `outcome` is `applied`: the version identifier of the change. Pass it as the next change's `expectedVersionId`.";
|
|
174
|
+
};
|
|
175
|
+
readonly publication: {
|
|
176
|
+
readonly $ref: "#/$defs/Publication";
|
|
177
|
+
readonly description: "Present when `outcome` is `applied`.";
|
|
178
|
+
};
|
|
179
|
+
readonly ext: {
|
|
180
|
+
readonly $ref: "#/$defs/Ext";
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
readonly Ext: {
|
|
185
|
+
readonly title: "Ext";
|
|
186
|
+
readonly description: "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.";
|
|
187
|
+
readonly type: "object";
|
|
188
|
+
readonly minProperties: 1;
|
|
189
|
+
readonly additionalProperties: true;
|
|
190
|
+
readonly propertyNames: {
|
|
191
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
readonly Publication: {
|
|
195
|
+
readonly title: "Publication";
|
|
196
|
+
readonly type: "object";
|
|
197
|
+
readonly additionalProperties: false;
|
|
198
|
+
readonly required: readonly ["selfPublish"];
|
|
199
|
+
readonly description: "How the change reaches resolvers.";
|
|
200
|
+
readonly properties: {
|
|
201
|
+
readonly selfPublish: {
|
|
202
|
+
readonly type: "boolean";
|
|
203
|
+
readonly description: "True when no hosting service holds the identifier for the VTA: the caller must publish `artifacts`, and until it does resolvers see the previous version.";
|
|
204
|
+
};
|
|
205
|
+
readonly artifacts: {
|
|
206
|
+
readonly type: "array";
|
|
207
|
+
readonly items: {
|
|
208
|
+
readonly $ref: "#/$defs/PublishedArtifact";
|
|
209
|
+
};
|
|
210
|
+
readonly description: "Present when `selfPublish` is true.";
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
readonly PublishedArtifact: {
|
|
215
|
+
readonly title: "PublishedArtifact";
|
|
216
|
+
readonly type: "object";
|
|
217
|
+
readonly additionalProperties: false;
|
|
218
|
+
readonly required: readonly ["name", "mediaType", "content"];
|
|
219
|
+
readonly description: "A file the identifier's method publishes, as the method profile names it (`did.jsonl` for did:webvh, `did.json` and `keri.cesr` for did:webs).";
|
|
220
|
+
readonly properties: {
|
|
221
|
+
readonly name: {
|
|
222
|
+
readonly type: "string";
|
|
223
|
+
readonly minLength: 1;
|
|
224
|
+
readonly maxLength: 128;
|
|
225
|
+
};
|
|
226
|
+
readonly mediaType: {
|
|
227
|
+
readonly type: "string";
|
|
228
|
+
readonly minLength: 1;
|
|
229
|
+
};
|
|
230
|
+
readonly content: {
|
|
231
|
+
readonly type: "string";
|
|
232
|
+
readonly description: "The artefact's content, or for an append-only artefact the appended part, as text.";
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
readonly KeyChangeApprovalState: {
|
|
237
|
+
readonly title: "KeyChangeApprovalState";
|
|
238
|
+
readonly type: "object";
|
|
239
|
+
readonly additionalProperties: false;
|
|
240
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
241
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
242
|
+
readonly properties: {
|
|
243
|
+
readonly required: {
|
|
244
|
+
readonly type: "integer";
|
|
245
|
+
readonly minimum: 1;
|
|
246
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
247
|
+
};
|
|
248
|
+
readonly received: {
|
|
249
|
+
readonly type: "integer";
|
|
250
|
+
readonly minimum: 0;
|
|
251
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
252
|
+
};
|
|
253
|
+
readonly approvals: {
|
|
254
|
+
readonly type: "array";
|
|
255
|
+
readonly items: {
|
|
256
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
257
|
+
};
|
|
258
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
259
|
+
};
|
|
260
|
+
readonly expiresAt: {
|
|
261
|
+
readonly type: "string";
|
|
262
|
+
readonly format: "date-time";
|
|
263
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
readonly RecordedApproval: {
|
|
268
|
+
readonly title: "RecordedApproval";
|
|
269
|
+
readonly type: "object";
|
|
270
|
+
readonly additionalProperties: false;
|
|
271
|
+
readonly required: readonly ["approver", "evidence"];
|
|
272
|
+
readonly properties: {
|
|
273
|
+
readonly approver: {
|
|
274
|
+
readonly type: "string";
|
|
275
|
+
readonly minLength: 1;
|
|
276
|
+
readonly description: "VID of the approver.";
|
|
277
|
+
};
|
|
278
|
+
readonly evidence: {
|
|
279
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
280
|
+
};
|
|
281
|
+
readonly recordedAt: {
|
|
282
|
+
readonly type: "string";
|
|
283
|
+
readonly format: "date-time";
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
readonly ApprovalEvidenceKind: {
|
|
288
|
+
readonly title: "ApprovalEvidenceKind";
|
|
289
|
+
readonly type: "string";
|
|
290
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
291
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
292
|
+
};
|
|
293
|
+
readonly IdentityChangePreview: {
|
|
294
|
+
readonly title: "IdentityChangePreview";
|
|
295
|
+
readonly type: "object";
|
|
296
|
+
readonly additionalProperties: false;
|
|
297
|
+
readonly required: readonly ["previewId", "method", "expiresAt", "changes", "document", "updateKeyRotates"];
|
|
298
|
+
readonly description: "What a change would publish, computed by the VTA by running the handler it would run to apply it (CONVENTIONS.md §6.1). This is what a consent surface renders and what an approval is bound to.";
|
|
299
|
+
readonly properties: {
|
|
300
|
+
readonly previewId: {
|
|
301
|
+
readonly type: "string";
|
|
302
|
+
readonly minLength: 16;
|
|
303
|
+
readonly description: "Opaque, unguessable identifier of this exact plan. Carried back by the apply request; every approval and any recovery proof is bound to it.";
|
|
304
|
+
};
|
|
305
|
+
readonly method: {
|
|
306
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
307
|
+
};
|
|
308
|
+
readonly baseVersionId: {
|
|
309
|
+
readonly type: "string";
|
|
310
|
+
readonly description: "The version identifier the plan was computed against. Absent only for a creation. The plan is void once the identifier moves past it.";
|
|
311
|
+
};
|
|
312
|
+
readonly expiresAt: {
|
|
313
|
+
readonly type: "string";
|
|
314
|
+
readonly format: "date-time";
|
|
315
|
+
};
|
|
316
|
+
readonly changes: {
|
|
317
|
+
readonly type: "array";
|
|
318
|
+
readonly items: {
|
|
319
|
+
readonly $ref: "#/$defs/IdentityChange";
|
|
320
|
+
};
|
|
321
|
+
readonly description: "Every change the plan would make, including the ones the caller did not ask for — in particular any movement of the update authority the method requires.";
|
|
322
|
+
};
|
|
323
|
+
readonly document: {
|
|
324
|
+
readonly type: "object";
|
|
325
|
+
readonly description: "The complete identifier document the change would publish, `keyRoles` included. Public data by construction.";
|
|
326
|
+
};
|
|
327
|
+
readonly warnings: {
|
|
328
|
+
readonly type: "array";
|
|
329
|
+
readonly items: {
|
|
330
|
+
readonly $ref: "#/$defs/PreviewWarning";
|
|
331
|
+
};
|
|
332
|
+
readonly uniqueItems: true;
|
|
333
|
+
};
|
|
334
|
+
readonly updateKeyRotates: {
|
|
335
|
+
readonly type: "boolean";
|
|
336
|
+
readonly description: "True when applying the plan also moves the identifier's update authority to a committed successor — every change under did:webvh pre-rotation, never a KERI interaction event. Stated as its own member because it is the consequence a reviewer most often misses.";
|
|
337
|
+
};
|
|
338
|
+
readonly recoverySigning: {
|
|
339
|
+
readonly $ref: "#/$defs/RecoverySigningRequest";
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
readonly RecoverySigningRequest: {
|
|
344
|
+
readonly title: "RecoverySigningRequest";
|
|
345
|
+
readonly type: "object";
|
|
346
|
+
readonly additionalProperties: false;
|
|
347
|
+
readonly required: readonly ["commitment", "keyType", "unsignedChange", "proofOptions"];
|
|
348
|
+
readonly description: "What a recovery custodian must sign for a change that only the recovery key may authorize (CONVENTIONS.md §5.4, §9.4). The custodian MUST check `unsignedChange` itself — render it to its human, confirm that it reveals the recovery key it holds and commits to a fresh recovery key it also holds — and MUST NOT sign on the strength of this request's description alone.";
|
|
349
|
+
readonly properties: {
|
|
350
|
+
readonly commitment: {
|
|
351
|
+
readonly type: "string";
|
|
352
|
+
readonly minLength: 1;
|
|
353
|
+
readonly description: "The recovery commitment the identifier publishes; the custodian's key MUST be the one it commits to.";
|
|
354
|
+
};
|
|
355
|
+
readonly keyType: {
|
|
356
|
+
readonly $ref: "#/$defs/KeyType";
|
|
357
|
+
};
|
|
358
|
+
readonly unsignedChange: {
|
|
359
|
+
readonly type: "string";
|
|
360
|
+
readonly minLength: 1;
|
|
361
|
+
readonly description: "The change exactly as it will be published, without the recovery proof, as JSON text in the method's own form (a did:webvh log entry, a KERI rotation event).";
|
|
362
|
+
};
|
|
363
|
+
readonly proofOptions: {
|
|
364
|
+
readonly type: "object";
|
|
365
|
+
readonly description: "The proof the method requires over `unsignedChange`, without its signature value, as the method profile defines it (for did:webvh, a Data Integrity proof configuration with `proofPurpose: assertionMethod` and the recovery key's `did:key` as `verificationMethod`).";
|
|
366
|
+
};
|
|
367
|
+
readonly expiresAt: {
|
|
368
|
+
readonly type: "string";
|
|
369
|
+
readonly format: "date-time";
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
};
|
|
373
|
+
readonly KeyType: {
|
|
374
|
+
readonly title: "KeyType";
|
|
375
|
+
readonly type: "string";
|
|
376
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
377
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
378
|
+
};
|
|
379
|
+
readonly PreviewWarning: {
|
|
380
|
+
readonly title: "PreviewWarning";
|
|
381
|
+
readonly type: "string";
|
|
382
|
+
readonly enum: readonly ["singleKeyRole", "algorithmNotInAcceptedSet", "roleWillHaveNoClassicalKey", "attestationReissuanceRequired", "selfPublish", "noWitnesses", "protectionBelowPolicy", "recoveryKeyRevealed"];
|
|
383
|
+
readonly description: "Conditions a human should be shown before approving. `singleKeyRole` — the role will hold one active key. `algorithmNotInAcceptedSet` — a verifier population the VTA knows of does not accept the new key's algorithm. `roleWillHaveNoClassicalKey` — every remaining key is post-quantum. `attestationReissuanceRequired` — revoking this attestation key obliges re-issuance and re-signed status lists (VTI-KEY-133). `selfPublish` — the VTA will not publish the change; the operator must. `noWitnesses` — the identifier has no witnesses, so a party holding the VTA's routine update key can drop the recovery commitment unobserved (CONVENTIONS.md §5.3). `protectionBelowPolicy` — a key will be held at a `ProtectionClass` below what the VTA's policy recommends for its role (a plain VTA holding an attestation key). `recoveryKeyRevealed` — this change uses the recovery key, which must be replaced by a fresh recovery commitment in the same change.";
|
|
384
|
+
};
|
|
385
|
+
readonly IdentityChange: {
|
|
386
|
+
readonly title: "IdentityChange";
|
|
387
|
+
readonly type: "object";
|
|
388
|
+
readonly additionalProperties: false;
|
|
389
|
+
readonly required: readonly ["op", "role"];
|
|
390
|
+
readonly properties: {
|
|
391
|
+
readonly op: {
|
|
392
|
+
readonly type: "string";
|
|
393
|
+
readonly enum: readonly ["addKey", "retireKey", "revokeKey", "rotateUpdateKey", "commitUpdateKey", "replaceRecoveryCommitment", "useRecoveryKey"];
|
|
394
|
+
readonly description: "`addKey` — a verification method joins its role's relationship and `keyRoles`. `retireKey` — a verification method leaves its relationship, `keyRoles` and the document. `revokeKey` — a verification method leaves its relationship and `keyRoles`, and stays in `verificationMethod` with `revoked` set to the compromise time (CONVENTIONS.md §9.1). `rotateUpdateKey` — the identifier's update authority moves to a committed routine successor. `commitUpdateKey` — a new routine successor is committed. `replaceRecoveryCommitment` — the recovery commitment changes. `useRecoveryKey` — the change is authorized by the recovery key, which the identifier then reveals.";
|
|
395
|
+
};
|
|
396
|
+
readonly role: {
|
|
397
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
398
|
+
};
|
|
399
|
+
readonly verificationMethod: {
|
|
400
|
+
readonly type: "string";
|
|
401
|
+
};
|
|
402
|
+
readonly keyType: {
|
|
403
|
+
readonly $ref: "#/$defs/KeyType";
|
|
404
|
+
};
|
|
405
|
+
readonly publicKeyMultibase: {
|
|
406
|
+
readonly type: "string";
|
|
407
|
+
};
|
|
408
|
+
readonly commitment: {
|
|
409
|
+
readonly type: "string";
|
|
410
|
+
};
|
|
411
|
+
readonly relationships: {
|
|
412
|
+
readonly type: "array";
|
|
413
|
+
readonly items: {
|
|
414
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
415
|
+
};
|
|
416
|
+
readonly uniqueItems: true;
|
|
417
|
+
};
|
|
418
|
+
};
|
|
419
|
+
};
|
|
420
|
+
readonly DidVerificationRelationship: {
|
|
421
|
+
readonly title: "DidVerificationRelationship";
|
|
422
|
+
readonly type: "string";
|
|
423
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
424
|
+
readonly description: "A DID Core verification relationship.";
|
|
425
|
+
};
|
|
426
|
+
readonly IdentityKeyRole: {
|
|
427
|
+
readonly title: "IdentityKeyRole";
|
|
428
|
+
readonly type: "string";
|
|
429
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
430
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
431
|
+
};
|
|
432
|
+
readonly DidMethodName: {
|
|
433
|
+
readonly title: "DidMethodName";
|
|
434
|
+
readonly type: "string";
|
|
435
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
436
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
437
|
+
};
|
|
438
|
+
readonly KeyChangeOutcome: {
|
|
439
|
+
readonly title: "KeyChangeOutcome";
|
|
440
|
+
readonly type: "string";
|
|
441
|
+
readonly enum: readonly ["preview", "applied", "pendingApproval", "awaitingRecoveryProof"];
|
|
442
|
+
readonly description: "`preview` — nothing was written; the response carries the plan. `applied` — the change was made (and published, unless `publication.selfPublish`). `pendingApproval` — the plan is recorded and awaits further approvals. `awaitingRecoveryProof` — the plan is approved and waits for the recovery custodian's proof (`preview.recoverySigning`); nothing is published until it arrives.";
|
|
443
|
+
};
|
|
444
|
+
};
|
|
445
|
+
};
|
|
446
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
447
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
448
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
449
|
+
readonly $ref: "#/$defs/Response";
|
|
450
|
+
readonly $defs: {
|
|
451
|
+
readonly Response: {
|
|
452
|
+
readonly $anchor: "response";
|
|
453
|
+
readonly title: "VTA DIDs — Update — response payload";
|
|
454
|
+
readonly type: "object";
|
|
455
|
+
readonly additionalProperties: false;
|
|
456
|
+
readonly required: readonly ["did", "outcome"];
|
|
457
|
+
readonly properties: {
|
|
458
|
+
readonly did: {
|
|
459
|
+
readonly type: "string";
|
|
460
|
+
readonly minLength: 1;
|
|
461
|
+
};
|
|
462
|
+
readonly outcome: {
|
|
463
|
+
readonly $ref: "#/$defs/KeyChangeOutcome";
|
|
464
|
+
};
|
|
465
|
+
readonly preview: {
|
|
466
|
+
readonly $ref: "#/$defs/IdentityChangePreview";
|
|
467
|
+
readonly description: "Present when `outcome` is `preview`, `pendingApproval` or `awaitingRecoveryProof`: the plan, and what an approval is bound to.";
|
|
468
|
+
};
|
|
469
|
+
readonly approvals: {
|
|
470
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
471
|
+
readonly description: "Present when `outcome` is `pendingApproval`.";
|
|
472
|
+
};
|
|
473
|
+
readonly newVersionId: {
|
|
474
|
+
readonly type: "string";
|
|
475
|
+
readonly description: "Present when `outcome` is `applied`: the version identifier of the change. Pass it as the next change's `expectedVersionId`.";
|
|
476
|
+
};
|
|
477
|
+
readonly publication: {
|
|
478
|
+
readonly $ref: "#/$defs/Publication";
|
|
479
|
+
readonly description: "Present when `outcome` is `applied`.";
|
|
480
|
+
};
|
|
481
|
+
readonly ext: {
|
|
482
|
+
readonly $ref: "#/$defs/Ext";
|
|
483
|
+
};
|
|
484
|
+
};
|
|
485
|
+
};
|
|
486
|
+
readonly Ext: {
|
|
487
|
+
readonly title: "Ext";
|
|
488
|
+
readonly description: "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.";
|
|
489
|
+
readonly type: "object";
|
|
490
|
+
readonly minProperties: 1;
|
|
491
|
+
readonly additionalProperties: true;
|
|
492
|
+
readonly propertyNames: {
|
|
493
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
494
|
+
};
|
|
495
|
+
};
|
|
496
|
+
readonly Publication: {
|
|
497
|
+
readonly title: "Publication";
|
|
498
|
+
readonly type: "object";
|
|
499
|
+
readonly additionalProperties: false;
|
|
500
|
+
readonly required: readonly ["selfPublish"];
|
|
501
|
+
readonly description: "How the change reaches resolvers.";
|
|
502
|
+
readonly properties: {
|
|
503
|
+
readonly selfPublish: {
|
|
504
|
+
readonly type: "boolean";
|
|
505
|
+
readonly description: "True when no hosting service holds the identifier for the VTA: the caller must publish `artifacts`, and until it does resolvers see the previous version.";
|
|
506
|
+
};
|
|
507
|
+
readonly artifacts: {
|
|
508
|
+
readonly type: "array";
|
|
509
|
+
readonly items: {
|
|
510
|
+
readonly $ref: "#/$defs/PublishedArtifact";
|
|
511
|
+
};
|
|
512
|
+
readonly description: "Present when `selfPublish` is true.";
|
|
513
|
+
};
|
|
514
|
+
};
|
|
515
|
+
};
|
|
516
|
+
readonly PublishedArtifact: {
|
|
517
|
+
readonly title: "PublishedArtifact";
|
|
518
|
+
readonly type: "object";
|
|
519
|
+
readonly additionalProperties: false;
|
|
520
|
+
readonly required: readonly ["name", "mediaType", "content"];
|
|
521
|
+
readonly description: "A file the identifier's method publishes, as the method profile names it (`did.jsonl` for did:webvh, `did.json` and `keri.cesr` for did:webs).";
|
|
522
|
+
readonly properties: {
|
|
523
|
+
readonly name: {
|
|
524
|
+
readonly type: "string";
|
|
525
|
+
readonly minLength: 1;
|
|
526
|
+
readonly maxLength: 128;
|
|
527
|
+
};
|
|
528
|
+
readonly mediaType: {
|
|
529
|
+
readonly type: "string";
|
|
530
|
+
readonly minLength: 1;
|
|
531
|
+
};
|
|
532
|
+
readonly content: {
|
|
533
|
+
readonly type: "string";
|
|
534
|
+
readonly description: "The artefact's content, or for an append-only artefact the appended part, as text.";
|
|
535
|
+
};
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
readonly KeyChangeApprovalState: {
|
|
539
|
+
readonly title: "KeyChangeApprovalState";
|
|
540
|
+
readonly type: "object";
|
|
541
|
+
readonly additionalProperties: false;
|
|
542
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
543
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
544
|
+
readonly properties: {
|
|
545
|
+
readonly required: {
|
|
546
|
+
readonly type: "integer";
|
|
547
|
+
readonly minimum: 1;
|
|
548
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
549
|
+
};
|
|
550
|
+
readonly received: {
|
|
551
|
+
readonly type: "integer";
|
|
552
|
+
readonly minimum: 0;
|
|
553
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
554
|
+
};
|
|
555
|
+
readonly approvals: {
|
|
556
|
+
readonly type: "array";
|
|
557
|
+
readonly items: {
|
|
558
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
559
|
+
};
|
|
560
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
561
|
+
};
|
|
562
|
+
readonly expiresAt: {
|
|
563
|
+
readonly type: "string";
|
|
564
|
+
readonly format: "date-time";
|
|
565
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
566
|
+
};
|
|
567
|
+
};
|
|
568
|
+
};
|
|
569
|
+
readonly RecordedApproval: {
|
|
570
|
+
readonly title: "RecordedApproval";
|
|
571
|
+
readonly type: "object";
|
|
572
|
+
readonly additionalProperties: false;
|
|
573
|
+
readonly required: readonly ["approver", "evidence"];
|
|
574
|
+
readonly properties: {
|
|
575
|
+
readonly approver: {
|
|
576
|
+
readonly type: "string";
|
|
577
|
+
readonly minLength: 1;
|
|
578
|
+
readonly description: "VID of the approver.";
|
|
579
|
+
};
|
|
580
|
+
readonly evidence: {
|
|
581
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
582
|
+
};
|
|
583
|
+
readonly recordedAt: {
|
|
584
|
+
readonly type: "string";
|
|
585
|
+
readonly format: "date-time";
|
|
586
|
+
};
|
|
587
|
+
};
|
|
588
|
+
};
|
|
589
|
+
readonly ApprovalEvidenceKind: {
|
|
590
|
+
readonly title: "ApprovalEvidenceKind";
|
|
591
|
+
readonly type: "string";
|
|
592
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
593
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
594
|
+
};
|
|
595
|
+
readonly IdentityChangePreview: {
|
|
596
|
+
readonly title: "IdentityChangePreview";
|
|
597
|
+
readonly type: "object";
|
|
598
|
+
readonly additionalProperties: false;
|
|
599
|
+
readonly required: readonly ["previewId", "method", "expiresAt", "changes", "document", "updateKeyRotates"];
|
|
600
|
+
readonly description: "What a change would publish, computed by the VTA by running the handler it would run to apply it (CONVENTIONS.md §6.1). This is what a consent surface renders and what an approval is bound to.";
|
|
601
|
+
readonly properties: {
|
|
602
|
+
readonly previewId: {
|
|
603
|
+
readonly type: "string";
|
|
604
|
+
readonly minLength: 16;
|
|
605
|
+
readonly description: "Opaque, unguessable identifier of this exact plan. Carried back by the apply request; every approval and any recovery proof is bound to it.";
|
|
606
|
+
};
|
|
607
|
+
readonly method: {
|
|
608
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
609
|
+
};
|
|
610
|
+
readonly baseVersionId: {
|
|
611
|
+
readonly type: "string";
|
|
612
|
+
readonly description: "The version identifier the plan was computed against. Absent only for a creation. The plan is void once the identifier moves past it.";
|
|
613
|
+
};
|
|
614
|
+
readonly expiresAt: {
|
|
615
|
+
readonly type: "string";
|
|
616
|
+
readonly format: "date-time";
|
|
617
|
+
};
|
|
618
|
+
readonly changes: {
|
|
619
|
+
readonly type: "array";
|
|
620
|
+
readonly items: {
|
|
621
|
+
readonly $ref: "#/$defs/IdentityChange";
|
|
622
|
+
};
|
|
623
|
+
readonly description: "Every change the plan would make, including the ones the caller did not ask for — in particular any movement of the update authority the method requires.";
|
|
624
|
+
};
|
|
625
|
+
readonly document: {
|
|
626
|
+
readonly type: "object";
|
|
627
|
+
readonly description: "The complete identifier document the change would publish, `keyRoles` included. Public data by construction.";
|
|
628
|
+
};
|
|
629
|
+
readonly warnings: {
|
|
630
|
+
readonly type: "array";
|
|
631
|
+
readonly items: {
|
|
632
|
+
readonly $ref: "#/$defs/PreviewWarning";
|
|
633
|
+
};
|
|
634
|
+
readonly uniqueItems: true;
|
|
635
|
+
};
|
|
636
|
+
readonly updateKeyRotates: {
|
|
637
|
+
readonly type: "boolean";
|
|
638
|
+
readonly description: "True when applying the plan also moves the identifier's update authority to a committed successor — every change under did:webvh pre-rotation, never a KERI interaction event. Stated as its own member because it is the consequence a reviewer most often misses.";
|
|
639
|
+
};
|
|
640
|
+
readonly recoverySigning: {
|
|
641
|
+
readonly $ref: "#/$defs/RecoverySigningRequest";
|
|
642
|
+
};
|
|
643
|
+
};
|
|
644
|
+
};
|
|
645
|
+
readonly RecoverySigningRequest: {
|
|
646
|
+
readonly title: "RecoverySigningRequest";
|
|
647
|
+
readonly type: "object";
|
|
648
|
+
readonly additionalProperties: false;
|
|
649
|
+
readonly required: readonly ["commitment", "keyType", "unsignedChange", "proofOptions"];
|
|
650
|
+
readonly description: "What a recovery custodian must sign for a change that only the recovery key may authorize (CONVENTIONS.md §5.4, §9.4). The custodian MUST check `unsignedChange` itself — render it to its human, confirm that it reveals the recovery key it holds and commits to a fresh recovery key it also holds — and MUST NOT sign on the strength of this request's description alone.";
|
|
651
|
+
readonly properties: {
|
|
652
|
+
readonly commitment: {
|
|
653
|
+
readonly type: "string";
|
|
654
|
+
readonly minLength: 1;
|
|
655
|
+
readonly description: "The recovery commitment the identifier publishes; the custodian's key MUST be the one it commits to.";
|
|
656
|
+
};
|
|
657
|
+
readonly keyType: {
|
|
658
|
+
readonly $ref: "#/$defs/KeyType";
|
|
659
|
+
};
|
|
660
|
+
readonly unsignedChange: {
|
|
661
|
+
readonly type: "string";
|
|
662
|
+
readonly minLength: 1;
|
|
663
|
+
readonly description: "The change exactly as it will be published, without the recovery proof, as JSON text in the method's own form (a did:webvh log entry, a KERI rotation event).";
|
|
664
|
+
};
|
|
665
|
+
readonly proofOptions: {
|
|
666
|
+
readonly type: "object";
|
|
667
|
+
readonly description: "The proof the method requires over `unsignedChange`, without its signature value, as the method profile defines it (for did:webvh, a Data Integrity proof configuration with `proofPurpose: assertionMethod` and the recovery key's `did:key` as `verificationMethod`).";
|
|
668
|
+
};
|
|
669
|
+
readonly expiresAt: {
|
|
670
|
+
readonly type: "string";
|
|
671
|
+
readonly format: "date-time";
|
|
672
|
+
};
|
|
673
|
+
};
|
|
674
|
+
};
|
|
675
|
+
readonly KeyType: {
|
|
676
|
+
readonly title: "KeyType";
|
|
677
|
+
readonly type: "string";
|
|
678
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
679
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
680
|
+
};
|
|
681
|
+
readonly PreviewWarning: {
|
|
682
|
+
readonly title: "PreviewWarning";
|
|
683
|
+
readonly type: "string";
|
|
684
|
+
readonly enum: readonly ["singleKeyRole", "algorithmNotInAcceptedSet", "roleWillHaveNoClassicalKey", "attestationReissuanceRequired", "selfPublish", "noWitnesses", "protectionBelowPolicy", "recoveryKeyRevealed"];
|
|
685
|
+
readonly description: "Conditions a human should be shown before approving. `singleKeyRole` — the role will hold one active key. `algorithmNotInAcceptedSet` — a verifier population the VTA knows of does not accept the new key's algorithm. `roleWillHaveNoClassicalKey` — every remaining key is post-quantum. `attestationReissuanceRequired` — revoking this attestation key obliges re-issuance and re-signed status lists (VTI-KEY-133). `selfPublish` — the VTA will not publish the change; the operator must. `noWitnesses` — the identifier has no witnesses, so a party holding the VTA's routine update key can drop the recovery commitment unobserved (CONVENTIONS.md §5.3). `protectionBelowPolicy` — a key will be held at a `ProtectionClass` below what the VTA's policy recommends for its role (a plain VTA holding an attestation key). `recoveryKeyRevealed` — this change uses the recovery key, which must be replaced by a fresh recovery commitment in the same change.";
|
|
686
|
+
};
|
|
687
|
+
readonly IdentityChange: {
|
|
688
|
+
readonly title: "IdentityChange";
|
|
689
|
+
readonly type: "object";
|
|
690
|
+
readonly additionalProperties: false;
|
|
691
|
+
readonly required: readonly ["op", "role"];
|
|
692
|
+
readonly properties: {
|
|
693
|
+
readonly op: {
|
|
694
|
+
readonly type: "string";
|
|
695
|
+
readonly enum: readonly ["addKey", "retireKey", "revokeKey", "rotateUpdateKey", "commitUpdateKey", "replaceRecoveryCommitment", "useRecoveryKey"];
|
|
696
|
+
readonly description: "`addKey` — a verification method joins its role's relationship and `keyRoles`. `retireKey` — a verification method leaves its relationship, `keyRoles` and the document. `revokeKey` — a verification method leaves its relationship and `keyRoles`, and stays in `verificationMethod` with `revoked` set to the compromise time (CONVENTIONS.md §9.1). `rotateUpdateKey` — the identifier's update authority moves to a committed routine successor. `commitUpdateKey` — a new routine successor is committed. `replaceRecoveryCommitment` — the recovery commitment changes. `useRecoveryKey` — the change is authorized by the recovery key, which the identifier then reveals.";
|
|
697
|
+
};
|
|
698
|
+
readonly role: {
|
|
699
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
700
|
+
};
|
|
701
|
+
readonly verificationMethod: {
|
|
702
|
+
readonly type: "string";
|
|
703
|
+
};
|
|
704
|
+
readonly keyType: {
|
|
705
|
+
readonly $ref: "#/$defs/KeyType";
|
|
706
|
+
};
|
|
707
|
+
readonly publicKeyMultibase: {
|
|
708
|
+
readonly type: "string";
|
|
709
|
+
};
|
|
710
|
+
readonly commitment: {
|
|
711
|
+
readonly type: "string";
|
|
712
|
+
};
|
|
713
|
+
readonly relationships: {
|
|
714
|
+
readonly type: "array";
|
|
715
|
+
readonly items: {
|
|
716
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
717
|
+
};
|
|
718
|
+
readonly uniqueItems: true;
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
};
|
|
722
|
+
readonly DidVerificationRelationship: {
|
|
723
|
+
readonly title: "DidVerificationRelationship";
|
|
724
|
+
readonly type: "string";
|
|
725
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
726
|
+
readonly description: "A DID Core verification relationship.";
|
|
727
|
+
};
|
|
728
|
+
readonly IdentityKeyRole: {
|
|
729
|
+
readonly title: "IdentityKeyRole";
|
|
730
|
+
readonly type: "string";
|
|
731
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
732
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
733
|
+
};
|
|
734
|
+
readonly DidMethodName: {
|
|
735
|
+
readonly title: "DidMethodName";
|
|
736
|
+
readonly type: "string";
|
|
737
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
738
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
739
|
+
};
|
|
740
|
+
readonly KeyChangeOutcome: {
|
|
741
|
+
readonly title: "KeyChangeOutcome";
|
|
742
|
+
readonly type: "string";
|
|
743
|
+
readonly enum: readonly ["preview", "applied", "pendingApproval", "awaitingRecoveryProof"];
|
|
744
|
+
readonly description: "`preview` — nothing was written; the response carries the plan. `applied` — the change was made (and published, unless `publication.selfPublish`). `pendingApproval` — the plan is recorded and awaits further approvals. `awaitingRecoveryProof` — the plan is approved and waits for the recovery custodian's proof (`preview.recoverySigning`); nothing is published until it arrives.";
|
|
745
|
+
};
|
|
746
|
+
};
|
|
747
|
+
};
|
|
748
|
+
/**
|
|
749
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
750
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
751
|
+
* per-specification and cannot be derived from the document alone, and
|
|
752
|
+
* item 2 needs the schema this carries.
|
|
753
|
+
*/
|
|
754
|
+
export declare const SPEC: {
|
|
755
|
+
readonly typeUri: "https://trusttasks.org/spec/vta/dids/update/1.0";
|
|
756
|
+
readonly isBearer: false;
|
|
757
|
+
readonly isProofRequired: true;
|
|
758
|
+
readonly isRecipientRequired: true;
|
|
759
|
+
readonly isIssuedAtRequired: true;
|
|
760
|
+
readonly payloadSchema: {
|
|
761
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
762
|
+
readonly $id: "https://trusttasks.org/spec/vta/dids/update/1.0";
|
|
763
|
+
readonly title: "VTA DIDs — Update — payload";
|
|
764
|
+
readonly description: "Ask a Verifiable Trust Agent to change a key-role identity's non-key members — services, `alsoKnownAs`, method parameters such as witnesses. Keys change only through the key-role tasks (vta/dids/_shared/0.1/CONVENTIONS.md).";
|
|
765
|
+
readonly type: "object";
|
|
766
|
+
readonly additionalProperties: false;
|
|
767
|
+
readonly required: readonly ["did"];
|
|
768
|
+
readonly properties: {
|
|
769
|
+
readonly did: {
|
|
770
|
+
readonly type: "string";
|
|
771
|
+
readonly minLength: 1;
|
|
772
|
+
readonly description: "The key-role identity, by DID (for a `did:scid` identity, the DID without `src`).";
|
|
773
|
+
};
|
|
774
|
+
readonly document: {
|
|
775
|
+
readonly type: "object";
|
|
776
|
+
readonly description: "The new identifier document, for methods whose controller writes it. Omit to leave it unchanged. It MUST carry, unchanged, `verificationMethod`, every verification relationship and `keyRoles`: a change to any of them is refused with `vta/dids/update:keyMembersManaged`, because keys change only through the key-role tasks.";
|
|
777
|
+
};
|
|
778
|
+
readonly methodParameters: {
|
|
779
|
+
readonly type: "object";
|
|
780
|
+
readonly description: "Validated against the method profile's `UpdateParameters` schema (method-profiles/<method>-parameters.schema.json); a member it does not define, or one fixed at creation, is refused with `vta/dids:methodParameterUnsupported`.";
|
|
781
|
+
};
|
|
782
|
+
readonly label: {
|
|
783
|
+
readonly type: "string";
|
|
784
|
+
readonly maxLength: 256;
|
|
785
|
+
readonly description: "Operator-facing audit label.";
|
|
786
|
+
};
|
|
787
|
+
readonly expectedVersionId: {
|
|
788
|
+
readonly type: "string";
|
|
789
|
+
readonly minLength: 1;
|
|
790
|
+
readonly description: "Optimistic-concurrency precondition: the version identifier (method profile §3) the caller based this change on, for example `keys/list`'s `versionId`. The VTA MUST refuse with `vta/dids:versionConflict` if the identity has moved past it. Not optional for anything a person looked at.";
|
|
791
|
+
};
|
|
792
|
+
readonly dryRun: {
|
|
793
|
+
readonly type: "boolean";
|
|
794
|
+
readonly description: "Compute and return the preview without writing anything but the plan (CONVENTIONS.md §6.1). Absent reads as false.";
|
|
795
|
+
};
|
|
796
|
+
readonly previewId: {
|
|
797
|
+
readonly type: "string";
|
|
798
|
+
readonly minLength: 16;
|
|
799
|
+
readonly description: "Apply exactly the plan a previous dry run of this same request returned, or nothing (CONVENTIONS.md §6.1); what every approval is bound to.";
|
|
800
|
+
};
|
|
801
|
+
readonly reason: {
|
|
802
|
+
readonly type: "string";
|
|
803
|
+
readonly maxLength: 1024;
|
|
804
|
+
readonly description: "Why the change is being made, for the audit trail and for the other approvers. Never published.";
|
|
805
|
+
};
|
|
806
|
+
readonly ext: {
|
|
807
|
+
readonly $ref: "#/$defs/Ext";
|
|
808
|
+
};
|
|
809
|
+
};
|
|
810
|
+
readonly $defs: {
|
|
811
|
+
readonly Response: {
|
|
812
|
+
readonly $anchor: "response";
|
|
813
|
+
readonly title: "VTA DIDs — Update — response payload";
|
|
814
|
+
readonly type: "object";
|
|
815
|
+
readonly additionalProperties: false;
|
|
816
|
+
readonly required: readonly ["did", "outcome"];
|
|
817
|
+
readonly properties: {
|
|
818
|
+
readonly did: {
|
|
819
|
+
readonly type: "string";
|
|
820
|
+
readonly minLength: 1;
|
|
821
|
+
};
|
|
822
|
+
readonly outcome: {
|
|
823
|
+
readonly $ref: "#/$defs/KeyChangeOutcome";
|
|
824
|
+
};
|
|
825
|
+
readonly preview: {
|
|
826
|
+
readonly $ref: "#/$defs/IdentityChangePreview";
|
|
827
|
+
readonly description: "Present when `outcome` is `preview`, `pendingApproval` or `awaitingRecoveryProof`: the plan, and what an approval is bound to.";
|
|
828
|
+
};
|
|
829
|
+
readonly approvals: {
|
|
830
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
831
|
+
readonly description: "Present when `outcome` is `pendingApproval`.";
|
|
832
|
+
};
|
|
833
|
+
readonly newVersionId: {
|
|
834
|
+
readonly type: "string";
|
|
835
|
+
readonly description: "Present when `outcome` is `applied`: the version identifier of the change. Pass it as the next change's `expectedVersionId`.";
|
|
836
|
+
};
|
|
837
|
+
readonly publication: {
|
|
838
|
+
readonly $ref: "#/$defs/Publication";
|
|
839
|
+
readonly description: "Present when `outcome` is `applied`.";
|
|
840
|
+
};
|
|
841
|
+
readonly ext: {
|
|
842
|
+
readonly $ref: "#/$defs/Ext";
|
|
843
|
+
};
|
|
844
|
+
};
|
|
845
|
+
};
|
|
846
|
+
readonly Ext: {
|
|
847
|
+
readonly title: "Ext";
|
|
848
|
+
readonly description: "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.";
|
|
849
|
+
readonly type: "object";
|
|
850
|
+
readonly minProperties: 1;
|
|
851
|
+
readonly additionalProperties: true;
|
|
852
|
+
readonly propertyNames: {
|
|
853
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
854
|
+
};
|
|
855
|
+
};
|
|
856
|
+
readonly Publication: {
|
|
857
|
+
readonly title: "Publication";
|
|
858
|
+
readonly type: "object";
|
|
859
|
+
readonly additionalProperties: false;
|
|
860
|
+
readonly required: readonly ["selfPublish"];
|
|
861
|
+
readonly description: "How the change reaches resolvers.";
|
|
862
|
+
readonly properties: {
|
|
863
|
+
readonly selfPublish: {
|
|
864
|
+
readonly type: "boolean";
|
|
865
|
+
readonly description: "True when no hosting service holds the identifier for the VTA: the caller must publish `artifacts`, and until it does resolvers see the previous version.";
|
|
866
|
+
};
|
|
867
|
+
readonly artifacts: {
|
|
868
|
+
readonly type: "array";
|
|
869
|
+
readonly items: {
|
|
870
|
+
readonly $ref: "#/$defs/PublishedArtifact";
|
|
871
|
+
};
|
|
872
|
+
readonly description: "Present when `selfPublish` is true.";
|
|
873
|
+
};
|
|
874
|
+
};
|
|
875
|
+
};
|
|
876
|
+
readonly PublishedArtifact: {
|
|
877
|
+
readonly title: "PublishedArtifact";
|
|
878
|
+
readonly type: "object";
|
|
879
|
+
readonly additionalProperties: false;
|
|
880
|
+
readonly required: readonly ["name", "mediaType", "content"];
|
|
881
|
+
readonly description: "A file the identifier's method publishes, as the method profile names it (`did.jsonl` for did:webvh, `did.json` and `keri.cesr` for did:webs).";
|
|
882
|
+
readonly properties: {
|
|
883
|
+
readonly name: {
|
|
884
|
+
readonly type: "string";
|
|
885
|
+
readonly minLength: 1;
|
|
886
|
+
readonly maxLength: 128;
|
|
887
|
+
};
|
|
888
|
+
readonly mediaType: {
|
|
889
|
+
readonly type: "string";
|
|
890
|
+
readonly minLength: 1;
|
|
891
|
+
};
|
|
892
|
+
readonly content: {
|
|
893
|
+
readonly type: "string";
|
|
894
|
+
readonly description: "The artefact's content, or for an append-only artefact the appended part, as text.";
|
|
895
|
+
};
|
|
896
|
+
};
|
|
897
|
+
};
|
|
898
|
+
readonly KeyChangeApprovalState: {
|
|
899
|
+
readonly title: "KeyChangeApprovalState";
|
|
900
|
+
readonly type: "object";
|
|
901
|
+
readonly additionalProperties: false;
|
|
902
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
903
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
904
|
+
readonly properties: {
|
|
905
|
+
readonly required: {
|
|
906
|
+
readonly type: "integer";
|
|
907
|
+
readonly minimum: 1;
|
|
908
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
909
|
+
};
|
|
910
|
+
readonly received: {
|
|
911
|
+
readonly type: "integer";
|
|
912
|
+
readonly minimum: 0;
|
|
913
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
914
|
+
};
|
|
915
|
+
readonly approvals: {
|
|
916
|
+
readonly type: "array";
|
|
917
|
+
readonly items: {
|
|
918
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
919
|
+
};
|
|
920
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
921
|
+
};
|
|
922
|
+
readonly expiresAt: {
|
|
923
|
+
readonly type: "string";
|
|
924
|
+
readonly format: "date-time";
|
|
925
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
926
|
+
};
|
|
927
|
+
};
|
|
928
|
+
};
|
|
929
|
+
readonly RecordedApproval: {
|
|
930
|
+
readonly title: "RecordedApproval";
|
|
931
|
+
readonly type: "object";
|
|
932
|
+
readonly additionalProperties: false;
|
|
933
|
+
readonly required: readonly ["approver", "evidence"];
|
|
934
|
+
readonly properties: {
|
|
935
|
+
readonly approver: {
|
|
936
|
+
readonly type: "string";
|
|
937
|
+
readonly minLength: 1;
|
|
938
|
+
readonly description: "VID of the approver.";
|
|
939
|
+
};
|
|
940
|
+
readonly evidence: {
|
|
941
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
942
|
+
};
|
|
943
|
+
readonly recordedAt: {
|
|
944
|
+
readonly type: "string";
|
|
945
|
+
readonly format: "date-time";
|
|
946
|
+
};
|
|
947
|
+
};
|
|
948
|
+
};
|
|
949
|
+
readonly ApprovalEvidenceKind: {
|
|
950
|
+
readonly title: "ApprovalEvidenceKind";
|
|
951
|
+
readonly type: "string";
|
|
952
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
953
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
954
|
+
};
|
|
955
|
+
readonly IdentityChangePreview: {
|
|
956
|
+
readonly title: "IdentityChangePreview";
|
|
957
|
+
readonly type: "object";
|
|
958
|
+
readonly additionalProperties: false;
|
|
959
|
+
readonly required: readonly ["previewId", "method", "expiresAt", "changes", "document", "updateKeyRotates"];
|
|
960
|
+
readonly description: "What a change would publish, computed by the VTA by running the handler it would run to apply it (CONVENTIONS.md §6.1). This is what a consent surface renders and what an approval is bound to.";
|
|
961
|
+
readonly properties: {
|
|
962
|
+
readonly previewId: {
|
|
963
|
+
readonly type: "string";
|
|
964
|
+
readonly minLength: 16;
|
|
965
|
+
readonly description: "Opaque, unguessable identifier of this exact plan. Carried back by the apply request; every approval and any recovery proof is bound to it.";
|
|
966
|
+
};
|
|
967
|
+
readonly method: {
|
|
968
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
969
|
+
};
|
|
970
|
+
readonly baseVersionId: {
|
|
971
|
+
readonly type: "string";
|
|
972
|
+
readonly description: "The version identifier the plan was computed against. Absent only for a creation. The plan is void once the identifier moves past it.";
|
|
973
|
+
};
|
|
974
|
+
readonly expiresAt: {
|
|
975
|
+
readonly type: "string";
|
|
976
|
+
readonly format: "date-time";
|
|
977
|
+
};
|
|
978
|
+
readonly changes: {
|
|
979
|
+
readonly type: "array";
|
|
980
|
+
readonly items: {
|
|
981
|
+
readonly $ref: "#/$defs/IdentityChange";
|
|
982
|
+
};
|
|
983
|
+
readonly description: "Every change the plan would make, including the ones the caller did not ask for — in particular any movement of the update authority the method requires.";
|
|
984
|
+
};
|
|
985
|
+
readonly document: {
|
|
986
|
+
readonly type: "object";
|
|
987
|
+
readonly description: "The complete identifier document the change would publish, `keyRoles` included. Public data by construction.";
|
|
988
|
+
};
|
|
989
|
+
readonly warnings: {
|
|
990
|
+
readonly type: "array";
|
|
991
|
+
readonly items: {
|
|
992
|
+
readonly $ref: "#/$defs/PreviewWarning";
|
|
993
|
+
};
|
|
994
|
+
readonly uniqueItems: true;
|
|
995
|
+
};
|
|
996
|
+
readonly updateKeyRotates: {
|
|
997
|
+
readonly type: "boolean";
|
|
998
|
+
readonly description: "True when applying the plan also moves the identifier's update authority to a committed successor — every change under did:webvh pre-rotation, never a KERI interaction event. Stated as its own member because it is the consequence a reviewer most often misses.";
|
|
999
|
+
};
|
|
1000
|
+
readonly recoverySigning: {
|
|
1001
|
+
readonly $ref: "#/$defs/RecoverySigningRequest";
|
|
1002
|
+
};
|
|
1003
|
+
};
|
|
1004
|
+
};
|
|
1005
|
+
readonly RecoverySigningRequest: {
|
|
1006
|
+
readonly title: "RecoverySigningRequest";
|
|
1007
|
+
readonly type: "object";
|
|
1008
|
+
readonly additionalProperties: false;
|
|
1009
|
+
readonly required: readonly ["commitment", "keyType", "unsignedChange", "proofOptions"];
|
|
1010
|
+
readonly description: "What a recovery custodian must sign for a change that only the recovery key may authorize (CONVENTIONS.md §5.4, §9.4). The custodian MUST check `unsignedChange` itself — render it to its human, confirm that it reveals the recovery key it holds and commits to a fresh recovery key it also holds — and MUST NOT sign on the strength of this request's description alone.";
|
|
1011
|
+
readonly properties: {
|
|
1012
|
+
readonly commitment: {
|
|
1013
|
+
readonly type: "string";
|
|
1014
|
+
readonly minLength: 1;
|
|
1015
|
+
readonly description: "The recovery commitment the identifier publishes; the custodian's key MUST be the one it commits to.";
|
|
1016
|
+
};
|
|
1017
|
+
readonly keyType: {
|
|
1018
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1019
|
+
};
|
|
1020
|
+
readonly unsignedChange: {
|
|
1021
|
+
readonly type: "string";
|
|
1022
|
+
readonly minLength: 1;
|
|
1023
|
+
readonly description: "The change exactly as it will be published, without the recovery proof, as JSON text in the method's own form (a did:webvh log entry, a KERI rotation event).";
|
|
1024
|
+
};
|
|
1025
|
+
readonly proofOptions: {
|
|
1026
|
+
readonly type: "object";
|
|
1027
|
+
readonly description: "The proof the method requires over `unsignedChange`, without its signature value, as the method profile defines it (for did:webvh, a Data Integrity proof configuration with `proofPurpose: assertionMethod` and the recovery key's `did:key` as `verificationMethod`).";
|
|
1028
|
+
};
|
|
1029
|
+
readonly expiresAt: {
|
|
1030
|
+
readonly type: "string";
|
|
1031
|
+
readonly format: "date-time";
|
|
1032
|
+
};
|
|
1033
|
+
};
|
|
1034
|
+
};
|
|
1035
|
+
readonly KeyType: {
|
|
1036
|
+
readonly title: "KeyType";
|
|
1037
|
+
readonly type: "string";
|
|
1038
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
1039
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
1040
|
+
};
|
|
1041
|
+
readonly PreviewWarning: {
|
|
1042
|
+
readonly title: "PreviewWarning";
|
|
1043
|
+
readonly type: "string";
|
|
1044
|
+
readonly enum: readonly ["singleKeyRole", "algorithmNotInAcceptedSet", "roleWillHaveNoClassicalKey", "attestationReissuanceRequired", "selfPublish", "noWitnesses", "protectionBelowPolicy", "recoveryKeyRevealed"];
|
|
1045
|
+
readonly description: "Conditions a human should be shown before approving. `singleKeyRole` — the role will hold one active key. `algorithmNotInAcceptedSet` — a verifier population the VTA knows of does not accept the new key's algorithm. `roleWillHaveNoClassicalKey` — every remaining key is post-quantum. `attestationReissuanceRequired` — revoking this attestation key obliges re-issuance and re-signed status lists (VTI-KEY-133). `selfPublish` — the VTA will not publish the change; the operator must. `noWitnesses` — the identifier has no witnesses, so a party holding the VTA's routine update key can drop the recovery commitment unobserved (CONVENTIONS.md §5.3). `protectionBelowPolicy` — a key will be held at a `ProtectionClass` below what the VTA's policy recommends for its role (a plain VTA holding an attestation key). `recoveryKeyRevealed` — this change uses the recovery key, which must be replaced by a fresh recovery commitment in the same change.";
|
|
1046
|
+
};
|
|
1047
|
+
readonly IdentityChange: {
|
|
1048
|
+
readonly title: "IdentityChange";
|
|
1049
|
+
readonly type: "object";
|
|
1050
|
+
readonly additionalProperties: false;
|
|
1051
|
+
readonly required: readonly ["op", "role"];
|
|
1052
|
+
readonly properties: {
|
|
1053
|
+
readonly op: {
|
|
1054
|
+
readonly type: "string";
|
|
1055
|
+
readonly enum: readonly ["addKey", "retireKey", "revokeKey", "rotateUpdateKey", "commitUpdateKey", "replaceRecoveryCommitment", "useRecoveryKey"];
|
|
1056
|
+
readonly description: "`addKey` — a verification method joins its role's relationship and `keyRoles`. `retireKey` — a verification method leaves its relationship, `keyRoles` and the document. `revokeKey` — a verification method leaves its relationship and `keyRoles`, and stays in `verificationMethod` with `revoked` set to the compromise time (CONVENTIONS.md §9.1). `rotateUpdateKey` — the identifier's update authority moves to a committed routine successor. `commitUpdateKey` — a new routine successor is committed. `replaceRecoveryCommitment` — the recovery commitment changes. `useRecoveryKey` — the change is authorized by the recovery key, which the identifier then reveals.";
|
|
1057
|
+
};
|
|
1058
|
+
readonly role: {
|
|
1059
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1060
|
+
};
|
|
1061
|
+
readonly verificationMethod: {
|
|
1062
|
+
readonly type: "string";
|
|
1063
|
+
};
|
|
1064
|
+
readonly keyType: {
|
|
1065
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1066
|
+
};
|
|
1067
|
+
readonly publicKeyMultibase: {
|
|
1068
|
+
readonly type: "string";
|
|
1069
|
+
};
|
|
1070
|
+
readonly commitment: {
|
|
1071
|
+
readonly type: "string";
|
|
1072
|
+
};
|
|
1073
|
+
readonly relationships: {
|
|
1074
|
+
readonly type: "array";
|
|
1075
|
+
readonly items: {
|
|
1076
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1077
|
+
};
|
|
1078
|
+
readonly uniqueItems: true;
|
|
1079
|
+
};
|
|
1080
|
+
};
|
|
1081
|
+
};
|
|
1082
|
+
readonly DidVerificationRelationship: {
|
|
1083
|
+
readonly title: "DidVerificationRelationship";
|
|
1084
|
+
readonly type: "string";
|
|
1085
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
1086
|
+
readonly description: "A DID Core verification relationship.";
|
|
1087
|
+
};
|
|
1088
|
+
readonly IdentityKeyRole: {
|
|
1089
|
+
readonly title: "IdentityKeyRole";
|
|
1090
|
+
readonly type: "string";
|
|
1091
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
1092
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
1093
|
+
};
|
|
1094
|
+
readonly DidMethodName: {
|
|
1095
|
+
readonly title: "DidMethodName";
|
|
1096
|
+
readonly type: "string";
|
|
1097
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
1098
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
1099
|
+
};
|
|
1100
|
+
readonly KeyChangeOutcome: {
|
|
1101
|
+
readonly title: "KeyChangeOutcome";
|
|
1102
|
+
readonly type: "string";
|
|
1103
|
+
readonly enum: readonly ["preview", "applied", "pendingApproval", "awaitingRecoveryProof"];
|
|
1104
|
+
readonly description: "`preview` — nothing was written; the response carries the plan. `applied` — the change was made (and published, unless `publication.selfPublish`). `pendingApproval` — the plan is recorded and awaits further approvals. `awaitingRecoveryProof` — the plan is approved and waits for the recovery custodian's proof (`preview.recoverySigning`); nothing is published until it arrives.";
|
|
1105
|
+
};
|
|
1106
|
+
};
|
|
1107
|
+
};
|
|
1108
|
+
};
|
|
1109
|
+
/**
|
|
1110
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1111
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1112
|
+
* parties (§7.3 item 5).
|
|
1113
|
+
*/
|
|
1114
|
+
export declare const RESPONSE_SPEC: {
|
|
1115
|
+
readonly typeUri: "https://trusttasks.org/spec/vta/dids/update/1.0#response";
|
|
1116
|
+
readonly isBearer: false;
|
|
1117
|
+
readonly isProofRequired: true;
|
|
1118
|
+
readonly isRecipientRequired: true;
|
|
1119
|
+
readonly isIssuedAtRequired: true;
|
|
1120
|
+
readonly payloadSchema: {
|
|
1121
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1122
|
+
readonly $ref: "#/$defs/Response";
|
|
1123
|
+
readonly $defs: {
|
|
1124
|
+
readonly Response: {
|
|
1125
|
+
readonly $anchor: "response";
|
|
1126
|
+
readonly title: "VTA DIDs — Update — response payload";
|
|
1127
|
+
readonly type: "object";
|
|
1128
|
+
readonly additionalProperties: false;
|
|
1129
|
+
readonly required: readonly ["did", "outcome"];
|
|
1130
|
+
readonly properties: {
|
|
1131
|
+
readonly did: {
|
|
1132
|
+
readonly type: "string";
|
|
1133
|
+
readonly minLength: 1;
|
|
1134
|
+
};
|
|
1135
|
+
readonly outcome: {
|
|
1136
|
+
readonly $ref: "#/$defs/KeyChangeOutcome";
|
|
1137
|
+
};
|
|
1138
|
+
readonly preview: {
|
|
1139
|
+
readonly $ref: "#/$defs/IdentityChangePreview";
|
|
1140
|
+
readonly description: "Present when `outcome` is `preview`, `pendingApproval` or `awaitingRecoveryProof`: the plan, and what an approval is bound to.";
|
|
1141
|
+
};
|
|
1142
|
+
readonly approvals: {
|
|
1143
|
+
readonly $ref: "#/$defs/KeyChangeApprovalState";
|
|
1144
|
+
readonly description: "Present when `outcome` is `pendingApproval`.";
|
|
1145
|
+
};
|
|
1146
|
+
readonly newVersionId: {
|
|
1147
|
+
readonly type: "string";
|
|
1148
|
+
readonly description: "Present when `outcome` is `applied`: the version identifier of the change. Pass it as the next change's `expectedVersionId`.";
|
|
1149
|
+
};
|
|
1150
|
+
readonly publication: {
|
|
1151
|
+
readonly $ref: "#/$defs/Publication";
|
|
1152
|
+
readonly description: "Present when `outcome` is `applied`.";
|
|
1153
|
+
};
|
|
1154
|
+
readonly ext: {
|
|
1155
|
+
readonly $ref: "#/$defs/Ext";
|
|
1156
|
+
};
|
|
1157
|
+
};
|
|
1158
|
+
};
|
|
1159
|
+
readonly Ext: {
|
|
1160
|
+
readonly title: "Ext";
|
|
1161
|
+
readonly description: "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.";
|
|
1162
|
+
readonly type: "object";
|
|
1163
|
+
readonly minProperties: 1;
|
|
1164
|
+
readonly additionalProperties: true;
|
|
1165
|
+
readonly propertyNames: {
|
|
1166
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1167
|
+
};
|
|
1168
|
+
};
|
|
1169
|
+
readonly Publication: {
|
|
1170
|
+
readonly title: "Publication";
|
|
1171
|
+
readonly type: "object";
|
|
1172
|
+
readonly additionalProperties: false;
|
|
1173
|
+
readonly required: readonly ["selfPublish"];
|
|
1174
|
+
readonly description: "How the change reaches resolvers.";
|
|
1175
|
+
readonly properties: {
|
|
1176
|
+
readonly selfPublish: {
|
|
1177
|
+
readonly type: "boolean";
|
|
1178
|
+
readonly description: "True when no hosting service holds the identifier for the VTA: the caller must publish `artifacts`, and until it does resolvers see the previous version.";
|
|
1179
|
+
};
|
|
1180
|
+
readonly artifacts: {
|
|
1181
|
+
readonly type: "array";
|
|
1182
|
+
readonly items: {
|
|
1183
|
+
readonly $ref: "#/$defs/PublishedArtifact";
|
|
1184
|
+
};
|
|
1185
|
+
readonly description: "Present when `selfPublish` is true.";
|
|
1186
|
+
};
|
|
1187
|
+
};
|
|
1188
|
+
};
|
|
1189
|
+
readonly PublishedArtifact: {
|
|
1190
|
+
readonly title: "PublishedArtifact";
|
|
1191
|
+
readonly type: "object";
|
|
1192
|
+
readonly additionalProperties: false;
|
|
1193
|
+
readonly required: readonly ["name", "mediaType", "content"];
|
|
1194
|
+
readonly description: "A file the identifier's method publishes, as the method profile names it (`did.jsonl` for did:webvh, `did.json` and `keri.cesr` for did:webs).";
|
|
1195
|
+
readonly properties: {
|
|
1196
|
+
readonly name: {
|
|
1197
|
+
readonly type: "string";
|
|
1198
|
+
readonly minLength: 1;
|
|
1199
|
+
readonly maxLength: 128;
|
|
1200
|
+
};
|
|
1201
|
+
readonly mediaType: {
|
|
1202
|
+
readonly type: "string";
|
|
1203
|
+
readonly minLength: 1;
|
|
1204
|
+
};
|
|
1205
|
+
readonly content: {
|
|
1206
|
+
readonly type: "string";
|
|
1207
|
+
readonly description: "The artefact's content, or for an append-only artefact the appended part, as text.";
|
|
1208
|
+
};
|
|
1209
|
+
};
|
|
1210
|
+
};
|
|
1211
|
+
readonly KeyChangeApprovalState: {
|
|
1212
|
+
readonly title: "KeyChangeApprovalState";
|
|
1213
|
+
readonly type: "object";
|
|
1214
|
+
readonly additionalProperties: false;
|
|
1215
|
+
readonly required: readonly ["required", "received", "expiresAt"];
|
|
1216
|
+
readonly description: "Approval progress of a change the VTA's policy gates on approvals (CONVENTIONS.md §6).";
|
|
1217
|
+
readonly properties: {
|
|
1218
|
+
readonly required: {
|
|
1219
|
+
readonly type: "integer";
|
|
1220
|
+
readonly minimum: 1;
|
|
1221
|
+
readonly description: "Distinct approvals the VTA's policy requires.";
|
|
1222
|
+
};
|
|
1223
|
+
readonly received: {
|
|
1224
|
+
readonly type: "integer";
|
|
1225
|
+
readonly minimum: 0;
|
|
1226
|
+
readonly description: "Distinct approvals recorded so far, the initiator's own included.";
|
|
1227
|
+
};
|
|
1228
|
+
readonly approvals: {
|
|
1229
|
+
readonly type: "array";
|
|
1230
|
+
readonly items: {
|
|
1231
|
+
readonly $ref: "#/$defs/RecordedApproval";
|
|
1232
|
+
};
|
|
1233
|
+
readonly description: "The approvals recorded. Custody projection only; omitted from a response to anyone who is not themselves an eligible approver of this change.";
|
|
1234
|
+
};
|
|
1235
|
+
readonly expiresAt: {
|
|
1236
|
+
readonly type: "string";
|
|
1237
|
+
readonly format: "date-time";
|
|
1238
|
+
readonly description: "When the preview, and every approval bound to it, stops being usable.";
|
|
1239
|
+
};
|
|
1240
|
+
};
|
|
1241
|
+
};
|
|
1242
|
+
readonly RecordedApproval: {
|
|
1243
|
+
readonly title: "RecordedApproval";
|
|
1244
|
+
readonly type: "object";
|
|
1245
|
+
readonly additionalProperties: false;
|
|
1246
|
+
readonly required: readonly ["approver", "evidence"];
|
|
1247
|
+
readonly properties: {
|
|
1248
|
+
readonly approver: {
|
|
1249
|
+
readonly type: "string";
|
|
1250
|
+
readonly minLength: 1;
|
|
1251
|
+
readonly description: "VID of the approver.";
|
|
1252
|
+
};
|
|
1253
|
+
readonly evidence: {
|
|
1254
|
+
readonly $ref: "#/$defs/ApprovalEvidenceKind";
|
|
1255
|
+
};
|
|
1256
|
+
readonly recordedAt: {
|
|
1257
|
+
readonly type: "string";
|
|
1258
|
+
readonly format: "date-time";
|
|
1259
|
+
};
|
|
1260
|
+
};
|
|
1261
|
+
};
|
|
1262
|
+
readonly ApprovalEvidenceKind: {
|
|
1263
|
+
readonly title: "ApprovalEvidenceKind";
|
|
1264
|
+
readonly type: "string";
|
|
1265
|
+
readonly enum: readonly ["didSigned", "webauthn", "approverSigned"];
|
|
1266
|
+
readonly description: "The evidence an approval was recorded on, as `auth/step-up/approve-response` names it. Only the approver's own evidence is ever recorded: a proof by a key the VTA records as acting for an approver — a console signing key or any other delegation — is never an approval (CONVENTIONS.md §6.3).";
|
|
1267
|
+
};
|
|
1268
|
+
readonly IdentityChangePreview: {
|
|
1269
|
+
readonly title: "IdentityChangePreview";
|
|
1270
|
+
readonly type: "object";
|
|
1271
|
+
readonly additionalProperties: false;
|
|
1272
|
+
readonly required: readonly ["previewId", "method", "expiresAt", "changes", "document", "updateKeyRotates"];
|
|
1273
|
+
readonly description: "What a change would publish, computed by the VTA by running the handler it would run to apply it (CONVENTIONS.md §6.1). This is what a consent surface renders and what an approval is bound to.";
|
|
1274
|
+
readonly properties: {
|
|
1275
|
+
readonly previewId: {
|
|
1276
|
+
readonly type: "string";
|
|
1277
|
+
readonly minLength: 16;
|
|
1278
|
+
readonly description: "Opaque, unguessable identifier of this exact plan. Carried back by the apply request; every approval and any recovery proof is bound to it.";
|
|
1279
|
+
};
|
|
1280
|
+
readonly method: {
|
|
1281
|
+
readonly $ref: "#/$defs/DidMethodName";
|
|
1282
|
+
};
|
|
1283
|
+
readonly baseVersionId: {
|
|
1284
|
+
readonly type: "string";
|
|
1285
|
+
readonly description: "The version identifier the plan was computed against. Absent only for a creation. The plan is void once the identifier moves past it.";
|
|
1286
|
+
};
|
|
1287
|
+
readonly expiresAt: {
|
|
1288
|
+
readonly type: "string";
|
|
1289
|
+
readonly format: "date-time";
|
|
1290
|
+
};
|
|
1291
|
+
readonly changes: {
|
|
1292
|
+
readonly type: "array";
|
|
1293
|
+
readonly items: {
|
|
1294
|
+
readonly $ref: "#/$defs/IdentityChange";
|
|
1295
|
+
};
|
|
1296
|
+
readonly description: "Every change the plan would make, including the ones the caller did not ask for — in particular any movement of the update authority the method requires.";
|
|
1297
|
+
};
|
|
1298
|
+
readonly document: {
|
|
1299
|
+
readonly type: "object";
|
|
1300
|
+
readonly description: "The complete identifier document the change would publish, `keyRoles` included. Public data by construction.";
|
|
1301
|
+
};
|
|
1302
|
+
readonly warnings: {
|
|
1303
|
+
readonly type: "array";
|
|
1304
|
+
readonly items: {
|
|
1305
|
+
readonly $ref: "#/$defs/PreviewWarning";
|
|
1306
|
+
};
|
|
1307
|
+
readonly uniqueItems: true;
|
|
1308
|
+
};
|
|
1309
|
+
readonly updateKeyRotates: {
|
|
1310
|
+
readonly type: "boolean";
|
|
1311
|
+
readonly description: "True when applying the plan also moves the identifier's update authority to a committed successor — every change under did:webvh pre-rotation, never a KERI interaction event. Stated as its own member because it is the consequence a reviewer most often misses.";
|
|
1312
|
+
};
|
|
1313
|
+
readonly recoverySigning: {
|
|
1314
|
+
readonly $ref: "#/$defs/RecoverySigningRequest";
|
|
1315
|
+
};
|
|
1316
|
+
};
|
|
1317
|
+
};
|
|
1318
|
+
readonly RecoverySigningRequest: {
|
|
1319
|
+
readonly title: "RecoverySigningRequest";
|
|
1320
|
+
readonly type: "object";
|
|
1321
|
+
readonly additionalProperties: false;
|
|
1322
|
+
readonly required: readonly ["commitment", "keyType", "unsignedChange", "proofOptions"];
|
|
1323
|
+
readonly description: "What a recovery custodian must sign for a change that only the recovery key may authorize (CONVENTIONS.md §5.4, §9.4). The custodian MUST check `unsignedChange` itself — render it to its human, confirm that it reveals the recovery key it holds and commits to a fresh recovery key it also holds — and MUST NOT sign on the strength of this request's description alone.";
|
|
1324
|
+
readonly properties: {
|
|
1325
|
+
readonly commitment: {
|
|
1326
|
+
readonly type: "string";
|
|
1327
|
+
readonly minLength: 1;
|
|
1328
|
+
readonly description: "The recovery commitment the identifier publishes; the custodian's key MUST be the one it commits to.";
|
|
1329
|
+
};
|
|
1330
|
+
readonly keyType: {
|
|
1331
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1332
|
+
};
|
|
1333
|
+
readonly unsignedChange: {
|
|
1334
|
+
readonly type: "string";
|
|
1335
|
+
readonly minLength: 1;
|
|
1336
|
+
readonly description: "The change exactly as it will be published, without the recovery proof, as JSON text in the method's own form (a did:webvh log entry, a KERI rotation event).";
|
|
1337
|
+
};
|
|
1338
|
+
readonly proofOptions: {
|
|
1339
|
+
readonly type: "object";
|
|
1340
|
+
readonly description: "The proof the method requires over `unsignedChange`, without its signature value, as the method profile defines it (for did:webvh, a Data Integrity proof configuration with `proofPurpose: assertionMethod` and the recovery key's `did:key` as `verificationMethod`).";
|
|
1341
|
+
};
|
|
1342
|
+
readonly expiresAt: {
|
|
1343
|
+
readonly type: "string";
|
|
1344
|
+
readonly format: "date-time";
|
|
1345
|
+
};
|
|
1346
|
+
};
|
|
1347
|
+
};
|
|
1348
|
+
readonly KeyType: {
|
|
1349
|
+
readonly title: "KeyType";
|
|
1350
|
+
readonly type: "string";
|
|
1351
|
+
readonly enum: readonly ["ed25519", "x25519", "p256", "mldsa44", "mldsa65"];
|
|
1352
|
+
readonly description: "Cryptographic algorithm the key material belongs to. `ed25519` signs (EdDSA), `x25519` performs key agreement and never signs, `p256` signs (ES256), and `mldsa44` and `mldsa65` sign with the post-quantum ML-DSA scheme of US NIST FIPS 204. The set is expected to grow as algorithms are standardised, and growing it is a MINOR change under SPEC.md §5.2: `keyType` selects no schema branch, so adding a value relaxes a constraint rather than narrowing one, and the generated libraries mark this enumeration non-exhaustive so that a consumer absorbs a new value rather than failing to compile. Two ML-DSA parameter sets are carried because two specifications require different ones — W3C Quantum-Resistant Cryptosuites defines Data Integrity suites only for ML-DSA-44, while Trust Spanning Protocol Rev 3 §8.1 mandates ML-DSA-65 — so the parameter set is chosen by whatever consumes the key and the two are not redundant. A consumer that does not implement a value it receives MUST refuse the document rather than substitute one it does support.";
|
|
1353
|
+
};
|
|
1354
|
+
readonly PreviewWarning: {
|
|
1355
|
+
readonly title: "PreviewWarning";
|
|
1356
|
+
readonly type: "string";
|
|
1357
|
+
readonly enum: readonly ["singleKeyRole", "algorithmNotInAcceptedSet", "roleWillHaveNoClassicalKey", "attestationReissuanceRequired", "selfPublish", "noWitnesses", "protectionBelowPolicy", "recoveryKeyRevealed"];
|
|
1358
|
+
readonly description: "Conditions a human should be shown before approving. `singleKeyRole` — the role will hold one active key. `algorithmNotInAcceptedSet` — a verifier population the VTA knows of does not accept the new key's algorithm. `roleWillHaveNoClassicalKey` — every remaining key is post-quantum. `attestationReissuanceRequired` — revoking this attestation key obliges re-issuance and re-signed status lists (VTI-KEY-133). `selfPublish` — the VTA will not publish the change; the operator must. `noWitnesses` — the identifier has no witnesses, so a party holding the VTA's routine update key can drop the recovery commitment unobserved (CONVENTIONS.md §5.3). `protectionBelowPolicy` — a key will be held at a `ProtectionClass` below what the VTA's policy recommends for its role (a plain VTA holding an attestation key). `recoveryKeyRevealed` — this change uses the recovery key, which must be replaced by a fresh recovery commitment in the same change.";
|
|
1359
|
+
};
|
|
1360
|
+
readonly IdentityChange: {
|
|
1361
|
+
readonly title: "IdentityChange";
|
|
1362
|
+
readonly type: "object";
|
|
1363
|
+
readonly additionalProperties: false;
|
|
1364
|
+
readonly required: readonly ["op", "role"];
|
|
1365
|
+
readonly properties: {
|
|
1366
|
+
readonly op: {
|
|
1367
|
+
readonly type: "string";
|
|
1368
|
+
readonly enum: readonly ["addKey", "retireKey", "revokeKey", "rotateUpdateKey", "commitUpdateKey", "replaceRecoveryCommitment", "useRecoveryKey"];
|
|
1369
|
+
readonly description: "`addKey` — a verification method joins its role's relationship and `keyRoles`. `retireKey` — a verification method leaves its relationship, `keyRoles` and the document. `revokeKey` — a verification method leaves its relationship and `keyRoles`, and stays in `verificationMethod` with `revoked` set to the compromise time (CONVENTIONS.md §9.1). `rotateUpdateKey` — the identifier's update authority moves to a committed routine successor. `commitUpdateKey` — a new routine successor is committed. `replaceRecoveryCommitment` — the recovery commitment changes. `useRecoveryKey` — the change is authorized by the recovery key, which the identifier then reveals.";
|
|
1370
|
+
};
|
|
1371
|
+
readonly role: {
|
|
1372
|
+
readonly $ref: "#/$defs/IdentityKeyRole";
|
|
1373
|
+
};
|
|
1374
|
+
readonly verificationMethod: {
|
|
1375
|
+
readonly type: "string";
|
|
1376
|
+
};
|
|
1377
|
+
readonly keyType: {
|
|
1378
|
+
readonly $ref: "#/$defs/KeyType";
|
|
1379
|
+
};
|
|
1380
|
+
readonly publicKeyMultibase: {
|
|
1381
|
+
readonly type: "string";
|
|
1382
|
+
};
|
|
1383
|
+
readonly commitment: {
|
|
1384
|
+
readonly type: "string";
|
|
1385
|
+
};
|
|
1386
|
+
readonly relationships: {
|
|
1387
|
+
readonly type: "array";
|
|
1388
|
+
readonly items: {
|
|
1389
|
+
readonly $ref: "#/$defs/DidVerificationRelationship";
|
|
1390
|
+
};
|
|
1391
|
+
readonly uniqueItems: true;
|
|
1392
|
+
};
|
|
1393
|
+
};
|
|
1394
|
+
};
|
|
1395
|
+
readonly DidVerificationRelationship: {
|
|
1396
|
+
readonly title: "DidVerificationRelationship";
|
|
1397
|
+
readonly type: "string";
|
|
1398
|
+
readonly enum: readonly ["authentication", "assertionMethod", "keyAgreement", "capabilityInvocation", "capabilityDelegation"];
|
|
1399
|
+
readonly description: "A DID Core verification relationship.";
|
|
1400
|
+
};
|
|
1401
|
+
readonly IdentityKeyRole: {
|
|
1402
|
+
readonly title: "IdentityKeyRole";
|
|
1403
|
+
readonly type: "string";
|
|
1404
|
+
readonly enum: readonly ["attestation", "operational", "messaging", "update", "authenticator"];
|
|
1405
|
+
readonly description: "The named key role a key occupies in an identity (CONVENTIONS.md §2; VTI-KEY-070 onward). `attestation` — the only keys in `assertionMethod`; sign the identity's attestation artefacts (credentials, endorsements, status lists) through the VTA's signing service and nowhere else. Generated inside the VTA, never derived, never exportable, never in a backup. `operational` — the only keys the identity's own process uses in `authentication`; sign the node's own traffic (Trust Task requests and responses, DIDComm and TSP signatures, invitations, notices, audit checkpoints). Derived. `messaging` — the only keys in `keyAgreement`; sign nothing. X25519, derived or generated in its own right and never converted from a signing key. `update` — the identifier's change authority as its DID method states it (a did:webvh log's `updateKeys` and `nextKeyHashes`, a KERI key event log's current and next keys); never a role-bound verification method, never in `keyRoles`. Generated inside the VTA, never derived, never exportable, never in a backup, and always accompanied by a committed recovery key held outside the VTA's protection boundary. `authenticator` — a key held on a person's own authenticator (a WebAuthn passkey), listed in `authentication` of that person's identity only; used only to verify the person's WebAuthn assertions (sign-in and step-up evidence) and never to accept a Data Integrity proof. The VTA never holds its private half, so it is enrolled by the passkey ceremony and never generated, added or rotated by these tasks. Never permitted on the durable identity of a VTA, a VTC or a VTN. No role permits `capabilityInvocation` or `capabilityDelegation` (VTI-KEY-075). The set is an extensible registry: a consumer that meets a role it does not implement MUST rely on the key for nothing, and MUST NOT map it onto a role it does know (VTI-KEY-074).";
|
|
1406
|
+
};
|
|
1407
|
+
readonly DidMethodName: {
|
|
1408
|
+
readonly title: "DidMethodName";
|
|
1409
|
+
readonly type: "string";
|
|
1410
|
+
readonly pattern: "^[a-z0-9]+(:[a-z0-9]+)*$";
|
|
1411
|
+
readonly description: "The DID method an identity uses, as the method profile that governs it is named: `webvh` for a did:webvh identity, `scid:vh` for the did:scid:vh:1 form of one, `webs` for did:webs. Deliberately a pattern and not an enumeration: a method is added by publishing its profile under method-profiles/, never by changing this schema. A VTA MUST refuse a method it holds no profile for, or whose profile declares it ineligible, with `vta/dids:methodNotEligible`.";
|
|
1412
|
+
};
|
|
1413
|
+
readonly KeyChangeOutcome: {
|
|
1414
|
+
readonly title: "KeyChangeOutcome";
|
|
1415
|
+
readonly type: "string";
|
|
1416
|
+
readonly enum: readonly ["preview", "applied", "pendingApproval", "awaitingRecoveryProof"];
|
|
1417
|
+
readonly description: "`preview` — nothing was written; the response carries the plan. `applied` — the change was made (and published, unless `publication.selfPublish`). `pendingApproval` — the plan is recorded and awaits further approvals. `awaitingRecoveryProof` — the plan is approved and waits for the recovery custodian's proof (`preview.recoverySigning`); nothing is published until it arrives.";
|
|
1418
|
+
};
|
|
1419
|
+
};
|
|
1420
|
+
};
|
|
1421
|
+
};
|
|
1422
|
+
//# sourceMappingURL=payload.d.ts.map
|