@openvtc/trust-tasks 0.19.17 → 0.19.19
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 +4 -0
- package/dist/_runtime/consume.d.ts +1 -1
- package/dist/_runtime/consume.js +2 -2
- package/dist/_shared/components.d.ts +46 -0
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/persona/_shared/0.1/persona-record.d.ts +1 -1
- package/dist/persona/_shared/0.1/persona-record.d.ts.map +1 -1
- package/dist/persona/attribute/list/1.0/payload.d.ts +124 -4
- package/dist/persona/attribute/list/1.0/payload.d.ts.map +1 -1
- package/dist/persona/attribute/list/1.0/payload.js +72 -2
- package/dist/persona/attribute/list/1.0/payload.js.map +1 -1
- package/dist/persona/attribute/promote/1.0/payload.d.ts +506 -0
- package/dist/persona/attribute/promote/1.0/payload.d.ts.map +1 -0
- package/dist/persona/attribute/promote/1.0/payload.js +263 -0
- package/dist/persona/attribute/promote/1.0/payload.js.map +1 -0
- package/dist/persona/attribute/put/1.0/payload.d.ts +110 -4
- package/dist/persona/attribute/put/1.0/payload.d.ts.map +1 -1
- package/dist/persona/attribute/put/1.0/payload.js +62 -2
- package/dist/persona/attribute/put/1.0/payload.js.map +1 -1
- package/dist/persona/binding/get/1.0/payload.d.ts +24 -0
- package/dist/persona/binding/get/1.0/payload.d.ts.map +1 -1
- package/dist/persona/binding/get/1.0/payload.js +10 -0
- package/dist/persona/binding/get/1.0/payload.js.map +1 -1
- package/dist/persona/binding/list/1.0/payload.d.ts +24 -0
- package/dist/persona/binding/list/1.0/payload.d.ts.map +1 -1
- package/dist/persona/binding/list/1.0/payload.js +10 -0
- package/dist/persona/binding/list/1.0/payload.js.map +1 -1
- package/dist/persona/binding/set/1.0/payload.d.ts +38 -0
- package/dist/persona/binding/set/1.0/payload.d.ts.map +1 -1
- package/dist/persona/binding/set/1.0/payload.js +15 -0
- package/dist/persona/binding/set/1.0/payload.js.map +1 -1
- package/dist/persona/contact/get/1.0/payload.d.ts +84 -4
- package/dist/persona/contact/get/1.0/payload.d.ts.map +1 -1
- package/dist/persona/contact/get/1.0/payload.js +52 -2
- package/dist/persona/contact/get/1.0/payload.js.map +1 -1
- package/dist/persona/contact/put/1.0/payload.d.ts +84 -4
- package/dist/persona/contact/put/1.0/payload.d.ts.map +1 -1
- package/dist/persona/contact/put/1.0/payload.js +52 -2
- package/dist/persona/contact/put/1.0/payload.js.map +1 -1
- package/dist/persona/disclosure/preview/1.0/payload.d.ts +5 -5
- package/dist/persona/disclosure/preview/1.0/payload.d.ts.map +1 -1
- package/dist/persona/disclosure/preview/1.0/payload.js +4 -2
- package/dist/persona/disclosure/preview/1.0/payload.js.map +1 -1
- package/dist/persona/local/binding/set/1.0/payload.d.ts +14 -0
- package/dist/persona/local/binding/set/1.0/payload.d.ts.map +1 -1
- package/dist/persona/local/binding/set/1.0/payload.js +5 -0
- package/dist/persona/local/binding/set/1.0/payload.js.map +1 -1
- package/dist/persona/profile/compose/1.0/payload.d.ts +965 -0
- package/dist/persona/profile/compose/1.0/payload.d.ts.map +1 -0
- package/dist/persona/profile/compose/1.0/payload.js +531 -0
- package/dist/persona/profile/compose/1.0/payload.js.map +1 -0
- package/dist/persona/profile/delete/1.0/payload.d.ts +71 -0
- package/dist/persona/profile/delete/1.0/payload.d.ts.map +1 -1
- package/dist/persona/profile/delete/1.0/payload.js +38 -0
- package/dist/persona/profile/delete/1.0/payload.js.map +1 -1
- package/dist/persona/profile/get/1.0/payload.d.ts +345 -6
- package/dist/persona/profile/get/1.0/payload.d.ts.map +1 -1
- package/dist/persona/profile/get/1.0/payload.js +206 -2
- package/dist/persona/profile/get/1.0/payload.js.map +1 -1
- package/dist/persona/profile/list/1.0/payload.d.ts +288 -6
- package/dist/persona/profile/list/1.0/payload.d.ts.map +1 -1
- package/dist/persona/profile/list/1.0/payload.js +173 -2
- package/dist/persona/profile/list/1.0/payload.js.map +1 -1
- package/dist/persona/profile/put/1.0/payload.d.ts +230 -6
- package/dist/persona/profile/put/1.0/payload.d.ts.map +1 -1
- package/dist/persona/profile/put/1.0/payload.js +138 -2
- package/dist/persona/profile/put/1.0/payload.js.map +1 -1
- package/dist/persona/profile/reinstate/1.0/payload.d.ts +325 -0
- package/dist/persona/profile/reinstate/1.0/payload.d.ts.map +1 -0
- package/dist/persona/profile/reinstate/1.0/payload.js +181 -0
- package/dist/persona/profile/reinstate/1.0/payload.js.map +1 -0
- package/dist/persona/profile/retire/1.0/payload.d.ts +436 -0
- package/dist/persona/profile/retire/1.0/payload.d.ts.map +1 -0
- package/dist/persona/profile/retire/1.0/payload.js +238 -0
- package/dist/persona/profile/retire/1.0/payload.js.map +1 -0
- package/dist/persona/profile/timeline/1.0/payload.d.ts +588 -0
- package/dist/persona/profile/timeline/1.0/payload.d.ts.map +1 -0
- package/dist/persona/profile/timeline/1.0/payload.js +322 -0
- package/dist/persona/profile/timeline/1.0/payload.js.map +1 -0
- package/dist/persona/profile/usage/1.0/payload.d.ts +533 -0
- package/dist/persona/profile/usage/1.0/payload.d.ts.map +1 -0
- package/dist/persona/profile/usage/1.0/payload.js +302 -0
- package/dist/persona/profile/usage/1.0/payload.js.map +1 -0
- package/dist/trust-task-control/0.1/payload.d.ts +19 -19
- package/dist/trust-task-control/0.1/payload.js +7 -7
- package/dist/trust-task-discovery/0.1/payload.d.ts +3 -3
- package/dist/trust-task-discovery/0.1/payload.js +1 -1
- package/dist/trust-task-discovery/0.2/payload.d.ts +368 -0
- package/dist/trust-task-discovery/0.2/payload.d.ts.map +1 -0
- package/dist/trust-task-discovery/0.2/payload.js +186 -0
- package/dist/trust-task-discovery/0.2/payload.js.map +1 -0
- package/dist/vtc/invitations/deliver/0.1/payload.d.ts +318 -0
- package/dist/vtc/invitations/deliver/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/invitations/deliver/0.1/payload.js +183 -0
- package/dist/vtc/invitations/deliver/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_runtime/consume.ts +2 -2
- package/src/_shared/components.ts +49 -0
- package/src/index.ts +8 -0
- package/src/persona/_shared/0.1/persona-record.ts +1 -1
- package/src/persona/attribute/list/1.0/payload.ts +72 -2
- package/src/persona/attribute/promote/1.0/payload.ts +344 -0
- package/src/persona/attribute/put/1.0/payload.ts +68 -2
- package/src/persona/binding/get/1.0/payload.ts +14 -0
- package/src/persona/binding/list/1.0/payload.ts +14 -0
- package/src/persona/binding/set/1.0/payload.ts +23 -0
- package/src/persona/contact/get/1.0/payload.ts +52 -2
- package/src/persona/contact/put/1.0/payload.ts +52 -2
- package/src/persona/disclosure/preview/1.0/payload.ts +5 -3
- package/src/persona/local/binding/set/1.0/payload.ts +9 -0
- package/src/persona/profile/compose/1.0/payload.ts +650 -0
- package/src/persona/profile/delete/1.0/payload.ts +45 -0
- package/src/persona/profile/get/1.0/payload.ts +215 -4
- package/src/persona/profile/list/1.0/payload.ts +179 -4
- package/src/persona/profile/put/1.0/payload.ts +144 -4
- package/src/persona/profile/reinstate/1.0/payload.ts +219 -0
- package/src/persona/profile/retire/1.0/payload.ts +289 -0
- package/src/persona/profile/timeline/1.0/payload.ts +402 -0
- package/src/persona/profile/usage/1.0/payload.ts +354 -0
- package/src/trust-task-control/0.1/payload.ts +12 -12
- package/src/trust-task-discovery/0.1/payload.ts +2 -2
- package/src/trust-task-discovery/0.2/payload.ts +286 -0
- package/src/vtc/invitations/deliver/0.1/payload.ts +234 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
3
|
* Source: specs/persona/profile/get/1.0/payload.schema.json
|
|
4
4
|
*/
|
|
5
|
-
import type { ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Slot, Ulid, ValueType, Version_PersonaV0_1 as Version } from "../../../../_shared/components.js";
|
|
5
|
+
import type { ClaimType, Ext, FaceReach, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Slot, Ulid, ValueType, Version_PersonaV0_1 as Version } from "../../../../_shared/components.js";
|
|
6
6
|
/**
|
|
7
7
|
* Read one profile, either as composed (the entries the holder wrote) or as resolved (the claims it would actually present).
|
|
8
8
|
*/
|
|
@@ -19,6 +19,13 @@ export interface PersonaProfileGetPayload {
|
|
|
19
19
|
*/
|
|
20
20
|
export interface PersonaProfileGetResponsePayload {
|
|
21
21
|
profile: Profile;
|
|
22
|
+
/**
|
|
23
|
+
* How many distinct parties this face has disclosed to, across how many contexts, from the holder's disclosure history. Counts, not identifiers; persona/disclosure/history names them. A producer shows this before a delete: deleting a face does not un-tell anyone what it told them.
|
|
24
|
+
*/
|
|
25
|
+
disclosedTo?: {
|
|
26
|
+
partyCount: number;
|
|
27
|
+
contextCount: number;
|
|
28
|
+
};
|
|
22
29
|
/**
|
|
23
30
|
* Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.
|
|
24
31
|
*
|
|
@@ -30,7 +37,7 @@ export interface PersonaProfileGetResponsePayload {
|
|
|
30
37
|
ext?: Ext;
|
|
31
38
|
}
|
|
32
39
|
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
33
|
-
export type { ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Slot, Ulid, ValueType, Version };
|
|
40
|
+
export type { ClaimType, Ext, FaceReach, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Slot, Ulid, ValueType, Version };
|
|
34
41
|
/** Trust Task type URI. */
|
|
35
42
|
export declare const TYPE_URI: "https://trusttasks.org/spec/persona/profile/get/1.0";
|
|
36
43
|
/** Stable alias for this specification's request payload shape. */
|
|
@@ -81,6 +88,22 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
81
88
|
readonly profile: {
|
|
82
89
|
readonly $ref: "#/$defs/Profile";
|
|
83
90
|
};
|
|
91
|
+
readonly disclosedTo: {
|
|
92
|
+
readonly type: "object";
|
|
93
|
+
readonly additionalProperties: false;
|
|
94
|
+
readonly required: readonly ["partyCount", "contextCount"];
|
|
95
|
+
readonly description: "How many distinct parties this face has disclosed to, across how many contexts, from the holder's disclosure history. Counts, not identifiers; persona/disclosure/history names them. A producer shows this before a delete: deleting a face does not un-tell anyone what it told them.";
|
|
96
|
+
readonly properties: {
|
|
97
|
+
readonly partyCount: {
|
|
98
|
+
readonly type: "integer";
|
|
99
|
+
readonly minimum: 0;
|
|
100
|
+
};
|
|
101
|
+
readonly contextCount: {
|
|
102
|
+
readonly type: "integer";
|
|
103
|
+
readonly minimum: 0;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
};
|
|
84
107
|
readonly resolved: {
|
|
85
108
|
readonly type: "array";
|
|
86
109
|
readonly maxItems: 256;
|
|
@@ -164,7 +187,7 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
164
187
|
};
|
|
165
188
|
readonly Provenance: {
|
|
166
189
|
readonly title: "Provenance";
|
|
167
|
-
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.";
|
|
190
|
+
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.\n\n`derived` — the value was taken from a source the holder connected or supplied — a code-hosting profile, an uploaded CV — rather than typed by them or attested by an issuer. Nobody signed it: it is the holder's claim that the source said so, and a consumer MUST NOT present it as attested. It exists as its own kind because a derived value is neither of the others — the holder did not author it, and no one vouches for it — and a holder deciding whether to disclose deserves to know which of their values they typed.\n\nFor how strongly a disclosed value identifies the holder, the kinds rank `credentialBacked` above `derived` above `selfAsserted`; `generated` values are per-verifier and do not correlate.";
|
|
168
191
|
readonly type: "object";
|
|
169
192
|
readonly required: readonly ["kind"];
|
|
170
193
|
readonly oneOf: readonly [{
|
|
@@ -221,6 +244,26 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
221
244
|
readonly description: "When true (the default and the only useful setting), a distinct value is minted for each verifier.";
|
|
222
245
|
};
|
|
223
246
|
};
|
|
247
|
+
}, {
|
|
248
|
+
readonly additionalProperties: false;
|
|
249
|
+
readonly required: readonly ["kind", "source", "derivedAt"];
|
|
250
|
+
readonly properties: {
|
|
251
|
+
readonly kind: {
|
|
252
|
+
readonly const: "derived";
|
|
253
|
+
};
|
|
254
|
+
readonly source: {
|
|
255
|
+
readonly type: "string";
|
|
256
|
+
readonly minLength: 1;
|
|
257
|
+
readonly maxLength: 64;
|
|
258
|
+
readonly pattern: "^[a-z][A-Za-z0-9.-]*$";
|
|
259
|
+
readonly description: "The KIND of source the value was taken from — `github`, `cvUpload`, `linkedIn` — never an account, handle or URL. Provenance survives to the verifier, so this member is disclosed with the claim; a handle here would disclose an identifier the holder never chose to share.";
|
|
260
|
+
};
|
|
261
|
+
readonly derivedAt: {
|
|
262
|
+
readonly type: "string";
|
|
263
|
+
readonly format: "date-time";
|
|
264
|
+
readonly description: "When the value was taken from the source. A derived value is a snapshot: the source may have changed since, and nothing re-derives it.";
|
|
265
|
+
};
|
|
266
|
+
};
|
|
224
267
|
}];
|
|
225
268
|
};
|
|
226
269
|
readonly ProofRung: {
|
|
@@ -278,6 +321,20 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
278
321
|
readonly $ref: "#/$defs/ProfileEntry";
|
|
279
322
|
};
|
|
280
323
|
};
|
|
324
|
+
readonly reach: {
|
|
325
|
+
readonly $ref: "#/$defs/FaceReach";
|
|
326
|
+
};
|
|
327
|
+
readonly status: {
|
|
328
|
+
readonly type: "string";
|
|
329
|
+
readonly enum: readonly ["active", "retired"];
|
|
330
|
+
readonly default: "active";
|
|
331
|
+
readonly description: "`retired`: the face is worn nowhere, is left out of pickers and default listings, and cannot be worn until reinstated (persona/profile/retire, persona/profile/reinstate). Its disclosure history and every value it carries are kept — retiring is 'stop being this', not 'forget this'. Absent reads as `active`.";
|
|
332
|
+
};
|
|
333
|
+
readonly retiredAt: {
|
|
334
|
+
readonly type: "string";
|
|
335
|
+
readonly format: "date-time";
|
|
336
|
+
readonly description: "When the face was retired. Present exactly when `status` is `retired`.";
|
|
337
|
+
};
|
|
281
338
|
readonly credentialRefs: {
|
|
282
339
|
readonly type: "array";
|
|
283
340
|
readonly maxItems: 256;
|
|
@@ -300,6 +357,39 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
300
357
|
};
|
|
301
358
|
};
|
|
302
359
|
};
|
|
360
|
+
readonly FaceReach: {
|
|
361
|
+
readonly title: "FaceReach";
|
|
362
|
+
readonly description: "Where a pool face may be worn. `anywhere` is the default and what an absent member means. `only` names the contexts it may be worn in, and a maintainer MUST refuse to wear it in any other (persona/binding/set `outsideReach`).\n\nA tagged object rather than a bare list of contexts, deliberately: an empty list has been read as both 'unrestricted' and 'nowhere' in this family's neighbours, and a shape where the two cannot be confused is worth more than one where they must be remembered. So `only` requires at least one context, and 'nowhere' is not a reach — it is a retired face.\n\nA context-local face has no reach: it lives in its context and is worn there by construction.";
|
|
363
|
+
readonly oneOf: readonly [{
|
|
364
|
+
readonly type: "object";
|
|
365
|
+
readonly additionalProperties: false;
|
|
366
|
+
readonly required: readonly ["kind"];
|
|
367
|
+
readonly properties: {
|
|
368
|
+
readonly kind: {
|
|
369
|
+
readonly const: "anywhere";
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
}, {
|
|
373
|
+
readonly type: "object";
|
|
374
|
+
readonly additionalProperties: false;
|
|
375
|
+
readonly required: readonly ["kind", "contextIds"];
|
|
376
|
+
readonly properties: {
|
|
377
|
+
readonly kind: {
|
|
378
|
+
readonly const: "only";
|
|
379
|
+
};
|
|
380
|
+
readonly contextIds: {
|
|
381
|
+
readonly type: "array";
|
|
382
|
+
readonly minItems: 1;
|
|
383
|
+
readonly maxItems: 256;
|
|
384
|
+
readonly uniqueItems: true;
|
|
385
|
+
readonly items: {
|
|
386
|
+
readonly type: "string";
|
|
387
|
+
readonly minLength: 1;
|
|
388
|
+
};
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
}];
|
|
392
|
+
};
|
|
303
393
|
readonly ProfileEntry: {
|
|
304
394
|
readonly title: "ProfileEntry";
|
|
305
395
|
readonly description: "One line of a profile, in exactly one of four forms. Together they are the whole of a profile's flexibility, and each exists for a case the others handle badly.\n\n`{ref}` — use the pool attribute, live. Editing the pool updates every profile that references it, which is the point.\n\n`{ref, pinVersion}` — use the value as it was at that version. For a profile that must keep presenting the value a counterparty already verified.\n\n`{ref, override}` — the same fact, a different value here. (\"In the gaming profile my display name is different.\")\n\n`{inline}` — a value that never enters the pool, and so never leaks into another profile.\n\nOmission is exclusion; there is no removal marker.\n\nAny form MAY carry a `slot` naming the role the entry plays in the profile — see `Slot`. A maintainer MUST refuse a profile in which two entries carry the same slot: a slot exists to answer one question with one entry.";
|
|
@@ -402,6 +492,22 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
402
492
|
readonly profile: {
|
|
403
493
|
readonly $ref: "#/$defs/Profile";
|
|
404
494
|
};
|
|
495
|
+
readonly disclosedTo: {
|
|
496
|
+
readonly type: "object";
|
|
497
|
+
readonly additionalProperties: false;
|
|
498
|
+
readonly required: readonly ["partyCount", "contextCount"];
|
|
499
|
+
readonly description: "How many distinct parties this face has disclosed to, across how many contexts, from the holder's disclosure history. Counts, not identifiers; persona/disclosure/history names them. A producer shows this before a delete: deleting a face does not un-tell anyone what it told them.";
|
|
500
|
+
readonly properties: {
|
|
501
|
+
readonly partyCount: {
|
|
502
|
+
readonly type: "integer";
|
|
503
|
+
readonly minimum: 0;
|
|
504
|
+
};
|
|
505
|
+
readonly contextCount: {
|
|
506
|
+
readonly type: "integer";
|
|
507
|
+
readonly minimum: 0;
|
|
508
|
+
};
|
|
509
|
+
};
|
|
510
|
+
};
|
|
405
511
|
readonly resolved: {
|
|
406
512
|
readonly type: "array";
|
|
407
513
|
readonly maxItems: 256;
|
|
@@ -485,7 +591,7 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
485
591
|
};
|
|
486
592
|
readonly Provenance: {
|
|
487
593
|
readonly title: "Provenance";
|
|
488
|
-
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.";
|
|
594
|
+
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.\n\n`derived` — the value was taken from a source the holder connected or supplied — a code-hosting profile, an uploaded CV — rather than typed by them or attested by an issuer. Nobody signed it: it is the holder's claim that the source said so, and a consumer MUST NOT present it as attested. It exists as its own kind because a derived value is neither of the others — the holder did not author it, and no one vouches for it — and a holder deciding whether to disclose deserves to know which of their values they typed.\n\nFor how strongly a disclosed value identifies the holder, the kinds rank `credentialBacked` above `derived` above `selfAsserted`; `generated` values are per-verifier and do not correlate.";
|
|
489
595
|
readonly type: "object";
|
|
490
596
|
readonly required: readonly ["kind"];
|
|
491
597
|
readonly oneOf: readonly [{
|
|
@@ -542,6 +648,26 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
542
648
|
readonly description: "When true (the default and the only useful setting), a distinct value is minted for each verifier.";
|
|
543
649
|
};
|
|
544
650
|
};
|
|
651
|
+
}, {
|
|
652
|
+
readonly additionalProperties: false;
|
|
653
|
+
readonly required: readonly ["kind", "source", "derivedAt"];
|
|
654
|
+
readonly properties: {
|
|
655
|
+
readonly kind: {
|
|
656
|
+
readonly const: "derived";
|
|
657
|
+
};
|
|
658
|
+
readonly source: {
|
|
659
|
+
readonly type: "string";
|
|
660
|
+
readonly minLength: 1;
|
|
661
|
+
readonly maxLength: 64;
|
|
662
|
+
readonly pattern: "^[a-z][A-Za-z0-9.-]*$";
|
|
663
|
+
readonly description: "The KIND of source the value was taken from — `github`, `cvUpload`, `linkedIn` — never an account, handle or URL. Provenance survives to the verifier, so this member is disclosed with the claim; a handle here would disclose an identifier the holder never chose to share.";
|
|
664
|
+
};
|
|
665
|
+
readonly derivedAt: {
|
|
666
|
+
readonly type: "string";
|
|
667
|
+
readonly format: "date-time";
|
|
668
|
+
readonly description: "When the value was taken from the source. A derived value is a snapshot: the source may have changed since, and nothing re-derives it.";
|
|
669
|
+
};
|
|
670
|
+
};
|
|
545
671
|
}];
|
|
546
672
|
};
|
|
547
673
|
readonly ProofRung: {
|
|
@@ -599,6 +725,20 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
599
725
|
readonly $ref: "#/$defs/ProfileEntry";
|
|
600
726
|
};
|
|
601
727
|
};
|
|
728
|
+
readonly reach: {
|
|
729
|
+
readonly $ref: "#/$defs/FaceReach";
|
|
730
|
+
};
|
|
731
|
+
readonly status: {
|
|
732
|
+
readonly type: "string";
|
|
733
|
+
readonly enum: readonly ["active", "retired"];
|
|
734
|
+
readonly default: "active";
|
|
735
|
+
readonly description: "`retired`: the face is worn nowhere, is left out of pickers and default listings, and cannot be worn until reinstated (persona/profile/retire, persona/profile/reinstate). Its disclosure history and every value it carries are kept — retiring is 'stop being this', not 'forget this'. Absent reads as `active`.";
|
|
736
|
+
};
|
|
737
|
+
readonly retiredAt: {
|
|
738
|
+
readonly type: "string";
|
|
739
|
+
readonly format: "date-time";
|
|
740
|
+
readonly description: "When the face was retired. Present exactly when `status` is `retired`.";
|
|
741
|
+
};
|
|
602
742
|
readonly credentialRefs: {
|
|
603
743
|
readonly type: "array";
|
|
604
744
|
readonly maxItems: 256;
|
|
@@ -621,6 +761,39 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
621
761
|
};
|
|
622
762
|
};
|
|
623
763
|
};
|
|
764
|
+
readonly FaceReach: {
|
|
765
|
+
readonly title: "FaceReach";
|
|
766
|
+
readonly description: "Where a pool face may be worn. `anywhere` is the default and what an absent member means. `only` names the contexts it may be worn in, and a maintainer MUST refuse to wear it in any other (persona/binding/set `outsideReach`).\n\nA tagged object rather than a bare list of contexts, deliberately: an empty list has been read as both 'unrestricted' and 'nowhere' in this family's neighbours, and a shape where the two cannot be confused is worth more than one where they must be remembered. So `only` requires at least one context, and 'nowhere' is not a reach — it is a retired face.\n\nA context-local face has no reach: it lives in its context and is worn there by construction.";
|
|
767
|
+
readonly oneOf: readonly [{
|
|
768
|
+
readonly type: "object";
|
|
769
|
+
readonly additionalProperties: false;
|
|
770
|
+
readonly required: readonly ["kind"];
|
|
771
|
+
readonly properties: {
|
|
772
|
+
readonly kind: {
|
|
773
|
+
readonly const: "anywhere";
|
|
774
|
+
};
|
|
775
|
+
};
|
|
776
|
+
}, {
|
|
777
|
+
readonly type: "object";
|
|
778
|
+
readonly additionalProperties: false;
|
|
779
|
+
readonly required: readonly ["kind", "contextIds"];
|
|
780
|
+
readonly properties: {
|
|
781
|
+
readonly kind: {
|
|
782
|
+
readonly const: "only";
|
|
783
|
+
};
|
|
784
|
+
readonly contextIds: {
|
|
785
|
+
readonly type: "array";
|
|
786
|
+
readonly minItems: 1;
|
|
787
|
+
readonly maxItems: 256;
|
|
788
|
+
readonly uniqueItems: true;
|
|
789
|
+
readonly items: {
|
|
790
|
+
readonly type: "string";
|
|
791
|
+
readonly minLength: 1;
|
|
792
|
+
};
|
|
793
|
+
};
|
|
794
|
+
};
|
|
795
|
+
}];
|
|
796
|
+
};
|
|
624
797
|
readonly ProfileEntry: {
|
|
625
798
|
readonly title: "ProfileEntry";
|
|
626
799
|
readonly description: "One line of a profile, in exactly one of four forms. Together they are the whole of a profile's flexibility, and each exists for a case the others handle badly.\n\n`{ref}` — use the pool attribute, live. Editing the pool updates every profile that references it, which is the point.\n\n`{ref, pinVersion}` — use the value as it was at that version. For a profile that must keep presenting the value a counterparty already verified.\n\n`{ref, override}` — the same fact, a different value here. (\"In the gaming profile my display name is different.\")\n\n`{inline}` — a value that never enters the pool, and so never leaks into another profile.\n\nOmission is exclusion; there is no removal marker.\n\nAny form MAY carry a `slot` naming the role the entry plays in the profile — see `Slot`. A maintainer MUST refuse a profile in which two entries carry the same slot: a slot exists to answer one question with one entry.";
|
|
@@ -752,6 +925,22 @@ export declare const SPEC: {
|
|
|
752
925
|
readonly profile: {
|
|
753
926
|
readonly $ref: "#/$defs/Profile";
|
|
754
927
|
};
|
|
928
|
+
readonly disclosedTo: {
|
|
929
|
+
readonly type: "object";
|
|
930
|
+
readonly additionalProperties: false;
|
|
931
|
+
readonly required: readonly ["partyCount", "contextCount"];
|
|
932
|
+
readonly description: "How many distinct parties this face has disclosed to, across how many contexts, from the holder's disclosure history. Counts, not identifiers; persona/disclosure/history names them. A producer shows this before a delete: deleting a face does not un-tell anyone what it told them.";
|
|
933
|
+
readonly properties: {
|
|
934
|
+
readonly partyCount: {
|
|
935
|
+
readonly type: "integer";
|
|
936
|
+
readonly minimum: 0;
|
|
937
|
+
};
|
|
938
|
+
readonly contextCount: {
|
|
939
|
+
readonly type: "integer";
|
|
940
|
+
readonly minimum: 0;
|
|
941
|
+
};
|
|
942
|
+
};
|
|
943
|
+
};
|
|
755
944
|
readonly resolved: {
|
|
756
945
|
readonly type: "array";
|
|
757
946
|
readonly maxItems: 256;
|
|
@@ -835,7 +1024,7 @@ export declare const SPEC: {
|
|
|
835
1024
|
};
|
|
836
1025
|
readonly Provenance: {
|
|
837
1026
|
readonly title: "Provenance";
|
|
838
|
-
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.";
|
|
1027
|
+
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.\n\n`derived` — the value was taken from a source the holder connected or supplied — a code-hosting profile, an uploaded CV — rather than typed by them or attested by an issuer. Nobody signed it: it is the holder's claim that the source said so, and a consumer MUST NOT present it as attested. It exists as its own kind because a derived value is neither of the others — the holder did not author it, and no one vouches for it — and a holder deciding whether to disclose deserves to know which of their values they typed.\n\nFor how strongly a disclosed value identifies the holder, the kinds rank `credentialBacked` above `derived` above `selfAsserted`; `generated` values are per-verifier and do not correlate.";
|
|
839
1028
|
readonly type: "object";
|
|
840
1029
|
readonly required: readonly ["kind"];
|
|
841
1030
|
readonly oneOf: readonly [{
|
|
@@ -892,6 +1081,26 @@ export declare const SPEC: {
|
|
|
892
1081
|
readonly description: "When true (the default and the only useful setting), a distinct value is minted for each verifier.";
|
|
893
1082
|
};
|
|
894
1083
|
};
|
|
1084
|
+
}, {
|
|
1085
|
+
readonly additionalProperties: false;
|
|
1086
|
+
readonly required: readonly ["kind", "source", "derivedAt"];
|
|
1087
|
+
readonly properties: {
|
|
1088
|
+
readonly kind: {
|
|
1089
|
+
readonly const: "derived";
|
|
1090
|
+
};
|
|
1091
|
+
readonly source: {
|
|
1092
|
+
readonly type: "string";
|
|
1093
|
+
readonly minLength: 1;
|
|
1094
|
+
readonly maxLength: 64;
|
|
1095
|
+
readonly pattern: "^[a-z][A-Za-z0-9.-]*$";
|
|
1096
|
+
readonly description: "The KIND of source the value was taken from — `github`, `cvUpload`, `linkedIn` — never an account, handle or URL. Provenance survives to the verifier, so this member is disclosed with the claim; a handle here would disclose an identifier the holder never chose to share.";
|
|
1097
|
+
};
|
|
1098
|
+
readonly derivedAt: {
|
|
1099
|
+
readonly type: "string";
|
|
1100
|
+
readonly format: "date-time";
|
|
1101
|
+
readonly description: "When the value was taken from the source. A derived value is a snapshot: the source may have changed since, and nothing re-derives it.";
|
|
1102
|
+
};
|
|
1103
|
+
};
|
|
895
1104
|
}];
|
|
896
1105
|
};
|
|
897
1106
|
readonly ProofRung: {
|
|
@@ -949,6 +1158,20 @@ export declare const SPEC: {
|
|
|
949
1158
|
readonly $ref: "#/$defs/ProfileEntry";
|
|
950
1159
|
};
|
|
951
1160
|
};
|
|
1161
|
+
readonly reach: {
|
|
1162
|
+
readonly $ref: "#/$defs/FaceReach";
|
|
1163
|
+
};
|
|
1164
|
+
readonly status: {
|
|
1165
|
+
readonly type: "string";
|
|
1166
|
+
readonly enum: readonly ["active", "retired"];
|
|
1167
|
+
readonly default: "active";
|
|
1168
|
+
readonly description: "`retired`: the face is worn nowhere, is left out of pickers and default listings, and cannot be worn until reinstated (persona/profile/retire, persona/profile/reinstate). Its disclosure history and every value it carries are kept — retiring is 'stop being this', not 'forget this'. Absent reads as `active`.";
|
|
1169
|
+
};
|
|
1170
|
+
readonly retiredAt: {
|
|
1171
|
+
readonly type: "string";
|
|
1172
|
+
readonly format: "date-time";
|
|
1173
|
+
readonly description: "When the face was retired. Present exactly when `status` is `retired`.";
|
|
1174
|
+
};
|
|
952
1175
|
readonly credentialRefs: {
|
|
953
1176
|
readonly type: "array";
|
|
954
1177
|
readonly maxItems: 256;
|
|
@@ -971,6 +1194,39 @@ export declare const SPEC: {
|
|
|
971
1194
|
};
|
|
972
1195
|
};
|
|
973
1196
|
};
|
|
1197
|
+
readonly FaceReach: {
|
|
1198
|
+
readonly title: "FaceReach";
|
|
1199
|
+
readonly description: "Where a pool face may be worn. `anywhere` is the default and what an absent member means. `only` names the contexts it may be worn in, and a maintainer MUST refuse to wear it in any other (persona/binding/set `outsideReach`).\n\nA tagged object rather than a bare list of contexts, deliberately: an empty list has been read as both 'unrestricted' and 'nowhere' in this family's neighbours, and a shape where the two cannot be confused is worth more than one where they must be remembered. So `only` requires at least one context, and 'nowhere' is not a reach — it is a retired face.\n\nA context-local face has no reach: it lives in its context and is worn there by construction.";
|
|
1200
|
+
readonly oneOf: readonly [{
|
|
1201
|
+
readonly type: "object";
|
|
1202
|
+
readonly additionalProperties: false;
|
|
1203
|
+
readonly required: readonly ["kind"];
|
|
1204
|
+
readonly properties: {
|
|
1205
|
+
readonly kind: {
|
|
1206
|
+
readonly const: "anywhere";
|
|
1207
|
+
};
|
|
1208
|
+
};
|
|
1209
|
+
}, {
|
|
1210
|
+
readonly type: "object";
|
|
1211
|
+
readonly additionalProperties: false;
|
|
1212
|
+
readonly required: readonly ["kind", "contextIds"];
|
|
1213
|
+
readonly properties: {
|
|
1214
|
+
readonly kind: {
|
|
1215
|
+
readonly const: "only";
|
|
1216
|
+
};
|
|
1217
|
+
readonly contextIds: {
|
|
1218
|
+
readonly type: "array";
|
|
1219
|
+
readonly minItems: 1;
|
|
1220
|
+
readonly maxItems: 256;
|
|
1221
|
+
readonly uniqueItems: true;
|
|
1222
|
+
readonly items: {
|
|
1223
|
+
readonly type: "string";
|
|
1224
|
+
readonly minLength: 1;
|
|
1225
|
+
};
|
|
1226
|
+
};
|
|
1227
|
+
};
|
|
1228
|
+
}];
|
|
1229
|
+
};
|
|
974
1230
|
readonly ProfileEntry: {
|
|
975
1231
|
readonly title: "ProfileEntry";
|
|
976
1232
|
readonly description: "One line of a profile, in exactly one of four forms. Together they are the whole of a profile's flexibility, and each exists for a case the others handle badly.\n\n`{ref}` — use the pool attribute, live. Editing the pool updates every profile that references it, which is the point.\n\n`{ref, pinVersion}` — use the value as it was at that version. For a profile that must keep presenting the value a counterparty already verified.\n\n`{ref, override}` — the same fact, a different value here. (\"In the gaming profile my display name is different.\")\n\n`{inline}` — a value that never enters the pool, and so never leaks into another profile.\n\nOmission is exclusion; there is no removal marker.\n\nAny form MAY carry a `slot` naming the role the entry plays in the profile — see `Slot`. A maintainer MUST refuse a profile in which two entries carry the same slot: a slot exists to answer one question with one entry.";
|
|
@@ -1084,6 +1340,22 @@ export declare const RESPONSE_SPEC: {
|
|
|
1084
1340
|
readonly profile: {
|
|
1085
1341
|
readonly $ref: "#/$defs/Profile";
|
|
1086
1342
|
};
|
|
1343
|
+
readonly disclosedTo: {
|
|
1344
|
+
readonly type: "object";
|
|
1345
|
+
readonly additionalProperties: false;
|
|
1346
|
+
readonly required: readonly ["partyCount", "contextCount"];
|
|
1347
|
+
readonly description: "How many distinct parties this face has disclosed to, across how many contexts, from the holder's disclosure history. Counts, not identifiers; persona/disclosure/history names them. A producer shows this before a delete: deleting a face does not un-tell anyone what it told them.";
|
|
1348
|
+
readonly properties: {
|
|
1349
|
+
readonly partyCount: {
|
|
1350
|
+
readonly type: "integer";
|
|
1351
|
+
readonly minimum: 0;
|
|
1352
|
+
};
|
|
1353
|
+
readonly contextCount: {
|
|
1354
|
+
readonly type: "integer";
|
|
1355
|
+
readonly minimum: 0;
|
|
1356
|
+
};
|
|
1357
|
+
};
|
|
1358
|
+
};
|
|
1087
1359
|
readonly resolved: {
|
|
1088
1360
|
readonly type: "array";
|
|
1089
1361
|
readonly maxItems: 256;
|
|
@@ -1167,7 +1439,7 @@ export declare const RESPONSE_SPEC: {
|
|
|
1167
1439
|
};
|
|
1168
1440
|
readonly Provenance: {
|
|
1169
1441
|
readonly title: "Provenance";
|
|
1170
|
-
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.";
|
|
1442
|
+
readonly description: "Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.\n\n`selfAsserted` — the holder supplied it.\n\n`credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.\n\n`generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.\n\n`derived` — the value was taken from a source the holder connected or supplied — a code-hosting profile, an uploaded CV — rather than typed by them or attested by an issuer. Nobody signed it: it is the holder's claim that the source said so, and a consumer MUST NOT present it as attested. It exists as its own kind because a derived value is neither of the others — the holder did not author it, and no one vouches for it — and a holder deciding whether to disclose deserves to know which of their values they typed.\n\nFor how strongly a disclosed value identifies the holder, the kinds rank `credentialBacked` above `derived` above `selfAsserted`; `generated` values are per-verifier and do not correlate.";
|
|
1171
1443
|
readonly type: "object";
|
|
1172
1444
|
readonly required: readonly ["kind"];
|
|
1173
1445
|
readonly oneOf: readonly [{
|
|
@@ -1224,6 +1496,26 @@ export declare const RESPONSE_SPEC: {
|
|
|
1224
1496
|
readonly description: "When true (the default and the only useful setting), a distinct value is minted for each verifier.";
|
|
1225
1497
|
};
|
|
1226
1498
|
};
|
|
1499
|
+
}, {
|
|
1500
|
+
readonly additionalProperties: false;
|
|
1501
|
+
readonly required: readonly ["kind", "source", "derivedAt"];
|
|
1502
|
+
readonly properties: {
|
|
1503
|
+
readonly kind: {
|
|
1504
|
+
readonly const: "derived";
|
|
1505
|
+
};
|
|
1506
|
+
readonly source: {
|
|
1507
|
+
readonly type: "string";
|
|
1508
|
+
readonly minLength: 1;
|
|
1509
|
+
readonly maxLength: 64;
|
|
1510
|
+
readonly pattern: "^[a-z][A-Za-z0-9.-]*$";
|
|
1511
|
+
readonly description: "The KIND of source the value was taken from — `github`, `cvUpload`, `linkedIn` — never an account, handle or URL. Provenance survives to the verifier, so this member is disclosed with the claim; a handle here would disclose an identifier the holder never chose to share.";
|
|
1512
|
+
};
|
|
1513
|
+
readonly derivedAt: {
|
|
1514
|
+
readonly type: "string";
|
|
1515
|
+
readonly format: "date-time";
|
|
1516
|
+
readonly description: "When the value was taken from the source. A derived value is a snapshot: the source may have changed since, and nothing re-derives it.";
|
|
1517
|
+
};
|
|
1518
|
+
};
|
|
1227
1519
|
}];
|
|
1228
1520
|
};
|
|
1229
1521
|
readonly ProofRung: {
|
|
@@ -1281,6 +1573,20 @@ export declare const RESPONSE_SPEC: {
|
|
|
1281
1573
|
readonly $ref: "#/$defs/ProfileEntry";
|
|
1282
1574
|
};
|
|
1283
1575
|
};
|
|
1576
|
+
readonly reach: {
|
|
1577
|
+
readonly $ref: "#/$defs/FaceReach";
|
|
1578
|
+
};
|
|
1579
|
+
readonly status: {
|
|
1580
|
+
readonly type: "string";
|
|
1581
|
+
readonly enum: readonly ["active", "retired"];
|
|
1582
|
+
readonly default: "active";
|
|
1583
|
+
readonly description: "`retired`: the face is worn nowhere, is left out of pickers and default listings, and cannot be worn until reinstated (persona/profile/retire, persona/profile/reinstate). Its disclosure history and every value it carries are kept — retiring is 'stop being this', not 'forget this'. Absent reads as `active`.";
|
|
1584
|
+
};
|
|
1585
|
+
readonly retiredAt: {
|
|
1586
|
+
readonly type: "string";
|
|
1587
|
+
readonly format: "date-time";
|
|
1588
|
+
readonly description: "When the face was retired. Present exactly when `status` is `retired`.";
|
|
1589
|
+
};
|
|
1284
1590
|
readonly credentialRefs: {
|
|
1285
1591
|
readonly type: "array";
|
|
1286
1592
|
readonly maxItems: 256;
|
|
@@ -1303,6 +1609,39 @@ export declare const RESPONSE_SPEC: {
|
|
|
1303
1609
|
};
|
|
1304
1610
|
};
|
|
1305
1611
|
};
|
|
1612
|
+
readonly FaceReach: {
|
|
1613
|
+
readonly title: "FaceReach";
|
|
1614
|
+
readonly description: "Where a pool face may be worn. `anywhere` is the default and what an absent member means. `only` names the contexts it may be worn in, and a maintainer MUST refuse to wear it in any other (persona/binding/set `outsideReach`).\n\nA tagged object rather than a bare list of contexts, deliberately: an empty list has been read as both 'unrestricted' and 'nowhere' in this family's neighbours, and a shape where the two cannot be confused is worth more than one where they must be remembered. So `only` requires at least one context, and 'nowhere' is not a reach — it is a retired face.\n\nA context-local face has no reach: it lives in its context and is worn there by construction.";
|
|
1615
|
+
readonly oneOf: readonly [{
|
|
1616
|
+
readonly type: "object";
|
|
1617
|
+
readonly additionalProperties: false;
|
|
1618
|
+
readonly required: readonly ["kind"];
|
|
1619
|
+
readonly properties: {
|
|
1620
|
+
readonly kind: {
|
|
1621
|
+
readonly const: "anywhere";
|
|
1622
|
+
};
|
|
1623
|
+
};
|
|
1624
|
+
}, {
|
|
1625
|
+
readonly type: "object";
|
|
1626
|
+
readonly additionalProperties: false;
|
|
1627
|
+
readonly required: readonly ["kind", "contextIds"];
|
|
1628
|
+
readonly properties: {
|
|
1629
|
+
readonly kind: {
|
|
1630
|
+
readonly const: "only";
|
|
1631
|
+
};
|
|
1632
|
+
readonly contextIds: {
|
|
1633
|
+
readonly type: "array";
|
|
1634
|
+
readonly minItems: 1;
|
|
1635
|
+
readonly maxItems: 256;
|
|
1636
|
+
readonly uniqueItems: true;
|
|
1637
|
+
readonly items: {
|
|
1638
|
+
readonly type: "string";
|
|
1639
|
+
readonly minLength: 1;
|
|
1640
|
+
};
|
|
1641
|
+
};
|
|
1642
|
+
};
|
|
1643
|
+
}];
|
|
1644
|
+
};
|
|
1306
1645
|
readonly ProfileEntry: {
|
|
1307
1646
|
readonly title: "ProfileEntry";
|
|
1308
1647
|
readonly description: "One line of a profile, in exactly one of four forms. Together they are the whole of a profile's flexibility, and each exists for a case the others handle badly.\n\n`{ref}` — use the pool attribute, live. Editing the pool updates every profile that references it, which is the point.\n\n`{ref, pinVersion}` — use the value as it was at that version. For a profile that must keep presenting the value a counterparty already verified.\n\n`{ref, override}` — the same fact, a different value here. (\"In the gaming profile my display name is different.\")\n\n`{inline}` — a value that never enters the pool, and so never leaks into another profile.\n\nOmission is exclusion; there is no removal marker.\n\nAny form MAY carry a `slot` naming the role the entry plays in the profile — see `Slot`. A maintainer MUST refuse a profile in which two entries carry the same slot: a slot exists to answer one question with one entry.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/persona/profile/get/1.0/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,IAAI,OAAO,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/persona/profile/get/1.0/payload.ts"],"names":[],"mappings":"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"}
|