@tdxvolt/volt-client-grpc 0.16.0-beta.10 → 0.16.0-beta.13
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/README.md +1 -1
- package/lib/index.cjs +431 -455
- package/package.json +2 -4
- package/protobuf/tdx/volt_api/data/v1/sqlite_database_api.proto +49 -13
- package/protobuf/tdx/volt_api/data/v1/sqlite_server_api.proto +3 -0
- package/protobuf/tdx/volt_api/volt/v1/discovery_api.proto +0 -4
- package/protobuf/tdx/volt_api/volt/v1/ssi.proto +31 -5
- package/protobuf/tdx/volt_api/volt/v1/ssi_api.proto +119 -31
- package/protobuf/tdx/volt_api/volt/v1/terminal_api.proto +42 -0
- package/protobuf/tdx/volt_api/volt/v1/volt.proto +146 -139
- package/protobuf/tdx/volt_api/volt/v1/volt_api.proto +165 -270
- package/src/constants.js +3 -5
- package/src/grpc-call.js +142 -51
- package/src/grpc-utils.js +8 -4
- package/src/rpc-invocation.js +94 -46
- package/src/utils.js +5 -119
- package/src/volt-client-internal.js +106 -73
- package/src/volt-client.js +33 -12
- package/src/volt-connection.js +22 -12
- package/src/volt-credential.js +37 -124
|
@@ -8,18 +8,16 @@ import "tdx/volt_api/volt/v1/ssi.proto";
|
|
|
8
8
|
import "tdx/volt_api/volt/v1/volt.proto";
|
|
9
9
|
|
|
10
10
|
// The top-level volt management service.
|
|
11
|
-
// With the exception of `
|
|
12
|
-
// A client certificate can be obtained from the `
|
|
11
|
+
// With the exception of `Authenticate`, all RPCs on this service must submit either a valid client certificate signed by the volt CA, or a signed JWT.
|
|
12
|
+
// A client certificate can be obtained from the `Authenticate` method.
|
|
13
13
|
// All methods include a `tdx.volt_api.volt.v1.Status` in the response. If the status contains a non-OK error code the client should assume the remainder of the message is invalid, unless otherwise indicated in the response documentation.
|
|
14
14
|
service VoltAPI {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Issues a request to bind to the volt.
|
|
18
|
-
// All clients must successfully bind to the Volt in order to gain any kind of access.
|
|
15
|
+
// Issues a request to authenticate on the volt.
|
|
16
|
+
// All clients must successfully authenticate in order to gain any kind of access.
|
|
19
17
|
// A client certificate is optional for this RPC, if omitted a JWT must be provided in the call metadata.
|
|
20
|
-
// If the client plans to register one or more services with the Volt, it should use the 'host' field of the request so that the returned certificate has the appropriate SAN extension in place. Note that if the client IP address changes it will be necessary to re-
|
|
21
|
-
// If the
|
|
22
|
-
rpc
|
|
18
|
+
// If the client plans to register one or more services with the Volt, it should use the 'host' field of the request so that the returned certificate has the appropriate SAN extension in place. Note that if the client IP address changes it will be necessary to re-authenticate the client and obtain a new certificate.
|
|
19
|
+
// If the authenticate decision is 'permit', the response contains various details that should be persisted by the client, including the unique identifier assigned by the Volt and a signed client certificate along with the Volt CA certificate.
|
|
20
|
+
rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse);
|
|
23
21
|
|
|
24
22
|
// Determine if an identity can perform a specific action on a resource.
|
|
25
23
|
// Third party services can use this to interrogate the Volt policy and determine if a client has permission to perform a certain action on a resource.
|
|
@@ -39,9 +37,6 @@ service VoltAPI {
|
|
|
39
37
|
// n.b. Copy resources between Volts is not supported by this API. This is achieved by creating an API instance for the source and target Volts, getting the resource from the source and creating it on the target.
|
|
40
38
|
rpc CopyResource(CopyResourceRequest) returns (CopyResourceResponse);
|
|
41
39
|
|
|
42
|
-
// This is a work in progress - do not use.
|
|
43
|
-
rpc CreateVerifiableCredentialSession(CreateVerifiableCredentialSessionRequest) returns (CreateVerifiableCredentialSessionResponse);
|
|
44
|
-
|
|
45
40
|
// Remove a custom access rule, such as a file share.
|
|
46
41
|
rpc DeleteAccess(DeleteAccessRequest) returns (DeleteAccessResponse);
|
|
47
42
|
|
|
@@ -57,10 +52,6 @@ service VoltAPI {
|
|
|
57
52
|
// If the authenticated identity is the Volt root, all rules will be retrieved that match the criteria.
|
|
58
53
|
rpc GetAccess(GetAccessRequest) returns (GetAccessResponse);
|
|
59
54
|
|
|
60
|
-
// Get the bindings for this volt.
|
|
61
|
-
// This is a privileged API call and requires Volt root access.
|
|
62
|
-
rpc GetBindings(GetBindingsRequest) returns (GetBindingsResponse);
|
|
63
|
-
|
|
64
55
|
// Retrieve identities matching the given criteria.
|
|
65
56
|
// Only identities that the authenticated identity has read access to will be retrieved.
|
|
66
57
|
rpc GetIdentities(GetIdentitiesRequest) returns (GetIdentitiesResponse);
|
|
@@ -69,9 +60,8 @@ service VoltAPI {
|
|
|
69
60
|
// The identity will only be retrieved if the authenticated identity has read access to it.
|
|
70
61
|
rpc GetIdentity(GetIdentityRequest) returns (GetIdentityResponse);
|
|
71
62
|
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
rpc GetIdentityToken(GetIdentityTokenRequest) returns (GetIdentityTokenResponse);
|
|
63
|
+
// Gets a one-time token that can be used as a temporary authentication token, for example create an file download link that expires after a certain time.
|
|
64
|
+
rpc GetOneTimeToken(GetOneTimeTokenRequest) returns (GetOneTimeTokenResponse);
|
|
75
65
|
|
|
76
66
|
// Retrieve the Volt parameters.
|
|
77
67
|
// This is a privileged API call and requires Volt root access.
|
|
@@ -93,8 +83,8 @@ service VoltAPI {
|
|
|
93
83
|
// Get descendants of a resource.
|
|
94
84
|
rpc GetResourceDescendants(GetResourceDescendantsRequest) returns (GetResourceDescendantsResponse);
|
|
95
85
|
|
|
96
|
-
// Get
|
|
97
|
-
rpc
|
|
86
|
+
// Get sessions.
|
|
87
|
+
rpc GetSessions(GetSessionsRequest) returns (GetSessionsResponse);
|
|
98
88
|
|
|
99
89
|
// Invoke a method.
|
|
100
90
|
// This is primarily for use by Relay connections when proxying invocations.
|
|
@@ -110,11 +100,18 @@ service VoltAPI {
|
|
|
110
100
|
// Create or update an access rule.
|
|
111
101
|
rpc SaveAccess(SaveAccessRequest) returns (SaveAccessResponse);
|
|
112
102
|
|
|
113
|
-
|
|
103
|
+
// Create or update a static file HTTP server.
|
|
104
|
+
rpc SaveHttpFileServer(SaveResourceRequest) returns (SaveResourceResponse);
|
|
105
|
+
|
|
106
|
+
// Create or update an HTTP REST API server.
|
|
107
|
+
rpc SaveHttpApiServer(SaveResourceRequest) returns (SaveResourceResponse);
|
|
114
108
|
|
|
115
109
|
// Create or update an identity.
|
|
116
110
|
rpc SaveIdentity(SaveIdentityRequest) returns (SaveIdentityResponse);
|
|
117
111
|
|
|
112
|
+
// Create or update a mirrored link resource.
|
|
113
|
+
rpc SaveMirroredLink(SaveResourceRequest) returns (SaveResourceResponse);
|
|
114
|
+
|
|
118
115
|
// Update Volt parameters.
|
|
119
116
|
// This is a privileged call that requires Volt root access.
|
|
120
117
|
rpc SaveParameters(SaveParametersRequest) returns (SaveParametersResponse);
|
|
@@ -122,6 +119,9 @@ service VoltAPI {
|
|
|
122
119
|
// Create or update resource in this volt.
|
|
123
120
|
rpc SaveResource(SaveResourceRequest) returns (SaveResourceResponse);
|
|
124
121
|
|
|
122
|
+
// Create or update a symbolic link resource.
|
|
123
|
+
rpc SaveSymbolicLink(SaveResourceRequest) returns (SaveResourceResponse);
|
|
124
|
+
|
|
125
125
|
// Save a session.
|
|
126
126
|
rpc SaveSession(SaveSessionRequest) returns (SaveSessionResponse);
|
|
127
127
|
|
|
@@ -129,10 +129,6 @@ service VoltAPI {
|
|
|
129
129
|
// This is a privileged call that requires Volt root access.
|
|
130
130
|
rpc SetAccessRequestDecision(SetAccessRequestDecisionRequest) returns (SetAccessRequestDecisionResponse);
|
|
131
131
|
|
|
132
|
-
// Set Volt binding decision.
|
|
133
|
-
// This is a privileged call that requires Volt root access.
|
|
134
|
-
rpc SetBindingDecision(SetBindingDecisionRequest) returns (SetBindingDecisionResponse);
|
|
135
|
-
|
|
136
132
|
rpc SetPolicy(SetPolicyRequest) returns (SetPolicyResponse);
|
|
137
133
|
|
|
138
134
|
// Set the status of a Volt service.
|
|
@@ -146,45 +142,50 @@ service VoltAPI {
|
|
|
146
142
|
rpc SignVerify(SignVerifyRequest) returns (SignVerifyResponse);
|
|
147
143
|
}
|
|
148
144
|
|
|
149
|
-
// Describes a request to
|
|
145
|
+
// Describes a request to authenticate on a Volt.
|
|
146
|
+
// Present one of the `public_key`, `did_public_key`, `did`, or `did_document` fields.
|
|
150
147
|
message AuthenticateRequest {
|
|
151
148
|
|
|
152
149
|
oneof client_identifier {
|
|
150
|
+
// The client public key in PEM format. The Volt will create a session that is bound to this public key.
|
|
151
|
+
string public_key = 1;
|
|
152
|
+
|
|
153
|
+
// The client public key - must be in PEM format. If the client DID is lost or unknown for some reason, providing the public key here will allow the Volt to match it with the previously registered DID.
|
|
154
|
+
// Note this is only valid when a DID has previously been registered using this public key.
|
|
155
|
+
string did_public_key = 2;
|
|
156
|
+
|
|
153
157
|
// An existing DID owned by the client.
|
|
154
|
-
// The JWT presented with the
|
|
155
|
-
string did =
|
|
158
|
+
// The JWT presented with the authenticate call must be signed by the private key corresponding to this DID.
|
|
159
|
+
string did = 3;
|
|
156
160
|
|
|
157
161
|
// If the client doesn't have an existing DID, a DID document can be provided here.
|
|
158
|
-
// The document must include a proof that the client owns the public key given in `public_key`.
|
|
159
162
|
// The Volt will register the DID on behalf of the client.
|
|
160
|
-
// The JWT presented with the
|
|
161
|
-
string did_document =
|
|
162
|
-
|
|
163
|
-
// The client public key - must be in PEM format. If the client DID is lost or unknown for some reason, providing the public key here will allow the Volt to match it with the previously registered DID.
|
|
164
|
-
// Note this is only valid when a DID has previously been registered using this public key.
|
|
165
|
-
string public_key = 3;
|
|
163
|
+
// The JWT presented with the authenticate call must be signed by the private key corresponding to this document.
|
|
164
|
+
string did_document = 4;
|
|
166
165
|
}
|
|
167
166
|
|
|
168
167
|
// A base64-encoded signature of the DID document, only required if `did_document` is provided above.
|
|
169
|
-
string did_document_signature =
|
|
168
|
+
string did_document_signature = 5;
|
|
170
169
|
|
|
171
|
-
// A human-readable name of the entity requesting to
|
|
172
|
-
string
|
|
170
|
+
// A human-readable name of the entity requesting to authenticate.
|
|
171
|
+
string client_name = 6;
|
|
173
172
|
|
|
174
173
|
// The volt challenge code, signed by the private key component of the `public_key` field above, and base64 encoded.
|
|
175
174
|
// This is optional.
|
|
176
|
-
string challenge =
|
|
175
|
+
string challenge = 7;
|
|
177
176
|
|
|
178
177
|
// The host name to add as a SAN to the issued certificate.
|
|
179
178
|
// This is optional, if you don't intend to host services with the certificate this can be omitted.
|
|
180
|
-
string host =
|
|
179
|
+
string host = 8;
|
|
181
180
|
|
|
182
181
|
// Optional verifiable credentials describing the client.
|
|
183
|
-
|
|
184
|
-
repeated VerifiablePresentation verifiable_presentation = 8;
|
|
182
|
+
repeated VerifiablePresentation verifiable_presentation = 9;
|
|
185
183
|
|
|
186
184
|
// Reserved for internal use.
|
|
187
|
-
bool purge_aliases =
|
|
185
|
+
bool purge_aliases = 10;
|
|
186
|
+
|
|
187
|
+
// Optional additional name to differentiate between multiple sessions for a given client.
|
|
188
|
+
string session_name = 11;
|
|
188
189
|
}
|
|
189
190
|
|
|
190
191
|
message AuthenticateResponse {
|
|
@@ -193,18 +194,17 @@ message AuthenticateResponse {
|
|
|
193
194
|
|
|
194
195
|
string session_id = 2;
|
|
195
196
|
|
|
196
|
-
// The identity id assigned to this
|
|
197
|
-
|
|
198
|
-
string identity_id = 3;
|
|
197
|
+
// The identity id assigned to this authentication.
|
|
198
|
+
string identity_did = 3;
|
|
199
199
|
|
|
200
200
|
// A certificate issued by the volt CA, binding the request public key to the identity.
|
|
201
|
-
// Only valid for PERMIT
|
|
201
|
+
// Only valid for PERMIT authenticate decisions.
|
|
202
202
|
string cert = 4;
|
|
203
203
|
|
|
204
204
|
// The volt CA chain. This is used by the client in subsequent API calls to secure the connection.
|
|
205
205
|
string chain = 5;
|
|
206
206
|
|
|
207
|
-
// The
|
|
207
|
+
// The authenticate decision.
|
|
208
208
|
PolicyDecision decision = 6;
|
|
209
209
|
|
|
210
210
|
// Reserved for internal use.
|
|
@@ -214,72 +214,6 @@ message AuthenticateResponse {
|
|
|
214
214
|
int64 decision_time = 8;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
// Describes a request to bind to a volt.
|
|
218
|
-
message BindRequest {
|
|
219
|
-
|
|
220
|
-
oneof client_identifier {
|
|
221
|
-
// An existing DID owned by the client.
|
|
222
|
-
// The JWT presented with the Bind call must be signed by the private key corresponding to this DID.
|
|
223
|
-
string did = 1;
|
|
224
|
-
|
|
225
|
-
// If the client doesn't have an existing DID, a DID document can be provided here.
|
|
226
|
-
// The document must include a proof that the client owns the public key given in `public_key`.
|
|
227
|
-
// The Volt will register the DID on behalf of the client.
|
|
228
|
-
// The JWT presented with the Bind call must be signed by the private key corresponding to this document.
|
|
229
|
-
string did_document = 2;
|
|
230
|
-
|
|
231
|
-
// The client public key - must be in PEM format. If the client DID is lost or unknown for some reason, providing the public key here will allow the Volt to match it with the previously registered DID.
|
|
232
|
-
// Note this is only valid when a DID has previously been registered using this public key.
|
|
233
|
-
string public_key = 3;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// A base64-encoded signature of the DID document, only required if `did_document` is provided above.
|
|
237
|
-
string did_document_signature = 4;
|
|
238
|
-
|
|
239
|
-
// A human-readable name of the entity requesting to bind.
|
|
240
|
-
string binding_name = 5;
|
|
241
|
-
|
|
242
|
-
// The volt challenge code, signed by the private key component of the `public_key` field above, and base64 encoded.
|
|
243
|
-
// This is optional.
|
|
244
|
-
string challenge = 6;
|
|
245
|
-
|
|
246
|
-
// The host name to add as a SAN to the issued certificate.
|
|
247
|
-
// This is optional, if you don't intend to host services with the certificate this can be omitted.
|
|
248
|
-
string host = 7;
|
|
249
|
-
|
|
250
|
-
// Optional verifiable credentials describing the client.
|
|
251
|
-
// This is a work in progress.
|
|
252
|
-
repeated VerifiablePresentation verifiable_presentation = 8;
|
|
253
|
-
|
|
254
|
-
// Reserved for internal use.
|
|
255
|
-
bool purge_aliases = 9;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
message BindResponse {
|
|
259
|
-
// Details of any error that occurred on the call.
|
|
260
|
-
tdx.volt_api.volt.v1.Status status = 1;
|
|
261
|
-
|
|
262
|
-
// The identity id assigned to this binding.
|
|
263
|
-
// Only valid for PERMIT bind decisions.
|
|
264
|
-
string identity_id = 2;
|
|
265
|
-
|
|
266
|
-
// A certificate issued by the volt CA, binding the request public key to the identity.
|
|
267
|
-
// Only valid for PERMIT bind decisions.
|
|
268
|
-
string cert = 3;
|
|
269
|
-
|
|
270
|
-
// The volt CA chain. This is used by the client in subsequent API calls to secure the connection.
|
|
271
|
-
string chain = 4;
|
|
272
|
-
|
|
273
|
-
// The bind decision.
|
|
274
|
-
PolicyDecision decision = 5;
|
|
275
|
-
|
|
276
|
-
// Reserved for internal use.
|
|
277
|
-
int64 request_time = 6;
|
|
278
|
-
|
|
279
|
-
// Reserved for internal use.
|
|
280
|
-
int64 decision_time = 7;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
217
|
message CanAccessResourceRequest {
|
|
284
218
|
oneof subject {
|
|
285
219
|
// The subject of the access request.
|
|
@@ -303,10 +237,7 @@ message CanAccessResourceResponse {
|
|
|
303
237
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
304
238
|
|
|
305
239
|
// The identity subject that the access relates to.
|
|
306
|
-
string
|
|
307
|
-
|
|
308
|
-
// Optional identity that issued the access.
|
|
309
|
-
string issuer_id = 3;
|
|
240
|
+
string identity_did = 2;
|
|
310
241
|
|
|
311
242
|
// The resource the access relates to.
|
|
312
243
|
string resource_id = 4;
|
|
@@ -333,79 +264,63 @@ message CheckCompatibilityResponse {
|
|
|
333
264
|
|
|
334
265
|
// All fields in this message are optional, send an empty message if necessary.
|
|
335
266
|
message ConnectHello {
|
|
336
|
-
// Optionally specify the
|
|
337
|
-
// Not currently in use.
|
|
267
|
+
// Optionally specify the grpc server address of the client. Only used if the client is a Volt (or service).
|
|
338
268
|
string address = 1;
|
|
339
269
|
|
|
340
270
|
// Set to automatically make **all** services owned by the calling identity online.
|
|
341
|
-
bool online_services =
|
|
271
|
+
bool online_services = 3;
|
|
342
272
|
|
|
343
273
|
// Set to receive notification of resource events.
|
|
344
|
-
bool subscribe_resource_events =
|
|
274
|
+
bool subscribe_resource_events = 4;
|
|
345
275
|
|
|
346
|
-
// Set this to
|
|
347
|
-
// This indicates that
|
|
348
|
-
//
|
|
349
|
-
string relay_id =
|
|
276
|
+
// Set this if you are connecting to a relay, i.e. the Volt you are sending to this message is a relay.
|
|
277
|
+
// This indicates that you are happy to receive method invocations from clients of the Relay.
|
|
278
|
+
// This will usually be set to the `id` of your Volt, but in theory any client could receive remote invocation requests in this way.
|
|
279
|
+
string relay_id = 5;
|
|
350
280
|
|
|
351
281
|
// A friendly name to present to Relay clients.
|
|
352
|
-
string relay_name =
|
|
282
|
+
string relay_name = 6;
|
|
283
|
+
|
|
284
|
+
string relay_description = 7;
|
|
353
285
|
|
|
354
286
|
// The certificate authority to present to Relay clients.
|
|
355
|
-
string relay_ca_pem =
|
|
287
|
+
string relay_ca_pem = 8;
|
|
356
288
|
|
|
357
289
|
// Set to indicate the connection is discoverable to other Relay clients.
|
|
358
|
-
bool relay_discoverable =
|
|
290
|
+
bool relay_discoverable = 9;
|
|
291
|
+
|
|
292
|
+
// Optionally specify the address of the HTTP server to use for HTTP proxying. If set, a relay will forward HTTP requests to this address from the subdomain that matches the client's DID.
|
|
293
|
+
string relay_http_address = 10;
|
|
359
294
|
|
|
360
295
|
// Set to receive notification of authentication requests.
|
|
361
|
-
bool subscribe_auth_requests =
|
|
296
|
+
bool subscribe_auth_requests = 11;
|
|
297
|
+
|
|
298
|
+
// Set to indicate the connection will accept method invocation requests.
|
|
299
|
+
bool accept_invocation = 12;
|
|
362
300
|
|
|
363
|
-
|
|
301
|
+
// Set to subscribe to DID registry updates from the peer.
|
|
302
|
+
bool subscribe_did_registry_updates = 13;
|
|
364
303
|
|
|
365
|
-
|
|
304
|
+
// The interval at which the client will send ping requests to the target.
|
|
305
|
+
uint32 ping_interval = 14;
|
|
306
|
+
|
|
307
|
+
// The current time on the client.
|
|
308
|
+
uint64 timestamp = 15;
|
|
366
309
|
}
|
|
367
310
|
|
|
368
311
|
message ConnectAcknowledge {
|
|
312
|
+
// A unique identifier for this connection.
|
|
369
313
|
string connection_id = 1;
|
|
370
|
-
}
|
|
371
314
|
|
|
372
|
-
//
|
|
373
|
-
|
|
374
|
-
// The time on the originating server.
|
|
375
|
-
uint64 timestamp = 1;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
// Reserved for internal use.
|
|
379
|
-
enum ConnectMessageType {
|
|
380
|
-
CONNECT_MESSAGE_TYPE_UNKNOWN = 0;
|
|
381
|
-
CONNECT_MESSAGE_TYPE_ORIGINAL = 1;
|
|
382
|
-
CONNECT_MESSAGE_TYPE_ECHO = 2;
|
|
383
|
-
CONNECT_MESSAGE_TYPE_FORWARD = 3;
|
|
384
|
-
}
|
|
315
|
+
// The current time on the Volt.
|
|
316
|
+
uint64 timestamp = 2;
|
|
385
317
|
|
|
386
|
-
//
|
|
387
|
-
|
|
388
|
-
CONNECT_MESSAGE_RELAY_UNKNOWN = 0;
|
|
389
|
-
CONNECT_MESSAGE_RELAY_OUTGOING = 1;
|
|
390
|
-
CONNECT_MESSAGE_RELAY_INCOMING = 2;
|
|
318
|
+
// The interval at which the target will send ping requests to the client.
|
|
319
|
+
uint32 ping_interval = 3;
|
|
391
320
|
}
|
|
392
321
|
|
|
393
|
-
//
|
|
394
|
-
message
|
|
395
|
-
string id = 1;
|
|
396
|
-
string thread_id = 2;
|
|
397
|
-
string to_id = 3;
|
|
398
|
-
string to_identity_id = 4;
|
|
399
|
-
string to_name = 5;
|
|
400
|
-
string message = 6;
|
|
401
|
-
uint64 timestamp = 7;
|
|
402
|
-
string from_id = 8;
|
|
403
|
-
string from_identity_id = 9;
|
|
404
|
-
string from_name = 10;
|
|
405
|
-
|
|
406
|
-
repeated string receipt = 11;
|
|
407
|
-
ConnectMessageType message_type = 12;
|
|
408
|
-
ConnectMessageRelay message_relay = 13;
|
|
322
|
+
// A connection ping message - intentionally empty.
|
|
323
|
+
message ConnectPing {
|
|
409
324
|
}
|
|
410
325
|
|
|
411
326
|
message ConnectGoodbye {
|
|
@@ -455,11 +370,13 @@ message ConnectDIDRegistryUpdate {
|
|
|
455
370
|
|
|
456
371
|
message ConnectEvent {
|
|
457
372
|
oneof event {
|
|
373
|
+
// An authentication request event.
|
|
458
374
|
ConnectAuthRequest connect_auth_request = 1;
|
|
459
375
|
|
|
460
376
|
// A resource event notification, such as updated or deleted.
|
|
461
377
|
ConnectResource connect_resource = 2;
|
|
462
378
|
|
|
379
|
+
// A DID registry entry update.
|
|
463
380
|
ConnectDIDRegistryUpdate did_registry_update = 3;
|
|
464
381
|
}
|
|
465
382
|
}
|
|
@@ -473,9 +390,6 @@ message ConnectRequest {
|
|
|
473
390
|
// Indicates the client is closing the connection.
|
|
474
391
|
ConnectGoodbye goodbye = 2;
|
|
475
392
|
|
|
476
|
-
// Reserved for internal use.
|
|
477
|
-
ConnectMessage msg = 3;
|
|
478
|
-
|
|
479
393
|
// Clients should periodically send ping requests to the target to confirm the stream is still live.
|
|
480
394
|
ConnectPing ping = 4;
|
|
481
395
|
|
|
@@ -504,9 +418,6 @@ message ConnectResponse {
|
|
|
504
418
|
// Notifies clients of various events on the Volt.
|
|
505
419
|
ConnectEvent evt = 4;
|
|
506
420
|
|
|
507
|
-
// Reserved for internal use.
|
|
508
|
-
ConnectMessage msg = 5;
|
|
509
|
-
|
|
510
421
|
// Periodic ping response.
|
|
511
422
|
ConnectPing ping = 6;
|
|
512
423
|
|
|
@@ -548,15 +459,6 @@ message CopyResourceResponse {
|
|
|
548
459
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
549
460
|
}
|
|
550
461
|
|
|
551
|
-
message CreateVerifiableCredentialSessionRequest {
|
|
552
|
-
string presentation = 1;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
message CreateVerifiableCredentialSessionResponse {
|
|
556
|
-
tdx.volt_api.volt.v1.Status status = 1;
|
|
557
|
-
string session_id = 2;
|
|
558
|
-
}
|
|
559
|
-
|
|
560
462
|
message DeleteAccessRequest {
|
|
561
463
|
// The id of the access rule to delete.
|
|
562
464
|
string id = 1;
|
|
@@ -595,8 +497,11 @@ message DiscoverServicesRequest {
|
|
|
595
497
|
// Set to indicate that offline services should be included in the response.
|
|
596
498
|
bool include_offline = 2;
|
|
597
499
|
|
|
500
|
+
// Set to include the service attributes in the response.
|
|
501
|
+
bool include_attributes = 3;
|
|
502
|
+
|
|
598
503
|
// Set to include the service protobuf in the response.
|
|
599
|
-
bool include_protobuf =
|
|
504
|
+
bool include_protobuf = 4;
|
|
600
505
|
}
|
|
601
506
|
|
|
602
507
|
message DiscoverServicesResponse {
|
|
@@ -612,10 +517,7 @@ message GetAccessRequest {
|
|
|
612
517
|
string resource_id = 1;
|
|
613
518
|
|
|
614
519
|
// The identity id that is the subject of the access rule. If omitted, all identities will be considered.
|
|
615
|
-
string
|
|
616
|
-
|
|
617
|
-
// The issuer of the access rule. If omitted, all issuers will be considered.
|
|
618
|
-
string issuer_id = 3;
|
|
520
|
+
string identity_did = 2;
|
|
619
521
|
|
|
620
522
|
// The type of access to retrieve, if omitted all access will be considered.
|
|
621
523
|
string access = 4;
|
|
@@ -632,22 +534,6 @@ message GetAccessResponse {
|
|
|
632
534
|
repeated Access access = 2;
|
|
633
535
|
}
|
|
634
536
|
|
|
635
|
-
message GetBindingsRequest {
|
|
636
|
-
// The fingerprint of the binding subject. If omitted, all bindings are retrieved.
|
|
637
|
-
string fingerprint = 1;
|
|
638
|
-
|
|
639
|
-
// The decision of the binding. If omitted, all binding decisions are retrieved.
|
|
640
|
-
PolicyDecision decision = 2;
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
message GetBindingsResponse {
|
|
644
|
-
// Details of any error that occurred on the call.
|
|
645
|
-
tdx.volt_api.volt.v1.Status status = 1;
|
|
646
|
-
|
|
647
|
-
// The bindings that match the criteria.
|
|
648
|
-
repeated Binding binding = 2;
|
|
649
|
-
}
|
|
650
|
-
|
|
651
537
|
message GetIdentitiesRequest {
|
|
652
538
|
// Optional name of the identity.
|
|
653
539
|
// Use '*' to perform a wildcard search.
|
|
@@ -666,11 +552,11 @@ message GetIdentitiesResponse {
|
|
|
666
552
|
repeated Identity identity = 2;
|
|
667
553
|
}
|
|
668
554
|
|
|
669
|
-
// One of `
|
|
555
|
+
// One of `identity_did` or `fingerprint` must be populated.
|
|
670
556
|
message GetIdentityRequest {
|
|
671
557
|
oneof lookup {
|
|
672
558
|
// The id of the identity to retrieve.
|
|
673
|
-
string
|
|
559
|
+
string identity_did = 1;
|
|
674
560
|
// The public key fingerprint of the identity to retrieve.
|
|
675
561
|
string fingerprint = 2;
|
|
676
562
|
}
|
|
@@ -684,17 +570,16 @@ message GetIdentityResponse {
|
|
|
684
570
|
Identity identity = 2;
|
|
685
571
|
}
|
|
686
572
|
|
|
687
|
-
message
|
|
688
|
-
//
|
|
573
|
+
message GetOneTimeTokenRequest {
|
|
574
|
+
// Optional token TTL, in seconds. Default is 10 seconds.
|
|
689
575
|
int32 ttl = 1;
|
|
690
|
-
|
|
691
|
-
// The intended token audience - usually the common name of the target volt
|
|
692
|
-
// CA.
|
|
693
|
-
string audience = 2;
|
|
694
576
|
}
|
|
695
577
|
|
|
696
|
-
message
|
|
578
|
+
message GetOneTimeTokenResponse {
|
|
579
|
+
// Details of any error that occurred on the call.
|
|
697
580
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
581
|
+
|
|
582
|
+
// The one-time token.
|
|
698
583
|
string token = 2;
|
|
699
584
|
}
|
|
700
585
|
|
|
@@ -728,8 +613,11 @@ message GetResourceRequest {
|
|
|
728
613
|
// The id of the resource to retrieve.
|
|
729
614
|
string resource_id = 1;
|
|
730
615
|
|
|
616
|
+
// Set to include the resource attributes in the response.
|
|
617
|
+
bool include_attributes = 2;
|
|
618
|
+
|
|
731
619
|
// Set to include service description protobuf in the response, if applicable.
|
|
732
|
-
bool include_protobuf =
|
|
620
|
+
bool include_protobuf = 3;
|
|
733
621
|
}
|
|
734
622
|
|
|
735
623
|
message GetResourceResponse {
|
|
@@ -769,14 +657,22 @@ message GetResourcesRequest {
|
|
|
769
657
|
bool combine_terms_exclusive = 9;
|
|
770
658
|
|
|
771
659
|
// Attributes to search by.
|
|
772
|
-
// n.b. currently this API is mutually exclusive in that if any attribute queries are specified the rpc will only search on those attributes, ignoring any parameters defined above.
|
|
773
660
|
repeated ResourceAttributeQuery attribute = 10;
|
|
774
661
|
|
|
775
662
|
// If set, will return resources where *any of* the attribute queries apply, otherwise will only return resources where *all of* the attribute queries apply.
|
|
776
663
|
bool any_of = 11;
|
|
777
664
|
|
|
665
|
+
// Set to include the resource attributes in the response.
|
|
666
|
+
bool include_attributes = 12;
|
|
667
|
+
|
|
778
668
|
// Set to include service description protobuf in the response where applicable.
|
|
779
|
-
bool include_protobuf =
|
|
669
|
+
bool include_protobuf = 13;
|
|
670
|
+
|
|
671
|
+
// Only retrieve resources that have been modified after the given timestamp. Default is 0, which means all resources will be returned.
|
|
672
|
+
uint64 modified_since = 14;
|
|
673
|
+
|
|
674
|
+
// Limit the number of resources returned. Default is 0, which means all resources will be returned.
|
|
675
|
+
uint32 limit = 15;
|
|
780
676
|
}
|
|
781
677
|
|
|
782
678
|
message GetResourcesResponse {
|
|
@@ -802,6 +698,12 @@ message GetResourceAncestorsRequest {
|
|
|
802
698
|
|
|
803
699
|
// Optional - can be used to determine if a resource is an ancestor.
|
|
804
700
|
string ancestor_id = 5;
|
|
701
|
+
|
|
702
|
+
// Set to include the service attributes in the response.
|
|
703
|
+
bool include_attributes = 6;
|
|
704
|
+
|
|
705
|
+
// Set to include the service protobuf in the response.
|
|
706
|
+
bool include_protobuf = 7;
|
|
805
707
|
}
|
|
806
708
|
|
|
807
709
|
message GetResourceAncestorsResponse {
|
|
@@ -834,6 +736,15 @@ message GetResourceDescendantsRequest {
|
|
|
834
736
|
|
|
835
737
|
// Restrict to a specific named resource.
|
|
836
738
|
string name = 7;
|
|
739
|
+
|
|
740
|
+
// Only retrieve resources that have been modified after the given timestamp. Default is 0, which means all resources will be returned.
|
|
741
|
+
uint64 modified_since = 8;
|
|
742
|
+
|
|
743
|
+
// Set to include the service attributes in the response.
|
|
744
|
+
bool include_attributes = 9;
|
|
745
|
+
|
|
746
|
+
// Set to include the service protobuf in the response.
|
|
747
|
+
bool include_protobuf = 10;
|
|
837
748
|
}
|
|
838
749
|
|
|
839
750
|
message GetResourceDescendantsResponse {
|
|
@@ -844,66 +755,87 @@ message GetResourceDescendantsResponse {
|
|
|
844
755
|
repeated Resource descendant = 2;
|
|
845
756
|
}
|
|
846
757
|
|
|
847
|
-
message
|
|
758
|
+
message GetSessionsRequest {
|
|
848
759
|
string id = 1;
|
|
849
760
|
|
|
850
|
-
string
|
|
761
|
+
string identity_did = 2;
|
|
762
|
+
|
|
763
|
+
string identity_name = 3;
|
|
764
|
+
|
|
765
|
+
SessionStatus status = 4;
|
|
851
766
|
}
|
|
852
767
|
|
|
853
|
-
message
|
|
768
|
+
message GetSessionsResponse {
|
|
854
769
|
// Details of any error that occurred on the call.
|
|
855
770
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
856
771
|
|
|
857
772
|
repeated Session session = 2;
|
|
858
773
|
}
|
|
859
774
|
|
|
775
|
+
message InvokeRequestKeyExchange {
|
|
776
|
+
bytes nonce = 1;
|
|
777
|
+
|
|
778
|
+
bytes encryption_key = 2;
|
|
779
|
+
|
|
780
|
+
bytes signature = 3;
|
|
781
|
+
}
|
|
782
|
+
|
|
860
783
|
message InvokeRequest {
|
|
861
784
|
// Client-assigned identifier for the request. Will be used to match responses and any subsequent requests.
|
|
862
785
|
uint64 invoke_id = 1;
|
|
863
786
|
|
|
864
|
-
//
|
|
865
|
-
// This contains the key and iv used to encrypt the payload, which only the token audience can access because the key and iv are themselves encrypted using the public key of the invocation target.
|
|
787
|
+
// Optional client token to use for the invocation. This is for use by the websocket proxy and is only necessary on the first request of the rpc.
|
|
866
788
|
string token = 2;
|
|
867
789
|
|
|
868
|
-
// The DID of the target
|
|
790
|
+
// The DID of the target at each hop of the path to the service.
|
|
869
791
|
// This is used by Relays to route the request.
|
|
870
|
-
repeated string target_did =
|
|
792
|
+
repeated string target_did = 4;
|
|
871
793
|
|
|
794
|
+
// The initialisation vector for the request payload encryption. This should be a random 16 byte value, that is different for each request.
|
|
795
|
+
bytes iv = 5;
|
|
796
|
+
|
|
797
|
+
// One of the following payloads will be present in a given InvokeRequest message.
|
|
872
798
|
oneof request_payload {
|
|
873
799
|
// A serialised and encrypted instance of `RemoteResponse` in pure binary format.
|
|
874
|
-
bytes payload =
|
|
800
|
+
bytes payload = 6;
|
|
875
801
|
|
|
876
802
|
// A serialised and encrypted instance of `RemoteResponse` as serialised JSON.
|
|
877
|
-
|
|
803
|
+
bytes json_payload = 7;
|
|
878
804
|
}
|
|
879
805
|
|
|
880
806
|
// Indicates the client has ended the invocation.
|
|
881
|
-
bool client_end =
|
|
807
|
+
bool client_end = 8;
|
|
882
808
|
|
|
883
809
|
// Reserved for internal use.
|
|
884
|
-
uint32 hop_index =
|
|
810
|
+
uint32 hop_index = 9;
|
|
885
811
|
|
|
886
812
|
// Reserved for internal use.
|
|
887
|
-
string target_service_id =
|
|
813
|
+
string target_service_id = 10;
|
|
888
814
|
}
|
|
889
815
|
|
|
890
816
|
message InvokeResponse {
|
|
891
817
|
// The invocation id to match the originating request.
|
|
892
818
|
uint64 invoke_id = 1;
|
|
893
819
|
|
|
820
|
+
InvokeRequestKeyExchange key_exchange = 2;
|
|
821
|
+
|
|
822
|
+
// The initialisation vector for the response payload encryption. This will be a random 16 byte value, that is different for each response.
|
|
823
|
+
bytes iv = 4;
|
|
824
|
+
|
|
825
|
+
// One of the following payloads will be present in a given InvokeResponse message.
|
|
894
826
|
oneof response_payload {
|
|
895
827
|
// A serialised and encrypted instance of `RemoteRequest` in pure binary format.
|
|
896
|
-
bytes payload =
|
|
828
|
+
bytes payload = 5;
|
|
897
829
|
|
|
898
830
|
// A serialised and encrypted instance of `RemoteRequest` as serialised JSON.
|
|
899
|
-
|
|
831
|
+
bytes json_payload = 6;
|
|
900
832
|
|
|
901
833
|
// Details of any error that occurred on the call.
|
|
902
|
-
tdx.volt_api.volt.v1.Status status =
|
|
834
|
+
tdx.volt_api.volt.v1.Status status = 7;
|
|
903
835
|
}
|
|
904
836
|
|
|
905
837
|
// Indicates the server has ended the invocation.
|
|
906
|
-
bool server_end =
|
|
838
|
+
bool server_end = 8;
|
|
907
839
|
}
|
|
908
840
|
|
|
909
841
|
message MoveResourceRequest {
|
|
@@ -938,10 +870,7 @@ message RequestAccessResponse {
|
|
|
938
870
|
string resource_id = 2;
|
|
939
871
|
|
|
940
872
|
// The identity attempting access.
|
|
941
|
-
string
|
|
942
|
-
|
|
943
|
-
// The identity of the issuer of the access.
|
|
944
|
-
string issuer_id = 4;
|
|
873
|
+
string identity_did = 3;
|
|
945
874
|
|
|
946
875
|
// Requested access.
|
|
947
876
|
string access = 5;
|
|
@@ -975,27 +904,6 @@ message SaveAccessResponse {
|
|
|
975
904
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
976
905
|
}
|
|
977
906
|
|
|
978
|
-
message SaveAuthenticationRequest {
|
|
979
|
-
string id = 1;
|
|
980
|
-
|
|
981
|
-
string identity_id = 2;
|
|
982
|
-
|
|
983
|
-
string identity_did = 3;
|
|
984
|
-
|
|
985
|
-
string public_key = 4;
|
|
986
|
-
|
|
987
|
-
string encrypt_key = 5;
|
|
988
|
-
|
|
989
|
-
string encrypt_iv = 6;
|
|
990
|
-
|
|
991
|
-
PolicyDecision decision = 7;
|
|
992
|
-
}
|
|
993
|
-
|
|
994
|
-
message SaveAuthenticationResponse {
|
|
995
|
-
// Details of any error that occurred on the call.
|
|
996
|
-
tdx.volt_api.volt.v1.Status status = 1;
|
|
997
|
-
}
|
|
998
|
-
|
|
999
907
|
message SaveIdentityRequest {
|
|
1000
908
|
// Details of the identity to save.
|
|
1001
909
|
Identity identity = 1;
|
|
@@ -1124,19 +1032,6 @@ message SetAccessRequestDecisionResponse {
|
|
|
1124
1032
|
tdx.volt_api.volt.v1.Status status = 1;
|
|
1125
1033
|
}
|
|
1126
1034
|
|
|
1127
|
-
message SetBindingDecisionRequest {
|
|
1128
|
-
// The fingerprint of the bind request.
|
|
1129
|
-
string fingerprint = 1;
|
|
1130
|
-
|
|
1131
|
-
// The policy decision to assign to the bind request.
|
|
1132
|
-
PolicyDecision decision = 2;
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
message SetBindingDecisionResponse {
|
|
1136
|
-
// Details of any error that occurred on the call.
|
|
1137
|
-
tdx.volt_api.volt.v1.Status status = 1;
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
1035
|
// This message is emtpy.
|
|
1141
1036
|
message ShutdownRequest {
|
|
1142
1037
|
}
|