@openvtc/trust-tasks 0.21.2 → 0.21.4
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 +85 -0
- package/dist/auth/passkey/admin-list/0.1/payload.d.ts +484 -0
- package/dist/auth/passkey/admin-list/0.1/payload.d.ts.map +1 -0
- package/dist/auth/passkey/admin-list/0.1/payload.js +257 -0
- package/dist/auth/passkey/admin-list/0.1/payload.js.map +1 -0
- package/dist/git-ns/namespace/list/0.1/payload.d.ts +1343 -0
- package/dist/git-ns/namespace/list/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/namespace/list/0.1/payload.js +704 -0
- package/dist/git-ns/namespace/list/0.1/payload.js.map +1 -0
- package/dist/git-ns/repo/list/0.1/payload.d.ts +1377 -0
- package/dist/git-ns/repo/list/0.1/payload.d.ts.map +1 -0
- package/dist/git-ns/repo/list/0.1/payload.js +744 -0
- package/dist/git-ns/repo/list/0.1/payload.js.map +1 -0
- package/dist/git-ns/view/0.5/payload.d.ts +1722 -0
- package/dist/git-ns/view/0.5/payload.d.ts.map +1 -0
- package/dist/git-ns/view/0.5/payload.js +1024 -0
- package/dist/git-ns/view/0.5/payload.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/vta/services/report/0.1/payload.d.ts +618 -0
- package/dist/vta/services/report/0.1/payload.d.ts.map +1 -0
- package/dist/vta/services/report/0.1/payload.js +322 -0
- package/dist/vta/services/report/0.1/payload.js.map +1 -0
- package/dist/vta/services/update/1.1/payload.d.ts +490 -0
- package/dist/vta/services/update/1.1/payload.d.ts.map +1 -0
- package/dist/vta/services/update/1.1/payload.js +269 -0
- package/dist/vta/services/update/1.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/auth/passkey/admin-list/0.1/payload.ts +338 -0
- package/src/git-ns/namespace/list/0.1/payload.ts +883 -0
- package/src/git-ns/repo/list/0.1/payload.ts +909 -0
- package/src/git-ns/view/0.5/payload.ts +1095 -0
- package/src/index.ts +6 -0
- package/src/vta/services/report/0.1/payload.ts +419 -0
- package/src/vta/services/update/1.1/payload.ts +326 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,91 @@ The package versions over **its own API** — what a consumer compiles against
|
|
|
11
11
|
not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
|
|
12
12
|
component.
|
|
13
13
|
|
|
14
|
+
## 0.21.4 — 2026-09-27
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **git-ns**: Administrator reads — view 0.5, namespace/list and repo/list (#659)
|
|
20
|
+
|
|
21
|
+
* feat(git-ns): administrator reads — view 0.5, namespace/list and repo/list
|
|
22
|
+
|
|
23
|
+
Three signed read tasks replace the bearer-authenticated administrator
|
|
24
|
+
views VTCs served beside git-ns/view:
|
|
25
|
+
|
|
26
|
+
- git-ns/view/0.5 adds scope: administrator (everything in the
|
|
27
|
+
namespaces the caller administers, reasons included) and
|
|
28
|
+
breakGlass: true (narrow to break-glass records). The response is
|
|
29
|
+
0.4's.
|
|
30
|
+
- git-ns/namespace/list/0.1 lists administered namespaces with admins,
|
|
31
|
+
repository count, bridge, role map and forge status.
|
|
32
|
+
- git-ns/repo/list/0.1 lists repositories in administered namespaces
|
|
33
|
+
with owners, right counts, bootstrap, sync and the bridge's report.
|
|
34
|
+
|
|
35
|
+
Proof REQUIRED on all three; no side effects. Authority is the
|
|
36
|
+
community-administrator capability (every namespace) or a live explicit
|
|
37
|
+
git.ns.admin (that namespace); each declares notAdministrator, answered
|
|
38
|
+
alike for an unknown namespace and one the caller does not administer.
|
|
39
|
+
|
|
40
|
+
- **auth/passkey**: An administrator lists one member's passkeys (admin-list 0.1) (#658)
|
|
41
|
+
|
|
42
|
+
auth/passkey/list lists only the signer's own credentials and refuses a
|
|
43
|
+
subject in the payload, so no task let an administrator see which step-up
|
|
44
|
+
passkeys a member holds — and so which credentialId to hand to
|
|
45
|
+
auth/passkey/revoke/start 0.2.
|
|
46
|
+
|
|
47
|
+
auth/passkey/admin-list 0.1:
|
|
48
|
+
|
|
49
|
+
- Proof REQUIRED: the administrator is the issuer. The subject and a purpose
|
|
50
|
+
(session | stepUp, no default) are named in the payload, and are a request,
|
|
51
|
+
never a grant: the consumer authorises the administrator over that subject
|
|
52
|
+
from its own state.
|
|
53
|
+
- Refusals, in order: notAdministrator (before the subject is looked at);
|
|
54
|
+
subjectUnknown, also for a subject outside the administrator's authority,
|
|
55
|
+
so the code is no oracle; purposeNotSupported; subjectNotMember.
|
|
56
|
+
- The response is { subject, purpose, credentials }, each a ListedCredential
|
|
57
|
+
of credentialId, deviceLabel, registeredAt, lastUsedAt and signCount — no
|
|
58
|
+
key material, no public key, no attestation, additionalProperties false.
|
|
59
|
+
The counter is disclosed to the administrator, as the operator who acts on
|
|
60
|
+
a cloning signal.
|
|
61
|
+
- sideEffects none: listing touches no counter and no last-used time.
|
|
62
|
+
- Privacy: only administrators with authority over the subject; the family
|
|
63
|
+
audits writes, not reads, and a consumer that audits administrative reads
|
|
64
|
+
SHOULD include this one.
|
|
65
|
+
|
|
66
|
+
Rust, TypeScript, Go and Dart bindings regenerated.
|
|
67
|
+
|
|
68
|
+
## 0.21.3 — 2026-09-26
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
|
|
73
|
+
- **vta/services**: Report, and update 1.1 with a mediator drain window (#656)
|
|
74
|
+
|
|
75
|
+
* feat(vta/services): report, and update 1.1 with a DIDComm drain window
|
|
76
|
+
|
|
77
|
+
Two gaps that keep the VTA's service management on bespoke REST routes, found
|
|
78
|
+
moving the SDK onto the Trust Task spine.
|
|
79
|
+
|
|
80
|
+
- `vta/services/report/0.1` — per-mediator inbound counts and each sender's
|
|
81
|
+
last-seen mediator over a window, so an operator can tell who is still on the
|
|
82
|
+
old route before ending a drain. Today it exists only as a bearer-token REST
|
|
83
|
+
route (`GET /mediators/report`). Operator-only, with a REQUIRED request proof:
|
|
84
|
+
the response is a contact log of other parties' DIDs, which the recipient may
|
|
85
|
+
release only to a signer it has decided is the agent's operator.
|
|
86
|
+
- `vta/services/update/1.1` — adds an optional `drainTtlSecs` for `didcomm`.
|
|
87
|
+
Replacing the mediator drains the old one, and 1.0 gave the operator no say in
|
|
88
|
+
how long, so the agent could only apply its default. The REST route and the
|
|
89
|
+
CLI (`services didcomm update --drain-ttl`) carry an operator-chosen window;
|
|
90
|
+
without it here, moving the CLI to the Trust Task would silently drop the
|
|
91
|
+
option. A 1.0 request is a valid 1.1 request; a value below the recipient's
|
|
92
|
+
floor may be raised to it, and must be over a DIDComm-carried request.
|
|
93
|
+
|
|
94
|
+
(`services/report` was pushed to #654 after it merged, so it did not ship there.)
|
|
95
|
+
|
|
96
|
+
Rust, TypeScript, Go and Dart bindings regenerated; `npm run build` (strict
|
|
97
|
+
Security & Privacy), `check-bindings` and the Rust tests (903) pass.
|
|
98
|
+
|
|
14
99
|
## 0.21.2 — 2026-09-26
|
|
15
100
|
|
|
16
101
|
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/auth/passkey/admin-list/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { Ext } from "../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* An administrator lists one subject's passkeys of one purpose — for example a member's step-up passkeys — as non-secret metadata, so they can tell which to revoke. The owner's own listing is auth/passkey/list, which takes no subject; this task exists because a subject in that payload is refused by design.
|
|
8
|
+
*/
|
|
9
|
+
export interface AuthPasskeyAdminList {
|
|
10
|
+
/**
|
|
11
|
+
* The VID whose credentials are listed. A request, never a grant: the consumer authorises the producer over this subject from its own state.
|
|
12
|
+
*/
|
|
13
|
+
subject: string;
|
|
14
|
+
/**
|
|
15
|
+
* Which credentials to list: `session` (sign-in) or `stepUp` (the step-up-only passkeys of auth/passkey/enroll/invite 0.2). REQUIRED, with no default, so an administrator reads exactly the inventory they asked for and a consumer can refuse one it does not disclose to administrators.
|
|
16
|
+
*/
|
|
17
|
+
purpose: "session" | "stepUp";
|
|
18
|
+
/**
|
|
19
|
+
* Ecosystem-defined extension members per SPEC.md §4.5.1.
|
|
20
|
+
*/
|
|
21
|
+
ext?: Ext;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response.
|
|
25
|
+
*/
|
|
26
|
+
export interface AuthPasskeyAdminListResponsePayload {
|
|
27
|
+
/**
|
|
28
|
+
* Echo of payload.subject.
|
|
29
|
+
*/
|
|
30
|
+
subject: string;
|
|
31
|
+
/**
|
|
32
|
+
* Echo of payload.purpose.
|
|
33
|
+
*/
|
|
34
|
+
purpose: "session" | "stepUp";
|
|
35
|
+
/**
|
|
36
|
+
* Every credential of that purpose currently bound to the subject, newest registeredAt first. MAY be empty: a member holding none is not an error.
|
|
37
|
+
*/
|
|
38
|
+
credentials: ListedCredential[];
|
|
39
|
+
/**
|
|
40
|
+
* Ecosystem-defined extension members per SPEC.md §4.5.1.
|
|
41
|
+
*/
|
|
42
|
+
ext?: Ext;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The administrator's view of one credential: an identifier, a label, two instants and the signature counter. Never key material, never the credential public key, never attestation.
|
|
46
|
+
*/
|
|
47
|
+
export interface ListedCredential {
|
|
48
|
+
/**
|
|
49
|
+
* Durable identifier of the credential, as auth/passkey/revoke/start takes it. Opaque to the producer: echoed verbatim, never parsed.
|
|
50
|
+
*/
|
|
51
|
+
credentialId: string;
|
|
52
|
+
/**
|
|
53
|
+
* Label captured at enrolment. Untrusted free text; absent when none was given. Consumers MUST NOT synthesize one.
|
|
54
|
+
*/
|
|
55
|
+
deviceLabel?: string;
|
|
56
|
+
/**
|
|
57
|
+
* When the credential was bound to the subject.
|
|
58
|
+
*/
|
|
59
|
+
registeredAt: string;
|
|
60
|
+
/**
|
|
61
|
+
* When the credential last completed an assertion. Absent if it never has, or if the consumer does not track use.
|
|
62
|
+
*/
|
|
63
|
+
lastUsedAt?: string;
|
|
64
|
+
/**
|
|
65
|
+
* The WebAuthn signature counter the consumer last recorded for the credential. Absent when the consumer does not track it. Zero is a real value: many platform authenticators never increment the counter.
|
|
66
|
+
*/
|
|
67
|
+
signCount?: number;
|
|
68
|
+
}
|
|
69
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
70
|
+
export type { Ext };
|
|
71
|
+
/** Trust Task type URI. */
|
|
72
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1";
|
|
73
|
+
/** Stable alias for this specification's request payload shape. */
|
|
74
|
+
export type Payload = AuthPasskeyAdminList;
|
|
75
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
76
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response";
|
|
77
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
78
|
+
export type Response = AuthPasskeyAdminListResponsePayload;
|
|
79
|
+
/**
|
|
80
|
+
* This specification's payload schema, as a value.
|
|
81
|
+
*
|
|
82
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
83
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
84
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
85
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
86
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
87
|
+
*/
|
|
88
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
89
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
90
|
+
readonly $id: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1";
|
|
91
|
+
readonly title: "Auth — Passkey Admin List";
|
|
92
|
+
readonly description: "An administrator lists one subject's passkeys of one purpose — for example a member's step-up passkeys — as non-secret metadata, so they can tell which to revoke. The owner's own listing is auth/passkey/list, which takes no subject; this task exists because a subject in that payload is refused by design.";
|
|
93
|
+
readonly type: "object";
|
|
94
|
+
readonly additionalProperties: false;
|
|
95
|
+
readonly required: readonly ["subject", "purpose"];
|
|
96
|
+
readonly properties: {
|
|
97
|
+
readonly subject: {
|
|
98
|
+
readonly type: "string";
|
|
99
|
+
readonly minLength: 1;
|
|
100
|
+
readonly description: "The VID whose credentials are listed. A request, never a grant: the consumer authorises the producer over this subject from its own state.";
|
|
101
|
+
};
|
|
102
|
+
readonly purpose: {
|
|
103
|
+
readonly type: "string";
|
|
104
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
105
|
+
readonly description: "Which credentials to list: `session` (sign-in) or `stepUp` (the step-up-only passkeys of auth/passkey/enroll/invite 0.2). REQUIRED, with no default, so an administrator reads exactly the inventory they asked for and a consumer can refuse one it does not disclose to administrators.";
|
|
106
|
+
};
|
|
107
|
+
readonly ext: {
|
|
108
|
+
readonly $ref: "#/$defs/Ext";
|
|
109
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
readonly $defs: {
|
|
113
|
+
readonly ListedCredential: {
|
|
114
|
+
readonly $anchor: "listedCredential";
|
|
115
|
+
readonly title: "ListedCredential";
|
|
116
|
+
readonly description: "The administrator's view of one credential: an identifier, a label, two instants and the signature counter. Never key material, never the credential public key, never attestation.";
|
|
117
|
+
readonly type: "object";
|
|
118
|
+
readonly additionalProperties: false;
|
|
119
|
+
readonly required: readonly ["credentialId", "registeredAt"];
|
|
120
|
+
readonly properties: {
|
|
121
|
+
readonly credentialId: {
|
|
122
|
+
readonly type: "string";
|
|
123
|
+
readonly minLength: 1;
|
|
124
|
+
readonly description: "Durable identifier of the credential, as auth/passkey/revoke/start takes it. Opaque to the producer: echoed verbatim, never parsed.";
|
|
125
|
+
};
|
|
126
|
+
readonly deviceLabel: {
|
|
127
|
+
readonly type: "string";
|
|
128
|
+
readonly maxLength: 256;
|
|
129
|
+
readonly description: "Label captured at enrolment. Untrusted free text; absent when none was given. Consumers MUST NOT synthesize one.";
|
|
130
|
+
};
|
|
131
|
+
readonly registeredAt: {
|
|
132
|
+
readonly type: "string";
|
|
133
|
+
readonly format: "date-time";
|
|
134
|
+
readonly description: "When the credential was bound to the subject.";
|
|
135
|
+
};
|
|
136
|
+
readonly lastUsedAt: {
|
|
137
|
+
readonly type: "string";
|
|
138
|
+
readonly format: "date-time";
|
|
139
|
+
readonly description: "When the credential last completed an assertion. Absent if it never has, or if the consumer does not track use.";
|
|
140
|
+
};
|
|
141
|
+
readonly signCount: {
|
|
142
|
+
readonly type: "integer";
|
|
143
|
+
readonly minimum: 0;
|
|
144
|
+
readonly description: "The WebAuthn signature counter the consumer last recorded for the credential. Absent when the consumer does not track it. Zero is a real value: many platform authenticators never increment the counter.";
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
readonly Response: {
|
|
149
|
+
readonly $anchor: "response";
|
|
150
|
+
readonly title: "Auth Passkey Admin List — response payload";
|
|
151
|
+
readonly description: "Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response.";
|
|
152
|
+
readonly type: "object";
|
|
153
|
+
readonly additionalProperties: false;
|
|
154
|
+
readonly required: readonly ["subject", "purpose", "credentials"];
|
|
155
|
+
readonly properties: {
|
|
156
|
+
readonly subject: {
|
|
157
|
+
readonly type: "string";
|
|
158
|
+
readonly minLength: 1;
|
|
159
|
+
readonly description: "Echo of payload.subject.";
|
|
160
|
+
};
|
|
161
|
+
readonly purpose: {
|
|
162
|
+
readonly type: "string";
|
|
163
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
164
|
+
readonly description: "Echo of payload.purpose.";
|
|
165
|
+
};
|
|
166
|
+
readonly credentials: {
|
|
167
|
+
readonly type: "array";
|
|
168
|
+
readonly items: {
|
|
169
|
+
readonly $ref: "#/$defs/ListedCredential";
|
|
170
|
+
};
|
|
171
|
+
readonly description: "Every credential of that purpose currently bound to the subject, newest registeredAt first. MAY be empty: a member holding none is not an error.";
|
|
172
|
+
};
|
|
173
|
+
readonly ext: {
|
|
174
|
+
readonly $ref: "#/$defs/Ext";
|
|
175
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
readonly Ext: {
|
|
180
|
+
readonly title: "Ext";
|
|
181
|
+
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.";
|
|
182
|
+
readonly type: "object";
|
|
183
|
+
readonly minProperties: 1;
|
|
184
|
+
readonly additionalProperties: true;
|
|
185
|
+
readonly propertyNames: {
|
|
186
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
192
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
193
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
194
|
+
readonly $ref: "#/$defs/Response";
|
|
195
|
+
readonly $defs: {
|
|
196
|
+
readonly ListedCredential: {
|
|
197
|
+
readonly $anchor: "listedCredential";
|
|
198
|
+
readonly title: "ListedCredential";
|
|
199
|
+
readonly description: "The administrator's view of one credential: an identifier, a label, two instants and the signature counter. Never key material, never the credential public key, never attestation.";
|
|
200
|
+
readonly type: "object";
|
|
201
|
+
readonly additionalProperties: false;
|
|
202
|
+
readonly required: readonly ["credentialId", "registeredAt"];
|
|
203
|
+
readonly properties: {
|
|
204
|
+
readonly credentialId: {
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
readonly minLength: 1;
|
|
207
|
+
readonly description: "Durable identifier of the credential, as auth/passkey/revoke/start takes it. Opaque to the producer: echoed verbatim, never parsed.";
|
|
208
|
+
};
|
|
209
|
+
readonly deviceLabel: {
|
|
210
|
+
readonly type: "string";
|
|
211
|
+
readonly maxLength: 256;
|
|
212
|
+
readonly description: "Label captured at enrolment. Untrusted free text; absent when none was given. Consumers MUST NOT synthesize one.";
|
|
213
|
+
};
|
|
214
|
+
readonly registeredAt: {
|
|
215
|
+
readonly type: "string";
|
|
216
|
+
readonly format: "date-time";
|
|
217
|
+
readonly description: "When the credential was bound to the subject.";
|
|
218
|
+
};
|
|
219
|
+
readonly lastUsedAt: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
readonly format: "date-time";
|
|
222
|
+
readonly description: "When the credential last completed an assertion. Absent if it never has, or if the consumer does not track use.";
|
|
223
|
+
};
|
|
224
|
+
readonly signCount: {
|
|
225
|
+
readonly type: "integer";
|
|
226
|
+
readonly minimum: 0;
|
|
227
|
+
readonly description: "The WebAuthn signature counter the consumer last recorded for the credential. Absent when the consumer does not track it. Zero is a real value: many platform authenticators never increment the counter.";
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
};
|
|
231
|
+
readonly Response: {
|
|
232
|
+
readonly $anchor: "response";
|
|
233
|
+
readonly title: "Auth Passkey Admin List — response payload";
|
|
234
|
+
readonly description: "Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response.";
|
|
235
|
+
readonly type: "object";
|
|
236
|
+
readonly additionalProperties: false;
|
|
237
|
+
readonly required: readonly ["subject", "purpose", "credentials"];
|
|
238
|
+
readonly properties: {
|
|
239
|
+
readonly subject: {
|
|
240
|
+
readonly type: "string";
|
|
241
|
+
readonly minLength: 1;
|
|
242
|
+
readonly description: "Echo of payload.subject.";
|
|
243
|
+
};
|
|
244
|
+
readonly purpose: {
|
|
245
|
+
readonly type: "string";
|
|
246
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
247
|
+
readonly description: "Echo of payload.purpose.";
|
|
248
|
+
};
|
|
249
|
+
readonly credentials: {
|
|
250
|
+
readonly type: "array";
|
|
251
|
+
readonly items: {
|
|
252
|
+
readonly $ref: "#/$defs/ListedCredential";
|
|
253
|
+
};
|
|
254
|
+
readonly description: "Every credential of that purpose currently bound to the subject, newest registeredAt first. MAY be empty: a member holding none is not an error.";
|
|
255
|
+
};
|
|
256
|
+
readonly ext: {
|
|
257
|
+
readonly $ref: "#/$defs/Ext";
|
|
258
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
readonly Ext: {
|
|
263
|
+
readonly title: "Ext";
|
|
264
|
+
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.";
|
|
265
|
+
readonly type: "object";
|
|
266
|
+
readonly minProperties: 1;
|
|
267
|
+
readonly additionalProperties: true;
|
|
268
|
+
readonly propertyNames: {
|
|
269
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
/**
|
|
275
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
276
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
277
|
+
* per-specification and cannot be derived from the document alone, and
|
|
278
|
+
* item 2 needs the schema this carries.
|
|
279
|
+
*/
|
|
280
|
+
export declare const SPEC: {
|
|
281
|
+
readonly typeUri: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1";
|
|
282
|
+
readonly isBearer: false;
|
|
283
|
+
readonly isProofRequired: true;
|
|
284
|
+
readonly isRecipientRequired: true;
|
|
285
|
+
readonly isIssuedAtRequired: false;
|
|
286
|
+
readonly payloadSchema: {
|
|
287
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
288
|
+
readonly $id: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1";
|
|
289
|
+
readonly title: "Auth — Passkey Admin List";
|
|
290
|
+
readonly description: "An administrator lists one subject's passkeys of one purpose — for example a member's step-up passkeys — as non-secret metadata, so they can tell which to revoke. The owner's own listing is auth/passkey/list, which takes no subject; this task exists because a subject in that payload is refused by design.";
|
|
291
|
+
readonly type: "object";
|
|
292
|
+
readonly additionalProperties: false;
|
|
293
|
+
readonly required: readonly ["subject", "purpose"];
|
|
294
|
+
readonly properties: {
|
|
295
|
+
readonly subject: {
|
|
296
|
+
readonly type: "string";
|
|
297
|
+
readonly minLength: 1;
|
|
298
|
+
readonly description: "The VID whose credentials are listed. A request, never a grant: the consumer authorises the producer over this subject from its own state.";
|
|
299
|
+
};
|
|
300
|
+
readonly purpose: {
|
|
301
|
+
readonly type: "string";
|
|
302
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
303
|
+
readonly description: "Which credentials to list: `session` (sign-in) or `stepUp` (the step-up-only passkeys of auth/passkey/enroll/invite 0.2). REQUIRED, with no default, so an administrator reads exactly the inventory they asked for and a consumer can refuse one it does not disclose to administrators.";
|
|
304
|
+
};
|
|
305
|
+
readonly ext: {
|
|
306
|
+
readonly $ref: "#/$defs/Ext";
|
|
307
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
readonly $defs: {
|
|
311
|
+
readonly ListedCredential: {
|
|
312
|
+
readonly $anchor: "listedCredential";
|
|
313
|
+
readonly title: "ListedCredential";
|
|
314
|
+
readonly description: "The administrator's view of one credential: an identifier, a label, two instants and the signature counter. Never key material, never the credential public key, never attestation.";
|
|
315
|
+
readonly type: "object";
|
|
316
|
+
readonly additionalProperties: false;
|
|
317
|
+
readonly required: readonly ["credentialId", "registeredAt"];
|
|
318
|
+
readonly properties: {
|
|
319
|
+
readonly credentialId: {
|
|
320
|
+
readonly type: "string";
|
|
321
|
+
readonly minLength: 1;
|
|
322
|
+
readonly description: "Durable identifier of the credential, as auth/passkey/revoke/start takes it. Opaque to the producer: echoed verbatim, never parsed.";
|
|
323
|
+
};
|
|
324
|
+
readonly deviceLabel: {
|
|
325
|
+
readonly type: "string";
|
|
326
|
+
readonly maxLength: 256;
|
|
327
|
+
readonly description: "Label captured at enrolment. Untrusted free text; absent when none was given. Consumers MUST NOT synthesize one.";
|
|
328
|
+
};
|
|
329
|
+
readonly registeredAt: {
|
|
330
|
+
readonly type: "string";
|
|
331
|
+
readonly format: "date-time";
|
|
332
|
+
readonly description: "When the credential was bound to the subject.";
|
|
333
|
+
};
|
|
334
|
+
readonly lastUsedAt: {
|
|
335
|
+
readonly type: "string";
|
|
336
|
+
readonly format: "date-time";
|
|
337
|
+
readonly description: "When the credential last completed an assertion. Absent if it never has, or if the consumer does not track use.";
|
|
338
|
+
};
|
|
339
|
+
readonly signCount: {
|
|
340
|
+
readonly type: "integer";
|
|
341
|
+
readonly minimum: 0;
|
|
342
|
+
readonly description: "The WebAuthn signature counter the consumer last recorded for the credential. Absent when the consumer does not track it. Zero is a real value: many platform authenticators never increment the counter.";
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
readonly Response: {
|
|
347
|
+
readonly $anchor: "response";
|
|
348
|
+
readonly title: "Auth Passkey Admin List — response payload";
|
|
349
|
+
readonly description: "Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response.";
|
|
350
|
+
readonly type: "object";
|
|
351
|
+
readonly additionalProperties: false;
|
|
352
|
+
readonly required: readonly ["subject", "purpose", "credentials"];
|
|
353
|
+
readonly properties: {
|
|
354
|
+
readonly subject: {
|
|
355
|
+
readonly type: "string";
|
|
356
|
+
readonly minLength: 1;
|
|
357
|
+
readonly description: "Echo of payload.subject.";
|
|
358
|
+
};
|
|
359
|
+
readonly purpose: {
|
|
360
|
+
readonly type: "string";
|
|
361
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
362
|
+
readonly description: "Echo of payload.purpose.";
|
|
363
|
+
};
|
|
364
|
+
readonly credentials: {
|
|
365
|
+
readonly type: "array";
|
|
366
|
+
readonly items: {
|
|
367
|
+
readonly $ref: "#/$defs/ListedCredential";
|
|
368
|
+
};
|
|
369
|
+
readonly description: "Every credential of that purpose currently bound to the subject, newest registeredAt first. MAY be empty: a member holding none is not an error.";
|
|
370
|
+
};
|
|
371
|
+
readonly ext: {
|
|
372
|
+
readonly $ref: "#/$defs/Ext";
|
|
373
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
};
|
|
377
|
+
readonly Ext: {
|
|
378
|
+
readonly title: "Ext";
|
|
379
|
+
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.";
|
|
380
|
+
readonly type: "object";
|
|
381
|
+
readonly minProperties: 1;
|
|
382
|
+
readonly additionalProperties: true;
|
|
383
|
+
readonly propertyNames: {
|
|
384
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
385
|
+
};
|
|
386
|
+
};
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
};
|
|
390
|
+
/**
|
|
391
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
392
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
393
|
+
* parties (§7.3 item 5).
|
|
394
|
+
*/
|
|
395
|
+
export declare const RESPONSE_SPEC: {
|
|
396
|
+
readonly typeUri: "https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response";
|
|
397
|
+
readonly isBearer: false;
|
|
398
|
+
readonly isProofRequired: true;
|
|
399
|
+
readonly isRecipientRequired: true;
|
|
400
|
+
readonly isIssuedAtRequired: false;
|
|
401
|
+
readonly payloadSchema: {
|
|
402
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
403
|
+
readonly $ref: "#/$defs/Response";
|
|
404
|
+
readonly $defs: {
|
|
405
|
+
readonly ListedCredential: {
|
|
406
|
+
readonly $anchor: "listedCredential";
|
|
407
|
+
readonly title: "ListedCredential";
|
|
408
|
+
readonly description: "The administrator's view of one credential: an identifier, a label, two instants and the signature counter. Never key material, never the credential public key, never attestation.";
|
|
409
|
+
readonly type: "object";
|
|
410
|
+
readonly additionalProperties: false;
|
|
411
|
+
readonly required: readonly ["credentialId", "registeredAt"];
|
|
412
|
+
readonly properties: {
|
|
413
|
+
readonly credentialId: {
|
|
414
|
+
readonly type: "string";
|
|
415
|
+
readonly minLength: 1;
|
|
416
|
+
readonly description: "Durable identifier of the credential, as auth/passkey/revoke/start takes it. Opaque to the producer: echoed verbatim, never parsed.";
|
|
417
|
+
};
|
|
418
|
+
readonly deviceLabel: {
|
|
419
|
+
readonly type: "string";
|
|
420
|
+
readonly maxLength: 256;
|
|
421
|
+
readonly description: "Label captured at enrolment. Untrusted free text; absent when none was given. Consumers MUST NOT synthesize one.";
|
|
422
|
+
};
|
|
423
|
+
readonly registeredAt: {
|
|
424
|
+
readonly type: "string";
|
|
425
|
+
readonly format: "date-time";
|
|
426
|
+
readonly description: "When the credential was bound to the subject.";
|
|
427
|
+
};
|
|
428
|
+
readonly lastUsedAt: {
|
|
429
|
+
readonly type: "string";
|
|
430
|
+
readonly format: "date-time";
|
|
431
|
+
readonly description: "When the credential last completed an assertion. Absent if it never has, or if the consumer does not track use.";
|
|
432
|
+
};
|
|
433
|
+
readonly signCount: {
|
|
434
|
+
readonly type: "integer";
|
|
435
|
+
readonly minimum: 0;
|
|
436
|
+
readonly description: "The WebAuthn signature counter the consumer last recorded for the credential. Absent when the consumer does not track it. Zero is a real value: many platform authenticators never increment the counter.";
|
|
437
|
+
};
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
readonly Response: {
|
|
441
|
+
readonly $anchor: "response";
|
|
442
|
+
readonly title: "Auth Passkey Admin List — response payload";
|
|
443
|
+
readonly description: "Carried in a Trust Task document whose type is https://trusttasks.org/spec/auth/passkey/admin-list/0.1#response.";
|
|
444
|
+
readonly type: "object";
|
|
445
|
+
readonly additionalProperties: false;
|
|
446
|
+
readonly required: readonly ["subject", "purpose", "credentials"];
|
|
447
|
+
readonly properties: {
|
|
448
|
+
readonly subject: {
|
|
449
|
+
readonly type: "string";
|
|
450
|
+
readonly minLength: 1;
|
|
451
|
+
readonly description: "Echo of payload.subject.";
|
|
452
|
+
};
|
|
453
|
+
readonly purpose: {
|
|
454
|
+
readonly type: "string";
|
|
455
|
+
readonly enum: readonly ["session", "stepUp"];
|
|
456
|
+
readonly description: "Echo of payload.purpose.";
|
|
457
|
+
};
|
|
458
|
+
readonly credentials: {
|
|
459
|
+
readonly type: "array";
|
|
460
|
+
readonly items: {
|
|
461
|
+
readonly $ref: "#/$defs/ListedCredential";
|
|
462
|
+
};
|
|
463
|
+
readonly description: "Every credential of that purpose currently bound to the subject, newest registeredAt first. MAY be empty: a member holding none is not an error.";
|
|
464
|
+
};
|
|
465
|
+
readonly ext: {
|
|
466
|
+
readonly $ref: "#/$defs/Ext";
|
|
467
|
+
readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
|
|
468
|
+
};
|
|
469
|
+
};
|
|
470
|
+
};
|
|
471
|
+
readonly Ext: {
|
|
472
|
+
readonly title: "Ext";
|
|
473
|
+
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.";
|
|
474
|
+
readonly type: "object";
|
|
475
|
+
readonly minProperties: 1;
|
|
476
|
+
readonly additionalProperties: true;
|
|
477
|
+
readonly propertyNames: {
|
|
478
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
};
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
//# sourceMappingURL=payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/auth/passkey/admin-list/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mCAAmC,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B;;OAEG;IACH,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kHAAkH;AAClH,YAAY,EAAE,GAAG,EAAE,CAAC;AAEpB,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,yDAAkE,CAAC;AAE3F,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,oBAAoB,CAAC;AAE3C,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,kEAA2E,CAAC;AAE7G,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2F1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}
|