@structured-id/ui-core 1.2.0 → 1.3.0

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 (101) hide show
  1. package/README.md +9 -5
  2. package/dist/browser-vp/index.d.cts +0 -11
  3. package/dist/browser-vp/index.d.ts +0 -11
  4. package/dist/index.cjs +13721 -9514
  5. package/dist/index.d.cts +4362 -2375
  6. package/dist/index.d.ts +4362 -2375
  7. package/dist/index.js +13937 -9730
  8. package/package.json +3 -3
  9. package/src/browser-vp/crypto.ts +0 -1
  10. package/src/browser-vp/index.ts +0 -2
  11. package/src/browser-vp/prf.ts +0 -2
  12. package/src/browser-vp/storage.ts +0 -2
  13. package/src/browser-vp/types.ts +0 -2
  14. package/src/browser-vp/vp.ts +0 -2
  15. package/src/composables/index.ts +6 -1
  16. package/src/composables/useAccountTransport.test.ts +121 -0
  17. package/src/composables/useAccountTransport.ts +69 -0
  18. package/src/composables/useBffAuth.ts +44 -34
  19. package/src/generated/google/api/httpbody.ts +159 -0
  20. package/src/generated/google/protobuf/any.ts +326 -0
  21. package/src/generated/google/rpc/error_details.ts +1386 -0
  22. package/src/generated/google/rpc/status.ts +127 -0
  23. package/src/generated/sid/v1/account/account.ts +1 -1
  24. package/src/generated/sid/v1/admin/admin.client.ts +15 -12
  25. package/src/generated/sid/v1/admin/admin.ts +24 -89
  26. package/src/generated/sid/v1/admin/enrollment.client.ts +24 -12
  27. package/src/generated/sid/v1/admin/enrollment.ts +65 -3
  28. package/src/generated/sid/v1/admin/events.client.ts +8 -8
  29. package/src/generated/sid/v1/admin/flow.ts +1 -1
  30. package/src/generated/sid/v1/admin/keys.ts +1 -1
  31. package/src/generated/sid/v1/admin/notifications.client.ts +12 -6
  32. package/src/generated/sid/v1/admin/notifications.ts +11 -70
  33. package/src/generated/sid/v1/admin/operations.ts +20 -35
  34. package/src/generated/sid/v1/admin/organizations.client.ts +2 -2
  35. package/src/generated/sid/v1/admin/organizations.ts +15 -32
  36. package/src/generated/sid/v1/admin/provisioning.client.ts +232 -0
  37. package/src/generated/sid/v1/admin/provisioning.ts +1383 -0
  38. package/src/generated/sid/v1/admin/scopes.ts +1 -1
  39. package/src/generated/sid/v1/admin/security.client.ts +22 -24
  40. package/src/generated/sid/v1/admin/security.ts +13 -22
  41. package/src/generated/sid/v1/admin/settings.client.ts +29 -18
  42. package/src/generated/sid/v1/admin/settings.ts +2 -82
  43. package/src/generated/sid/v1/attestation/attestation.client.ts +6 -6
  44. package/src/generated/sid/v1/attestation/attestation.ts +8 -8
  45. package/src/generated/sid/v1/authn/auth.client.ts +101 -58
  46. package/src/generated/sid/v1/authn/auth.ts +842 -414
  47. package/src/generated/sid/v1/authn/flows.ts +0 -12
  48. package/src/generated/sid/v1/authn/issuer.client.ts +489 -0
  49. package/src/generated/sid/v1/authn/issuer.ts +1600 -0
  50. package/src/generated/sid/v1/authn/password_history.client.ts +57 -0
  51. package/src/generated/sid/v1/authn/password_history.ts +578 -0
  52. package/src/generated/sid/v1/authn/system_integration.client.ts +73 -0
  53. package/src/generated/sid/v1/authn/system_integration.ts +218 -0
  54. package/src/generated/sid/v1/authz/authz.ts +1498 -317
  55. package/src/generated/sid/v1/authz/forward_auth.client.ts +97 -0
  56. package/src/generated/sid/v1/authz/forward_auth.ts +79 -0
  57. package/src/generated/sid/v1/authz/governance.client.ts +2 -2
  58. package/src/generated/sid/v1/authz/governance.ts +61 -4
  59. package/src/generated/sid/v1/common/errors.ts +532 -6
  60. package/src/generated/sid/v1/events/event_stream.client.ts +2 -2
  61. package/src/generated/sid/v1/events/event_stream.ts +2 -1
  62. package/src/generated/sid/v1/identity/identity.ts +98 -58
  63. package/src/generated/sid/v1/ids/ids.ts +395 -0
  64. package/src/generated/sid/v1/machine/machine_user.ts +0 -36
  65. package/src/generated/sid/v1/machine/pat.client.ts +2 -19
  66. package/src/generated/sid/v1/machine/pat.ts +1 -186
  67. package/src/generated/sid/v1/projects/projects.client.ts +137 -19
  68. package/src/generated/sid/v1/projects/projects.ts +2105 -405
  69. package/src/generated/sid/v1/scim/scim.client.ts +248 -2
  70. package/src/generated/sid/v1/scim/scim.ts +153 -14
  71. package/src/generated/sid/v1/test/test.ts +1 -1
  72. package/src/i18n/index.ts +0 -11
  73. package/src/index.ts +36 -2
  74. package/src/package-exports.test.ts +18 -0
  75. package/src/profile/components/SidLoginForm.vue +5 -2
  76. package/src/profile/components/SidRegistrationForm.test.ts +58 -1
  77. package/src/profile/components/SidRegistrationForm.vue +110 -12
  78. package/src/profile/components/index.ts +4 -0
  79. package/src/profile/composables/index.ts +2 -1
  80. package/src/profile/composables/useAccountApi.ts +20 -7
  81. package/src/profile/composables/useAuth.test.ts +453 -0
  82. package/src/profile/composables/useAuth.ts +414 -0
  83. package/src/profile/composables/useAuthApi.opaque.test.ts +18 -0
  84. package/src/profile/composables/useAuthApi.ts +188 -20
  85. package/src/profile/composables/useEnrollmentApi.test.ts +33 -0
  86. package/src/profile/composables/useEnrollmentApi.ts +26 -0
  87. package/src/profile/composables/useIdentityApi.ts +17 -7
  88. package/src/profile/composables/useLoginSuccess.test.ts +97 -3
  89. package/src/profile/composables/useLoginSuccess.ts +80 -22
  90. package/src/profile/composables/useSecurityLevel.test.ts +10 -3
  91. package/src/profile/composables/useSecurityLevel.ts +12 -3
  92. package/src/quasar/SidPrincipalInput.vue +4 -7
  93. package/src/utils/normalizePrincipal.test.ts +19 -5
  94. package/src/utils/normalizePrincipal.ts +7 -9
  95. package/src/utils/rpcRefusal.test.ts +151 -0
  96. package/src/utils/rpcRefusal.ts +252 -0
  97. package/src/utils/validators.test.ts +9 -0
  98. package/src/utils/validators.ts +14 -2
  99. package/src/composables/useAuth.ts +0 -40
  100. package/src/profile/composables/useOpaqueAuth.test.ts +0 -290
  101. package/src/profile/composables/useOpaqueAuth.ts +0 -191
@@ -0,0 +1,97 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter client_generic,generate_dependencies
2
+ // @generated from protobuf file "sid/v1/authz/forward_auth.proto" (package "sid.v1.authz", syntax proto3)
3
+ // tslint:disable
4
+ import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
5
+ import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
6
+ import { ForwardAuthService } from "./forward_auth";
7
+ import { stackIntercept } from "@protobuf-ts/runtime-rpc";
8
+ import type { HttpBody } from "../../../google/api/httpbody";
9
+ import type { VerifyRequest } from "./forward_auth";
10
+ import type { UnaryCall } from "@protobuf-ts/runtime-rpc";
11
+ import type { RpcOptions } from "@protobuf-ts/runtime-rpc";
12
+ /**
13
+ * @generated from protobuf service sid.v1.authz.ForwardAuthService
14
+ */
15
+ export interface IForwardAuthServiceClient {
16
+ /**
17
+ * Decide whether the original request may reach `application`.
18
+ *
19
+ * The reverse proxy sub-requests `/auth/verify/{application}` with the
20
+ * original request's method, so the rule binds every method. The
21
+ * application comes from the address the proxy is configured with, never
22
+ * from anything the client sends; it names a protected application of the
23
+ * route configuration, which pins the registered resource (exact issuer
24
+ * and resource indicator) its access tokens must be issued for.
25
+ *
26
+ * Request metadata, as the proxy forwards the original request:
27
+ * `authorization` (`Bearer`, RFC 6750 §2.1, or `DPoP`, RFC 9449 §7.1),
28
+ * `dpop` (the proof, RFC 9449 §4), `x-original-uri` or `x-forwarded-uri`
29
+ * (path and query), `x-original-method` or `x-forwarded-method`.
30
+ *
31
+ * The decision is the HTTP answer the proxy acts on, carried in the
32
+ * `x-http-code` response metadata with an empty body:
33
+ * - 200: allowed; response metadata carries the identity headers of the
34
+ * route (`x-forwarded-user` = the token's recipient-scoped `sub`,
35
+ * `x-auth-request-*` for disclosed claims), which the proxy copies to
36
+ * the upstream request after removing any client-supplied copies;
37
+ * - 401: no acceptable access token for this application, with
38
+ * `www-authenticate` (a DPoP challenge when a sender constraint failed,
39
+ * RFC 9449 §7.1) and, when a login URL is configured, `location`;
40
+ * - 403: authenticated but not allowed, or the application's resource is
41
+ * not registered or not active.
42
+ * An application not in the route configuration is NOT_FOUND (ErrorInfo
43
+ * reason FORWARD_AUTH_APPLICATION_NOT_FOUND, ResourceInfo naming it); a
44
+ * registry or revocation check that cannot be answered is UNAVAILABLE. The
45
+ * proxy denies on both.
46
+ *
47
+ * @generated from protobuf rpc: Verify
48
+ */
49
+ verify(input: VerifyRequest, options?: RpcOptions): UnaryCall<VerifyRequest, HttpBody>;
50
+ }
51
+ /**
52
+ * @generated from protobuf service sid.v1.authz.ForwardAuthService
53
+ */
54
+ export class ForwardAuthServiceClient implements IForwardAuthServiceClient, ServiceInfo {
55
+ typeName = ForwardAuthService.typeName;
56
+ methods = ForwardAuthService.methods;
57
+ options = ForwardAuthService.options;
58
+ constructor(private readonly _transport: RpcTransport) {
59
+ }
60
+ /**
61
+ * Decide whether the original request may reach `application`.
62
+ *
63
+ * The reverse proxy sub-requests `/auth/verify/{application}` with the
64
+ * original request's method, so the rule binds every method. The
65
+ * application comes from the address the proxy is configured with, never
66
+ * from anything the client sends; it names a protected application of the
67
+ * route configuration, which pins the registered resource (exact issuer
68
+ * and resource indicator) its access tokens must be issued for.
69
+ *
70
+ * Request metadata, as the proxy forwards the original request:
71
+ * `authorization` (`Bearer`, RFC 6750 §2.1, or `DPoP`, RFC 9449 §7.1),
72
+ * `dpop` (the proof, RFC 9449 §4), `x-original-uri` or `x-forwarded-uri`
73
+ * (path and query), `x-original-method` or `x-forwarded-method`.
74
+ *
75
+ * The decision is the HTTP answer the proxy acts on, carried in the
76
+ * `x-http-code` response metadata with an empty body:
77
+ * - 200: allowed; response metadata carries the identity headers of the
78
+ * route (`x-forwarded-user` = the token's recipient-scoped `sub`,
79
+ * `x-auth-request-*` for disclosed claims), which the proxy copies to
80
+ * the upstream request after removing any client-supplied copies;
81
+ * - 401: no acceptable access token for this application, with
82
+ * `www-authenticate` (a DPoP challenge when a sender constraint failed,
83
+ * RFC 9449 §7.1) and, when a login URL is configured, `location`;
84
+ * - 403: authenticated but not allowed, or the application's resource is
85
+ * not registered or not active.
86
+ * An application not in the route configuration is NOT_FOUND (ErrorInfo
87
+ * reason FORWARD_AUTH_APPLICATION_NOT_FOUND, ResourceInfo naming it); a
88
+ * registry or revocation check that cannot be answered is UNAVAILABLE. The
89
+ * proxy denies on both.
90
+ *
91
+ * @generated from protobuf rpc: Verify
92
+ */
93
+ verify(input: VerifyRequest, options?: RpcOptions): UnaryCall<VerifyRequest, HttpBody> {
94
+ const method = this.methods[0], opt = this._transport.mergeOptions(options);
95
+ return stackIntercept<VerifyRequest, HttpBody>("unary", this._transport, method, opt, input);
96
+ }
97
+ }
@@ -0,0 +1,79 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter client_generic,generate_dependencies
2
+ // @generated from protobuf file "sid/v1/authz/forward_auth.proto" (package "sid.v1.authz", syntax proto3)
3
+ // tslint:disable
4
+ import { HttpBody } from "../../../google/api/httpbody";
5
+ import { ServiceType } from "@protobuf-ts/runtime-rpc";
6
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
7
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
8
+ import { WireType } from "@protobuf-ts/runtime";
9
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
10
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
11
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
12
+ import type { PartialMessage } from "@protobuf-ts/runtime";
13
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
14
+ import { MessageType } from "@protobuf-ts/runtime";
15
+ /**
16
+ * @generated from protobuf message sid.v1.authz.VerifyRequest
17
+ */
18
+ export interface VerifyRequest {
19
+ /**
20
+ * Name of the protected application in the route configuration: letters,
21
+ * digits, '-' and '_'. Set by the reverse proxy's configured address.
22
+ *
23
+ * @generated from protobuf field: string application = 1
24
+ */
25
+ application: string;
26
+ }
27
+ // @generated message type with reflection information, may provide speed optimized methods
28
+ class VerifyRequest$Type extends MessageType<VerifyRequest> {
29
+ constructor() {
30
+ super("sid.v1.authz.VerifyRequest", [
31
+ { no: 1, name: "application", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
32
+ ]);
33
+ }
34
+ create(value?: PartialMessage<VerifyRequest>): VerifyRequest {
35
+ const message = globalThis.Object.create((this.messagePrototype!));
36
+ message.application = "";
37
+ if (value !== undefined)
38
+ reflectionMergePartial<VerifyRequest>(this, message, value);
39
+ return message;
40
+ }
41
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: VerifyRequest): VerifyRequest {
42
+ let message = target ?? this.create(), end = reader.pos + length;
43
+ while (reader.pos < end) {
44
+ let [fieldNo, wireType] = reader.tag();
45
+ switch (fieldNo) {
46
+ case /* string application */ 1:
47
+ message.application = reader.string();
48
+ break;
49
+ default:
50
+ let u = options.readUnknownField;
51
+ if (u === "throw")
52
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
53
+ let d = reader.skip(wireType);
54
+ if (u !== false)
55
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
56
+ }
57
+ }
58
+ return message;
59
+ }
60
+ internalBinaryWrite(message: VerifyRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
61
+ /* string application = 1; */
62
+ if (message.application !== "")
63
+ writer.tag(1, WireType.LengthDelimited).string(message.application);
64
+ let u = options.writeUnknownFields;
65
+ if (u !== false)
66
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
67
+ return writer;
68
+ }
69
+ }
70
+ /**
71
+ * @generated MessageType for protobuf message sid.v1.authz.VerifyRequest
72
+ */
73
+ export const VerifyRequest = new VerifyRequest$Type();
74
+ /**
75
+ * @generated ServiceType for protobuf service sid.v1.authz.ForwardAuthService
76
+ */
77
+ export const ForwardAuthService = new ServiceType("sid.v1.authz.ForwardAuthService", [
78
+ { name: "Verify", options: { "google.api.http": { custom: { kind: "*", path: "/auth/verify/{application}" } } }, I: VerifyRequest, O: HttpBody }
79
+ ]);
@@ -16,7 +16,7 @@ import type { AccessRequestMessage } from "./governance";
16
16
  import type { UnaryCall } from "@protobuf-ts/runtime-rpc";
17
17
  import type { RpcOptions } from "@protobuf-ts/runtime-rpc";
18
18
  // ────────────────────────────────────────────────────────────────────────────
19
- // GovernanceService — CE access lifecycle (4 RPCs)
19
+ // GovernanceService: access lifecycle (4 RPCs)
20
20
  // SoD checks + role assignment listing → AuthzService (authz.proto)
21
21
  // ────────────────────────────────────────────────────────────────────────────
22
22
 
@@ -50,7 +50,7 @@ export interface IGovernanceServiceClient {
50
50
  grantTemporaryRole(input: GrantTemporaryRoleRequest, options?: RpcOptions): UnaryCall<GrantTemporaryRoleRequest, GrantTemporaryRoleResponse>;
51
51
  }
52
52
  // ────────────────────────────────────────────────────────────────────────────
53
- // GovernanceService — CE access lifecycle (4 RPCs)
53
+ // GovernanceService: access lifecycle (4 RPCs)
54
54
  // SoD checks + role assignment listing → AuthzService (authz.proto)
55
55
  // ────────────────────────────────────────────────────────────────────────────
56
56
 
@@ -24,21 +24,39 @@ import { Duration } from "../../../google/protobuf/duration";
24
24
  */
25
25
  export interface AccessRequestMessage {
26
26
  /**
27
+ * Profile asking for the role (UUID). The caller itself, or anyone when an
28
+ * administrator files the request on its behalf.
29
+ *
27
30
  * @generated from protobuf field: string requester_profile_id = 1
28
31
  */
29
32
  requesterProfileId: string;
30
33
  /**
34
+ * Key of the requested role within `project_id`. A role the project does
35
+ * not define is NOT_FOUND; nothing is stored.
36
+ *
31
37
  * @generated from protobuf field: string requested_role = 2
32
38
  */
33
39
  requestedRole: string;
34
40
  /**
41
+ * Why the requester needs the role, shown to the approver.
42
+ *
35
43
  * @generated from protobuf field: string justification = 3
36
44
  */
37
45
  justification: string;
38
46
  /**
47
+ * How long the role is wanted; absent = permanent. On approval the
48
+ * assignment expires after it.
49
+ *
39
50
  * @generated from protobuf field: optional google.protobuf.Duration requested_duration = 4
40
51
  */
41
- requestedDuration?: Duration; // null = permanent
52
+ requestedDuration?: Duration;
53
+ /**
54
+ * Project (UUID) whose role is requested: roles are defined per project.
55
+ * An unknown project is NOT_FOUND.
56
+ *
57
+ * @generated from protobuf field: string project_id = 5
58
+ */
59
+ projectId: string;
42
60
  }
43
61
  /**
44
62
  * @generated from protobuf message sid.v1.authz.AccessRequestResponse
@@ -125,17 +143,26 @@ export interface AccessRequestDetail {
125
143
  */
126
144
  export interface DecideRequestRequest {
127
145
  /**
146
+ * Access request (UUID) being decided.
147
+ *
128
148
  * @generated from protobuf field: string request_id = 1
129
149
  */
130
150
  requestId: string;
131
151
  /**
152
+ * Approve (grant the role) or deny. An approval and the role assignment it
153
+ * makes are recorded together: when the role can no longer be assigned
154
+ * (it was deleted) the call fails FAILED_PRECONDITION and the request
155
+ * stays pending.
156
+ *
132
157
  * @generated from protobuf field: bool approved = 2
133
158
  */
134
159
  approved: boolean;
135
160
  /**
161
+ * Reviewer's comment, recorded on the request.
162
+ *
136
163
  * @generated from protobuf field: string reason = 3
137
164
  */
138
- reason: string; // Required for deny, optional for approve
165
+ reason: string;
139
166
  }
140
167
  /**
141
168
  * @generated from protobuf message sid.v1.authz.DecideRequestResponse
@@ -159,21 +186,35 @@ export interface DecideRequestResponse {
159
186
  */
160
187
  export interface GrantTemporaryRoleRequest {
161
188
  /**
189
+ * Profile receiving the role (UUID); an unknown profile is NOT_FOUND.
190
+ *
162
191
  * @generated from protobuf field: string profile_id = 1
163
192
  */
164
193
  profileId: string;
165
194
  /**
195
+ * Key of the role within `project_id`; an unknown role is NOT_FOUND.
196
+ *
166
197
  * @generated from protobuf field: string role = 2
167
198
  */
168
199
  role: string;
169
200
  /**
201
+ * When the assignment is revoked automatically; must be in the future.
202
+ *
170
203
  * @generated from protobuf field: google.protobuf.Timestamp expires_at = 3
171
204
  */
172
205
  expiresAt?: Timestamp;
173
206
  /**
207
+ * Why the role is granted, recorded in the audit trail.
208
+ *
174
209
  * @generated from protobuf field: string justification = 4
175
210
  */
176
211
  justification: string;
212
+ /**
213
+ * Project (UUID) whose role is granted: roles are defined per project.
214
+ *
215
+ * @generated from protobuf field: string project_id = 5
216
+ */
217
+ projectId: string;
177
218
  }
178
219
  /**
179
220
  * @generated from protobuf message sid.v1.authz.GrantTemporaryRoleResponse
@@ -232,7 +273,8 @@ class AccessRequestMessage$Type extends MessageType<AccessRequestMessage> {
232
273
  { no: 1, name: "requester_profile_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
233
274
  { no: 2, name: "requested_role", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
234
275
  { no: 3, name: "justification", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
235
- { no: 4, name: "requested_duration", kind: "message", T: () => Duration }
276
+ { no: 4, name: "requested_duration", kind: "message", T: () => Duration },
277
+ { no: 5, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
236
278
  ]);
237
279
  }
238
280
  create(value?: PartialMessage<AccessRequestMessage>): AccessRequestMessage {
@@ -240,6 +282,7 @@ class AccessRequestMessage$Type extends MessageType<AccessRequestMessage> {
240
282
  message.requesterProfileId = "";
241
283
  message.requestedRole = "";
242
284
  message.justification = "";
285
+ message.projectId = "";
243
286
  if (value !== undefined)
244
287
  reflectionMergePartial<AccessRequestMessage>(this, message, value);
245
288
  return message;
@@ -261,6 +304,9 @@ class AccessRequestMessage$Type extends MessageType<AccessRequestMessage> {
261
304
  case /* optional google.protobuf.Duration requested_duration */ 4:
262
305
  message.requestedDuration = Duration.internalBinaryRead(reader, reader.uint32(), options, message.requestedDuration);
263
306
  break;
307
+ case /* string project_id */ 5:
308
+ message.projectId = reader.string();
309
+ break;
264
310
  default:
265
311
  let u = options.readUnknownField;
266
312
  if (u === "throw")
@@ -285,6 +331,9 @@ class AccessRequestMessage$Type extends MessageType<AccessRequestMessage> {
285
331
  /* optional google.protobuf.Duration requested_duration = 4; */
286
332
  if (message.requestedDuration)
287
333
  Duration.internalBinaryWrite(message.requestedDuration, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
334
+ /* string project_id = 5; */
335
+ if (message.projectId !== "")
336
+ writer.tag(5, WireType.LengthDelimited).string(message.projectId);
288
337
  let u = options.writeUnknownFields;
289
338
  if (u !== false)
290
339
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -690,7 +739,8 @@ class GrantTemporaryRoleRequest$Type extends MessageType<GrantTemporaryRoleReque
690
739
  { no: 1, name: "profile_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
691
740
  { no: 2, name: "role", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
692
741
  { no: 3, name: "expires_at", kind: "message", T: () => Timestamp },
693
- { no: 4, name: "justification", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
742
+ { no: 4, name: "justification", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
743
+ { no: 5, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
694
744
  ]);
695
745
  }
696
746
  create(value?: PartialMessage<GrantTemporaryRoleRequest>): GrantTemporaryRoleRequest {
@@ -698,6 +748,7 @@ class GrantTemporaryRoleRequest$Type extends MessageType<GrantTemporaryRoleReque
698
748
  message.profileId = "";
699
749
  message.role = "";
700
750
  message.justification = "";
751
+ message.projectId = "";
701
752
  if (value !== undefined)
702
753
  reflectionMergePartial<GrantTemporaryRoleRequest>(this, message, value);
703
754
  return message;
@@ -719,6 +770,9 @@ class GrantTemporaryRoleRequest$Type extends MessageType<GrantTemporaryRoleReque
719
770
  case /* string justification */ 4:
720
771
  message.justification = reader.string();
721
772
  break;
773
+ case /* string project_id */ 5:
774
+ message.projectId = reader.string();
775
+ break;
722
776
  default:
723
777
  let u = options.readUnknownField;
724
778
  if (u === "throw")
@@ -743,6 +797,9 @@ class GrantTemporaryRoleRequest$Type extends MessageType<GrantTemporaryRoleReque
743
797
  /* string justification = 4; */
744
798
  if (message.justification !== "")
745
799
  writer.tag(4, WireType.LengthDelimited).string(message.justification);
800
+ /* string project_id = 5; */
801
+ if (message.projectId !== "")
802
+ writer.tag(5, WireType.LengthDelimited).string(message.projectId);
746
803
  let u = options.writeUnknownFields;
747
804
  if (u !== false)
748
805
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);