@openvtc/trust-tasks 0.28.23 → 0.28.25
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/_shared/components.d.ts +520 -0
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -1
- package/dist/messaging/mux/_shared/0.1/mux.d.ts +16 -0
- package/dist/messaging/mux/_shared/0.1/mux.d.ts.map +1 -0
- package/dist/messaging/mux/_shared/0.1/mux.js +6 -0
- package/dist/messaging/mux/_shared/0.1/mux.js.map +1 -0
- package/dist/messaging/mux/attach/0.1/payload.d.ts +996 -0
- package/dist/messaging/mux/attach/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/attach/0.1/payload.js +594 -0
- package/dist/messaging/mux/attach/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/detach/0.1/payload.d.ts +398 -0
- package/dist/messaging/mux/detach/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/detach/0.1/payload.js +215 -0
- package/dist/messaging/mux/detach/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/event/0.1/payload.d.ts +513 -0
- package/dist/messaging/mux/event/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/event/0.1/payload.js +260 -0
- package/dist/messaging/mux/event/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/grant/0.1/payload.d.ts +1008 -0
- package/dist/messaging/mux/grant/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/grant/0.1/payload.js +606 -0
- package/dist/messaging/mux/grant/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/list/0.1/payload.d.ts +1241 -0
- package/dist/messaging/mux/list/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/list/0.1/payload.js +715 -0
- package/dist/messaging/mux/list/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/notice/0.1/payload.d.ts +489 -0
- package/dist/messaging/mux/notice/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/notice/0.1/payload.js +249 -0
- package/dist/messaging/mux/notice/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/revoke/0.1/payload.d.ts +585 -0
- package/dist/messaging/mux/revoke/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/revoke/0.1/payload.js +311 -0
- package/dist/messaging/mux/revoke/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/revoke-all/0.1/payload.d.ts +682 -0
- package/dist/messaging/mux/revoke-all/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/revoke-all/0.1/payload.js +397 -0
- package/dist/messaging/mux/revoke-all/0.1/payload.js.map +1 -0
- package/dist/messaging/mux/update/0.1/payload.d.ts +995 -0
- package/dist/messaging/mux/update/0.1/payload.d.ts.map +1 -0
- package/dist/messaging/mux/update/0.1/payload.js +586 -0
- package/dist/messaging/mux/update/0.1/payload.js.map +1 -0
- package/dist/vta/_shared/0.1/memory-record.d.ts +22 -0
- package/dist/vta/_shared/0.1/memory-record.d.ts.map +1 -0
- package/dist/vta/_shared/0.1/memory-record.js +6 -0
- package/dist/vta/_shared/0.1/memory-record.js.map +1 -0
- package/dist/vta/memory/delete/0.1/payload.d.ts +13 -2
- package/dist/vta/memory/delete/0.1/payload.d.ts.map +1 -1
- package/dist/vta/memory/delete/0.1/payload.js +1 -1
- package/dist/vta/memory/delete/0.1/payload.js.map +1 -1
- package/dist/vta/memory/delete/0.2/payload.d.ts +415 -0
- package/dist/vta/memory/delete/0.2/payload.d.ts.map +1 -0
- package/dist/vta/memory/delete/0.2/payload.js +224 -0
- package/dist/vta/memory/delete/0.2/payload.js.map +1 -0
- package/dist/vta/memory/get/0.1/payload.d.ts +646 -0
- package/dist/vta/memory/get/0.1/payload.d.ts.map +1 -0
- package/dist/vta/memory/get/0.1/payload.js +349 -0
- package/dist/vta/memory/get/0.1/payload.js.map +1 -0
- package/dist/vta/memory/list/0.1/payload.d.ts +13 -2
- package/dist/vta/memory/list/0.1/payload.d.ts.map +1 -1
- package/dist/vta/memory/list/0.1/payload.js +1 -1
- package/dist/vta/memory/list/0.1/payload.js.map +1 -1
- package/dist/vta/memory/list/0.2/payload.d.ts +693 -0
- package/dist/vta/memory/list/0.2/payload.d.ts.map +1 -0
- package/dist/vta/memory/list/0.2/payload.js +363 -0
- package/dist/vta/memory/list/0.2/payload.js.map +1 -0
- package/dist/vta/memory/put/0.1/payload.d.ts +13 -2
- package/dist/vta/memory/put/0.1/payload.d.ts.map +1 -1
- package/dist/vta/memory/put/0.1/payload.js +1 -1
- package/dist/vta/memory/put/0.1/payload.js.map +1 -1
- package/dist/vta/memory/put/0.2/payload.d.ts +490 -0
- package/dist/vta/memory/put/0.2/payload.d.ts.map +1 -0
- package/dist/vta/memory/put/0.2/payload.js +264 -0
- package/dist/vta/memory/put/0.2/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +581 -0
- package/src/index.ts +45 -0
- package/src/messaging/mux/_shared/0.1/mux.ts +17 -0
- package/src/messaging/mux/attach/0.1/payload.ts +682 -0
- package/src/messaging/mux/detach/0.1/payload.ts +278 -0
- package/src/messaging/mux/event/0.1/payload.ts +371 -0
- package/src/messaging/mux/grant/0.1/payload.ts +710 -0
- package/src/messaging/mux/list/0.1/payload.ts +793 -0
- package/src/messaging/mux/notice/0.1/payload.ts +362 -0
- package/src/messaging/mux/revoke/0.1/payload.ts +389 -0
- package/src/messaging/mux/revoke-all/0.1/payload.ts +452 -0
- package/src/messaging/mux/update/0.1/payload.ts +644 -0
- package/src/vta/_shared/0.1/memory-record.ts +23 -0
- package/src/vta/memory/delete/0.1/payload.ts +14 -3
- package/src/vta/memory/delete/0.2/payload.ts +288 -0
- package/src/vta/memory/get/0.1/payload.ts +414 -0
- package/src/vta/memory/list/0.1/payload.ts +14 -3
- package/src/vta/memory/list/0.2/payload.ts +445 -0
- package/src/vta/memory/put/0.1/payload.ts +14 -3
- package/src/vta/memory/put/0.2/payload.ts +333 -0
|
@@ -0,0 +1,710 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/messaging/mux/grant/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { DataIntegrityProof, Ext, GrantId, GrantStatement, MuxDataIntegrityProof, MuxDid, MuxScopeValue, StatementScope } from "../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Store or replace grants: each a grant statement in which a member DID, with an embedded Data Integrity proof, delegates to a principal the carrying of its messages, under the member's current epoch and an explicit scope and expiry. The outer document members are owned by the framework — SPEC §6.3.
|
|
11
|
+
*/
|
|
12
|
+
export interface MessagingMuxGrantPayload {
|
|
13
|
+
/**
|
|
14
|
+
* The grant statements to store; the member DID is each statement's `issuer`. Each is checked and answered on its own; the batch is never all-or-nothing.
|
|
15
|
+
*
|
|
16
|
+
* @minItems 1
|
|
17
|
+
* @maxItems 256
|
|
18
|
+
*/
|
|
19
|
+
grants: [GrantStatement, ...GrantStatement[]];
|
|
20
|
+
/**
|
|
21
|
+
* Ecosystem-defined extension members per SPEC.md §4.5.1.
|
|
22
|
+
*/
|
|
23
|
+
ext?: Ext;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The success response to a messaging/mux/grant request: one outcome per submitted grant, in request order. Carried in a Trust Task document whose type is https://trusttasks.org/spec/messaging/mux/grant/0.1#response.
|
|
27
|
+
*/
|
|
28
|
+
export interface MessagingMuxGrantResponsePayload {
|
|
29
|
+
/**
|
|
30
|
+
* @maxItems 256
|
|
31
|
+
*/
|
|
32
|
+
results: GrantOutcome[];
|
|
33
|
+
/**
|
|
34
|
+
* Ecosystem-defined extension members per SPEC.md §4.5.1.
|
|
35
|
+
*/
|
|
36
|
+
ext?: Ext;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The outcome for one submitted grant.
|
|
40
|
+
*/
|
|
41
|
+
export interface GrantOutcome {
|
|
42
|
+
status: "stored" | "refused";
|
|
43
|
+
/**
|
|
44
|
+
* The grant's identifier, from its statement.
|
|
45
|
+
*/
|
|
46
|
+
grantId: GrantId;
|
|
47
|
+
/**
|
|
48
|
+
* The member DID: the statement's `issuer`.
|
|
49
|
+
*/
|
|
50
|
+
did: MuxDid;
|
|
51
|
+
/**
|
|
52
|
+
* The principal DID, from the statement.
|
|
53
|
+
*/
|
|
54
|
+
principal: MuxDid;
|
|
55
|
+
/**
|
|
56
|
+
* Present exactly when `status` is `refused`: the first check the grant failed, in the order the specification lists them.
|
|
57
|
+
*/
|
|
58
|
+
code?:
|
|
59
|
+
| "messaging/mux:statementProofInvalid"
|
|
60
|
+
| "messaging/mux:didUnresolvable"
|
|
61
|
+
| "messaging/mux:proofPurposeInvalid"
|
|
62
|
+
| "messaging/mux:audienceMismatch"
|
|
63
|
+
| "messaging/mux:principalMismatch"
|
|
64
|
+
| "messaging/mux:notYetValid"
|
|
65
|
+
| "messaging/mux:statementExpired"
|
|
66
|
+
| "messaging/mux:lifetimeTooLong"
|
|
67
|
+
| "messaging/mux:emptyScope"
|
|
68
|
+
| "messaging/mux:accountUnavailable"
|
|
69
|
+
| "messaging/mux:scopeNotPermitted"
|
|
70
|
+
| "messaging/mux/grant:epochMismatch"
|
|
71
|
+
| "messaging/mux/grant:replayed"
|
|
72
|
+
| "messaging/mux/grant:grantIdReused"
|
|
73
|
+
| "messaging/mux/grant:didQuota"
|
|
74
|
+
| "messaging/mux/grant:principalQuota"
|
|
75
|
+
| "messaging/mux/grant:contended";
|
|
76
|
+
/**
|
|
77
|
+
* Present exactly when `code` is `messaging/mux/grant:epochMismatch`: the member DID's current epoch, under which the member re-signs.
|
|
78
|
+
*/
|
|
79
|
+
currentEpoch?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Present exactly when `code` is `messaging/mux/grant:replayed`: the instant a replacement grant's `iat` must be strictly later than — the principal's replay floor for this member, or the `iat` of the grant it would replace, whichever is later.
|
|
82
|
+
*/
|
|
83
|
+
replayFloorAt?: string;
|
|
84
|
+
/**
|
|
85
|
+
* Present when this grant replaced an earlier grant for the same member and principal, in whatever state that grant was. Replacing raises the principal's replay floor, so the replaced statement can never be stored again.
|
|
86
|
+
*/
|
|
87
|
+
replacedGrantId?: GrantId;
|
|
88
|
+
/**
|
|
89
|
+
* Present exactly when `status` is `stored`: whether the member was attached at once to a connection the principal holds.
|
|
90
|
+
*/
|
|
91
|
+
attachedNow?: boolean;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
95
|
+
export type { DataIntegrityProof, Ext, GrantId, GrantStatement, MuxDataIntegrityProof, MuxDid, MuxScopeValue, StatementScope };
|
|
96
|
+
|
|
97
|
+
/** Trust Task type URI. */
|
|
98
|
+
export const TYPE_URI = "https://trusttasks.org/spec/messaging/mux/grant/0.1" as const;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* The earlier version of this specification that this one declares it
|
|
102
|
+
* extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
|
|
103
|
+
* `null`. Only the direct declaration — follow the chain with
|
|
104
|
+
* `extendsChain` / `readForSpec`.
|
|
105
|
+
*/
|
|
106
|
+
export const EXTENDS: string | null = null;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Why this version is deprecated, or `null` while it is current. A
|
|
110
|
+
* superseded or retired version is still supported, and is withdrawn from
|
|
111
|
+
* this package in a later scheduled batch (SPEC "Superseded and Withdrawn
|
|
112
|
+
* Versions").
|
|
113
|
+
*/
|
|
114
|
+
export const DEPRECATION: string | null = null;
|
|
115
|
+
|
|
116
|
+
/** Stable alias for this specification's request payload shape. */
|
|
117
|
+
export type Payload = MessagingMuxGrantPayload;
|
|
118
|
+
|
|
119
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
120
|
+
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/messaging/mux/grant/0.1#response" as const;
|
|
121
|
+
|
|
122
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
123
|
+
export type Response = MessagingMuxGrantResponsePayload;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This specification's payload schema, as a value.
|
|
127
|
+
*
|
|
128
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
129
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
130
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
131
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
132
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
133
|
+
*/
|
|
134
|
+
export const PAYLOAD_SCHEMA = {
|
|
135
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
136
|
+
"$id": "https://trusttasks.org/spec/messaging/mux/grant/0.1",
|
|
137
|
+
"title": "Messaging — Mux Grant — payload",
|
|
138
|
+
"description": "Store or replace grants: each a grant statement in which a member DID, with an embedded Data Integrity proof, delegates to a principal the carrying of its messages, under the member's current epoch and an explicit scope and expiry. The outer document members are owned by the framework — SPEC §6.3.",
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false,
|
|
141
|
+
"required": [
|
|
142
|
+
"grants"
|
|
143
|
+
],
|
|
144
|
+
"properties": {
|
|
145
|
+
"grants": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"minItems": 1,
|
|
148
|
+
"maxItems": 256,
|
|
149
|
+
"description": "The grant statements to store; the member DID is each statement's `issuer`. Each is checked and answered on its own; the batch is never all-or-nothing.",
|
|
150
|
+
"items": {
|
|
151
|
+
"$ref": "#/$defs/GrantStatement"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"ext": {
|
|
155
|
+
"$ref": "#/$defs/Ext",
|
|
156
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"$defs": {
|
|
160
|
+
"Response": {
|
|
161
|
+
"$anchor": "response",
|
|
162
|
+
"title": "Messaging — Mux Grant — response payload",
|
|
163
|
+
"description": "The success response to a messaging/mux/grant request: one outcome per submitted grant, in request order. Carried in a Trust Task document whose type is https://trusttasks.org/spec/messaging/mux/grant/0.1#response.",
|
|
164
|
+
"type": "object",
|
|
165
|
+
"additionalProperties": false,
|
|
166
|
+
"required": [
|
|
167
|
+
"results"
|
|
168
|
+
],
|
|
169
|
+
"properties": {
|
|
170
|
+
"results": {
|
|
171
|
+
"type": "array",
|
|
172
|
+
"maxItems": 256,
|
|
173
|
+
"items": {
|
|
174
|
+
"$ref": "#/$defs/GrantOutcome"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"ext": {
|
|
178
|
+
"$ref": "#/$defs/Ext",
|
|
179
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"GrantOutcome": {
|
|
184
|
+
"title": "GrantOutcome",
|
|
185
|
+
"type": "object",
|
|
186
|
+
"additionalProperties": false,
|
|
187
|
+
"required": [
|
|
188
|
+
"status",
|
|
189
|
+
"grantId",
|
|
190
|
+
"did",
|
|
191
|
+
"principal"
|
|
192
|
+
],
|
|
193
|
+
"description": "The outcome for one submitted grant.",
|
|
194
|
+
"properties": {
|
|
195
|
+
"status": {
|
|
196
|
+
"type": "string",
|
|
197
|
+
"enum": [
|
|
198
|
+
"stored",
|
|
199
|
+
"refused"
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
"grantId": {
|
|
203
|
+
"$ref": "#/$defs/GrantId",
|
|
204
|
+
"description": "The grant's identifier, from its statement."
|
|
205
|
+
},
|
|
206
|
+
"did": {
|
|
207
|
+
"$ref": "#/$defs/MuxDid",
|
|
208
|
+
"description": "The member DID: the statement's `issuer`."
|
|
209
|
+
},
|
|
210
|
+
"principal": {
|
|
211
|
+
"$ref": "#/$defs/MuxDid",
|
|
212
|
+
"description": "The principal DID, from the statement."
|
|
213
|
+
},
|
|
214
|
+
"code": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"enum": [
|
|
217
|
+
"messaging/mux:statementProofInvalid",
|
|
218
|
+
"messaging/mux:didUnresolvable",
|
|
219
|
+
"messaging/mux:proofPurposeInvalid",
|
|
220
|
+
"messaging/mux:audienceMismatch",
|
|
221
|
+
"messaging/mux:principalMismatch",
|
|
222
|
+
"messaging/mux:notYetValid",
|
|
223
|
+
"messaging/mux:statementExpired",
|
|
224
|
+
"messaging/mux:lifetimeTooLong",
|
|
225
|
+
"messaging/mux:emptyScope",
|
|
226
|
+
"messaging/mux:accountUnavailable",
|
|
227
|
+
"messaging/mux:scopeNotPermitted",
|
|
228
|
+
"messaging/mux/grant:epochMismatch",
|
|
229
|
+
"messaging/mux/grant:replayed",
|
|
230
|
+
"messaging/mux/grant:grantIdReused",
|
|
231
|
+
"messaging/mux/grant:didQuota",
|
|
232
|
+
"messaging/mux/grant:principalQuota",
|
|
233
|
+
"messaging/mux/grant:contended"
|
|
234
|
+
],
|
|
235
|
+
"description": "Present exactly when `status` is `refused`: the first check the grant failed, in the order the specification lists them."
|
|
236
|
+
},
|
|
237
|
+
"currentEpoch": {
|
|
238
|
+
"type": "integer",
|
|
239
|
+
"minimum": 0,
|
|
240
|
+
"description": "Present exactly when `code` is `messaging/mux/grant:epochMismatch`: the member DID's current epoch, under which the member re-signs."
|
|
241
|
+
},
|
|
242
|
+
"replayFloorAt": {
|
|
243
|
+
"type": "string",
|
|
244
|
+
"format": "date-time",
|
|
245
|
+
"description": "Present exactly when `code` is `messaging/mux/grant:replayed`: the instant a replacement grant's `iat` must be strictly later than — the principal's replay floor for this member, or the `iat` of the grant it would replace, whichever is later."
|
|
246
|
+
},
|
|
247
|
+
"replacedGrantId": {
|
|
248
|
+
"$ref": "#/$defs/GrantId",
|
|
249
|
+
"description": "Present when this grant replaced an earlier grant for the same member and principal, in whatever state that grant was. Replacing raises the principal's replay floor, so the replaced statement can never be stored again."
|
|
250
|
+
},
|
|
251
|
+
"attachedNow": {
|
|
252
|
+
"type": "boolean",
|
|
253
|
+
"description": "Present exactly when `status` is `stored`: whether the member was attached at once to a connection the principal holds."
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"GrantId": {
|
|
258
|
+
"title": "GrantId",
|
|
259
|
+
"type": "string",
|
|
260
|
+
"minLength": 1,
|
|
261
|
+
"maxLength": 128,
|
|
262
|
+
"pattern": "^[A-Za-z0-9._:-]+$",
|
|
263
|
+
"description": "A grant's identifier, chosen by the member DID's signer and carried in its grant statement; a UUID is RECOMMENDED. A mediator refuses a grant whose identifier is already on the member DID's record."
|
|
264
|
+
},
|
|
265
|
+
"MuxDid": {
|
|
266
|
+
"title": "MuxDid",
|
|
267
|
+
"type": "string",
|
|
268
|
+
"minLength": 7,
|
|
269
|
+
"maxLength": 2048,
|
|
270
|
+
"pattern": "^did:[a-z0-9]+:\\S+$",
|
|
271
|
+
"description": "A DID, carried verbatim and compared by exact string equality. Unlike the messaging family's `Vid`, never a hash: the mediator resolves it to verify a statement signed by it. For a member DID reached over TSP, the TSP VID is the DID itself."
|
|
272
|
+
},
|
|
273
|
+
"Ext": {
|
|
274
|
+
"title": "Ext",
|
|
275
|
+
"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.",
|
|
276
|
+
"type": "object",
|
|
277
|
+
"minProperties": 1,
|
|
278
|
+
"additionalProperties": true,
|
|
279
|
+
"propertyNames": {
|
|
280
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"GrantStatement": {
|
|
284
|
+
"title": "GrantStatement",
|
|
285
|
+
"type": "object",
|
|
286
|
+
"additionalProperties": false,
|
|
287
|
+
"required": [
|
|
288
|
+
"type",
|
|
289
|
+
"issuer",
|
|
290
|
+
"audience",
|
|
291
|
+
"grantId",
|
|
292
|
+
"principal",
|
|
293
|
+
"scope",
|
|
294
|
+
"epoch",
|
|
295
|
+
"iat",
|
|
296
|
+
"exp",
|
|
297
|
+
"proof"
|
|
298
|
+
],
|
|
299
|
+
"description": "A member DID's standing statement that the named principal may carry its traffic at this mediator, on any connection, until `exp`, within `scope`, under the member's current `epoch`. Signed by the member with an embedded Data Integrity proof whose purpose is `authentication`, and stored verbatim by the mediator as the only evidence of the delegation.",
|
|
300
|
+
"properties": {
|
|
301
|
+
"type": {
|
|
302
|
+
"type": "string",
|
|
303
|
+
"const": "muxGrant",
|
|
304
|
+
"description": "Always `muxGrant`; names the statement kind, so a statement of one kind is never accepted as another."
|
|
305
|
+
},
|
|
306
|
+
"issuer": {
|
|
307
|
+
"$ref": "#/$defs/MuxDid",
|
|
308
|
+
"description": "The member DID: the signer, and the DID the statement concerns."
|
|
309
|
+
},
|
|
310
|
+
"audience": {
|
|
311
|
+
"$ref": "#/$defs/MuxDid",
|
|
312
|
+
"description": "The mediator's DID. A statement names exactly one mediator and is refused by every other."
|
|
313
|
+
},
|
|
314
|
+
"grantId": {
|
|
315
|
+
"$ref": "#/$defs/GrantId"
|
|
316
|
+
},
|
|
317
|
+
"principal": {
|
|
318
|
+
"$ref": "#/$defs/MuxDid",
|
|
319
|
+
"description": "The principal DID that may carry the member's traffic. MUST differ from `issuer`."
|
|
320
|
+
},
|
|
321
|
+
"scope": {
|
|
322
|
+
"$ref": "#/$defs/StatementScope"
|
|
323
|
+
},
|
|
324
|
+
"epoch": {
|
|
325
|
+
"type": "integer",
|
|
326
|
+
"minimum": 0,
|
|
327
|
+
"description": "The member DID's current epoch at the mediator. Only messaging/mux/revoke-all advances it."
|
|
328
|
+
},
|
|
329
|
+
"iat": {
|
|
330
|
+
"type": "integer",
|
|
331
|
+
"minimum": 0,
|
|
332
|
+
"description": "JWT NumericDate (RFC 7519 §2), whole seconds since 1970-01-01T00:00:00Z UTC: when the statement was signed. MUST NOT be more than 60 seconds in the mediator's future."
|
|
333
|
+
},
|
|
334
|
+
"exp": {
|
|
335
|
+
"type": "integer",
|
|
336
|
+
"minimum": 0,
|
|
337
|
+
"description": "JWT NumericDate (RFC 7519 §2): when the statement stops being accepted. REQUIRED; MUST be after `iat` and in the future."
|
|
338
|
+
},
|
|
339
|
+
"proof": {
|
|
340
|
+
"$ref": "#/$defs/MuxDataIntegrityProof"
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
"MuxDataIntegrityProof": {
|
|
345
|
+
"title": "MuxDataIntegrityProof",
|
|
346
|
+
"type": "object",
|
|
347
|
+
"additionalProperties": false,
|
|
348
|
+
"required": [
|
|
349
|
+
"type",
|
|
350
|
+
"cryptosuite",
|
|
351
|
+
"verificationMethod",
|
|
352
|
+
"proofPurpose",
|
|
353
|
+
"proofValue"
|
|
354
|
+
],
|
|
355
|
+
"description": "The W3C Data Integrity proof embedded in a mux statement, made by the member DID: the format and verifier Trust Tasks already use for document proofs (SPEC §4.7). The proof covers the whole statement except `proof` itself, as the cryptosuite defines. Closed: a member Data Integrity defines but this list omits is refused.",
|
|
356
|
+
"properties": {
|
|
357
|
+
"type": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"const": "DataIntegrityProof"
|
|
360
|
+
},
|
|
361
|
+
"cryptosuite": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"enum": [
|
|
364
|
+
"eddsa-jcs-2022",
|
|
365
|
+
"eddsa-rdfc-2022"
|
|
366
|
+
],
|
|
367
|
+
"description": "The W3C Data Integrity EdDSA cryptosuite used."
|
|
368
|
+
},
|
|
369
|
+
"verificationMethod": {
|
|
370
|
+
"type": "string",
|
|
371
|
+
"minLength": 5,
|
|
372
|
+
"maxLength": 2048,
|
|
373
|
+
"pattern": "^did:\\S+#\\S+$",
|
|
374
|
+
"description": "The DID URL of the verification method that signed. MUST be controlled by the statement's `issuer` and listed in that DID's current `authentication` relationship."
|
|
375
|
+
},
|
|
376
|
+
"proofPurpose": {
|
|
377
|
+
"type": "string",
|
|
378
|
+
"minLength": 1,
|
|
379
|
+
"maxLength": 64,
|
|
380
|
+
"description": "MUST be `authentication`. Any other value is refused with `messaging/mux:proofPurposeInvalid` — a proof made for another relationship (an `assertionMethod` credential signature, say) is never accepted as control of the DID."
|
|
381
|
+
},
|
|
382
|
+
"created": {
|
|
383
|
+
"type": "string",
|
|
384
|
+
"format": "date-time",
|
|
385
|
+
"description": "OPTIONAL: when the proof was made, as Data Integrity defines it. Covered by the proof; the statement's own `iat` is what the mediator checks."
|
|
386
|
+
},
|
|
387
|
+
"proofValue": {
|
|
388
|
+
"type": "string",
|
|
389
|
+
"minLength": 2,
|
|
390
|
+
"maxLength": 4096,
|
|
391
|
+
"pattern": "^z[1-9A-HJ-NP-Za-km-z]+$",
|
|
392
|
+
"description": "The multibase (base58btc) signature."
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
"StatementScope": {
|
|
397
|
+
"title": "StatementScope",
|
|
398
|
+
"type": "array",
|
|
399
|
+
"maxItems": 16,
|
|
400
|
+
"items": {
|
|
401
|
+
"$ref": "#/$defs/MuxScopeValue"
|
|
402
|
+
},
|
|
403
|
+
"description": "The scope a member DID signs into a statement: a JSON array of MuxScopeValue, compared as a set — order is not significant and a repeated value collapses. It MUST NOT be empty; an empty signed scope is refused with the task's `emptyScope` code, never read as \"all\". Unlike MuxScope, emptiness is not a schema failure here, so that the refusal is reported per statement rather than failing the whole batch."
|
|
404
|
+
},
|
|
405
|
+
"MuxScopeValue": {
|
|
406
|
+
"title": "MuxScopeValue",
|
|
407
|
+
"type": "string",
|
|
408
|
+
"enum": [
|
|
409
|
+
"receive",
|
|
410
|
+
"pickup",
|
|
411
|
+
"delete",
|
|
412
|
+
"send"
|
|
413
|
+
],
|
|
414
|
+
"description": "One capability a member DID extends to a principal's connection. `receive`: live delivery of the member's inbound messages on the connection. `pickup`: message-pickup status and delivery requests naming the member as `recipient_did`, and inclusion in a raw-TSP inbox drain. `delete`: deleting the member's stored messages, including delete-on-ack and delete-on-send; a member without `delete` keeps its messages in its inbox until something holding `delete` collects them. `send`: the mediator accepts on this connection frames whose sender is the member DID — the frame is still signed or authcrypted with the member's own keys; the scope only lets the mediator accept it on this socket."
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
} as const;
|
|
418
|
+
|
|
419
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
420
|
+
export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
421
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
422
|
+
"$ref": "#/$defs/Response",
|
|
423
|
+
"$defs": {
|
|
424
|
+
"Response": {
|
|
425
|
+
"$anchor": "response",
|
|
426
|
+
"title": "Messaging — Mux Grant — response payload",
|
|
427
|
+
"description": "The success response to a messaging/mux/grant request: one outcome per submitted grant, in request order. Carried in a Trust Task document whose type is https://trusttasks.org/spec/messaging/mux/grant/0.1#response.",
|
|
428
|
+
"type": "object",
|
|
429
|
+
"additionalProperties": false,
|
|
430
|
+
"required": [
|
|
431
|
+
"results"
|
|
432
|
+
],
|
|
433
|
+
"properties": {
|
|
434
|
+
"results": {
|
|
435
|
+
"type": "array",
|
|
436
|
+
"maxItems": 256,
|
|
437
|
+
"items": {
|
|
438
|
+
"$ref": "#/$defs/GrantOutcome"
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
"ext": {
|
|
442
|
+
"$ref": "#/$defs/Ext",
|
|
443
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1."
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
"GrantOutcome": {
|
|
448
|
+
"title": "GrantOutcome",
|
|
449
|
+
"type": "object",
|
|
450
|
+
"additionalProperties": false,
|
|
451
|
+
"required": [
|
|
452
|
+
"status",
|
|
453
|
+
"grantId",
|
|
454
|
+
"did",
|
|
455
|
+
"principal"
|
|
456
|
+
],
|
|
457
|
+
"description": "The outcome for one submitted grant.",
|
|
458
|
+
"properties": {
|
|
459
|
+
"status": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"enum": [
|
|
462
|
+
"stored",
|
|
463
|
+
"refused"
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
"grantId": {
|
|
467
|
+
"$ref": "#/$defs/GrantId",
|
|
468
|
+
"description": "The grant's identifier, from its statement."
|
|
469
|
+
},
|
|
470
|
+
"did": {
|
|
471
|
+
"$ref": "#/$defs/MuxDid",
|
|
472
|
+
"description": "The member DID: the statement's `issuer`."
|
|
473
|
+
},
|
|
474
|
+
"principal": {
|
|
475
|
+
"$ref": "#/$defs/MuxDid",
|
|
476
|
+
"description": "The principal DID, from the statement."
|
|
477
|
+
},
|
|
478
|
+
"code": {
|
|
479
|
+
"type": "string",
|
|
480
|
+
"enum": [
|
|
481
|
+
"messaging/mux:statementProofInvalid",
|
|
482
|
+
"messaging/mux:didUnresolvable",
|
|
483
|
+
"messaging/mux:proofPurposeInvalid",
|
|
484
|
+
"messaging/mux:audienceMismatch",
|
|
485
|
+
"messaging/mux:principalMismatch",
|
|
486
|
+
"messaging/mux:notYetValid",
|
|
487
|
+
"messaging/mux:statementExpired",
|
|
488
|
+
"messaging/mux:lifetimeTooLong",
|
|
489
|
+
"messaging/mux:emptyScope",
|
|
490
|
+
"messaging/mux:accountUnavailable",
|
|
491
|
+
"messaging/mux:scopeNotPermitted",
|
|
492
|
+
"messaging/mux/grant:epochMismatch",
|
|
493
|
+
"messaging/mux/grant:replayed",
|
|
494
|
+
"messaging/mux/grant:grantIdReused",
|
|
495
|
+
"messaging/mux/grant:didQuota",
|
|
496
|
+
"messaging/mux/grant:principalQuota",
|
|
497
|
+
"messaging/mux/grant:contended"
|
|
498
|
+
],
|
|
499
|
+
"description": "Present exactly when `status` is `refused`: the first check the grant failed, in the order the specification lists them."
|
|
500
|
+
},
|
|
501
|
+
"currentEpoch": {
|
|
502
|
+
"type": "integer",
|
|
503
|
+
"minimum": 0,
|
|
504
|
+
"description": "Present exactly when `code` is `messaging/mux/grant:epochMismatch`: the member DID's current epoch, under which the member re-signs."
|
|
505
|
+
},
|
|
506
|
+
"replayFloorAt": {
|
|
507
|
+
"type": "string",
|
|
508
|
+
"format": "date-time",
|
|
509
|
+
"description": "Present exactly when `code` is `messaging/mux/grant:replayed`: the instant a replacement grant's `iat` must be strictly later than — the principal's replay floor for this member, or the `iat` of the grant it would replace, whichever is later."
|
|
510
|
+
},
|
|
511
|
+
"replacedGrantId": {
|
|
512
|
+
"$ref": "#/$defs/GrantId",
|
|
513
|
+
"description": "Present when this grant replaced an earlier grant for the same member and principal, in whatever state that grant was. Replacing raises the principal's replay floor, so the replaced statement can never be stored again."
|
|
514
|
+
},
|
|
515
|
+
"attachedNow": {
|
|
516
|
+
"type": "boolean",
|
|
517
|
+
"description": "Present exactly when `status` is `stored`: whether the member was attached at once to a connection the principal holds."
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
"GrantId": {
|
|
522
|
+
"title": "GrantId",
|
|
523
|
+
"type": "string",
|
|
524
|
+
"minLength": 1,
|
|
525
|
+
"maxLength": 128,
|
|
526
|
+
"pattern": "^[A-Za-z0-9._:-]+$",
|
|
527
|
+
"description": "A grant's identifier, chosen by the member DID's signer and carried in its grant statement; a UUID is RECOMMENDED. A mediator refuses a grant whose identifier is already on the member DID's record."
|
|
528
|
+
},
|
|
529
|
+
"MuxDid": {
|
|
530
|
+
"title": "MuxDid",
|
|
531
|
+
"type": "string",
|
|
532
|
+
"minLength": 7,
|
|
533
|
+
"maxLength": 2048,
|
|
534
|
+
"pattern": "^did:[a-z0-9]+:\\S+$",
|
|
535
|
+
"description": "A DID, carried verbatim and compared by exact string equality. Unlike the messaging family's `Vid`, never a hash: the mediator resolves it to verify a statement signed by it. For a member DID reached over TSP, the TSP VID is the DID itself."
|
|
536
|
+
},
|
|
537
|
+
"Ext": {
|
|
538
|
+
"title": "Ext",
|
|
539
|
+
"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.",
|
|
540
|
+
"type": "object",
|
|
541
|
+
"minProperties": 1,
|
|
542
|
+
"additionalProperties": true,
|
|
543
|
+
"propertyNames": {
|
|
544
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
"GrantStatement": {
|
|
548
|
+
"title": "GrantStatement",
|
|
549
|
+
"type": "object",
|
|
550
|
+
"additionalProperties": false,
|
|
551
|
+
"required": [
|
|
552
|
+
"type",
|
|
553
|
+
"issuer",
|
|
554
|
+
"audience",
|
|
555
|
+
"grantId",
|
|
556
|
+
"principal",
|
|
557
|
+
"scope",
|
|
558
|
+
"epoch",
|
|
559
|
+
"iat",
|
|
560
|
+
"exp",
|
|
561
|
+
"proof"
|
|
562
|
+
],
|
|
563
|
+
"description": "A member DID's standing statement that the named principal may carry its traffic at this mediator, on any connection, until `exp`, within `scope`, under the member's current `epoch`. Signed by the member with an embedded Data Integrity proof whose purpose is `authentication`, and stored verbatim by the mediator as the only evidence of the delegation.",
|
|
564
|
+
"properties": {
|
|
565
|
+
"type": {
|
|
566
|
+
"type": "string",
|
|
567
|
+
"const": "muxGrant",
|
|
568
|
+
"description": "Always `muxGrant`; names the statement kind, so a statement of one kind is never accepted as another."
|
|
569
|
+
},
|
|
570
|
+
"issuer": {
|
|
571
|
+
"$ref": "#/$defs/MuxDid",
|
|
572
|
+
"description": "The member DID: the signer, and the DID the statement concerns."
|
|
573
|
+
},
|
|
574
|
+
"audience": {
|
|
575
|
+
"$ref": "#/$defs/MuxDid",
|
|
576
|
+
"description": "The mediator's DID. A statement names exactly one mediator and is refused by every other."
|
|
577
|
+
},
|
|
578
|
+
"grantId": {
|
|
579
|
+
"$ref": "#/$defs/GrantId"
|
|
580
|
+
},
|
|
581
|
+
"principal": {
|
|
582
|
+
"$ref": "#/$defs/MuxDid",
|
|
583
|
+
"description": "The principal DID that may carry the member's traffic. MUST differ from `issuer`."
|
|
584
|
+
},
|
|
585
|
+
"scope": {
|
|
586
|
+
"$ref": "#/$defs/StatementScope"
|
|
587
|
+
},
|
|
588
|
+
"epoch": {
|
|
589
|
+
"type": "integer",
|
|
590
|
+
"minimum": 0,
|
|
591
|
+
"description": "The member DID's current epoch at the mediator. Only messaging/mux/revoke-all advances it."
|
|
592
|
+
},
|
|
593
|
+
"iat": {
|
|
594
|
+
"type": "integer",
|
|
595
|
+
"minimum": 0,
|
|
596
|
+
"description": "JWT NumericDate (RFC 7519 §2), whole seconds since 1970-01-01T00:00:00Z UTC: when the statement was signed. MUST NOT be more than 60 seconds in the mediator's future."
|
|
597
|
+
},
|
|
598
|
+
"exp": {
|
|
599
|
+
"type": "integer",
|
|
600
|
+
"minimum": 0,
|
|
601
|
+
"description": "JWT NumericDate (RFC 7519 §2): when the statement stops being accepted. REQUIRED; MUST be after `iat` and in the future."
|
|
602
|
+
},
|
|
603
|
+
"proof": {
|
|
604
|
+
"$ref": "#/$defs/MuxDataIntegrityProof"
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
"MuxDataIntegrityProof": {
|
|
609
|
+
"title": "MuxDataIntegrityProof",
|
|
610
|
+
"type": "object",
|
|
611
|
+
"additionalProperties": false,
|
|
612
|
+
"required": [
|
|
613
|
+
"type",
|
|
614
|
+
"cryptosuite",
|
|
615
|
+
"verificationMethod",
|
|
616
|
+
"proofPurpose",
|
|
617
|
+
"proofValue"
|
|
618
|
+
],
|
|
619
|
+
"description": "The W3C Data Integrity proof embedded in a mux statement, made by the member DID: the format and verifier Trust Tasks already use for document proofs (SPEC §4.7). The proof covers the whole statement except `proof` itself, as the cryptosuite defines. Closed: a member Data Integrity defines but this list omits is refused.",
|
|
620
|
+
"properties": {
|
|
621
|
+
"type": {
|
|
622
|
+
"type": "string",
|
|
623
|
+
"const": "DataIntegrityProof"
|
|
624
|
+
},
|
|
625
|
+
"cryptosuite": {
|
|
626
|
+
"type": "string",
|
|
627
|
+
"enum": [
|
|
628
|
+
"eddsa-jcs-2022",
|
|
629
|
+
"eddsa-rdfc-2022"
|
|
630
|
+
],
|
|
631
|
+
"description": "The W3C Data Integrity EdDSA cryptosuite used."
|
|
632
|
+
},
|
|
633
|
+
"verificationMethod": {
|
|
634
|
+
"type": "string",
|
|
635
|
+
"minLength": 5,
|
|
636
|
+
"maxLength": 2048,
|
|
637
|
+
"pattern": "^did:\\S+#\\S+$",
|
|
638
|
+
"description": "The DID URL of the verification method that signed. MUST be controlled by the statement's `issuer` and listed in that DID's current `authentication` relationship."
|
|
639
|
+
},
|
|
640
|
+
"proofPurpose": {
|
|
641
|
+
"type": "string",
|
|
642
|
+
"minLength": 1,
|
|
643
|
+
"maxLength": 64,
|
|
644
|
+
"description": "MUST be `authentication`. Any other value is refused with `messaging/mux:proofPurposeInvalid` — a proof made for another relationship (an `assertionMethod` credential signature, say) is never accepted as control of the DID."
|
|
645
|
+
},
|
|
646
|
+
"created": {
|
|
647
|
+
"type": "string",
|
|
648
|
+
"format": "date-time",
|
|
649
|
+
"description": "OPTIONAL: when the proof was made, as Data Integrity defines it. Covered by the proof; the statement's own `iat` is what the mediator checks."
|
|
650
|
+
},
|
|
651
|
+
"proofValue": {
|
|
652
|
+
"type": "string",
|
|
653
|
+
"minLength": 2,
|
|
654
|
+
"maxLength": 4096,
|
|
655
|
+
"pattern": "^z[1-9A-HJ-NP-Za-km-z]+$",
|
|
656
|
+
"description": "The multibase (base58btc) signature."
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
"StatementScope": {
|
|
661
|
+
"title": "StatementScope",
|
|
662
|
+
"type": "array",
|
|
663
|
+
"maxItems": 16,
|
|
664
|
+
"items": {
|
|
665
|
+
"$ref": "#/$defs/MuxScopeValue"
|
|
666
|
+
},
|
|
667
|
+
"description": "The scope a member DID signs into a statement: a JSON array of MuxScopeValue, compared as a set — order is not significant and a repeated value collapses. It MUST NOT be empty; an empty signed scope is refused with the task's `emptyScope` code, never read as \"all\". Unlike MuxScope, emptiness is not a schema failure here, so that the refusal is reported per statement rather than failing the whole batch."
|
|
668
|
+
},
|
|
669
|
+
"MuxScopeValue": {
|
|
670
|
+
"title": "MuxScopeValue",
|
|
671
|
+
"type": "string",
|
|
672
|
+
"enum": [
|
|
673
|
+
"receive",
|
|
674
|
+
"pickup",
|
|
675
|
+
"delete",
|
|
676
|
+
"send"
|
|
677
|
+
],
|
|
678
|
+
"description": "One capability a member DID extends to a principal's connection. `receive`: live delivery of the member's inbound messages on the connection. `pickup`: message-pickup status and delivery requests naming the member as `recipient_did`, and inclusion in a raw-TSP inbox drain. `delete`: deleting the member's stored messages, including delete-on-ack and delete-on-send; a member without `delete` keeps its messages in its inbox until something holding `delete` collects them. `send`: the mediator accepts on this connection frames whose sender is the member DID — the frame is still signed or authcrypted with the member's own keys; the scope only lets the mediator accept it on this socket."
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
} as const;
|
|
682
|
+
|
|
683
|
+
/**
|
|
684
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
685
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
686
|
+
* per-specification and cannot be derived from the document alone, and
|
|
687
|
+
* item 2 needs the schema this carries.
|
|
688
|
+
*/
|
|
689
|
+
export const SPEC = {
|
|
690
|
+
typeUri: TYPE_URI,
|
|
691
|
+
isBearer: false,
|
|
692
|
+
isProofRequired: true,
|
|
693
|
+
isRecipientRequired: true,
|
|
694
|
+
isIssuedAtRequired: true,
|
|
695
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
696
|
+
} as const;
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
700
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
701
|
+
* parties (§7.3 item 5).
|
|
702
|
+
*/
|
|
703
|
+
export const RESPONSE_SPEC = {
|
|
704
|
+
typeUri: RESPONSE_TYPE_URI,
|
|
705
|
+
isBearer: false,
|
|
706
|
+
isProofRequired: false,
|
|
707
|
+
isRecipientRequired: true,
|
|
708
|
+
isIssuedAtRequired: true,
|
|
709
|
+
payloadSchema: RESPONSE_PAYLOAD_SCHEMA,
|
|
710
|
+
} as const;
|