@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.
@@ -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 `Bind`, 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 `Bind` method.
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
- rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse);
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-Bind the client and obtain a new certificate.
21
- // If the bind decision is 'permit', the bind 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.
22
- rpc Bind(BindRequest) returns (BindResponse);
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
- // NOT YET IMPLEMENTED.
73
- // Gets a credential for the currently authenticated client, signed by the volt CA.
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 session(s).
97
- rpc GetSession(GetSessionRequest) returns (GetSessionResponse);
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
- rpc SaveAuthentication(SaveAuthenticationRequest) returns (SaveAuthenticationResponse);
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 bind to a volt.
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 Bind call must be signed by the private key corresponding to this DID.
155
- string did = 1;
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 Bind call must be signed by the private key corresponding to this document.
161
- string did_document = 2;
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 = 4;
168
+ string did_document_signature = 5;
170
169
 
171
- // A human-readable name of the entity requesting to bind.
172
- string binding_name = 5;
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 = 6;
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 = 7;
179
+ string host = 8;
181
180
 
182
181
  // Optional verifiable credentials describing the client.
183
- // This is a work in progress.
184
- repeated VerifiablePresentation verifiable_presentation = 8;
182
+ repeated VerifiablePresentation verifiable_presentation = 9;
185
183
 
186
184
  // Reserved for internal use.
187
- bool purge_aliases = 9;
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 binding.
197
- // Only valid for PERMIT bind decisions.
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 bind decisions.
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 bind decision.
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 identity_id = 2;
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 calling address of the peer.
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 = 2;
271
+ bool online_services = 3;
342
272
 
343
273
  // Set to receive notification of resource events.
344
- bool subscribe_resource_events = 3;
274
+ bool subscribe_resource_events = 4;
345
275
 
346
- // Set this to support Relayed service invocation.
347
- // This indicates that the callee is happy to receive method invocations from other clients of the Relay.
348
- // Currently this will usually be set to the `id` of the calling Volt, but in theory any client could receive remote invocation requests in this way.
349
- string relay_id = 4;
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 = 5;
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 = 6;
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 = 7;
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 = 8;
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
- bool accept_invocation = 9;
301
+ // Set to subscribe to DID registry updates from the peer.
302
+ bool subscribe_did_registry_updates = 13;
364
303
 
365
- bool subscribe_did_registry_updates = 10;
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
- // A connection ping message.
373
- message ConnectPing {
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
- // Reserved for internal use.
387
- enum ConnectMessageRelay {
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
- // This message is reserved for internal use.
394
- message ConnectMessage {
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 = 3;
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 identity_id = 2;
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 `identity_id` or `fingerprint` must be populated.
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 identity_id = 1;
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 GetIdentityTokenRequest {
688
- // The token TTL, in seconds.
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 GetIdentityTokenResponse {
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 = 2;
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 = 12;
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 GetSessionRequest {
758
+ message GetSessionsRequest {
848
759
  string id = 1;
849
760
 
850
- string identity_id = 2;
761
+ string identity_did = 2;
762
+
763
+ string identity_name = 3;
764
+
765
+ SessionStatus status = 4;
851
766
  }
852
767
 
853
- message GetSessionResponse {
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
- // The client token to use for the invocation.
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 identity hosting the service.
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 = 3;
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 = 4;
800
+ bytes payload = 6;
875
801
 
876
802
  // A serialised and encrypted instance of `RemoteResponse` as serialised JSON.
877
- string json_payload = 5;
803
+ bytes json_payload = 7;
878
804
  }
879
805
 
880
806
  // Indicates the client has ended the invocation.
881
- bool client_end = 6;
807
+ bool client_end = 8;
882
808
 
883
809
  // Reserved for internal use.
884
- uint32 hop_index = 7;
810
+ uint32 hop_index = 9;
885
811
 
886
812
  // Reserved for internal use.
887
- string target_service_id = 8;
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 = 2;
828
+ bytes payload = 5;
897
829
 
898
830
  // A serialised and encrypted instance of `RemoteRequest` as serialised JSON.
899
- string json_payload = 3;
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 = 4;
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 = 5;
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 identity_id = 3;
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
  }