@toshicloud/sdk 0.5.0 → 0.5.1

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.
Files changed (71) hide show
  1. package/README.md +82 -40
  2. package/dist/client.d.ts +33 -2
  3. package/dist/client.js +28 -3
  4. package/dist/errors.d.ts +74 -22
  5. package/dist/errors.js +99 -27
  6. package/dist/gen/toshi/permission_pb.d.ts +207 -2
  7. package/dist/gen/toshi/permission_pb.js +54 -2
  8. package/dist/gen/toshi/workspace/v1/account_pb.d.ts +590 -0
  9. package/dist/gen/toshi/workspace/v1/account_pb.js +75 -0
  10. package/dist/gen/toshi/workspace/v1/artifacts_pb.d.ts +14 -8
  11. package/dist/gen/toshi/workspace/v1/artifacts_pb.js +9 -7
  12. package/dist/gen/toshi/workspace/v1/audit_events_pb.d.ts +191 -6
  13. package/dist/gen/toshi/workspace/v1/audit_events_pb.js +11 -1
  14. package/dist/gen/toshi/workspace/v1/channels_pb.d.ts +1194 -21
  15. package/dist/gen/toshi/workspace/v1/channels_pb.js +185 -39
  16. package/dist/gen/toshi/workspace/v1/connections_pb.d.ts +1481 -0
  17. package/dist/gen/toshi/workspace/v1/connections_pb.js +208 -0
  18. package/dist/gen/toshi/workspace/v1/discovery_pb.d.ts +291 -43
  19. package/dist/gen/toshi/workspace/v1/discovery_pb.js +79 -30
  20. package/dist/gen/toshi/workspace/v1/display_pb.d.ts +198 -15
  21. package/dist/gen/toshi/workspace/v1/display_pb.js +52 -2
  22. package/dist/gen/toshi/workspace/v1/domains_pb.d.ts +864 -0
  23. package/dist/gen/toshi/workspace/v1/domains_pb.js +152 -0
  24. package/dist/gen/toshi/workspace/v1/fillers_pb.d.ts +12 -4
  25. package/dist/gen/toshi/workspace/v1/fillers_pb.js +1 -1
  26. package/dist/gen/toshi/workspace/v1/grants_pb.d.ts +1297 -0
  27. package/dist/gen/toshi/workspace/v1/grants_pb.js +271 -0
  28. package/dist/gen/toshi/workspace/v1/hostjobs_pb.d.ts +315 -15
  29. package/dist/gen/toshi/workspace/v1/hostjobs_pb.js +10 -5
  30. package/dist/gen/toshi/workspace/v1/hosts_pb.d.ts +196 -7
  31. package/dist/gen/toshi/workspace/v1/hosts_pb.js +12 -7
  32. package/dist/gen/toshi/workspace/v1/images_pb.d.ts +1463 -0
  33. package/dist/gen/toshi/workspace/v1/images_pb.js +263 -0
  34. package/dist/gen/toshi/workspace/v1/products_pb.d.ts +99 -296
  35. package/dist/gen/toshi/workspace/v1/products_pb.js +7 -53
  36. package/dist/gen/toshi/workspace/v1/projects_pb.d.ts +1474 -99
  37. package/dist/gen/toshi/workspace/v1/projects_pb.js +150 -33
  38. package/dist/gen/toshi/workspace/v1/recordings_pb.d.ts +181 -14
  39. package/dist/gen/toshi/workspace/v1/recordings_pb.js +54 -14
  40. package/dist/gen/toshi/workspace/v1/roles_pb.d.ts +1994 -0
  41. package/dist/gen/toshi/workspace/v1/roles_pb.js +355 -0
  42. package/dist/gen/toshi/workspace/v1/secrets_pb.d.ts +314 -8
  43. package/dist/gen/toshi/workspace/v1/secrets_pb.js +42 -18
  44. package/dist/gen/toshi/workspace/v1/storage_providers_pb.d.ts +14 -0
  45. package/dist/gen/toshi/workspace/v1/storage_providers_pb.js +1 -1
  46. package/dist/gen/toshi/workspace/v1/tokens_pb.d.ts +434 -5
  47. package/dist/gen/toshi/workspace/v1/tokens_pb.js +65 -8
  48. package/dist/gen/toshi/workspace/v1/triggers_pb.d.ts +1099 -0
  49. package/dist/gen/toshi/workspace/v1/triggers_pb.js +185 -0
  50. package/dist/gen/toshi/workspace/v1/volumes_pb.d.ts +1052 -33
  51. package/dist/gen/toshi/workspace/v1/volumes_pb.js +169 -11
  52. package/dist/gen/toshi/workspace/v1/webhook_pb.d.ts +66 -8
  53. package/dist/gen/toshi/workspace/v1/webhook_pb.js +4 -4
  54. package/dist/gen/toshi/workspace/v1/workloads_pb.d.ts +2043 -54
  55. package/dist/gen/toshi/workspace/v1/workloads_pb.js +204 -54
  56. package/dist/gen/toshi/workspace/v1/workspace_pb.d.ts +6290 -937
  57. package/dist/gen/toshi/workspace/v1/workspace_pb.js +801 -88
  58. package/dist/gen/toshi/workspace/v1/workspace_service_pb.d.ts +2176 -630
  59. package/dist/gen/toshi/workspace/v1/workspace_service_pb.js +191 -74
  60. package/dist/index.d.ts +8 -1
  61. package/dist/index.js +8 -1
  62. package/dist/interceptors.d.ts +6 -2
  63. package/dist/interceptors.js +13 -8
  64. package/dist/retry.d.ts +18 -0
  65. package/dist/retry.js +225 -23
  66. package/dist/test/procedures.js +100 -5
  67. package/dist/version.d.ts +1 -1
  68. package/dist/version.js +1 -1
  69. package/dist/wait.d.ts +4 -0
  70. package/dist/wait.js +24 -1
  71. package/package.json +3 -2
@@ -1,5 +1,5 @@
1
1
  import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
2
- import type { Duration, DurationJson, Timestamp, TimestampJson } from "@bufbuild/protobuf/wkt";
2
+ import type { Duration, DurationJson, FieldMask, FieldMaskJson, Timestamp, TimestampJson } from "@bufbuild/protobuf/wkt";
3
3
  import type { Message } from "@bufbuild/protobuf";
4
4
  /**
5
5
  * Describes the file toshi/workspace/v1/projects.proto.
@@ -23,6 +23,13 @@ export type Project = Message<"toshi.workspace.v1.Project"> & {
23
23
  * @generated from field: repeated toshi.workspace.v1.ProjectEnvironment environments = 3;
24
24
  */
25
25
  environments: ProjectEnvironment[];
26
+ /**
27
+ * admission is the project's admission webhook; unset when it has none.
28
+ * GetProject and UpdateProject return it; ListProjects does not.
29
+ *
30
+ * @generated from field: toshi.workspace.v1.ProjectAdmission admission = 4;
31
+ */
32
+ admission?: ProjectAdmission | undefined;
26
33
  };
27
34
  /**
28
35
  * Project is one of a workspace's projects.
@@ -42,6 +49,13 @@ export type ProjectJson = {
42
49
  * @generated from field: repeated toshi.workspace.v1.ProjectEnvironment environments = 3;
43
50
  */
44
51
  environments?: ProjectEnvironmentJson[];
52
+ /**
53
+ * admission is the project's admission webhook; unset when it has none.
54
+ * GetProject and UpdateProject return it; ListProjects does not.
55
+ *
56
+ * @generated from field: toshi.workspace.v1.ProjectAdmission admission = 4;
57
+ */
58
+ admission?: ProjectAdmissionJson;
45
59
  };
46
60
  /**
47
61
  * Describes the message toshi.workspace.v1.Project.
@@ -50,6 +64,87 @@ export type ProjectJson = {
50
64
  export declare const ProjectSchema: GenMessage<Project, {
51
65
  jsonType: ProjectJson;
52
66
  }>;
67
+ /**
68
+ * ProjectAdmission is a project's admission webhook. At each admission
69
+ * point of the project, once Toshi's own checks have passed, the control
70
+ * plane posts the admission document to url, signed under Standard Webhooks
71
+ * with secret, and waits at most 2 seconds for {"allow": true} or
72
+ * {"allow": false, "reason": "..."}. No answer, an error, a status other
73
+ * than 2xx or another body is a deny. A refused workload's error is
74
+ * FAILED_PRECONDITION with an ErrorInfo, reason ADMISSION_DENIED, whose
75
+ * metadata names the module and the reason.
76
+ *
77
+ * @generated from message toshi.workspace.v1.ProjectAdmission
78
+ */
79
+ export type ProjectAdmission = Message<"toshi.workspace.v1.ProjectAdmission"> & {
80
+ /**
81
+ * url is the https URL the document is posted to.
82
+ *
83
+ * @generated from field: string url = 1;
84
+ */
85
+ url: string;
86
+ /**
87
+ * secret is the signing secret: "whsec_" and the base64 of 24 to 64
88
+ * bytes. Input only: no call returns it.
89
+ *
90
+ * @generated from field: string secret = 2;
91
+ */
92
+ secret: string;
93
+ /**
94
+ * updated_by is who set it last, as the audit log names them.
95
+ *
96
+ * @generated from field: string updated_by = 3;
97
+ */
98
+ updatedBy: string;
99
+ /**
100
+ * @generated from field: google.protobuf.Timestamp updated_at = 4;
101
+ */
102
+ updatedAt?: Timestamp | undefined;
103
+ };
104
+ /**
105
+ * ProjectAdmission is a project's admission webhook. At each admission
106
+ * point of the project, once Toshi's own checks have passed, the control
107
+ * plane posts the admission document to url, signed under Standard Webhooks
108
+ * with secret, and waits at most 2 seconds for {"allow": true} or
109
+ * {"allow": false, "reason": "..."}. No answer, an error, a status other
110
+ * than 2xx or another body is a deny. A refused workload's error is
111
+ * FAILED_PRECONDITION with an ErrorInfo, reason ADMISSION_DENIED, whose
112
+ * metadata names the module and the reason.
113
+ *
114
+ * @generated from message toshi.workspace.v1.ProjectAdmission
115
+ */
116
+ export type ProjectAdmissionJson = {
117
+ /**
118
+ * url is the https URL the document is posted to.
119
+ *
120
+ * @generated from field: string url = 1;
121
+ */
122
+ url?: string;
123
+ /**
124
+ * secret is the signing secret: "whsec_" and the base64 of 24 to 64
125
+ * bytes. Input only: no call returns it.
126
+ *
127
+ * @generated from field: string secret = 2;
128
+ */
129
+ secret?: string;
130
+ /**
131
+ * updated_by is who set it last, as the audit log names them.
132
+ *
133
+ * @generated from field: string updated_by = 3;
134
+ */
135
+ updatedBy?: string;
136
+ /**
137
+ * @generated from field: google.protobuf.Timestamp updated_at = 4;
138
+ */
139
+ updatedAt?: TimestampJson;
140
+ };
141
+ /**
142
+ * Describes the message toshi.workspace.v1.ProjectAdmission.
143
+ * Use `create(ProjectAdmissionSchema)` to create a new message.
144
+ */
145
+ export declare const ProjectAdmissionSchema: GenMessage<ProjectAdmission, {
146
+ jsonType: ProjectAdmissionJson;
147
+ }>;
53
148
  /**
54
149
  * ProjectEnvironment is one of a project's environments.
55
150
  *
@@ -66,6 +161,52 @@ export type ProjectEnvironment = Message<"toshi.workspace.v1.ProjectEnvironment"
66
161
  * @generated from field: string kind = 2;
67
162
  */
68
163
  kind: string;
164
+ /**
165
+ * The names of the project's volumes the environment's services and
166
+ * sandboxes may attach, sorted; empty when any of them may. Set with
167
+ * UpdateEnvironment or SetEnvironmentVolumes.
168
+ *
169
+ * @generated from field: repeated string volumes = 3;
170
+ */
171
+ volumes: string[];
172
+ /**
173
+ * Who manages this object: "manifest" when the project manifest declares
174
+ * it, empty when nothing does. A manifest apply sets managed_by,
175
+ * manifest_digest, manifest_origin and managed_fields together.
176
+ *
177
+ * @generated from field: string managed_by = 4;
178
+ */
179
+ managedBy: string;
180
+ /**
181
+ * The SHA-256 of the manifest file that last set this object, as 64
182
+ * lowercase hex characters. Empty when managed_by is empty.
183
+ *
184
+ * @generated from field: string manifest_digest = 5;
185
+ */
186
+ manifestDigest: string;
187
+ /**
188
+ * The fields of this object the manifest declares, as update mask paths.
189
+ * Empty when managed_by is empty.
190
+ *
191
+ * @generated from field: repeated string managed_fields = 6;
192
+ */
193
+ managedFields: string[];
194
+ /**
195
+ * How the manifest came to manage this object: "created" when a manifest
196
+ * apply created it, "adopted" when an apply took over an object that
197
+ * already existed. Empty when managed_by is empty.
198
+ *
199
+ * @generated from field: string manifest_origin = 7;
200
+ */
201
+ manifestOrigin: string;
202
+ /**
203
+ * The environment's retention override as stored; empty when it
204
+ * follows the workspace. Set with UpdateEnvironment or
205
+ * SetEnvironmentRetention.
206
+ *
207
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 8;
208
+ */
209
+ retention?: EnvironmentRetention | undefined;
69
210
  };
70
211
  /**
71
212
  * ProjectEnvironment is one of a project's environments.
@@ -83,6 +224,52 @@ export type ProjectEnvironmentJson = {
83
224
  * @generated from field: string kind = 2;
84
225
  */
85
226
  kind?: string;
227
+ /**
228
+ * The names of the project's volumes the environment's services and
229
+ * sandboxes may attach, sorted; empty when any of them may. Set with
230
+ * UpdateEnvironment or SetEnvironmentVolumes.
231
+ *
232
+ * @generated from field: repeated string volumes = 3;
233
+ */
234
+ volumes?: string[];
235
+ /**
236
+ * Who manages this object: "manifest" when the project manifest declares
237
+ * it, empty when nothing does. A manifest apply sets managed_by,
238
+ * manifest_digest, manifest_origin and managed_fields together.
239
+ *
240
+ * @generated from field: string managed_by = 4;
241
+ */
242
+ managedBy?: string;
243
+ /**
244
+ * The SHA-256 of the manifest file that last set this object, as 64
245
+ * lowercase hex characters. Empty when managed_by is empty.
246
+ *
247
+ * @generated from field: string manifest_digest = 5;
248
+ */
249
+ manifestDigest?: string;
250
+ /**
251
+ * The fields of this object the manifest declares, as update mask paths.
252
+ * Empty when managed_by is empty.
253
+ *
254
+ * @generated from field: repeated string managed_fields = 6;
255
+ */
256
+ managedFields?: string[];
257
+ /**
258
+ * How the manifest came to manage this object: "created" when a manifest
259
+ * apply created it, "adopted" when an apply took over an object that
260
+ * already existed. Empty when managed_by is empty.
261
+ *
262
+ * @generated from field: string manifest_origin = 7;
263
+ */
264
+ manifestOrigin?: string;
265
+ /**
266
+ * The environment's retention override as stored; empty when it
267
+ * follows the workspace. Set with UpdateEnvironment or
268
+ * SetEnvironmentRetention.
269
+ *
270
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 8;
271
+ */
272
+ retention?: EnvironmentRetentionJson;
86
273
  };
87
274
  /**
88
275
  * Describes the message toshi.workspace.v1.ProjectEnvironment.
@@ -387,6 +574,10 @@ export type CreateProjectRequest = Message<"toshi.workspace.v1.CreateProjectRequ
387
574
  * @generated from field: string name = 1;
388
575
  */
389
576
  name: string;
577
+ /**
578
+ * @generated from field: string request_key = 2;
579
+ */
580
+ requestKey: string;
390
581
  };
391
582
  /**
392
583
  * @generated from message toshi.workspace.v1.CreateProjectRequest
@@ -396,6 +587,10 @@ export type CreateProjectRequestJson = {
396
587
  * @generated from field: string name = 1;
397
588
  */
398
589
  name?: string;
590
+ /**
591
+ * @generated from field: string request_key = 2;
592
+ */
593
+ requestKey?: string;
399
594
  };
400
595
  /**
401
596
  * Describes the message toshi.workspace.v1.CreateProjectRequest.
@@ -429,6 +624,70 @@ export type CreateProjectResponseJson = {
429
624
  export declare const CreateProjectResponseSchema: GenMessage<CreateProjectResponse, {
430
625
  jsonType: CreateProjectResponseJson;
431
626
  }>;
627
+ /**
628
+ * @generated from message toshi.workspace.v1.UpdateProjectRequest
629
+ */
630
+ export type UpdateProjectRequest = Message<"toshi.workspace.v1.UpdateProjectRequest"> & {
631
+ /**
632
+ * name names the project; the fields update_mask names carry the new
633
+ * values.
634
+ *
635
+ * @generated from field: toshi.workspace.v1.Project project = 1;
636
+ */
637
+ project?: Project | undefined;
638
+ /**
639
+ * @generated from field: google.protobuf.FieldMask update_mask = 2;
640
+ */
641
+ updateMask?: FieldMask | undefined;
642
+ };
643
+ /**
644
+ * @generated from message toshi.workspace.v1.UpdateProjectRequest
645
+ */
646
+ export type UpdateProjectRequestJson = {
647
+ /**
648
+ * name names the project; the fields update_mask names carry the new
649
+ * values.
650
+ *
651
+ * @generated from field: toshi.workspace.v1.Project project = 1;
652
+ */
653
+ project?: ProjectJson;
654
+ /**
655
+ * @generated from field: google.protobuf.FieldMask update_mask = 2;
656
+ */
657
+ updateMask?: FieldMaskJson;
658
+ };
659
+ /**
660
+ * Describes the message toshi.workspace.v1.UpdateProjectRequest.
661
+ * Use `create(UpdateProjectRequestSchema)` to create a new message.
662
+ */
663
+ export declare const UpdateProjectRequestSchema: GenMessage<UpdateProjectRequest, {
664
+ jsonType: UpdateProjectRequestJson;
665
+ }>;
666
+ /**
667
+ * @generated from message toshi.workspace.v1.UpdateProjectResponse
668
+ */
669
+ export type UpdateProjectResponse = Message<"toshi.workspace.v1.UpdateProjectResponse"> & {
670
+ /**
671
+ * @generated from field: toshi.workspace.v1.Project project = 1;
672
+ */
673
+ project?: Project | undefined;
674
+ };
675
+ /**
676
+ * @generated from message toshi.workspace.v1.UpdateProjectResponse
677
+ */
678
+ export type UpdateProjectResponseJson = {
679
+ /**
680
+ * @generated from field: toshi.workspace.v1.Project project = 1;
681
+ */
682
+ project?: ProjectJson;
683
+ };
684
+ /**
685
+ * Describes the message toshi.workspace.v1.UpdateProjectResponse.
686
+ * Use `create(UpdateProjectResponseSchema)` to create a new message.
687
+ */
688
+ export declare const UpdateProjectResponseSchema: GenMessage<UpdateProjectResponse, {
689
+ jsonType: UpdateProjectResponseJson;
690
+ }>;
432
691
  /**
433
692
  * @generated from message toshi.workspace.v1.ClaimRepositoryRequest
434
693
  */
@@ -580,6 +839,10 @@ export type CreateEnvironmentRequest = Message<"toshi.workspace.v1.CreateEnviron
580
839
  * @generated from field: string kind = 2;
581
840
  */
582
841
  kind: string;
842
+ /**
843
+ * @generated from field: string request_key = 3;
844
+ */
845
+ requestKey: string;
583
846
  };
584
847
  /**
585
848
  * @generated from message toshi.workspace.v1.CreateEnvironmentRequest
@@ -598,6 +861,10 @@ export type CreateEnvironmentRequestJson = {
598
861
  * @generated from field: string kind = 2;
599
862
  */
600
863
  kind?: string;
864
+ /**
865
+ * @generated from field: string request_key = 3;
866
+ */
867
+ requestKey?: string;
601
868
  };
602
869
  /**
603
870
  * Describes the message toshi.workspace.v1.CreateEnvironmentRequest.
@@ -925,140 +1192,215 @@ export declare const SetBranchRulesResponseSchema: GenMessage<SetBranchRulesResp
925
1192
  jsonType: SetBranchRulesResponseJson;
926
1193
  }>;
927
1194
  /**
928
- * EmbedToken is one of a project's embed tokens, without the token itself.
1195
+ * NetworkPolicy is where a project's or an environment's workloads may
1196
+ * connect outbound. The first rule that matches a destination decides;
1197
+ * one no rule matches gets default_action.
929
1198
  *
930
- * @generated from message toshi.workspace.v1.EmbedToken
1199
+ * @generated from message toshi.workspace.v1.NetworkPolicy
931
1200
  */
932
- export type EmbedToken = Message<"toshi.workspace.v1.EmbedToken"> & {
1201
+ export type NetworkPolicy = Message<"toshi.workspace.v1.NetworkPolicy"> & {
933
1202
  /**
934
- * Assigned by the server.
1203
+ * "allow" or "deny".
935
1204
  *
936
- * @generated from field: string id = 1;
1205
+ * @generated from field: string default_action = 1;
937
1206
  */
938
- id: string;
1207
+ defaultAction: string;
939
1208
  /**
940
- * The project's name.
1209
+ * At most 100 rules, read in order.
941
1210
  *
942
- * @generated from field: string project = 2;
1211
+ * @generated from field: repeated toshi.workspace.v1.EgressRule egress = 2;
943
1212
  */
944
- project: string;
1213
+ egress: EgressRule[];
1214
+ };
1215
+ /**
1216
+ * NetworkPolicy is where a project's or an environment's workloads may
1217
+ * connect outbound. The first rule that matches a destination decides;
1218
+ * one no rule matches gets default_action.
1219
+ *
1220
+ * @generated from message toshi.workspace.v1.NetworkPolicy
1221
+ */
1222
+ export type NetworkPolicyJson = {
945
1223
  /**
946
- * The origins of the pages that may spend it, such as
947
- * https://app.example.com.
1224
+ * "allow" or "deny".
948
1225
  *
949
- * @generated from field: repeated string origins = 3;
950
- */
951
- origins: string[];
952
- /**
953
- * @generated from field: toshi.workspace.v1.EmbedTokenState state = 4;
954
- */
955
- state: EmbedTokenState;
956
- /**
957
- * @generated from field: google.protobuf.Timestamp created_at = 5;
1226
+ * @generated from field: string default_action = 1;
958
1227
  */
959
- createdAt?: Timestamp | undefined;
1228
+ defaultAction?: string;
960
1229
  /**
961
- * @generated from field: google.protobuf.Timestamp expires_at = 6;
1230
+ * At most 100 rules, read in order.
1231
+ *
1232
+ * @generated from field: repeated toshi.workspace.v1.EgressRule egress = 2;
962
1233
  */
963
- expiresAt?: Timestamp | undefined;
1234
+ egress?: EgressRuleJson[];
1235
+ };
1236
+ /**
1237
+ * Describes the message toshi.workspace.v1.NetworkPolicy.
1238
+ * Use `create(NetworkPolicySchema)` to create a new message.
1239
+ */
1240
+ export declare const NetworkPolicySchema: GenMessage<NetworkPolicy, {
1241
+ jsonType: NetworkPolicyJson;
1242
+ }>;
1243
+ /**
1244
+ * EgressRule allows or denies outbound connections to one destination.
1245
+ *
1246
+ * @generated from message toshi.workspace.v1.EgressRule
1247
+ */
1248
+ export type EgressRule = Message<"toshi.workspace.v1.EgressRule"> & {
964
1249
  /**
965
- * Unset until a page spends it.
1250
+ * "allow" or "deny".
966
1251
  *
967
- * @generated from field: google.protobuf.Timestamp used_at = 7;
1252
+ * @generated from field: string action = 1;
968
1253
  */
969
- usedAt?: Timestamp | undefined;
1254
+ action: string;
970
1255
  /**
971
- * The recording it was spent on; empty until then.
1256
+ * An IPv4 or IPv6 address, a CIDR prefix, or a DNS name such as
1257
+ * "api.example.com". A name is resolved by the host that runs the
1258
+ * workload, so it matches the addresses the name had when last
1259
+ * resolved; it does not check a TLS server name. Stored in canonical
1260
+ * form: a prefix masked, a name in lower case.
972
1261
  *
973
- * @generated from field: string recording_id = 8;
1262
+ * @generated from field: string destination = 2;
974
1263
  */
975
- recordingId: string;
1264
+ destination: string;
976
1265
  /**
977
- * Unset unless it was revoked.
1266
+ * A port such as "443", a range such as "8000-8100", or empty for every
1267
+ * port.
978
1268
  *
979
- * @generated from field: google.protobuf.Timestamp revoked_at = 9;
1269
+ * @generated from field: string ports = 3;
980
1270
  */
981
- revokedAt?: Timestamp | undefined;
1271
+ ports: string;
982
1272
  /**
983
- * Who minted it: a person's sign-in or an API token, as in the audit.
1273
+ * "tcp", "udp", or empty for both; empty with no ports covers every
1274
+ * protocol, ICMP included.
984
1275
  *
985
- * @generated from field: string created_by = 10;
1276
+ * @generated from field: string protocol = 4;
986
1277
  */
987
- createdBy: string;
1278
+ protocol: string;
988
1279
  };
989
1280
  /**
990
- * EmbedToken is one of a project's embed tokens, without the token itself.
1281
+ * EgressRule allows or denies outbound connections to one destination.
991
1282
  *
992
- * @generated from message toshi.workspace.v1.EmbedToken
1283
+ * @generated from message toshi.workspace.v1.EgressRule
993
1284
  */
994
- export type EmbedTokenJson = {
1285
+ export type EgressRuleJson = {
995
1286
  /**
996
- * Assigned by the server.
1287
+ * "allow" or "deny".
997
1288
  *
998
- * @generated from field: string id = 1;
1289
+ * @generated from field: string action = 1;
999
1290
  */
1000
- id?: string;
1291
+ action?: string;
1001
1292
  /**
1002
- * The project's name.
1293
+ * An IPv4 or IPv6 address, a CIDR prefix, or a DNS name such as
1294
+ * "api.example.com". A name is resolved by the host that runs the
1295
+ * workload, so it matches the addresses the name had when last
1296
+ * resolved; it does not check a TLS server name. Stored in canonical
1297
+ * form: a prefix masked, a name in lower case.
1003
1298
  *
1004
- * @generated from field: string project = 2;
1299
+ * @generated from field: string destination = 2;
1005
1300
  */
1006
- project?: string;
1301
+ destination?: string;
1007
1302
  /**
1008
- * The origins of the pages that may spend it, such as
1009
- * https://app.example.com.
1303
+ * A port such as "443", a range such as "8000-8100", or empty for every
1304
+ * port.
1010
1305
  *
1011
- * @generated from field: repeated string origins = 3;
1306
+ * @generated from field: string ports = 3;
1012
1307
  */
1013
- origins?: string[];
1308
+ ports?: string;
1014
1309
  /**
1015
- * @generated from field: toshi.workspace.v1.EmbedTokenState state = 4;
1310
+ * "tcp", "udp", or empty for both; empty with no ports covers every
1311
+ * protocol, ICMP included.
1312
+ *
1313
+ * @generated from field: string protocol = 4;
1016
1314
  */
1017
- state?: EmbedTokenStateJson;
1315
+ protocol?: string;
1316
+ };
1317
+ /**
1318
+ * Describes the message toshi.workspace.v1.EgressRule.
1319
+ * Use `create(EgressRuleSchema)` to create a new message.
1320
+ */
1321
+ export declare const EgressRuleSchema: GenMessage<EgressRule, {
1322
+ jsonType: EgressRuleJson;
1323
+ }>;
1324
+ /**
1325
+ * @generated from message toshi.workspace.v1.GetProjectNetworkRequest
1326
+ */
1327
+ export type GetProjectNetworkRequest = Message<"toshi.workspace.v1.GetProjectNetworkRequest"> & {
1018
1328
  /**
1019
- * @generated from field: google.protobuf.Timestamp created_at = 5;
1329
+ * The project's name.
1330
+ *
1331
+ * @generated from field: string project = 1;
1020
1332
  */
1021
- createdAt?: TimestampJson;
1333
+ project: string;
1334
+ };
1335
+ /**
1336
+ * @generated from message toshi.workspace.v1.GetProjectNetworkRequest
1337
+ */
1338
+ export type GetProjectNetworkRequestJson = {
1022
1339
  /**
1023
- * @generated from field: google.protobuf.Timestamp expires_at = 6;
1340
+ * The project's name.
1341
+ *
1342
+ * @generated from field: string project = 1;
1024
1343
  */
1025
- expiresAt?: TimestampJson;
1344
+ project?: string;
1345
+ };
1346
+ /**
1347
+ * Describes the message toshi.workspace.v1.GetProjectNetworkRequest.
1348
+ * Use `create(GetProjectNetworkRequestSchema)` to create a new message.
1349
+ */
1350
+ export declare const GetProjectNetworkRequestSchema: GenMessage<GetProjectNetworkRequest, {
1351
+ jsonType: GetProjectNetworkRequestJson;
1352
+ }>;
1353
+ /**
1354
+ * @generated from message toshi.workspace.v1.GetProjectNetworkResponse
1355
+ */
1356
+ export type GetProjectNetworkResponse = Message<"toshi.workspace.v1.GetProjectNetworkResponse"> & {
1026
1357
  /**
1027
- * Unset until a page spends it.
1028
- *
1029
- * @generated from field: google.protobuf.Timestamp used_at = 7;
1358
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1030
1359
  */
1031
- usedAt?: TimestampJson;
1360
+ network?: NetworkPolicy | undefined;
1032
1361
  /**
1033
- * The recording it was spent on; empty until then.
1362
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1363
+ * never set.
1034
1364
  *
1035
- * @generated from field: string recording_id = 8;
1365
+ * @generated from field: string updated_by = 2;
1036
1366
  */
1037
- recordingId?: string;
1367
+ updatedBy: string;
1038
1368
  /**
1039
- * Unset unless it was revoked.
1040
- *
1041
- * @generated from field: google.protobuf.Timestamp revoked_at = 9;
1369
+ * @generated from field: google.protobuf.Timestamp updated_at = 3;
1042
1370
  */
1043
- revokedAt?: TimestampJson;
1371
+ updatedAt?: Timestamp | undefined;
1372
+ };
1373
+ /**
1374
+ * @generated from message toshi.workspace.v1.GetProjectNetworkResponse
1375
+ */
1376
+ export type GetProjectNetworkResponseJson = {
1044
1377
  /**
1045
- * Who minted it: a person's sign-in or an API token, as in the audit.
1378
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1379
+ */
1380
+ network?: NetworkPolicyJson;
1381
+ /**
1382
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1383
+ * never set.
1046
1384
  *
1047
- * @generated from field: string created_by = 10;
1385
+ * @generated from field: string updated_by = 2;
1048
1386
  */
1049
- createdBy?: string;
1387
+ updatedBy?: string;
1388
+ /**
1389
+ * @generated from field: google.protobuf.Timestamp updated_at = 3;
1390
+ */
1391
+ updatedAt?: TimestampJson;
1050
1392
  };
1051
1393
  /**
1052
- * Describes the message toshi.workspace.v1.EmbedToken.
1053
- * Use `create(EmbedTokenSchema)` to create a new message.
1394
+ * Describes the message toshi.workspace.v1.GetProjectNetworkResponse.
1395
+ * Use `create(GetProjectNetworkResponseSchema)` to create a new message.
1054
1396
  */
1055
- export declare const EmbedTokenSchema: GenMessage<EmbedToken, {
1056
- jsonType: EmbedTokenJson;
1397
+ export declare const GetProjectNetworkResponseSchema: GenMessage<GetProjectNetworkResponse, {
1398
+ jsonType: GetProjectNetworkResponseJson;
1057
1399
  }>;
1058
1400
  /**
1059
- * @generated from message toshi.workspace.v1.CreateEmbedTokenRequest
1401
+ * @generated from message toshi.workspace.v1.SetProjectNetworkRequest
1060
1402
  */
1061
- export type CreateEmbedTokenRequest = Message<"toshi.workspace.v1.CreateEmbedTokenRequest"> & {
1403
+ export type SetProjectNetworkRequest = Message<"toshi.workspace.v1.SetProjectNetworkRequest"> & {
1062
1404
  /**
1063
1405
  * The project's name.
1064
1406
  *
@@ -1066,25 +1408,14 @@ export type CreateEmbedTokenRequest = Message<"toshi.workspace.v1.CreateEmbedTok
1066
1408
  */
1067
1409
  project: string;
1068
1410
  /**
1069
- * The origins of the pages that may spend it, each a scheme and a host
1070
- * with an optional port: https, or http for localhost only. At least
1071
- * one, and more than the server's maximum is INVALID_ARGUMENT.
1072
- *
1073
- * @generated from field: repeated string origins = 2;
1074
- */
1075
- origins: string[];
1076
- /**
1077
- * How long the token stays valid; unset is the server's default, and
1078
- * more than its maximum is INVALID_ARGUMENT.
1079
- *
1080
- * @generated from field: google.protobuf.Duration expires_in = 3;
1411
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 2;
1081
1412
  */
1082
- expiresIn?: Duration | undefined;
1413
+ network?: NetworkPolicy | undefined;
1083
1414
  };
1084
1415
  /**
1085
- * @generated from message toshi.workspace.v1.CreateEmbedTokenRequest
1416
+ * @generated from message toshi.workspace.v1.SetProjectNetworkRequest
1086
1417
  */
1087
- export type CreateEmbedTokenRequestJson = {
1418
+ export type SetProjectNetworkRequestJson = {
1088
1419
  /**
1089
1420
  * The project's name.
1090
1421
  *
@@ -1092,16 +1423,908 @@ export type CreateEmbedTokenRequestJson = {
1092
1423
  */
1093
1424
  project?: string;
1094
1425
  /**
1095
- * The origins of the pages that may spend it, each a scheme and a host
1096
- * with an optional port: https, or http for localhost only. At least
1097
- * one, and more than the server's maximum is INVALID_ARGUMENT.
1426
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 2;
1427
+ */
1428
+ network?: NetworkPolicyJson;
1429
+ };
1430
+ /**
1431
+ * Describes the message toshi.workspace.v1.SetProjectNetworkRequest.
1432
+ * Use `create(SetProjectNetworkRequestSchema)` to create a new message.
1433
+ */
1434
+ export declare const SetProjectNetworkRequestSchema: GenMessage<SetProjectNetworkRequest, {
1435
+ jsonType: SetProjectNetworkRequestJson;
1436
+ }>;
1437
+ /**
1438
+ * @generated from message toshi.workspace.v1.SetProjectNetworkResponse
1439
+ */
1440
+ export type SetProjectNetworkResponse = Message<"toshi.workspace.v1.SetProjectNetworkResponse"> & {
1441
+ /**
1442
+ * The policy as stored.
1443
+ *
1444
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1445
+ */
1446
+ network?: NetworkPolicy | undefined;
1447
+ };
1448
+ /**
1449
+ * @generated from message toshi.workspace.v1.SetProjectNetworkResponse
1450
+ */
1451
+ export type SetProjectNetworkResponseJson = {
1452
+ /**
1453
+ * The policy as stored.
1454
+ *
1455
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1456
+ */
1457
+ network?: NetworkPolicyJson;
1458
+ };
1459
+ /**
1460
+ * Describes the message toshi.workspace.v1.SetProjectNetworkResponse.
1461
+ * Use `create(SetProjectNetworkResponseSchema)` to create a new message.
1462
+ */
1463
+ export declare const SetProjectNetworkResponseSchema: GenMessage<SetProjectNetworkResponse, {
1464
+ jsonType: SetProjectNetworkResponseJson;
1465
+ }>;
1466
+ /**
1467
+ * @generated from message toshi.workspace.v1.GetEnvironmentNetworkRequest
1468
+ */
1469
+ export type GetEnvironmentNetworkRequest = Message<"toshi.workspace.v1.GetEnvironmentNetworkRequest"> & {
1470
+ /**
1471
+ * The project's name.
1472
+ *
1473
+ * @generated from field: string project = 1;
1474
+ */
1475
+ project: string;
1476
+ /**
1477
+ * The environment's name.
1478
+ *
1479
+ * @generated from field: string environment = 2;
1480
+ */
1481
+ environment: string;
1482
+ };
1483
+ /**
1484
+ * @generated from message toshi.workspace.v1.GetEnvironmentNetworkRequest
1485
+ */
1486
+ export type GetEnvironmentNetworkRequestJson = {
1487
+ /**
1488
+ * The project's name.
1489
+ *
1490
+ * @generated from field: string project = 1;
1491
+ */
1492
+ project?: string;
1493
+ /**
1494
+ * The environment's name.
1495
+ *
1496
+ * @generated from field: string environment = 2;
1497
+ */
1498
+ environment?: string;
1499
+ };
1500
+ /**
1501
+ * Describes the message toshi.workspace.v1.GetEnvironmentNetworkRequest.
1502
+ * Use `create(GetEnvironmentNetworkRequestSchema)` to create a new message.
1503
+ */
1504
+ export declare const GetEnvironmentNetworkRequestSchema: GenMessage<GetEnvironmentNetworkRequest, {
1505
+ jsonType: GetEnvironmentNetworkRequestJson;
1506
+ }>;
1507
+ /**
1508
+ * @generated from message toshi.workspace.v1.GetEnvironmentNetworkResponse
1509
+ */
1510
+ export type GetEnvironmentNetworkResponse = Message<"toshi.workspace.v1.GetEnvironmentNetworkResponse"> & {
1511
+ /**
1512
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1513
+ */
1514
+ network?: NetworkPolicy | undefined;
1515
+ /**
1516
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1517
+ * never set.
1518
+ *
1519
+ * @generated from field: string updated_by = 2;
1520
+ */
1521
+ updatedBy: string;
1522
+ /**
1523
+ * @generated from field: google.protobuf.Timestamp updated_at = 3;
1524
+ */
1525
+ updatedAt?: Timestamp | undefined;
1526
+ };
1527
+ /**
1528
+ * @generated from message toshi.workspace.v1.GetEnvironmentNetworkResponse
1529
+ */
1530
+ export type GetEnvironmentNetworkResponseJson = {
1531
+ /**
1532
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1533
+ */
1534
+ network?: NetworkPolicyJson;
1535
+ /**
1536
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1537
+ * never set.
1538
+ *
1539
+ * @generated from field: string updated_by = 2;
1540
+ */
1541
+ updatedBy?: string;
1542
+ /**
1543
+ * @generated from field: google.protobuf.Timestamp updated_at = 3;
1544
+ */
1545
+ updatedAt?: TimestampJson;
1546
+ };
1547
+ /**
1548
+ * Describes the message toshi.workspace.v1.GetEnvironmentNetworkResponse.
1549
+ * Use `create(GetEnvironmentNetworkResponseSchema)` to create a new message.
1550
+ */
1551
+ export declare const GetEnvironmentNetworkResponseSchema: GenMessage<GetEnvironmentNetworkResponse, {
1552
+ jsonType: GetEnvironmentNetworkResponseJson;
1553
+ }>;
1554
+ /**
1555
+ * @generated from message toshi.workspace.v1.SetEnvironmentNetworkRequest
1556
+ */
1557
+ export type SetEnvironmentNetworkRequest = Message<"toshi.workspace.v1.SetEnvironmentNetworkRequest"> & {
1558
+ /**
1559
+ * The project's name.
1560
+ *
1561
+ * @generated from field: string project = 1;
1562
+ */
1563
+ project: string;
1564
+ /**
1565
+ * The environment's name.
1566
+ *
1567
+ * @generated from field: string environment = 2;
1568
+ */
1569
+ environment: string;
1570
+ /**
1571
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 3;
1572
+ */
1573
+ network?: NetworkPolicy | undefined;
1574
+ };
1575
+ /**
1576
+ * @generated from message toshi.workspace.v1.SetEnvironmentNetworkRequest
1577
+ */
1578
+ export type SetEnvironmentNetworkRequestJson = {
1579
+ /**
1580
+ * The project's name.
1581
+ *
1582
+ * @generated from field: string project = 1;
1583
+ */
1584
+ project?: string;
1585
+ /**
1586
+ * The environment's name.
1587
+ *
1588
+ * @generated from field: string environment = 2;
1589
+ */
1590
+ environment?: string;
1591
+ /**
1592
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 3;
1593
+ */
1594
+ network?: NetworkPolicyJson;
1595
+ };
1596
+ /**
1597
+ * Describes the message toshi.workspace.v1.SetEnvironmentNetworkRequest.
1598
+ * Use `create(SetEnvironmentNetworkRequestSchema)` to create a new message.
1599
+ */
1600
+ export declare const SetEnvironmentNetworkRequestSchema: GenMessage<SetEnvironmentNetworkRequest, {
1601
+ jsonType: SetEnvironmentNetworkRequestJson;
1602
+ }>;
1603
+ /**
1604
+ * @generated from message toshi.workspace.v1.SetEnvironmentNetworkResponse
1605
+ */
1606
+ export type SetEnvironmentNetworkResponse = Message<"toshi.workspace.v1.SetEnvironmentNetworkResponse"> & {
1607
+ /**
1608
+ * The policy as stored.
1609
+ *
1610
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1611
+ */
1612
+ network?: NetworkPolicy | undefined;
1613
+ };
1614
+ /**
1615
+ * @generated from message toshi.workspace.v1.SetEnvironmentNetworkResponse
1616
+ */
1617
+ export type SetEnvironmentNetworkResponseJson = {
1618
+ /**
1619
+ * The policy as stored.
1620
+ *
1621
+ * @generated from field: toshi.workspace.v1.NetworkPolicy network = 1;
1622
+ */
1623
+ network?: NetworkPolicyJson;
1624
+ };
1625
+ /**
1626
+ * Describes the message toshi.workspace.v1.SetEnvironmentNetworkResponse.
1627
+ * Use `create(SetEnvironmentNetworkResponseSchema)` to create a new message.
1628
+ */
1629
+ export declare const SetEnvironmentNetworkResponseSchema: GenMessage<SetEnvironmentNetworkResponse, {
1630
+ jsonType: SetEnvironmentNetworkResponseJson;
1631
+ }>;
1632
+ /**
1633
+ * RetentionKeep is how long one kind of artifact is kept after it
1634
+ * completes.
1635
+ *
1636
+ * @generated from message toshi.workspace.v1.RetentionKeep
1637
+ */
1638
+ export type RetentionKeep = Message<"toshi.workspace.v1.RetentionKeep"> & {
1639
+ /**
1640
+ * The artifact kind: recording, recording-signed-in, trace or report.
1641
+ *
1642
+ * @generated from field: string kind = 1;
1643
+ */
1644
+ kind: string;
1645
+ /**
1646
+ * At least one hour.
1647
+ *
1648
+ * @generated from field: google.protobuf.Duration keep = 2;
1649
+ */
1650
+ keep?: Duration | undefined;
1651
+ };
1652
+ /**
1653
+ * RetentionKeep is how long one kind of artifact is kept after it
1654
+ * completes.
1655
+ *
1656
+ * @generated from message toshi.workspace.v1.RetentionKeep
1657
+ */
1658
+ export type RetentionKeepJson = {
1659
+ /**
1660
+ * The artifact kind: recording, recording-signed-in, trace or report.
1661
+ *
1662
+ * @generated from field: string kind = 1;
1663
+ */
1664
+ kind?: string;
1665
+ /**
1666
+ * At least one hour.
1667
+ *
1668
+ * @generated from field: google.protobuf.Duration keep = 2;
1669
+ */
1670
+ keep?: DurationJson;
1671
+ };
1672
+ /**
1673
+ * Describes the message toshi.workspace.v1.RetentionKeep.
1674
+ * Use `create(RetentionKeepSchema)` to create a new message.
1675
+ */
1676
+ export declare const RetentionKeepSchema: GenMessage<RetentionKeep, {
1677
+ jsonType: RetentionKeepJson;
1678
+ }>;
1679
+ /**
1680
+ * EnvironmentRetention is how long an environment keeps its finished jobs
1681
+ * and its artifacts. As an override, what it leaves out follows the
1682
+ * workspace, and what it sets may only shorten the workspace's.
1683
+ *
1684
+ * @generated from message toshi.workspace.v1.EnvironmentRetention
1685
+ */
1686
+ export type EnvironmentRetention = Message<"toshi.workspace.v1.EnvironmentRetention"> & {
1687
+ /**
1688
+ * Days the environment keeps its finished jobs. In an override, unset
1689
+ * follows the workspace and the value is at least 1 and at most the
1690
+ * workspace's period: an override cannot keep forever. In the retention
1691
+ * that applies, 0 keeps forever.
1692
+ *
1693
+ * @generated from field: optional int32 history_days = 1;
1694
+ */
1695
+ historyDays?: number | undefined;
1696
+ /**
1697
+ * Each kind's keep, by kind. In an override, a kind left out follows the
1698
+ * workspace. In the retention that applies, a kind left out is kept
1699
+ * forever.
1700
+ *
1701
+ * @generated from field: repeated toshi.workspace.v1.RetentionKeep keeps = 2;
1702
+ */
1703
+ keeps: RetentionKeep[];
1704
+ };
1705
+ /**
1706
+ * EnvironmentRetention is how long an environment keeps its finished jobs
1707
+ * and its artifacts. As an override, what it leaves out follows the
1708
+ * workspace, and what it sets may only shorten the workspace's.
1709
+ *
1710
+ * @generated from message toshi.workspace.v1.EnvironmentRetention
1711
+ */
1712
+ export type EnvironmentRetentionJson = {
1713
+ /**
1714
+ * Days the environment keeps its finished jobs. In an override, unset
1715
+ * follows the workspace and the value is at least 1 and at most the
1716
+ * workspace's period: an override cannot keep forever. In the retention
1717
+ * that applies, 0 keeps forever.
1718
+ *
1719
+ * @generated from field: optional int32 history_days = 1;
1720
+ */
1721
+ historyDays?: number;
1722
+ /**
1723
+ * Each kind's keep, by kind. In an override, a kind left out follows the
1724
+ * workspace. In the retention that applies, a kind left out is kept
1725
+ * forever.
1726
+ *
1727
+ * @generated from field: repeated toshi.workspace.v1.RetentionKeep keeps = 2;
1728
+ */
1729
+ keeps?: RetentionKeepJson[];
1730
+ };
1731
+ /**
1732
+ * Describes the message toshi.workspace.v1.EnvironmentRetention.
1733
+ * Use `create(EnvironmentRetentionSchema)` to create a new message.
1734
+ */
1735
+ export declare const EnvironmentRetentionSchema: GenMessage<EnvironmentRetention, {
1736
+ jsonType: EnvironmentRetentionJson;
1737
+ }>;
1738
+ /**
1739
+ * @generated from message toshi.workspace.v1.GetEnvironmentRetentionRequest
1740
+ */
1741
+ export type GetEnvironmentRetentionRequest = Message<"toshi.workspace.v1.GetEnvironmentRetentionRequest"> & {
1742
+ /**
1743
+ * The project's name.
1744
+ *
1745
+ * @generated from field: string project = 1;
1746
+ */
1747
+ project: string;
1748
+ /**
1749
+ * The environment's name.
1750
+ *
1751
+ * @generated from field: string environment = 2;
1752
+ */
1753
+ environment: string;
1754
+ };
1755
+ /**
1756
+ * @generated from message toshi.workspace.v1.GetEnvironmentRetentionRequest
1757
+ */
1758
+ export type GetEnvironmentRetentionRequestJson = {
1759
+ /**
1760
+ * The project's name.
1761
+ *
1762
+ * @generated from field: string project = 1;
1763
+ */
1764
+ project?: string;
1765
+ /**
1766
+ * The environment's name.
1767
+ *
1768
+ * @generated from field: string environment = 2;
1769
+ */
1770
+ environment?: string;
1771
+ };
1772
+ /**
1773
+ * Describes the message toshi.workspace.v1.GetEnvironmentRetentionRequest.
1774
+ * Use `create(GetEnvironmentRetentionRequestSchema)` to create a new message.
1775
+ */
1776
+ export declare const GetEnvironmentRetentionRequestSchema: GenMessage<GetEnvironmentRetentionRequest, {
1777
+ jsonType: GetEnvironmentRetentionRequestJson;
1778
+ }>;
1779
+ /**
1780
+ * @generated from message toshi.workspace.v1.GetEnvironmentRetentionResponse
1781
+ */
1782
+ export type GetEnvironmentRetentionResponse = Message<"toshi.workspace.v1.GetEnvironmentRetentionResponse"> & {
1783
+ /**
1784
+ * The override as stored; empty when none is set.
1785
+ *
1786
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 1;
1787
+ */
1788
+ retention?: EnvironmentRetention | undefined;
1789
+ /**
1790
+ * What applies to the environment's jobs and artifacts: each value of the
1791
+ * override that is shorter than the workspace's, else the workspace's.
1792
+ *
1793
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention effective = 2;
1794
+ */
1795
+ effective?: EnvironmentRetention | undefined;
1796
+ /**
1797
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1798
+ * never set.
1799
+ *
1800
+ * @generated from field: string updated_by = 3;
1801
+ */
1802
+ updatedBy: string;
1803
+ /**
1804
+ * @generated from field: google.protobuf.Timestamp updated_at = 4;
1805
+ */
1806
+ updatedAt?: Timestamp | undefined;
1807
+ };
1808
+ /**
1809
+ * @generated from message toshi.workspace.v1.GetEnvironmentRetentionResponse
1810
+ */
1811
+ export type GetEnvironmentRetentionResponseJson = {
1812
+ /**
1813
+ * The override as stored; empty when none is set.
1814
+ *
1815
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 1;
1816
+ */
1817
+ retention?: EnvironmentRetentionJson;
1818
+ /**
1819
+ * What applies to the environment's jobs and artifacts: each value of the
1820
+ * override that is shorter than the workspace's, else the workspace's.
1821
+ *
1822
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention effective = 2;
1823
+ */
1824
+ effective?: EnvironmentRetentionJson;
1825
+ /**
1826
+ * The audit actor that last set it, "<kind>:<id>"; empty when it was
1827
+ * never set.
1828
+ *
1829
+ * @generated from field: string updated_by = 3;
1830
+ */
1831
+ updatedBy?: string;
1832
+ /**
1833
+ * @generated from field: google.protobuf.Timestamp updated_at = 4;
1834
+ */
1835
+ updatedAt?: TimestampJson;
1836
+ };
1837
+ /**
1838
+ * Describes the message toshi.workspace.v1.GetEnvironmentRetentionResponse.
1839
+ * Use `create(GetEnvironmentRetentionResponseSchema)` to create a new message.
1840
+ */
1841
+ export declare const GetEnvironmentRetentionResponseSchema: GenMessage<GetEnvironmentRetentionResponse, {
1842
+ jsonType: GetEnvironmentRetentionResponseJson;
1843
+ }>;
1844
+ /**
1845
+ * @generated from message toshi.workspace.v1.SetEnvironmentRetentionRequest
1846
+ */
1847
+ export type SetEnvironmentRetentionRequest = Message<"toshi.workspace.v1.SetEnvironmentRetentionRequest"> & {
1848
+ /**
1849
+ * The project's name.
1850
+ *
1851
+ * @generated from field: string project = 1;
1852
+ */
1853
+ project: string;
1854
+ /**
1855
+ * The environment's name.
1856
+ *
1857
+ * @generated from field: string environment = 2;
1858
+ */
1859
+ environment: string;
1860
+ /**
1861
+ * The whole override; empty clears it.
1862
+ *
1863
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 3;
1864
+ */
1865
+ retention?: EnvironmentRetention | undefined;
1866
+ };
1867
+ /**
1868
+ * @generated from message toshi.workspace.v1.SetEnvironmentRetentionRequest
1869
+ */
1870
+ export type SetEnvironmentRetentionRequestJson = {
1871
+ /**
1872
+ * The project's name.
1873
+ *
1874
+ * @generated from field: string project = 1;
1875
+ */
1876
+ project?: string;
1877
+ /**
1878
+ * The environment's name.
1879
+ *
1880
+ * @generated from field: string environment = 2;
1881
+ */
1882
+ environment?: string;
1883
+ /**
1884
+ * The whole override; empty clears it.
1885
+ *
1886
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 3;
1887
+ */
1888
+ retention?: EnvironmentRetentionJson;
1889
+ };
1890
+ /**
1891
+ * Describes the message toshi.workspace.v1.SetEnvironmentRetentionRequest.
1892
+ * Use `create(SetEnvironmentRetentionRequestSchema)` to create a new message.
1893
+ */
1894
+ export declare const SetEnvironmentRetentionRequestSchema: GenMessage<SetEnvironmentRetentionRequest, {
1895
+ jsonType: SetEnvironmentRetentionRequestJson;
1896
+ }>;
1897
+ /**
1898
+ * @generated from message toshi.workspace.v1.SetEnvironmentRetentionResponse
1899
+ */
1900
+ export type SetEnvironmentRetentionResponse = Message<"toshi.workspace.v1.SetEnvironmentRetentionResponse"> & {
1901
+ /**
1902
+ * The override as stored.
1903
+ *
1904
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 1;
1905
+ */
1906
+ retention?: EnvironmentRetention | undefined;
1907
+ /**
1908
+ * What applies after it, as GetEnvironmentRetention reports it.
1909
+ *
1910
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention effective = 2;
1911
+ */
1912
+ effective?: EnvironmentRetention | undefined;
1913
+ };
1914
+ /**
1915
+ * @generated from message toshi.workspace.v1.SetEnvironmentRetentionResponse
1916
+ */
1917
+ export type SetEnvironmentRetentionResponseJson = {
1918
+ /**
1919
+ * The override as stored.
1920
+ *
1921
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention retention = 1;
1922
+ */
1923
+ retention?: EnvironmentRetentionJson;
1924
+ /**
1925
+ * What applies after it, as GetEnvironmentRetention reports it.
1926
+ *
1927
+ * @generated from field: toshi.workspace.v1.EnvironmentRetention effective = 2;
1928
+ */
1929
+ effective?: EnvironmentRetentionJson;
1930
+ };
1931
+ /**
1932
+ * Describes the message toshi.workspace.v1.SetEnvironmentRetentionResponse.
1933
+ * Use `create(SetEnvironmentRetentionResponseSchema)` to create a new message.
1934
+ */
1935
+ export declare const SetEnvironmentRetentionResponseSchema: GenMessage<SetEnvironmentRetentionResponse, {
1936
+ jsonType: SetEnvironmentRetentionResponseJson;
1937
+ }>;
1938
+ /**
1939
+ * @generated from message toshi.workspace.v1.SetEnvironmentVolumesRequest
1940
+ */
1941
+ export type SetEnvironmentVolumesRequest = Message<"toshi.workspace.v1.SetEnvironmentVolumesRequest"> & {
1942
+ /**
1943
+ * The project's name.
1944
+ *
1945
+ * @generated from field: string project = 1;
1946
+ */
1947
+ project: string;
1948
+ /**
1949
+ * The environment's name.
1950
+ *
1951
+ * @generated from field: string environment = 2;
1952
+ */
1953
+ environment: string;
1954
+ /**
1955
+ * The whole list of volume names; empty lifts the limit.
1956
+ *
1957
+ * @generated from field: repeated string volumes = 3;
1958
+ */
1959
+ volumes: string[];
1960
+ };
1961
+ /**
1962
+ * @generated from message toshi.workspace.v1.SetEnvironmentVolumesRequest
1963
+ */
1964
+ export type SetEnvironmentVolumesRequestJson = {
1965
+ /**
1966
+ * The project's name.
1967
+ *
1968
+ * @generated from field: string project = 1;
1969
+ */
1970
+ project?: string;
1971
+ /**
1972
+ * The environment's name.
1973
+ *
1974
+ * @generated from field: string environment = 2;
1975
+ */
1976
+ environment?: string;
1977
+ /**
1978
+ * The whole list of volume names; empty lifts the limit.
1979
+ *
1980
+ * @generated from field: repeated string volumes = 3;
1981
+ */
1982
+ volumes?: string[];
1983
+ };
1984
+ /**
1985
+ * Describes the message toshi.workspace.v1.SetEnvironmentVolumesRequest.
1986
+ * Use `create(SetEnvironmentVolumesRequestSchema)` to create a new message.
1987
+ */
1988
+ export declare const SetEnvironmentVolumesRequestSchema: GenMessage<SetEnvironmentVolumesRequest, {
1989
+ jsonType: SetEnvironmentVolumesRequestJson;
1990
+ }>;
1991
+ /**
1992
+ * @generated from message toshi.workspace.v1.SetEnvironmentVolumesResponse
1993
+ */
1994
+ export type SetEnvironmentVolumesResponse = Message<"toshi.workspace.v1.SetEnvironmentVolumesResponse"> & {
1995
+ /**
1996
+ * The environment with its list as stored.
1997
+ *
1998
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 1;
1999
+ */
2000
+ environment?: ProjectEnvironment | undefined;
2001
+ };
2002
+ /**
2003
+ * @generated from message toshi.workspace.v1.SetEnvironmentVolumesResponse
2004
+ */
2005
+ export type SetEnvironmentVolumesResponseJson = {
2006
+ /**
2007
+ * The environment with its list as stored.
2008
+ *
2009
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 1;
2010
+ */
2011
+ environment?: ProjectEnvironmentJson;
2012
+ };
2013
+ /**
2014
+ * Describes the message toshi.workspace.v1.SetEnvironmentVolumesResponse.
2015
+ * Use `create(SetEnvironmentVolumesResponseSchema)` to create a new message.
2016
+ */
2017
+ export declare const SetEnvironmentVolumesResponseSchema: GenMessage<SetEnvironmentVolumesResponse, {
2018
+ jsonType: SetEnvironmentVolumesResponseJson;
2019
+ }>;
2020
+ /**
2021
+ * @generated from message toshi.workspace.v1.UpdateEnvironmentRequest
2022
+ */
2023
+ export type UpdateEnvironmentRequest = Message<"toshi.workspace.v1.UpdateEnvironmentRequest"> & {
2024
+ /**
2025
+ * The project's name.
2026
+ *
2027
+ * @generated from field: string project = 1;
2028
+ */
2029
+ project: string;
2030
+ /**
2031
+ * name names the environment; the fields update_mask names carry the
2032
+ * new values.
2033
+ *
2034
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 2;
2035
+ */
2036
+ environment?: ProjectEnvironment | undefined;
2037
+ /**
2038
+ * retention, volumes, or both. The paths managed_by, manifest_digest,
2039
+ * manifest_origin and managed_fields set the management mark and go
2040
+ * together: all four or none, and on their own; managed_by "manifest"
2041
+ * needs the digest, an origin and at least one field path, and an empty
2042
+ * managed_by clears all four. An unset mask never sets the mark.
2043
+ *
2044
+ * @generated from field: google.protobuf.FieldMask update_mask = 3;
2045
+ */
2046
+ updateMask?: FieldMask | undefined;
2047
+ };
2048
+ /**
2049
+ * @generated from message toshi.workspace.v1.UpdateEnvironmentRequest
2050
+ */
2051
+ export type UpdateEnvironmentRequestJson = {
2052
+ /**
2053
+ * The project's name.
2054
+ *
2055
+ * @generated from field: string project = 1;
2056
+ */
2057
+ project?: string;
2058
+ /**
2059
+ * name names the environment; the fields update_mask names carry the
2060
+ * new values.
2061
+ *
2062
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 2;
2063
+ */
2064
+ environment?: ProjectEnvironmentJson;
2065
+ /**
2066
+ * retention, volumes, or both. The paths managed_by, manifest_digest,
2067
+ * manifest_origin and managed_fields set the management mark and go
2068
+ * together: all four or none, and on their own; managed_by "manifest"
2069
+ * needs the digest, an origin and at least one field path, and an empty
2070
+ * managed_by clears all four. An unset mask never sets the mark.
2071
+ *
2072
+ * @generated from field: google.protobuf.FieldMask update_mask = 3;
2073
+ */
2074
+ updateMask?: FieldMaskJson;
2075
+ };
2076
+ /**
2077
+ * Describes the message toshi.workspace.v1.UpdateEnvironmentRequest.
2078
+ * Use `create(UpdateEnvironmentRequestSchema)` to create a new message.
2079
+ */
2080
+ export declare const UpdateEnvironmentRequestSchema: GenMessage<UpdateEnvironmentRequest, {
2081
+ jsonType: UpdateEnvironmentRequestJson;
2082
+ }>;
2083
+ /**
2084
+ * @generated from message toshi.workspace.v1.UpdateEnvironmentResponse
2085
+ */
2086
+ export type UpdateEnvironmentResponse = Message<"toshi.workspace.v1.UpdateEnvironmentResponse"> & {
2087
+ /**
2088
+ * The environment as stored.
2089
+ *
2090
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 1;
2091
+ */
2092
+ environment?: ProjectEnvironment | undefined;
2093
+ };
2094
+ /**
2095
+ * @generated from message toshi.workspace.v1.UpdateEnvironmentResponse
2096
+ */
2097
+ export type UpdateEnvironmentResponseJson = {
2098
+ /**
2099
+ * The environment as stored.
2100
+ *
2101
+ * @generated from field: toshi.workspace.v1.ProjectEnvironment environment = 1;
2102
+ */
2103
+ environment?: ProjectEnvironmentJson;
2104
+ };
2105
+ /**
2106
+ * Describes the message toshi.workspace.v1.UpdateEnvironmentResponse.
2107
+ * Use `create(UpdateEnvironmentResponseSchema)` to create a new message.
2108
+ */
2109
+ export declare const UpdateEnvironmentResponseSchema: GenMessage<UpdateEnvironmentResponse, {
2110
+ jsonType: UpdateEnvironmentResponseJson;
2111
+ }>;
2112
+ /**
2113
+ * EmbedToken is one of a project's embed tokens, without the token itself.
2114
+ *
2115
+ * @generated from message toshi.workspace.v1.EmbedToken
2116
+ */
2117
+ export type EmbedToken = Message<"toshi.workspace.v1.EmbedToken"> & {
2118
+ /**
2119
+ * Assigned by the server.
2120
+ *
2121
+ * @generated from field: string id = 1;
2122
+ */
2123
+ id: string;
2124
+ /**
2125
+ * The project's name.
2126
+ *
2127
+ * @generated from field: string project = 2;
2128
+ */
2129
+ project: string;
2130
+ /**
2131
+ * The origins of the pages that may spend it, such as
2132
+ * https://app.example.com.
2133
+ *
2134
+ * @generated from field: repeated string origins = 3;
2135
+ */
2136
+ origins: string[];
2137
+ /**
2138
+ * @generated from field: toshi.workspace.v1.EmbedTokenState state = 4;
2139
+ */
2140
+ state: EmbedTokenState;
2141
+ /**
2142
+ * @generated from field: google.protobuf.Timestamp created_at = 5;
2143
+ */
2144
+ createdAt?: Timestamp | undefined;
2145
+ /**
2146
+ * @generated from field: google.protobuf.Timestamp expires_at = 6;
2147
+ */
2148
+ expiresAt?: Timestamp | undefined;
2149
+ /**
2150
+ * Unset until a page spends it.
2151
+ *
2152
+ * @generated from field: google.protobuf.Timestamp used_at = 7;
2153
+ */
2154
+ usedAt?: Timestamp | undefined;
2155
+ /**
2156
+ * The recording it was spent on; empty until then.
2157
+ *
2158
+ * @generated from field: string recording_id = 8;
2159
+ */
2160
+ recordingId: string;
2161
+ /**
2162
+ * Unset unless it was revoked.
2163
+ *
2164
+ * @generated from field: google.protobuf.Timestamp revoked_at = 9;
2165
+ */
2166
+ revokedAt?: Timestamp | undefined;
2167
+ /**
2168
+ * Who minted it: a person's sign-in or an API token, as in the audit.
2169
+ *
2170
+ * @generated from field: string created_by = 10;
2171
+ */
2172
+ createdBy: string;
2173
+ /**
2174
+ * Where the recording it was spent on lives, copied from the recording
2175
+ * when it was spent, so they stay after the recording is deleted: its
2176
+ * workload, as ListRecordings takes it, that workload's kind ("job",
2177
+ * "sandbox" or "service") and its environment, as Recording names them.
2178
+ * Empty until spent.
2179
+ *
2180
+ * @generated from field: string workload_id = 11;
2181
+ */
2182
+ workloadId: string;
2183
+ /**
2184
+ * @generated from field: string workload_kind = 12;
2185
+ */
2186
+ workloadKind: string;
2187
+ /**
2188
+ * @generated from field: string environment_id = 13;
2189
+ */
2190
+ environmentId: string;
2191
+ };
2192
+ /**
2193
+ * EmbedToken is one of a project's embed tokens, without the token itself.
2194
+ *
2195
+ * @generated from message toshi.workspace.v1.EmbedToken
2196
+ */
2197
+ export type EmbedTokenJson = {
2198
+ /**
2199
+ * Assigned by the server.
2200
+ *
2201
+ * @generated from field: string id = 1;
2202
+ */
2203
+ id?: string;
2204
+ /**
2205
+ * The project's name.
2206
+ *
2207
+ * @generated from field: string project = 2;
2208
+ */
2209
+ project?: string;
2210
+ /**
2211
+ * The origins of the pages that may spend it, such as
2212
+ * https://app.example.com.
2213
+ *
2214
+ * @generated from field: repeated string origins = 3;
2215
+ */
2216
+ origins?: string[];
2217
+ /**
2218
+ * @generated from field: toshi.workspace.v1.EmbedTokenState state = 4;
2219
+ */
2220
+ state?: EmbedTokenStateJson;
2221
+ /**
2222
+ * @generated from field: google.protobuf.Timestamp created_at = 5;
2223
+ */
2224
+ createdAt?: TimestampJson;
2225
+ /**
2226
+ * @generated from field: google.protobuf.Timestamp expires_at = 6;
2227
+ */
2228
+ expiresAt?: TimestampJson;
2229
+ /**
2230
+ * Unset until a page spends it.
2231
+ *
2232
+ * @generated from field: google.protobuf.Timestamp used_at = 7;
2233
+ */
2234
+ usedAt?: TimestampJson;
2235
+ /**
2236
+ * The recording it was spent on; empty until then.
2237
+ *
2238
+ * @generated from field: string recording_id = 8;
2239
+ */
2240
+ recordingId?: string;
2241
+ /**
2242
+ * Unset unless it was revoked.
2243
+ *
2244
+ * @generated from field: google.protobuf.Timestamp revoked_at = 9;
2245
+ */
2246
+ revokedAt?: TimestampJson;
2247
+ /**
2248
+ * Who minted it: a person's sign-in or an API token, as in the audit.
2249
+ *
2250
+ * @generated from field: string created_by = 10;
2251
+ */
2252
+ createdBy?: string;
2253
+ /**
2254
+ * Where the recording it was spent on lives, copied from the recording
2255
+ * when it was spent, so they stay after the recording is deleted: its
2256
+ * workload, as ListRecordings takes it, that workload's kind ("job",
2257
+ * "sandbox" or "service") and its environment, as Recording names them.
2258
+ * Empty until spent.
2259
+ *
2260
+ * @generated from field: string workload_id = 11;
2261
+ */
2262
+ workloadId?: string;
2263
+ /**
2264
+ * @generated from field: string workload_kind = 12;
2265
+ */
2266
+ workloadKind?: string;
2267
+ /**
2268
+ * @generated from field: string environment_id = 13;
2269
+ */
2270
+ environmentId?: string;
2271
+ };
2272
+ /**
2273
+ * Describes the message toshi.workspace.v1.EmbedToken.
2274
+ * Use `create(EmbedTokenSchema)` to create a new message.
2275
+ */
2276
+ export declare const EmbedTokenSchema: GenMessage<EmbedToken, {
2277
+ jsonType: EmbedTokenJson;
2278
+ }>;
2279
+ /**
2280
+ * @generated from message toshi.workspace.v1.CreateEmbedTokenRequest
2281
+ */
2282
+ export type CreateEmbedTokenRequest = Message<"toshi.workspace.v1.CreateEmbedTokenRequest"> & {
2283
+ /**
2284
+ * The project's name.
2285
+ *
2286
+ * @generated from field: string project = 1;
2287
+ */
2288
+ project: string;
2289
+ /**
2290
+ * The origins of the pages that may spend it, each a scheme and a host
2291
+ * with an optional port: https, or http for localhost only. At least
2292
+ * one, and more than the server's maximum is INVALID_ARGUMENT.
2293
+ *
2294
+ * @generated from field: repeated string origins = 2;
2295
+ */
2296
+ origins: string[];
2297
+ /**
2298
+ * How long the token stays valid; unset is the server's default, or the
2299
+ * workspace's plan's maximum when that is shorter, and more than the
2300
+ * plan's maximum is RESOURCE_EXHAUSTED with the reason PLAN_LIMIT.
2301
+ *
2302
+ * @generated from field: google.protobuf.Duration expires_in = 3;
2303
+ */
2304
+ expiresIn?: Duration | undefined;
2305
+ };
2306
+ /**
2307
+ * @generated from message toshi.workspace.v1.CreateEmbedTokenRequest
2308
+ */
2309
+ export type CreateEmbedTokenRequestJson = {
2310
+ /**
2311
+ * The project's name.
2312
+ *
2313
+ * @generated from field: string project = 1;
2314
+ */
2315
+ project?: string;
2316
+ /**
2317
+ * The origins of the pages that may spend it, each a scheme and a host
2318
+ * with an optional port: https, or http for localhost only. At least
2319
+ * one, and more than the server's maximum is INVALID_ARGUMENT.
1098
2320
  *
1099
2321
  * @generated from field: repeated string origins = 2;
1100
2322
  */
1101
2323
  origins?: string[];
1102
2324
  /**
1103
- * How long the token stays valid; unset is the server's default, and
1104
- * more than its maximum is INVALID_ARGUMENT.
2325
+ * How long the token stays valid; unset is the server's default, or the
2326
+ * workspace's plan's maximum when that is shorter, and more than the
2327
+ * plan's maximum is RESOURCE_EXHAUSTED with the reason PLAN_LIMIT.
1105
2328
  *
1106
2329
  * @generated from field: google.protobuf.Duration expires_in = 3;
1107
2330
  */
@@ -1347,8 +2570,10 @@ export declare const EmbedTokenStateSchema: GenEnum<EmbedTokenState, EmbedTokenS
1347
2570
  /**
1348
2571
  * ProjectService reads a workspace's projects and the repositories they
1349
2572
  * claim, creates a project, creates or deletes an environment of one, moves a
1350
- * repository's claim and sets the branch rules that choose a CI job's
1351
- * environment. A workspace holds projects, and a project holds environments.
2573
+ * repository's claim, sets the branch rules that choose a CI job's
2574
+ * environment, sets the network policies a project's workloads connect out
2575
+ * under and sets how long an environment keeps its jobs and artifacts. A
2576
+ * workspace holds projects, and a project holds environments.
1352
2577
  *
1353
2578
  * The caller's credential names the workspace, as for WorkloadService.
1354
2579
  * Nothing of another workspace is visible.
@@ -1410,6 +2635,24 @@ export declare const ProjectService: GenService<{
1410
2635
  input: typeof CreateProjectRequestSchema;
1411
2636
  output: typeof CreateProjectResponseSchema;
1412
2637
  };
2638
+ /**
2639
+ * UpdateProject sets the fields of project.name's project that
2640
+ * update_mask names. The one field it sets is admission, the project's
2641
+ * admission webhook: its url and secret, both required, or an empty url
2642
+ * to remove it. An unset update_mask names the fields project carries.
2643
+ * An empty one, an unset one with no admission, "*" and a path of
2644
+ * another field are INVALID_ARGUMENT. The secret is sealed under the
2645
+ * workspace's data key and never returned; a deployment with no keyring
2646
+ * refuses it with FAILED_PRECONDITION. A token limited to environments
2647
+ * is PERMISSION_DENIED.
2648
+ *
2649
+ * @generated from rpc toshi.workspace.v1.ProjectService.UpdateProject
2650
+ */
2651
+ updateProject: {
2652
+ methodKind: "unary";
2653
+ input: typeof UpdateProjectRequestSchema;
2654
+ output: typeof UpdateProjectResponseSchema;
2655
+ };
1413
2656
  /**
1414
2657
  * ClaimRepository puts a repository in a project: it claims a repository
1415
2658
  * no project claims, or moves the claim from another project. A CI job
@@ -1446,8 +2689,9 @@ export declare const ProjectService: GenService<{
1446
2689
  * production environment is FAILED_PRECONDITION, and so is an
1447
2690
  * environment that anything live still refers to, with each kind and
1448
2691
  * its count in the message: secret sets, API tokens that are neither
1449
- * revoked nor expired, unfinished jobs, workloads that are not deleted
1450
- * and artifacts still being uploaded. Finished jobs and complete
2692
+ * revoked nor expired, unfinished jobs, workloads that are not deleted,
2693
+ * artifacts still being uploaded, the project's branch rules that choose
2694
+ * it and its triggers that are not deleted. Finished jobs and complete
1451
2695
  * artifacts keep the environment as history. A project or environment
1452
2696
  * the workspace does not have is NOT_FOUND. A token limited to a
1453
2697
  * project deletes only in that project, and a token limited to an
@@ -1498,6 +2742,137 @@ export declare const ProjectService: GenService<{
1498
2742
  input: typeof SetBranchRulesRequestSchema;
1499
2743
  output: typeof SetBranchRulesResponseSchema;
1500
2744
  };
2745
+ /**
2746
+ * GetProjectNetwork returns a project's network policy: where its
2747
+ * workloads may connect outbound. A project that never set one allows
2748
+ * every destination. A project the workspace does not have is NOT_FOUND.
2749
+ * A token limited to a project reads only that project's policy, and a
2750
+ * token limited to an environment is PERMISSION_DENIED.
2751
+ *
2752
+ * @generated from rpc toshi.workspace.v1.ProjectService.GetProjectNetwork
2753
+ */
2754
+ getProjectNetwork: {
2755
+ methodKind: "unary";
2756
+ input: typeof GetProjectNetworkRequestSchema;
2757
+ output: typeof GetProjectNetworkResponseSchema;
2758
+ };
2759
+ /**
2760
+ * SetProjectNetwork replaces a project's network policy whole: the
2761
+ * default and the ordered rules. It has at most 100 rules, each an allow
2762
+ * or a deny of an address, a CIDR prefix or a DNS name, with an optional
2763
+ * port or port range and protocol. Any other policy is INVALID_ARGUMENT
2764
+ * and changes nothing. A workload keeps the policy it was admitted with;
2765
+ * the new one applies to workloads admitted after it. A project the
2766
+ * workspace does not have is NOT_FOUND. A token limited to a project
2767
+ * sets only that project's policy, and a token limited to an environment
2768
+ * is PERMISSION_DENIED.
2769
+ *
2770
+ * @generated from rpc toshi.workspace.v1.ProjectService.SetProjectNetwork
2771
+ */
2772
+ setProjectNetwork: {
2773
+ methodKind: "unary";
2774
+ input: typeof SetProjectNetworkRequestSchema;
2775
+ output: typeof SetProjectNetworkResponseSchema;
2776
+ };
2777
+ /**
2778
+ * GetEnvironmentNetwork returns an environment's network policy, which
2779
+ * narrows its project's: a destination is reached only when both allow
2780
+ * it. An environment that never set one allows every destination its
2781
+ * project allows. A project or environment the workspace does not have is
2782
+ * NOT_FOUND. A token limited to an environment reads only that
2783
+ * environment's policy.
2784
+ *
2785
+ * @generated from rpc toshi.workspace.v1.ProjectService.GetEnvironmentNetwork
2786
+ */
2787
+ getEnvironmentNetwork: {
2788
+ methodKind: "unary";
2789
+ input: typeof GetEnvironmentNetworkRequestSchema;
2790
+ output: typeof GetEnvironmentNetworkResponseSchema;
2791
+ };
2792
+ /**
2793
+ * SetEnvironmentNetwork replaces an environment's network policy whole,
2794
+ * checked as SetProjectNetwork checks a project's. It can only narrow
2795
+ * the project's policy: an allow the project denies stays denied. A
2796
+ * workload keeps the policy it was admitted with. A project or
2797
+ * environment the workspace does not have is NOT_FOUND. A token limited
2798
+ * to an environment sets only that environment's policy.
2799
+ *
2800
+ * @generated from rpc toshi.workspace.v1.ProjectService.SetEnvironmentNetwork
2801
+ */
2802
+ setEnvironmentNetwork: {
2803
+ methodKind: "unary";
2804
+ input: typeof SetEnvironmentNetworkRequestSchema;
2805
+ output: typeof SetEnvironmentNetworkResponseSchema;
2806
+ };
2807
+ /**
2808
+ * GetEnvironmentRetention returns an environment's retention override,
2809
+ * as stored, and the retention that applies to it: the override where it
2810
+ * shortens the workspace's, else the workspace's. An environment that
2811
+ * never set one follows its workspace. A project or environment the
2812
+ * workspace does not have is NOT_FOUND. A token limited to an
2813
+ * environment reads only that environment's.
2814
+ *
2815
+ * @generated from rpc toshi.workspace.v1.ProjectService.GetEnvironmentRetention
2816
+ */
2817
+ getEnvironmentRetention: {
2818
+ methodKind: "unary";
2819
+ input: typeof GetEnvironmentRetentionRequestSchema;
2820
+ output: typeof GetEnvironmentRetentionResponseSchema;
2821
+ };
2822
+ /**
2823
+ * SetEnvironmentRetention replaces an environment's retention override
2824
+ * whole; an empty retention clears it. An override may only shorten the
2825
+ * workspace's: history_days above the workspace's period, or a keep
2826
+ * longer than the workspace's keep of that kind, is INVALID_ARGUMENT
2827
+ * naming the field and the limit, and so is a recording-signed-in keep
2828
+ * longer than the recording keep that applies after it. A project or
2829
+ * environment the workspace does not have is NOT_FOUND. A token limited
2830
+ * to an environment sets only that environment's.
2831
+ *
2832
+ * @generated from rpc toshi.workspace.v1.ProjectService.SetEnvironmentRetention
2833
+ */
2834
+ setEnvironmentRetention: {
2835
+ methodKind: "unary";
2836
+ input: typeof SetEnvironmentRetentionRequestSchema;
2837
+ output: typeof SetEnvironmentRetentionResponseSchema;
2838
+ };
2839
+ /**
2840
+ * SetEnvironmentVolumes replaces the list of the project's volumes an
2841
+ * environment's services and sandboxes may attach; an empty list lets
2842
+ * them attach any. An attach of a volume the list leaves out, by
2843
+ * AttachVolume or at sandbox create, is FAILED_PRECONDITION naming the
2844
+ * environment and the volume; a volume attached before stays. A name
2845
+ * that is no volume of the project is INVALID_ARGUMENT naming it. A
2846
+ * project or environment the workspace does not have is NOT_FOUND. A
2847
+ * token limited to an environment sets only that environment's.
2848
+ *
2849
+ * @generated from rpc toshi.workspace.v1.ProjectService.SetEnvironmentVolumes
2850
+ */
2851
+ setEnvironmentVolumes: {
2852
+ methodKind: "unary";
2853
+ input: typeof SetEnvironmentVolumesRequestSchema;
2854
+ output: typeof SetEnvironmentVolumesResponseSchema;
2855
+ };
2856
+ /**
2857
+ * UpdateEnvironment sets the fields update_mask names on an environment:
2858
+ * retention replaces its retention override whole, as
2859
+ * SetEnvironmentRetention does, and volumes replaces the list of the
2860
+ * project's volumes its services and sandboxes may attach, as
2861
+ * SetEnvironmentVolumes does. Each is checked as that call checks it,
2862
+ * and both are written together or not at all. An omitted mask means
2863
+ * the fields the request sets; clearing the override or the list needs
2864
+ * its path in the mask. "*" and a path of any other field are
2865
+ * INVALID_ARGUMENT. A project or environment the workspace does not have
2866
+ * is NOT_FOUND. A token limited to an environment updates only that
2867
+ * environment.
2868
+ *
2869
+ * @generated from rpc toshi.workspace.v1.ProjectService.UpdateEnvironment
2870
+ */
2871
+ updateEnvironment: {
2872
+ methodKind: "unary";
2873
+ input: typeof UpdateEnvironmentRequestSchema;
2874
+ output: typeof UpdateEnvironmentResponseSchema;
2875
+ };
1501
2876
  /**
1502
2877
  * CreateEmbedToken mints an embed token for a project: a credential for
1503
2878
  * a web page on one of the token's origins, which spends it once to