@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
@@ -11,6 +11,10 @@ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
11
11
  import type { PartialMessage } from "@protobuf-ts/runtime";
12
12
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
13
  import { MessageType } from "@protobuf-ts/runtime";
14
+ import { MachineUserId } from "../ids/ids";
15
+ import { ResourceId } from "../ids/ids";
16
+ import { Duration } from "../../../google/protobuf/duration";
17
+ import { ProvisioningConnectorId } from "../ids/ids";
14
18
  import { Timestamp } from "../../../google/protobuf/timestamp";
15
19
  // ── Messages ─────────────────────────────────────────────────────────
16
20
 
@@ -85,7 +89,9 @@ export interface Group {
85
89
  updatedAt?: Timestamp;
86
90
  }
87
91
  /**
88
- * RoleAssignment assigns a role to a profile, group, or machine user.
92
+ * RoleAssignment assigns a role to a profile, group, machine user, an
93
+ * independent OAuth client acting as a service, or a SCIM provisioning
94
+ * connector.
89
95
  *
90
96
  * @generated from protobuf message sid.v1.authz.RoleAssignment
91
97
  */
@@ -115,6 +121,25 @@ export interface RoleAssignment {
115
121
  * @generated from protobuf field: string machine_user_id = 8
116
122
  */
117
123
  machineUserId: string;
124
+ } | {
125
+ oneofKind: "oauthClientId";
126
+ /**
127
+ * `client_id` of an independent confidential OAuth client. A machine
128
+ * user's OAuth credentials resolve to the machine user, never to this
129
+ * principal.
130
+ *
131
+ * @generated from protobuf field: string oauth_client_id = 9
132
+ */
133
+ oauthClientId: string;
134
+ } | {
135
+ oneofKind: "provisioningConnectorId";
136
+ /**
137
+ * A SCIM provisioning connector. Its roles take effect only for SCIM
138
+ * actions on the protected directory resource named in `scope`.
139
+ *
140
+ * @generated from protobuf field: sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 10
141
+ */
142
+ provisioningConnectorId: ProvisioningConnectorId;
118
143
  } | {
119
144
  oneofKind: undefined;
120
145
  };
@@ -123,11 +148,14 @@ export interface RoleAssignment {
123
148
  */
124
149
  roleId: string;
125
150
  /**
126
- * Optional scope (resource constraint).
151
+ * Optional scope (resource constraint): e.g. "project:<uuid>", or
152
+ * "oauth_resource:<resource_id>" for one registered protected resource
153
+ * (its issuer is the resource's). The token inspector role is assigned
154
+ * only with a protected-resource scope.
127
155
  *
128
156
  * @generated from protobuf field: optional string scope = 5
129
157
  */
130
- scope?: string; // e.g., "project:abc123"
158
+ scope?: string;
131
159
  /**
132
160
  * Optional expiry (temporary role).
133
161
  *
@@ -138,6 +166,108 @@ export interface RoleAssignment {
138
166
  * @generated from protobuf field: google.protobuf.Timestamp created_at = 7
139
167
  */
140
168
  createdAt?: Timestamp;
169
+ /**
170
+ * Present on an administrative assignment: what its holder may administer
171
+ * within `scope`. Holding the role alone administers nothing.
172
+ *
173
+ * @generated from protobuf field: optional sid.v1.authz.AdminEnvelope admin = 11
174
+ */
175
+ admin?: AdminEnvelope;
176
+ /**
177
+ * Who granted the assignment and on what authority, recorded by the
178
+ * server; absent on assignments that predate provenance.
179
+ *
180
+ * @generated from protobuf field: optional sid.v1.authz.AssignmentProvenance provenance = 12
181
+ */
182
+ provenance?: AssignmentProvenance;
183
+ }
184
+ /**
185
+ * What an administrative assignment may administer. Every field is an
186
+ * explicit bound: an empty list permits nothing, never everything.
187
+ *
188
+ * @generated from protobuf message sid.v1.authz.AdminEnvelope
189
+ */
190
+ export interface AdminEnvelope {
191
+ /**
192
+ * The permitted operations; UNSPECIFIED is refused.
193
+ *
194
+ * @generated from protobuf field: repeated sid.v1.authz.AdminOperation operations = 1
195
+ */
196
+ operations: AdminOperation[];
197
+ /**
198
+ * The roles that may be administered, by role id. A role is matched by
199
+ * identity and by its current content against `permission_ceiling`.
200
+ *
201
+ * @generated from protobuf field: repeated string role_ids = 2
202
+ */
203
+ roleIds: string[];
204
+ /**
205
+ * The permissions an administered role may hold at most: a role whose
206
+ * current permissions exceed it cannot be assigned, whatever its name.
207
+ *
208
+ * @generated from protobuf field: repeated string permission_ceiling = 3
209
+ */
210
+ permissionCeiling: string[];
211
+ /**
212
+ * The kinds of principal roles may be assigned to; UNSPECIFIED is refused.
213
+ *
214
+ * @generated from protobuf field: repeated sid.v1.authz.RecipientKind recipient_kinds = 4
215
+ */
216
+ recipientKinds: RecipientKind[];
217
+ /**
218
+ * When set, only this group and its members are eligible recipients. The
219
+ * group cannot be deleted while an envelope names it.
220
+ *
221
+ * @generated from protobuf field: optional string recipient_group_id = 5
222
+ */
223
+ recipientGroupId?: string;
224
+ /**
225
+ * The longest validity an administered assignment may be given; every
226
+ * administered assignment expires. Must be positive, whole seconds.
227
+ *
228
+ * @generated from protobuf field: google.protobuf.Duration max_validity = 6
229
+ */
230
+ maxValidity?: Duration;
231
+ }
232
+ /**
233
+ * Who granted a role assignment and on what authority. Set by the server
234
+ * from the authenticated caller; never accepted from a request.
235
+ *
236
+ * @generated from protobuf message sid.v1.authz.AssignmentProvenance
237
+ */
238
+ export interface AssignmentProvenance {
239
+ /**
240
+ * The granting actor as the authorization engine names it:
241
+ * "user:<profile_id>", "machine:<machine_user_id>" or
242
+ * "oauth_client:<client_id>".
243
+ *
244
+ * @generated from protobuf field: string granted_by = 1
245
+ */
246
+ grantedBy: string;
247
+ /**
248
+ * The administrative assignment that authorized the grant; absent when the
249
+ * installation's administrator granted it as root of its scope.
250
+ *
251
+ * @generated from protobuf field: optional string basis_assignment_id = 2
252
+ */
253
+ basisAssignmentId?: string;
254
+ /**
255
+ * The administrative assignment this one depends on: set on a redelegated
256
+ * administrative assignment, which ends when that source ends. An ordinary
257
+ * assignment outlives the assignment that authorized it.
258
+ *
259
+ * @generated from protobuf field: optional string depends_on_assignment_id = 3
260
+ */
261
+ dependsOnAssignmentId?: string;
262
+ /**
263
+ * The permissions the role could hold at most when an envelope approved
264
+ * this working assignment. The role is never edited past them while the
265
+ * assignment exists; widening it needs the assignment reauthorized first.
266
+ * Empty when the root granted it, or on an administrative assignment.
267
+ *
268
+ * @generated from protobuf field: repeated string approved_ceiling = 4
269
+ */
270
+ approvedCeiling: string[];
141
271
  }
142
272
  /**
143
273
  * Policy represents a Cedar policy (ABAC).
@@ -192,56 +322,301 @@ export interface Policy {
192
322
  // ── Permission check ─────────────────────────────────────────────────
193
323
 
194
324
  /**
325
+ * One permission question: may a subject perform `action` on `target`.
326
+ *
327
+ * The caller authenticates as itself in the request metadata. Asking about
328
+ * any subject other than the caller's own needs the caller's current
329
+ * `authz.check` assignment on the target resource. Which subject is
330
+ * evaluated, and with what evidence, is stated explicitly by `evaluation`;
331
+ * a request whose evidence fails is refused, never re-evaluated in another
332
+ * mode.
333
+ *
195
334
  * @generated from protobuf message sid.v1.authz.CheckPermissionRequest
196
335
  */
197
336
  export interface CheckPermissionRequest {
198
337
  /**
199
- * @generated from protobuf field: string subject = 1
338
+ * The application operation to decide, in the target application's own
339
+ * vocabulary (for example "orders.read"). The receiver maps its real
340
+ * operation to it; SID does not derive it from an HTTP method or path.
341
+ *
342
+ * @generated from protobuf field: string action = 2
200
343
  */
201
- subject: string; // e.g., "user:alice", "service:payment"
344
+ action: string;
202
345
  /**
203
- * @generated from protobuf field: string action = 2
346
+ * How fresh the decision must be; unspecified is CONSISTENCY_EVENTUAL.
347
+ *
348
+ * @generated from protobuf field: sid.v1.authz.Consistency consistency = 4
204
349
  */
205
- action: string; // e.g., "edit", "view", "delete", "admin"
350
+ consistency: Consistency;
206
351
  /**
207
- * @generated from protobuf field: string resource = 3
352
+ * Where the action would take effect.
353
+ *
354
+ * @generated from protobuf field: sid.v1.authz.PermissionTarget target = 6
208
355
  */
209
- resource: string; // e.g., "document:123", "repo:my-app"
356
+ target?: PermissionTarget;
210
357
  /**
211
- * @generated from protobuf field: sid.v1.authz.Consistency consistency = 4
358
+ * Whose permission is decided, and on what evidence.
359
+ *
360
+ * @generated from protobuf oneof: evaluation
212
361
  */
213
- consistency: Consistency;
362
+ evaluation: {
363
+ oneofKind: "request";
364
+ /**
365
+ * The subject of one original request to the target, established from
366
+ * that request's own access token (request-bound evaluation).
367
+ *
368
+ * @generated from protobuf field: sid.v1.authz.RequestEvaluation request = 7
369
+ */
370
+ request: RequestEvaluation;
371
+ } | {
372
+ oneofKind: "namedSubject";
373
+ /**
374
+ * A named subject, evaluated by policy alone (abstract evaluation). It
375
+ * claims no presence, session, assurance or sender proof, and cannot
376
+ * satisfy a policy that requires them.
377
+ *
378
+ * @generated from protobuf field: sid.v1.authz.SubjectReference named_subject = 8
379
+ */
380
+ namedSubject: SubjectReference;
381
+ } | {
382
+ oneofKind: "self";
383
+ /**
384
+ * The caller itself, as its own credential authenticates it. Needs no
385
+ * checker assignment.
386
+ *
387
+ * @generated from protobuf field: sid.v1.authz.SelfEvaluation self = 9
388
+ */
389
+ self: SelfEvaluation;
390
+ } | {
391
+ oneofKind: undefined;
392
+ };
393
+ }
394
+ /**
395
+ * The place an action would take effect. Its issuer and recipient
396
+ * organization come from the resource's registration, never from the
397
+ * caller.
398
+ *
399
+ * @generated from protobuf message sid.v1.authz.PermissionTarget
400
+ */
401
+ export interface PermissionTarget {
214
402
  /**
215
- * @generated from protobuf field: map<string, string> context = 5
403
+ * @generated from protobuf oneof: scope
216
404
  */
217
- context: {
218
- [key: string]: string;
219
- }; // Additional context (IP, time, etc.)
405
+ scope: {
406
+ oneofKind: "resource";
407
+ /**
408
+ * A registered protected resource of this installation.
409
+ *
410
+ * @generated from protobuf field: sid.v1.ids.ResourceId resource = 1
411
+ */
412
+ resource: ResourceId;
413
+ } | {
414
+ oneofKind: "projectId";
415
+ /**
416
+ * A project of this installation, for project-wide permissions (UUID
417
+ * text). Only the caller's own subject may be asked about a project.
418
+ *
419
+ * @generated from protobuf field: string project_id = 2
420
+ */
421
+ projectId: string;
422
+ } | {
423
+ oneofKind: undefined;
424
+ };
425
+ /**
426
+ * The object of the action inside the resource's application, in that
427
+ * application's own namespace (for example "order:8812"). Empty for the
428
+ * resource as a whole. Opaque to SID apart from the policies that name it.
429
+ *
430
+ * @generated from protobuf field: string object = 3
431
+ */
432
+ object: string;
220
433
  }
221
434
  /**
222
- * @generated from protobuf message sid.v1.authz.CheckPermissionResponse
435
+ * The subject of an original request, established by SID from the request's
436
+ * own access token. The token is evidence about its subject, never the
437
+ * caller's credential, and is not accepted at the authorization API itself.
438
+ *
439
+ * @generated from protobuf message sid.v1.authz.RequestEvaluation
223
440
  */
224
- export interface CheckPermissionResponse {
441
+ export interface RequestEvaluation {
225
442
  /**
226
- * @generated from protobuf field: bool allowed = 1
443
+ * The access token exactly as the original request presented it (JWS
444
+ * compact serialization or an opaque access token), unchanged. Its audience
445
+ * is the target resource. Refresh, ID, IdP session and exchange-only PAT
446
+ * parent tokens are refused. Never logged or echoed.
447
+ *
448
+ * @generated from protobuf field: string access_token = 1
227
449
  */
228
- allowed: boolean;
450
+ accessToken: string;
451
+ /**
452
+ * Checks of the original request made at the resource boundary by the
453
+ * caller, when the caller is trusted to make them. Absent when the request
454
+ * carried no sender proof or nobody trusted to verify it did.
455
+ *
456
+ * @generated from protobuf field: sid.v1.authz.RequestConfirmation confirmation = 2
457
+ */
458
+ confirmation?: RequestConfirmation;
459
+ }
460
+ /**
461
+ * What the verifier at the resource boundary confirmed about one original
462
+ * request. It is bound to that request, its token and this query's target;
463
+ * it is the verifier's testimony, not a new proof, and the original sender
464
+ * proof is never sent or consumed again here.
465
+ *
466
+ * @generated from protobuf message sid.v1.authz.RequestConfirmation
467
+ */
468
+ export interface RequestConfirmation {
469
+ /**
470
+ * Which kind of sender proof was verified.
471
+ *
472
+ * @generated from protobuf field: sid.v1.authz.SenderProofProfile profile = 1
473
+ */
474
+ profile: SenderProofProfile;
475
+ /**
476
+ * The original request's HTTP method, as received at the resource.
477
+ *
478
+ * @generated from protobuf field: string method = 2
479
+ */
480
+ method: string;
481
+ /**
482
+ * The original request's external URI without query and fragment, as
483
+ * reconstructed from authenticated ingress context (the DPoP `htu`,
484
+ * RFC 9449 §4.2).
485
+ *
486
+ * @generated from protobuf field: string uri = 3
487
+ */
488
+ uri: string;
489
+ /**
490
+ * The verifier's identifier of the original request: a retry of the same
491
+ * pending request carries the same value, a new request a new one.
492
+ * 16 random bytes.
493
+ *
494
+ * @generated from protobuf field: bytes request_id = 4
495
+ */
496
+ requestId: Uint8Array;
497
+ /**
498
+ * The JWK SHA-256 thumbprint (RFC 7638) of the key the proof was verified
499
+ * with; it must equal the token's `cnf.jkt` (RFC 9449 §6.1).
500
+ *
501
+ * @generated from protobuf field: string jkt = 5
502
+ */
503
+ jkt: string;
504
+ /**
505
+ * When the verifier checked the proof.
506
+ *
507
+ * @generated from protobuf field: google.protobuf.Timestamp verified_at = 6
508
+ */
509
+ verifiedAt?: Timestamp;
510
+ /**
511
+ * Until when the confirmation may be used for this request; never beyond
512
+ * the token's expiry.
513
+ *
514
+ * @generated from protobuf field: google.protobuf.Timestamp valid_until = 7
515
+ */
516
+ validUntil?: Timestamp;
517
+ }
518
+ /**
519
+ * A subject named for abstract evaluation.
520
+ *
521
+ * @generated from protobuf message sid.v1.authz.SubjectReference
522
+ */
523
+ export interface SubjectReference {
524
+ /**
525
+ * @generated from protobuf oneof: kind
526
+ */
527
+ kind: {
528
+ oneofKind: "machineUserId";
529
+ /**
530
+ * A machine user of this installation.
531
+ *
532
+ * @generated from protobuf field: sid.v1.ids.MachineUserId machine_user_id = 1
533
+ */
534
+ machineUserId: MachineUserId;
535
+ } | {
536
+ oneofKind: "oauthClientId";
537
+ /**
538
+ * An independent confidential OAuth client of this installation, by its
539
+ * `client_id`.
540
+ *
541
+ * @generated from protobuf field: string oauth_client_id = 2
542
+ */
543
+ oauthClientId: string;
544
+ } | {
545
+ oneofKind: "issuerSubject";
546
+ /**
547
+ * A user as the target's issuer identifies them to the target's
548
+ * recipient: that issuer's opaque `sub` for it, resolved under the
549
+ * issuer's subject rule, never cast to an identifier by its shape.
550
+ *
551
+ * @generated from protobuf field: sid.v1.authz.IssuerSubject issuer_subject = 3
552
+ */
553
+ issuerSubject: IssuerSubject;
554
+ } | {
555
+ oneofKind: undefined;
556
+ };
557
+ }
558
+ /**
559
+ * A subject as one issuer names it.
560
+ *
561
+ * @generated from protobuf message sid.v1.authz.IssuerSubject
562
+ */
563
+ export interface IssuerSubject {
229
564
  /**
565
+ * The issuer's identifier (its `iss`).
566
+ *
567
+ * @generated from protobuf field: string issuer = 1
568
+ */
569
+ issuer: string;
570
+ /**
571
+ * The issuer's subject identifier for the target's recipient (its `sub`).
572
+ *
573
+ * @generated from protobuf field: string subject = 2
574
+ */
575
+ subject: string;
576
+ }
577
+ /**
578
+ * The caller asks about itself.
579
+ *
580
+ * @generated from protobuf message sid.v1.authz.SelfEvaluation
581
+ */
582
+ export interface SelfEvaluation {
583
+ }
584
+ /**
585
+ * @generated from protobuf message sid.v1.authz.CheckPermissionResponse
586
+ */
587
+ export interface CheckPermissionResponse {
588
+ /**
589
+ * Explanation of the decision, for a caller asking about itself; absent
590
+ * for a checker, which gets the decision without policy internals.
591
+ *
230
592
  * @generated from protobuf field: optional string reason = 2
231
593
  */
232
- reason?: string; // Explanation (for debugging/audit)
594
+ reason?: string;
233
595
  /**
234
596
  * Snapshot token for subsequent consistent checks.
235
597
  *
236
598
  * @generated from protobuf field: optional string zookie = 3
237
599
  */
238
600
  zookie?: string;
601
+ /**
602
+ * The decision.
603
+ *
604
+ * @generated from protobuf field: sid.v1.authz.PermissionOutcome outcome = 4
605
+ */
606
+ outcome: PermissionOutcome;
239
607
  }
240
608
  /**
609
+ * Several permission questions, answered together or refused together.
610
+ *
241
611
  * @generated from protobuf message sid.v1.authz.BatchCheckPermissionRequest
242
612
  */
243
613
  export interface BatchCheckPermissionRequest {
244
614
  /**
615
+ * At most 100 questions. Every one is admitted (caller, target, evidence)
616
+ * before any subject is evaluated; one refused question refuses the whole
617
+ * batch with no partial results. Questions about one original request
618
+ * carry the same `RequestEvaluation`.
619
+ *
245
620
  * @generated from protobuf field: repeated sid.v1.authz.CheckPermissionRequest checks = 1
246
621
  */
247
622
  checks: CheckPermissionRequest[];
@@ -251,6 +626,8 @@ export interface BatchCheckPermissionRequest {
251
626
  */
252
627
  export interface BatchCheckPermissionResponse {
253
628
  /**
629
+ * One answer per question, in the order asked.
630
+ *
254
631
  * @generated from protobuf field: repeated sid.v1.authz.CheckPermissionResponse results = 1
255
632
  */
256
633
  results: CheckPermissionResponse[];
@@ -384,18 +761,31 @@ export interface GetRoleResponse {
384
761
  role?: Role;
385
762
  }
386
763
  /**
764
+ * Changes a role on the caller's authority: the installation's administrator
765
+ * edits any role; anyone else needs an administrative assignment permitting
766
+ * edits of it whose ceiling admits the new permissions. A role never gains a
767
+ * permission beyond the approved ceiling of one of its assignments
768
+ * (FAILED_PRECONDITION, APPROVED_CEILING): that assignment is reauthorized
769
+ * first.
770
+ *
387
771
  * @generated from protobuf message sid.v1.authz.UpdateRoleRequest
388
772
  */
389
773
  export interface UpdateRoleRequest {
390
774
  /**
775
+ * The role to change.
776
+ *
391
777
  * @generated from protobuf field: string id = 1
392
778
  */
393
779
  id: string;
394
780
  /**
781
+ * New description; unset keeps the current one.
782
+ *
395
783
  * @generated from protobuf field: optional string description = 2
396
784
  */
397
785
  description?: string;
398
786
  /**
787
+ * The role's complete new permission list; empty keeps the current one.
788
+ *
399
789
  * @generated from protobuf field: repeated string permissions = 3
400
790
  */
401
791
  permissions: string[];
@@ -480,6 +870,26 @@ export interface AssignRoleRequest {
480
870
  * @generated from protobuf field: string machine_user_id = 6
481
871
  */
482
872
  machineUserId: string;
873
+ } | {
874
+ oneofKind: "oauthClientId";
875
+ /**
876
+ * `client_id` of an existing confidential OAuth client; a public or
877
+ * unknown client is refused (INVALID_ARGUMENT / NOT_FOUND).
878
+ *
879
+ * @generated from protobuf field: string oauth_client_id = 7
880
+ */
881
+ oauthClientId: string;
882
+ } | {
883
+ oneofKind: "provisioningConnectorId";
884
+ /**
885
+ * An existing, not retired SCIM provisioning connector. The assignment
886
+ * must be scoped to one protected resource ("oauth_resource:<resource_id>"),
887
+ * else INVALID_ARGUMENT; an unknown connector is NOT_FOUND, a retired one
888
+ * FAILED_PRECONDITION.
889
+ *
890
+ * @generated from protobuf field: sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 8
891
+ */
892
+ provisioningConnectorId: ProvisioningConnectorId;
483
893
  } | {
484
894
  oneofKind: undefined;
485
895
  };
@@ -488,6 +898,11 @@ export interface AssignRoleRequest {
488
898
  */
489
899
  roleId: string;
490
900
  /**
901
+ * Scope of the assignment, as in RoleAssignment.scope. For the token
902
+ * inspector role it must name an existing, not retired protected resource
903
+ * ("oauth_resource:<resource_id>"), else INVALID_ARGUMENT / NOT_FOUND /
904
+ * FAILED_PRECONDITION (RESOURCE_RETIRED).
905
+ *
491
906
  * @generated from protobuf field: optional string scope = 4
492
907
  */
493
908
  scope?: string;
@@ -495,6 +910,16 @@ export interface AssignRoleRequest {
495
910
  * @generated from protobuf field: optional google.protobuf.Timestamp expires_at = 5
496
911
  */
497
912
  expiresAt?: Timestamp;
913
+ /**
914
+ * Makes the assignment administrative, bounded by this envelope within
915
+ * `scope`. Granting it requires the root of the scope, or a redelegation
916
+ * right of the same administrative role whose envelope this one narrows;
917
+ * a redelegated one needs `expires_at` within that right's validity.
918
+ * A malformed envelope is INVALID_ARGUMENT naming the field.
919
+ *
920
+ * @generated from protobuf field: optional sid.v1.authz.AdminEnvelope admin = 9
921
+ */
922
+ admin?: AdminEnvelope;
498
923
  }
499
924
  /**
500
925
  * @generated from protobuf message sid.v1.authz.AssignRoleResponse
@@ -550,6 +975,22 @@ export interface ListRoleAssignmentsRequest {
550
975
  * @generated from protobuf field: string machine_user_id = 4
551
976
  */
552
977
  machineUserId: string;
978
+ } | {
979
+ oneofKind: "oauthClientId";
980
+ /**
981
+ * Assignments held by this OAuth client (`client_id`).
982
+ *
983
+ * @generated from protobuf field: string oauth_client_id = 5
984
+ */
985
+ oauthClientId: string;
986
+ } | {
987
+ oneofKind: "provisioningConnectorId";
988
+ /**
989
+ * Assignments held by this SCIM provisioning connector.
990
+ *
991
+ * @generated from protobuf field: sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 6
992
+ */
993
+ provisioningConnectorId: ProvisioningConnectorId;
553
994
  } | {
554
995
  oneofKind: undefined;
555
996
  };
@@ -1027,7 +1468,8 @@ export interface SodConflict {
1027
1468
  */
1028
1469
  description: string;
1029
1470
  /**
1030
- * Severity: "warning" (CE) or "block" (EE).
1471
+ * Severity: "warning" (an administrator may override it) or "block" (the
1472
+ * assignment needs an approved exception).
1031
1473
  *
1032
1474
  * @generated from protobuf field: string severity = 3
1033
1475
  */
@@ -1285,67 +1727,179 @@ export enum PolicyEffect {
1285
1727
  FORBID = 2
1286
1728
  }
1287
1729
  /**
1288
- * Type of access change.
1730
+ * A role administration operation an administrative assignment may permit.
1731
+ * None implies another.
1289
1732
  *
1290
- * @generated from protobuf enum sid.v1.authz.SimulationImpactType
1733
+ * @generated from protobuf enum sid.v1.authz.AdminOperation
1291
1734
  */
1292
- export enum SimulationImpactType {
1735
+ export enum AdminOperation {
1293
1736
  /**
1294
- * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_UNSPECIFIED = 0;
1737
+ * @generated from protobuf enum value: ADMIN_OPERATION_UNSPECIFIED = 0;
1295
1738
  */
1296
1739
  UNSPECIFIED = 0,
1297
1740
  /**
1298
- * Current: deny → Proposed: allow.
1741
+ * Create assignments of the envelope's roles.
1299
1742
  *
1300
- * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_GAINED = 1;
1743
+ * @generated from protobuf enum value: ADMIN_OPERATION_ASSIGN = 1;
1301
1744
  */
1302
- GAINED = 1,
1745
+ ASSIGN = 1,
1303
1746
  /**
1304
- * Current: allow → Proposed: deny.
1747
+ * Remove assignments of the envelope's roles.
1305
1748
  *
1306
- * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_LOST = 2;
1749
+ * @generated from protobuf enum value: ADMIN_OPERATION_REVOKE = 2;
1307
1750
  */
1308
- LOST = 2,
1751
+ REVOKE = 2,
1309
1752
  /**
1310
- * No change (both allow or both deny).
1753
+ * Change the definition of the envelope's roles, within its ceiling.
1311
1754
  *
1312
- * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_UNCHANGED = 3;
1755
+ * @generated from protobuf enum value: ADMIN_OPERATION_EDIT_ROLE = 3;
1313
1756
  */
1314
- UNCHANGED = 3
1757
+ EDIT_ROLE = 3,
1758
+ /**
1759
+ * Grant administrative assignments narrower than the holder's own.
1760
+ *
1761
+ * @generated from protobuf enum value: ADMIN_OPERATION_REDELEGATE = 4;
1762
+ */
1763
+ REDELEGATE = 4
1315
1764
  }
1316
- // @generated message type with reflection information, may provide speed optimized methods
1317
- class Role$Type extends MessageType<Role> {
1318
- constructor() {
1319
- super("sid.v1.authz.Role", [
1320
- { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1321
- { no: 2, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1322
- { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1323
- { no: 4, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
1324
- { no: 5, name: "permissions", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
1325
- { no: 6, name: "created_at", kind: "message", T: () => Timestamp },
1326
- { no: 7, name: "updated_at", kind: "message", T: () => Timestamp }
1327
- ]);
1328
- }
1329
- create(value?: PartialMessage<Role>): Role {
1330
- const message = globalThis.Object.create((this.messagePrototype!));
1331
- message.id = "";
1332
- message.projectId = "";
1333
- message.name = "";
1334
- message.permissions = [];
1335
- if (value !== undefined)
1336
- reflectionMergePartial<Role>(this, message, value);
1337
- return message;
1338
- }
1339
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Role): Role {
1340
- let message = target ?? this.create(), end = reader.pos + length;
1341
- while (reader.pos < end) {
1342
- let [fieldNo, wireType] = reader.tag();
1343
- switch (fieldNo) {
1344
- case /* string id */ 1:
1345
- message.id = reader.string();
1346
- break;
1347
- case /* string project_id */ 2:
1348
- message.projectId = reader.string();
1765
+ /**
1766
+ * A kind of principal an administrative assignment lets its holder assign
1767
+ * roles to. A SCIM provisioning connector is never an administered recipient.
1768
+ *
1769
+ * @generated from protobuf enum sid.v1.authz.RecipientKind
1770
+ */
1771
+ export enum RecipientKind {
1772
+ /**
1773
+ * @generated from protobuf enum value: RECIPIENT_KIND_UNSPECIFIED = 0;
1774
+ */
1775
+ UNSPECIFIED = 0,
1776
+ /**
1777
+ * @generated from protobuf enum value: RECIPIENT_KIND_PROFILE = 1;
1778
+ */
1779
+ PROFILE = 1,
1780
+ /**
1781
+ * @generated from protobuf enum value: RECIPIENT_KIND_GROUP = 2;
1782
+ */
1783
+ GROUP = 2,
1784
+ /**
1785
+ * @generated from protobuf enum value: RECIPIENT_KIND_MACHINE_USER = 3;
1786
+ */
1787
+ MACHINE_USER = 3,
1788
+ /**
1789
+ * @generated from protobuf enum value: RECIPIENT_KIND_OAUTH_CLIENT = 4;
1790
+ */
1791
+ OAUTH_CLIENT = 4
1792
+ }
1793
+ /**
1794
+ * The kind of sender proof a confirmation reports.
1795
+ *
1796
+ * @generated from protobuf enum sid.v1.authz.SenderProofProfile
1797
+ */
1798
+ export enum SenderProofProfile {
1799
+ /**
1800
+ * @generated from protobuf enum value: SENDER_PROOF_PROFILE_UNSPECIFIED = 0;
1801
+ */
1802
+ UNSPECIFIED = 0,
1803
+ /**
1804
+ * A DPoP proof (RFC 9449).
1805
+ *
1806
+ * @generated from protobuf enum value: SENDER_PROOF_PROFILE_DPOP = 1;
1807
+ */
1808
+ DPOP = 1
1809
+ }
1810
+ /**
1811
+ * What a permission question decided.
1812
+ *
1813
+ * @generated from protobuf enum sid.v1.authz.PermissionOutcome
1814
+ */
1815
+ export enum PermissionOutcome {
1816
+ /**
1817
+ * @generated from protobuf enum value: PERMISSION_OUTCOME_UNSPECIFIED = 0;
1818
+ */
1819
+ UNSPECIFIED = 0,
1820
+ /**
1821
+ * The subject may perform the action on the target.
1822
+ *
1823
+ * @generated from protobuf enum value: PERMISSION_OUTCOME_ALLOWED = 1;
1824
+ */
1825
+ ALLOWED = 1,
1826
+ /**
1827
+ * The subject may not.
1828
+ *
1829
+ * @generated from protobuf enum value: PERMISSION_OUTCOME_DENIED = 2;
1830
+ */
1831
+ DENIED = 2,
1832
+ /**
1833
+ * A policy requires evidence the question did not carry (a session, an
1834
+ * authentication level, a sender proof); with that evidence the decision
1835
+ * may differ. Never an allow.
1836
+ *
1837
+ * @generated from protobuf enum value: PERMISSION_OUTCOME_EVIDENCE_REQUIRED = 3;
1838
+ */
1839
+ EVIDENCE_REQUIRED = 3
1840
+ }
1841
+ /**
1842
+ * Type of access change.
1843
+ *
1844
+ * @generated from protobuf enum sid.v1.authz.SimulationImpactType
1845
+ */
1846
+ export enum SimulationImpactType {
1847
+ /**
1848
+ * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_UNSPECIFIED = 0;
1849
+ */
1850
+ UNSPECIFIED = 0,
1851
+ /**
1852
+ * Current: deny → Proposed: allow.
1853
+ *
1854
+ * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_GAINED = 1;
1855
+ */
1856
+ GAINED = 1,
1857
+ /**
1858
+ * Current: allow → Proposed: deny.
1859
+ *
1860
+ * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_LOST = 2;
1861
+ */
1862
+ LOST = 2,
1863
+ /**
1864
+ * No change (both allow or both deny).
1865
+ *
1866
+ * @generated from protobuf enum value: SIMULATION_IMPACT_TYPE_UNCHANGED = 3;
1867
+ */
1868
+ UNCHANGED = 3
1869
+ }
1870
+ // @generated message type with reflection information, may provide speed optimized methods
1871
+ class Role$Type extends MessageType<Role> {
1872
+ constructor() {
1873
+ super("sid.v1.authz.Role", [
1874
+ { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1875
+ { no: 2, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1876
+ { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1877
+ { no: 4, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
1878
+ { no: 5, name: "permissions", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
1879
+ { no: 6, name: "created_at", kind: "message", T: () => Timestamp },
1880
+ { no: 7, name: "updated_at", kind: "message", T: () => Timestamp }
1881
+ ]);
1882
+ }
1883
+ create(value?: PartialMessage<Role>): Role {
1884
+ const message = globalThis.Object.create((this.messagePrototype!));
1885
+ message.id = "";
1886
+ message.projectId = "";
1887
+ message.name = "";
1888
+ message.permissions = [];
1889
+ if (value !== undefined)
1890
+ reflectionMergePartial<Role>(this, message, value);
1891
+ return message;
1892
+ }
1893
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Role): Role {
1894
+ let message = target ?? this.create(), end = reader.pos + length;
1895
+ while (reader.pos < end) {
1896
+ let [fieldNo, wireType] = reader.tag();
1897
+ switch (fieldNo) {
1898
+ case /* string id */ 1:
1899
+ message.id = reader.string();
1900
+ break;
1901
+ case /* string project_id */ 2:
1902
+ message.projectId = reader.string();
1349
1903
  break;
1350
1904
  case /* string name */ 3:
1351
1905
  message.name = reader.string();
@@ -1437,17 +1991,741 @@ class Group$Type extends MessageType<Group> {
1437
1991
  case /* string project_id */ 2:
1438
1992
  message.projectId = reader.string();
1439
1993
  break;
1440
- case /* string name */ 3:
1441
- message.name = reader.string();
1994
+ case /* string name */ 3:
1995
+ message.name = reader.string();
1996
+ break;
1997
+ case /* optional string description */ 4:
1998
+ message.description = reader.string();
1999
+ break;
2000
+ case /* google.protobuf.Timestamp created_at */ 5:
2001
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
2002
+ break;
2003
+ case /* google.protobuf.Timestamp updated_at */ 6:
2004
+ message.updatedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.updatedAt);
2005
+ break;
2006
+ default:
2007
+ let u = options.readUnknownField;
2008
+ if (u === "throw")
2009
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2010
+ let d = reader.skip(wireType);
2011
+ if (u !== false)
2012
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2013
+ }
2014
+ }
2015
+ return message;
2016
+ }
2017
+ internalBinaryWrite(message: Group, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2018
+ /* string id = 1; */
2019
+ if (message.id !== "")
2020
+ writer.tag(1, WireType.LengthDelimited).string(message.id);
2021
+ /* string project_id = 2; */
2022
+ if (message.projectId !== "")
2023
+ writer.tag(2, WireType.LengthDelimited).string(message.projectId);
2024
+ /* string name = 3; */
2025
+ if (message.name !== "")
2026
+ writer.tag(3, WireType.LengthDelimited).string(message.name);
2027
+ /* optional string description = 4; */
2028
+ if (message.description !== undefined)
2029
+ writer.tag(4, WireType.LengthDelimited).string(message.description);
2030
+ /* google.protobuf.Timestamp created_at = 5; */
2031
+ if (message.createdAt)
2032
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
2033
+ /* google.protobuf.Timestamp updated_at = 6; */
2034
+ if (message.updatedAt)
2035
+ Timestamp.internalBinaryWrite(message.updatedAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2036
+ let u = options.writeUnknownFields;
2037
+ if (u !== false)
2038
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2039
+ return writer;
2040
+ }
2041
+ }
2042
+ /**
2043
+ * @generated MessageType for protobuf message sid.v1.authz.Group
2044
+ */
2045
+ export const Group = new Group$Type();
2046
+ // @generated message type with reflection information, may provide speed optimized methods
2047
+ class RoleAssignment$Type extends MessageType<RoleAssignment> {
2048
+ constructor() {
2049
+ super("sid.v1.authz.RoleAssignment", [
2050
+ { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2051
+ { no: 2, name: "profile_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2052
+ { no: 3, name: "group_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2053
+ { no: 8, name: "machine_user_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2054
+ { no: 9, name: "oauth_client_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2055
+ { no: 10, name: "provisioning_connector_id", kind: "message", oneof: "principal", T: () => ProvisioningConnectorId },
2056
+ { no: 4, name: "role_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2057
+ { no: 5, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2058
+ { no: 6, name: "expires_at", kind: "message", T: () => Timestamp },
2059
+ { no: 7, name: "created_at", kind: "message", T: () => Timestamp },
2060
+ { no: 11, name: "admin", kind: "message", T: () => AdminEnvelope },
2061
+ { no: 12, name: "provenance", kind: "message", T: () => AssignmentProvenance }
2062
+ ]);
2063
+ }
2064
+ create(value?: PartialMessage<RoleAssignment>): RoleAssignment {
2065
+ const message = globalThis.Object.create((this.messagePrototype!));
2066
+ message.id = "";
2067
+ message.principal = { oneofKind: undefined };
2068
+ message.roleId = "";
2069
+ if (value !== undefined)
2070
+ reflectionMergePartial<RoleAssignment>(this, message, value);
2071
+ return message;
2072
+ }
2073
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RoleAssignment): RoleAssignment {
2074
+ let message = target ?? this.create(), end = reader.pos + length;
2075
+ while (reader.pos < end) {
2076
+ let [fieldNo, wireType] = reader.tag();
2077
+ switch (fieldNo) {
2078
+ case /* string id */ 1:
2079
+ message.id = reader.string();
2080
+ break;
2081
+ case /* string profile_id */ 2:
2082
+ message.principal = {
2083
+ oneofKind: "profileId",
2084
+ profileId: reader.string()
2085
+ };
2086
+ break;
2087
+ case /* string group_id */ 3:
2088
+ message.principal = {
2089
+ oneofKind: "groupId",
2090
+ groupId: reader.string()
2091
+ };
2092
+ break;
2093
+ case /* string machine_user_id */ 8:
2094
+ message.principal = {
2095
+ oneofKind: "machineUserId",
2096
+ machineUserId: reader.string()
2097
+ };
2098
+ break;
2099
+ case /* string oauth_client_id */ 9:
2100
+ message.principal = {
2101
+ oneofKind: "oauthClientId",
2102
+ oauthClientId: reader.string()
2103
+ };
2104
+ break;
2105
+ case /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id */ 10:
2106
+ message.principal = {
2107
+ oneofKind: "provisioningConnectorId",
2108
+ provisioningConnectorId: ProvisioningConnectorId.internalBinaryRead(reader, reader.uint32(), options, (message.principal as any).provisioningConnectorId)
2109
+ };
2110
+ break;
2111
+ case /* string role_id */ 4:
2112
+ message.roleId = reader.string();
2113
+ break;
2114
+ case /* optional string scope */ 5:
2115
+ message.scope = reader.string();
2116
+ break;
2117
+ case /* optional google.protobuf.Timestamp expires_at */ 6:
2118
+ message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
2119
+ break;
2120
+ case /* google.protobuf.Timestamp created_at */ 7:
2121
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
2122
+ break;
2123
+ case /* optional sid.v1.authz.AdminEnvelope admin */ 11:
2124
+ message.admin = AdminEnvelope.internalBinaryRead(reader, reader.uint32(), options, message.admin);
2125
+ break;
2126
+ case /* optional sid.v1.authz.AssignmentProvenance provenance */ 12:
2127
+ message.provenance = AssignmentProvenance.internalBinaryRead(reader, reader.uint32(), options, message.provenance);
2128
+ break;
2129
+ default:
2130
+ let u = options.readUnknownField;
2131
+ if (u === "throw")
2132
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2133
+ let d = reader.skip(wireType);
2134
+ if (u !== false)
2135
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2136
+ }
2137
+ }
2138
+ return message;
2139
+ }
2140
+ internalBinaryWrite(message: RoleAssignment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2141
+ /* string id = 1; */
2142
+ if (message.id !== "")
2143
+ writer.tag(1, WireType.LengthDelimited).string(message.id);
2144
+ /* string profile_id = 2; */
2145
+ if (message.principal.oneofKind === "profileId")
2146
+ writer.tag(2, WireType.LengthDelimited).string(message.principal.profileId);
2147
+ /* string group_id = 3; */
2148
+ if (message.principal.oneofKind === "groupId")
2149
+ writer.tag(3, WireType.LengthDelimited).string(message.principal.groupId);
2150
+ /* string role_id = 4; */
2151
+ if (message.roleId !== "")
2152
+ writer.tag(4, WireType.LengthDelimited).string(message.roleId);
2153
+ /* optional string scope = 5; */
2154
+ if (message.scope !== undefined)
2155
+ writer.tag(5, WireType.LengthDelimited).string(message.scope);
2156
+ /* optional google.protobuf.Timestamp expires_at = 6; */
2157
+ if (message.expiresAt)
2158
+ Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2159
+ /* google.protobuf.Timestamp created_at = 7; */
2160
+ if (message.createdAt)
2161
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
2162
+ /* string machine_user_id = 8; */
2163
+ if (message.principal.oneofKind === "machineUserId")
2164
+ writer.tag(8, WireType.LengthDelimited).string(message.principal.machineUserId);
2165
+ /* string oauth_client_id = 9; */
2166
+ if (message.principal.oneofKind === "oauthClientId")
2167
+ writer.tag(9, WireType.LengthDelimited).string(message.principal.oauthClientId);
2168
+ /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 10; */
2169
+ if (message.principal.oneofKind === "provisioningConnectorId")
2170
+ ProvisioningConnectorId.internalBinaryWrite(message.principal.provisioningConnectorId, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
2171
+ /* optional sid.v1.authz.AdminEnvelope admin = 11; */
2172
+ if (message.admin)
2173
+ AdminEnvelope.internalBinaryWrite(message.admin, writer.tag(11, WireType.LengthDelimited).fork(), options).join();
2174
+ /* optional sid.v1.authz.AssignmentProvenance provenance = 12; */
2175
+ if (message.provenance)
2176
+ AssignmentProvenance.internalBinaryWrite(message.provenance, writer.tag(12, WireType.LengthDelimited).fork(), options).join();
2177
+ let u = options.writeUnknownFields;
2178
+ if (u !== false)
2179
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2180
+ return writer;
2181
+ }
2182
+ }
2183
+ /**
2184
+ * @generated MessageType for protobuf message sid.v1.authz.RoleAssignment
2185
+ */
2186
+ export const RoleAssignment = new RoleAssignment$Type();
2187
+ // @generated message type with reflection information, may provide speed optimized methods
2188
+ class AdminEnvelope$Type extends MessageType<AdminEnvelope> {
2189
+ constructor() {
2190
+ super("sid.v1.authz.AdminEnvelope", [
2191
+ { no: 1, name: "operations", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["sid.v1.authz.AdminOperation", AdminOperation, "ADMIN_OPERATION_"] },
2192
+ { no: 2, name: "role_ids", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
2193
+ { no: 3, name: "permission_ceiling", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
2194
+ { no: 4, name: "recipient_kinds", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["sid.v1.authz.RecipientKind", RecipientKind, "RECIPIENT_KIND_"] },
2195
+ { no: 5, name: "recipient_group_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2196
+ { no: 6, name: "max_validity", kind: "message", T: () => Duration }
2197
+ ]);
2198
+ }
2199
+ create(value?: PartialMessage<AdminEnvelope>): AdminEnvelope {
2200
+ const message = globalThis.Object.create((this.messagePrototype!));
2201
+ message.operations = [];
2202
+ message.roleIds = [];
2203
+ message.permissionCeiling = [];
2204
+ message.recipientKinds = [];
2205
+ if (value !== undefined)
2206
+ reflectionMergePartial<AdminEnvelope>(this, message, value);
2207
+ return message;
2208
+ }
2209
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AdminEnvelope): AdminEnvelope {
2210
+ let message = target ?? this.create(), end = reader.pos + length;
2211
+ while (reader.pos < end) {
2212
+ let [fieldNo, wireType] = reader.tag();
2213
+ switch (fieldNo) {
2214
+ case /* repeated sid.v1.authz.AdminOperation operations */ 1:
2215
+ if (wireType === WireType.LengthDelimited)
2216
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
2217
+ message.operations.push(reader.int32());
2218
+ else
2219
+ message.operations.push(reader.int32());
2220
+ break;
2221
+ case /* repeated string role_ids */ 2:
2222
+ message.roleIds.push(reader.string());
2223
+ break;
2224
+ case /* repeated string permission_ceiling */ 3:
2225
+ message.permissionCeiling.push(reader.string());
2226
+ break;
2227
+ case /* repeated sid.v1.authz.RecipientKind recipient_kinds */ 4:
2228
+ if (wireType === WireType.LengthDelimited)
2229
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
2230
+ message.recipientKinds.push(reader.int32());
2231
+ else
2232
+ message.recipientKinds.push(reader.int32());
2233
+ break;
2234
+ case /* optional string recipient_group_id */ 5:
2235
+ message.recipientGroupId = reader.string();
2236
+ break;
2237
+ case /* google.protobuf.Duration max_validity */ 6:
2238
+ message.maxValidity = Duration.internalBinaryRead(reader, reader.uint32(), options, message.maxValidity);
2239
+ break;
2240
+ default:
2241
+ let u = options.readUnknownField;
2242
+ if (u === "throw")
2243
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2244
+ let d = reader.skip(wireType);
2245
+ if (u !== false)
2246
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2247
+ }
2248
+ }
2249
+ return message;
2250
+ }
2251
+ internalBinaryWrite(message: AdminEnvelope, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2252
+ /* repeated sid.v1.authz.AdminOperation operations = 1; */
2253
+ if (message.operations.length) {
2254
+ writer.tag(1, WireType.LengthDelimited).fork();
2255
+ for (let i = 0; i < message.operations.length; i++)
2256
+ writer.int32(message.operations[i]);
2257
+ writer.join();
2258
+ }
2259
+ /* repeated string role_ids = 2; */
2260
+ for (let i = 0; i < message.roleIds.length; i++)
2261
+ writer.tag(2, WireType.LengthDelimited).string(message.roleIds[i]);
2262
+ /* repeated string permission_ceiling = 3; */
2263
+ for (let i = 0; i < message.permissionCeiling.length; i++)
2264
+ writer.tag(3, WireType.LengthDelimited).string(message.permissionCeiling[i]);
2265
+ /* repeated sid.v1.authz.RecipientKind recipient_kinds = 4; */
2266
+ if (message.recipientKinds.length) {
2267
+ writer.tag(4, WireType.LengthDelimited).fork();
2268
+ for (let i = 0; i < message.recipientKinds.length; i++)
2269
+ writer.int32(message.recipientKinds[i]);
2270
+ writer.join();
2271
+ }
2272
+ /* optional string recipient_group_id = 5; */
2273
+ if (message.recipientGroupId !== undefined)
2274
+ writer.tag(5, WireType.LengthDelimited).string(message.recipientGroupId);
2275
+ /* google.protobuf.Duration max_validity = 6; */
2276
+ if (message.maxValidity)
2277
+ Duration.internalBinaryWrite(message.maxValidity, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2278
+ let u = options.writeUnknownFields;
2279
+ if (u !== false)
2280
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2281
+ return writer;
2282
+ }
2283
+ }
2284
+ /**
2285
+ * @generated MessageType for protobuf message sid.v1.authz.AdminEnvelope
2286
+ */
2287
+ export const AdminEnvelope = new AdminEnvelope$Type();
2288
+ // @generated message type with reflection information, may provide speed optimized methods
2289
+ class AssignmentProvenance$Type extends MessageType<AssignmentProvenance> {
2290
+ constructor() {
2291
+ super("sid.v1.authz.AssignmentProvenance", [
2292
+ { no: 1, name: "granted_by", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2293
+ { no: 2, name: "basis_assignment_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2294
+ { no: 3, name: "depends_on_assignment_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2295
+ { no: 4, name: "approved_ceiling", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
2296
+ ]);
2297
+ }
2298
+ create(value?: PartialMessage<AssignmentProvenance>): AssignmentProvenance {
2299
+ const message = globalThis.Object.create((this.messagePrototype!));
2300
+ message.grantedBy = "";
2301
+ message.approvedCeiling = [];
2302
+ if (value !== undefined)
2303
+ reflectionMergePartial<AssignmentProvenance>(this, message, value);
2304
+ return message;
2305
+ }
2306
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AssignmentProvenance): AssignmentProvenance {
2307
+ let message = target ?? this.create(), end = reader.pos + length;
2308
+ while (reader.pos < end) {
2309
+ let [fieldNo, wireType] = reader.tag();
2310
+ switch (fieldNo) {
2311
+ case /* string granted_by */ 1:
2312
+ message.grantedBy = reader.string();
2313
+ break;
2314
+ case /* optional string basis_assignment_id */ 2:
2315
+ message.basisAssignmentId = reader.string();
2316
+ break;
2317
+ case /* optional string depends_on_assignment_id */ 3:
2318
+ message.dependsOnAssignmentId = reader.string();
2319
+ break;
2320
+ case /* repeated string approved_ceiling */ 4:
2321
+ message.approvedCeiling.push(reader.string());
2322
+ break;
2323
+ default:
2324
+ let u = options.readUnknownField;
2325
+ if (u === "throw")
2326
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2327
+ let d = reader.skip(wireType);
2328
+ if (u !== false)
2329
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2330
+ }
2331
+ }
2332
+ return message;
2333
+ }
2334
+ internalBinaryWrite(message: AssignmentProvenance, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2335
+ /* string granted_by = 1; */
2336
+ if (message.grantedBy !== "")
2337
+ writer.tag(1, WireType.LengthDelimited).string(message.grantedBy);
2338
+ /* optional string basis_assignment_id = 2; */
2339
+ if (message.basisAssignmentId !== undefined)
2340
+ writer.tag(2, WireType.LengthDelimited).string(message.basisAssignmentId);
2341
+ /* optional string depends_on_assignment_id = 3; */
2342
+ if (message.dependsOnAssignmentId !== undefined)
2343
+ writer.tag(3, WireType.LengthDelimited).string(message.dependsOnAssignmentId);
2344
+ /* repeated string approved_ceiling = 4; */
2345
+ for (let i = 0; i < message.approvedCeiling.length; i++)
2346
+ writer.tag(4, WireType.LengthDelimited).string(message.approvedCeiling[i]);
2347
+ let u = options.writeUnknownFields;
2348
+ if (u !== false)
2349
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2350
+ return writer;
2351
+ }
2352
+ }
2353
+ /**
2354
+ * @generated MessageType for protobuf message sid.v1.authz.AssignmentProvenance
2355
+ */
2356
+ export const AssignmentProvenance = new AssignmentProvenance$Type();
2357
+ // @generated message type with reflection information, may provide speed optimized methods
2358
+ class Policy$Type extends MessageType<Policy> {
2359
+ constructor() {
2360
+ super("sid.v1.authz.Policy", [
2361
+ { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2362
+ { no: 2, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2363
+ { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2364
+ { no: 4, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2365
+ { no: 5, name: "policy_text", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2366
+ { no: 6, name: "effect", kind: "enum", T: () => ["sid.v1.authz.PolicyEffect", PolicyEffect, "POLICY_EFFECT_"] },
2367
+ { no: 7, name: "enabled", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
2368
+ { no: 8, name: "created_at", kind: "message", T: () => Timestamp },
2369
+ { no: 9, name: "updated_at", kind: "message", T: () => Timestamp }
2370
+ ]);
2371
+ }
2372
+ create(value?: PartialMessage<Policy>): Policy {
2373
+ const message = globalThis.Object.create((this.messagePrototype!));
2374
+ message.id = "";
2375
+ message.projectId = "";
2376
+ message.name = "";
2377
+ message.policyText = "";
2378
+ message.effect = 0;
2379
+ message.enabled = false;
2380
+ if (value !== undefined)
2381
+ reflectionMergePartial<Policy>(this, message, value);
2382
+ return message;
2383
+ }
2384
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Policy): Policy {
2385
+ let message = target ?? this.create(), end = reader.pos + length;
2386
+ while (reader.pos < end) {
2387
+ let [fieldNo, wireType] = reader.tag();
2388
+ switch (fieldNo) {
2389
+ case /* string id */ 1:
2390
+ message.id = reader.string();
2391
+ break;
2392
+ case /* string project_id */ 2:
2393
+ message.projectId = reader.string();
2394
+ break;
2395
+ case /* string name */ 3:
2396
+ message.name = reader.string();
2397
+ break;
2398
+ case /* optional string description */ 4:
2399
+ message.description = reader.string();
2400
+ break;
2401
+ case /* string policy_text */ 5:
2402
+ message.policyText = reader.string();
2403
+ break;
2404
+ case /* sid.v1.authz.PolicyEffect effect */ 6:
2405
+ message.effect = reader.int32();
2406
+ break;
2407
+ case /* bool enabled */ 7:
2408
+ message.enabled = reader.bool();
2409
+ break;
2410
+ case /* google.protobuf.Timestamp created_at */ 8:
2411
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
2412
+ break;
2413
+ case /* google.protobuf.Timestamp updated_at */ 9:
2414
+ message.updatedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.updatedAt);
2415
+ break;
2416
+ default:
2417
+ let u = options.readUnknownField;
2418
+ if (u === "throw")
2419
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2420
+ let d = reader.skip(wireType);
2421
+ if (u !== false)
2422
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2423
+ }
2424
+ }
2425
+ return message;
2426
+ }
2427
+ internalBinaryWrite(message: Policy, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2428
+ /* string id = 1; */
2429
+ if (message.id !== "")
2430
+ writer.tag(1, WireType.LengthDelimited).string(message.id);
2431
+ /* string project_id = 2; */
2432
+ if (message.projectId !== "")
2433
+ writer.tag(2, WireType.LengthDelimited).string(message.projectId);
2434
+ /* string name = 3; */
2435
+ if (message.name !== "")
2436
+ writer.tag(3, WireType.LengthDelimited).string(message.name);
2437
+ /* optional string description = 4; */
2438
+ if (message.description !== undefined)
2439
+ writer.tag(4, WireType.LengthDelimited).string(message.description);
2440
+ /* string policy_text = 5; */
2441
+ if (message.policyText !== "")
2442
+ writer.tag(5, WireType.LengthDelimited).string(message.policyText);
2443
+ /* sid.v1.authz.PolicyEffect effect = 6; */
2444
+ if (message.effect !== 0)
2445
+ writer.tag(6, WireType.Varint).int32(message.effect);
2446
+ /* bool enabled = 7; */
2447
+ if (message.enabled !== false)
2448
+ writer.tag(7, WireType.Varint).bool(message.enabled);
2449
+ /* google.protobuf.Timestamp created_at = 8; */
2450
+ if (message.createdAt)
2451
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
2452
+ /* google.protobuf.Timestamp updated_at = 9; */
2453
+ if (message.updatedAt)
2454
+ Timestamp.internalBinaryWrite(message.updatedAt, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
2455
+ let u = options.writeUnknownFields;
2456
+ if (u !== false)
2457
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2458
+ return writer;
2459
+ }
2460
+ }
2461
+ /**
2462
+ * @generated MessageType for protobuf message sid.v1.authz.Policy
2463
+ */
2464
+ export const Policy = new Policy$Type();
2465
+ // @generated message type with reflection information, may provide speed optimized methods
2466
+ class CheckPermissionRequest$Type extends MessageType<CheckPermissionRequest> {
2467
+ constructor() {
2468
+ super("sid.v1.authz.CheckPermissionRequest", [
2469
+ { no: 2, name: "action", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2470
+ { no: 4, name: "consistency", kind: "enum", T: () => ["sid.v1.authz.Consistency", Consistency, "CONSISTENCY_"] },
2471
+ { no: 6, name: "target", kind: "message", T: () => PermissionTarget },
2472
+ { no: 7, name: "request", kind: "message", oneof: "evaluation", T: () => RequestEvaluation },
2473
+ { no: 8, name: "named_subject", kind: "message", oneof: "evaluation", T: () => SubjectReference },
2474
+ { no: 9, name: "self", kind: "message", oneof: "evaluation", T: () => SelfEvaluation }
2475
+ ]);
2476
+ }
2477
+ create(value?: PartialMessage<CheckPermissionRequest>): CheckPermissionRequest {
2478
+ const message = globalThis.Object.create((this.messagePrototype!));
2479
+ message.action = "";
2480
+ message.consistency = 0;
2481
+ message.evaluation = { oneofKind: undefined };
2482
+ if (value !== undefined)
2483
+ reflectionMergePartial<CheckPermissionRequest>(this, message, value);
2484
+ return message;
2485
+ }
2486
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckPermissionRequest): CheckPermissionRequest {
2487
+ let message = target ?? this.create(), end = reader.pos + length;
2488
+ while (reader.pos < end) {
2489
+ let [fieldNo, wireType] = reader.tag();
2490
+ switch (fieldNo) {
2491
+ case /* string action */ 2:
2492
+ message.action = reader.string();
2493
+ break;
2494
+ case /* sid.v1.authz.Consistency consistency */ 4:
2495
+ message.consistency = reader.int32();
2496
+ break;
2497
+ case /* sid.v1.authz.PermissionTarget target */ 6:
2498
+ message.target = PermissionTarget.internalBinaryRead(reader, reader.uint32(), options, message.target);
2499
+ break;
2500
+ case /* sid.v1.authz.RequestEvaluation request */ 7:
2501
+ message.evaluation = {
2502
+ oneofKind: "request",
2503
+ request: RequestEvaluation.internalBinaryRead(reader, reader.uint32(), options, (message.evaluation as any).request)
2504
+ };
2505
+ break;
2506
+ case /* sid.v1.authz.SubjectReference named_subject */ 8:
2507
+ message.evaluation = {
2508
+ oneofKind: "namedSubject",
2509
+ namedSubject: SubjectReference.internalBinaryRead(reader, reader.uint32(), options, (message.evaluation as any).namedSubject)
2510
+ };
2511
+ break;
2512
+ case /* sid.v1.authz.SelfEvaluation self */ 9:
2513
+ message.evaluation = {
2514
+ oneofKind: "self",
2515
+ self: SelfEvaluation.internalBinaryRead(reader, reader.uint32(), options, (message.evaluation as any).self)
2516
+ };
2517
+ break;
2518
+ default:
2519
+ let u = options.readUnknownField;
2520
+ if (u === "throw")
2521
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2522
+ let d = reader.skip(wireType);
2523
+ if (u !== false)
2524
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2525
+ }
2526
+ }
2527
+ return message;
2528
+ }
2529
+ internalBinaryWrite(message: CheckPermissionRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2530
+ /* string action = 2; */
2531
+ if (message.action !== "")
2532
+ writer.tag(2, WireType.LengthDelimited).string(message.action);
2533
+ /* sid.v1.authz.Consistency consistency = 4; */
2534
+ if (message.consistency !== 0)
2535
+ writer.tag(4, WireType.Varint).int32(message.consistency);
2536
+ /* sid.v1.authz.PermissionTarget target = 6; */
2537
+ if (message.target)
2538
+ PermissionTarget.internalBinaryWrite(message.target, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2539
+ /* sid.v1.authz.RequestEvaluation request = 7; */
2540
+ if (message.evaluation.oneofKind === "request")
2541
+ RequestEvaluation.internalBinaryWrite(message.evaluation.request, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
2542
+ /* sid.v1.authz.SubjectReference named_subject = 8; */
2543
+ if (message.evaluation.oneofKind === "namedSubject")
2544
+ SubjectReference.internalBinaryWrite(message.evaluation.namedSubject, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
2545
+ /* sid.v1.authz.SelfEvaluation self = 9; */
2546
+ if (message.evaluation.oneofKind === "self")
2547
+ SelfEvaluation.internalBinaryWrite(message.evaluation.self, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
2548
+ let u = options.writeUnknownFields;
2549
+ if (u !== false)
2550
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2551
+ return writer;
2552
+ }
2553
+ }
2554
+ /**
2555
+ * @generated MessageType for protobuf message sid.v1.authz.CheckPermissionRequest
2556
+ */
2557
+ export const CheckPermissionRequest = new CheckPermissionRequest$Type();
2558
+ // @generated message type with reflection information, may provide speed optimized methods
2559
+ class PermissionTarget$Type extends MessageType<PermissionTarget> {
2560
+ constructor() {
2561
+ super("sid.v1.authz.PermissionTarget", [
2562
+ { no: 1, name: "resource", kind: "message", oneof: "scope", T: () => ResourceId },
2563
+ { no: 2, name: "project_id", kind: "scalar", oneof: "scope", T: 9 /*ScalarType.STRING*/ },
2564
+ { no: 3, name: "object", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
2565
+ ]);
2566
+ }
2567
+ create(value?: PartialMessage<PermissionTarget>): PermissionTarget {
2568
+ const message = globalThis.Object.create((this.messagePrototype!));
2569
+ message.scope = { oneofKind: undefined };
2570
+ message.object = "";
2571
+ if (value !== undefined)
2572
+ reflectionMergePartial<PermissionTarget>(this, message, value);
2573
+ return message;
2574
+ }
2575
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PermissionTarget): PermissionTarget {
2576
+ let message = target ?? this.create(), end = reader.pos + length;
2577
+ while (reader.pos < end) {
2578
+ let [fieldNo, wireType] = reader.tag();
2579
+ switch (fieldNo) {
2580
+ case /* sid.v1.ids.ResourceId resource */ 1:
2581
+ message.scope = {
2582
+ oneofKind: "resource",
2583
+ resource: ResourceId.internalBinaryRead(reader, reader.uint32(), options, (message.scope as any).resource)
2584
+ };
2585
+ break;
2586
+ case /* string project_id */ 2:
2587
+ message.scope = {
2588
+ oneofKind: "projectId",
2589
+ projectId: reader.string()
2590
+ };
2591
+ break;
2592
+ case /* string object */ 3:
2593
+ message.object = reader.string();
2594
+ break;
2595
+ default:
2596
+ let u = options.readUnknownField;
2597
+ if (u === "throw")
2598
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2599
+ let d = reader.skip(wireType);
2600
+ if (u !== false)
2601
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2602
+ }
2603
+ }
2604
+ return message;
2605
+ }
2606
+ internalBinaryWrite(message: PermissionTarget, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2607
+ /* sid.v1.ids.ResourceId resource = 1; */
2608
+ if (message.scope.oneofKind === "resource")
2609
+ ResourceId.internalBinaryWrite(message.scope.resource, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
2610
+ /* string project_id = 2; */
2611
+ if (message.scope.oneofKind === "projectId")
2612
+ writer.tag(2, WireType.LengthDelimited).string(message.scope.projectId);
2613
+ /* string object = 3; */
2614
+ if (message.object !== "")
2615
+ writer.tag(3, WireType.LengthDelimited).string(message.object);
2616
+ let u = options.writeUnknownFields;
2617
+ if (u !== false)
2618
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2619
+ return writer;
2620
+ }
2621
+ }
2622
+ /**
2623
+ * @generated MessageType for protobuf message sid.v1.authz.PermissionTarget
2624
+ */
2625
+ export const PermissionTarget = new PermissionTarget$Type();
2626
+ // @generated message type with reflection information, may provide speed optimized methods
2627
+ class RequestEvaluation$Type extends MessageType<RequestEvaluation> {
2628
+ constructor() {
2629
+ super("sid.v1.authz.RequestEvaluation", [
2630
+ { no: 1, name: "access_token", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2631
+ { no: 2, name: "confirmation", kind: "message", T: () => RequestConfirmation }
2632
+ ]);
2633
+ }
2634
+ create(value?: PartialMessage<RequestEvaluation>): RequestEvaluation {
2635
+ const message = globalThis.Object.create((this.messagePrototype!));
2636
+ message.accessToken = "";
2637
+ if (value !== undefined)
2638
+ reflectionMergePartial<RequestEvaluation>(this, message, value);
2639
+ return message;
2640
+ }
2641
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RequestEvaluation): RequestEvaluation {
2642
+ let message = target ?? this.create(), end = reader.pos + length;
2643
+ while (reader.pos < end) {
2644
+ let [fieldNo, wireType] = reader.tag();
2645
+ switch (fieldNo) {
2646
+ case /* string access_token */ 1:
2647
+ message.accessToken = reader.string();
2648
+ break;
2649
+ case /* sid.v1.authz.RequestConfirmation confirmation */ 2:
2650
+ message.confirmation = RequestConfirmation.internalBinaryRead(reader, reader.uint32(), options, message.confirmation);
2651
+ break;
2652
+ default:
2653
+ let u = options.readUnknownField;
2654
+ if (u === "throw")
2655
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
2656
+ let d = reader.skip(wireType);
2657
+ if (u !== false)
2658
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
2659
+ }
2660
+ }
2661
+ return message;
2662
+ }
2663
+ internalBinaryWrite(message: RequestEvaluation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2664
+ /* string access_token = 1; */
2665
+ if (message.accessToken !== "")
2666
+ writer.tag(1, WireType.LengthDelimited).string(message.accessToken);
2667
+ /* sid.v1.authz.RequestConfirmation confirmation = 2; */
2668
+ if (message.confirmation)
2669
+ RequestConfirmation.internalBinaryWrite(message.confirmation, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
2670
+ let u = options.writeUnknownFields;
2671
+ if (u !== false)
2672
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
2673
+ return writer;
2674
+ }
2675
+ }
2676
+ /**
2677
+ * @generated MessageType for protobuf message sid.v1.authz.RequestEvaluation
2678
+ */
2679
+ export const RequestEvaluation = new RequestEvaluation$Type();
2680
+ // @generated message type with reflection information, may provide speed optimized methods
2681
+ class RequestConfirmation$Type extends MessageType<RequestConfirmation> {
2682
+ constructor() {
2683
+ super("sid.v1.authz.RequestConfirmation", [
2684
+ { no: 1, name: "profile", kind: "enum", T: () => ["sid.v1.authz.SenderProofProfile", SenderProofProfile, "SENDER_PROOF_PROFILE_"] },
2685
+ { no: 2, name: "method", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2686
+ { no: 3, name: "uri", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2687
+ { no: 4, name: "request_id", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
2688
+ { no: 5, name: "jkt", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2689
+ { no: 6, name: "verified_at", kind: "message", T: () => Timestamp },
2690
+ { no: 7, name: "valid_until", kind: "message", T: () => Timestamp }
2691
+ ]);
2692
+ }
2693
+ create(value?: PartialMessage<RequestConfirmation>): RequestConfirmation {
2694
+ const message = globalThis.Object.create((this.messagePrototype!));
2695
+ message.profile = 0;
2696
+ message.method = "";
2697
+ message.uri = "";
2698
+ message.requestId = new Uint8Array(0);
2699
+ message.jkt = "";
2700
+ if (value !== undefined)
2701
+ reflectionMergePartial<RequestConfirmation>(this, message, value);
2702
+ return message;
2703
+ }
2704
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RequestConfirmation): RequestConfirmation {
2705
+ let message = target ?? this.create(), end = reader.pos + length;
2706
+ while (reader.pos < end) {
2707
+ let [fieldNo, wireType] = reader.tag();
2708
+ switch (fieldNo) {
2709
+ case /* sid.v1.authz.SenderProofProfile profile */ 1:
2710
+ message.profile = reader.int32();
2711
+ break;
2712
+ case /* string method */ 2:
2713
+ message.method = reader.string();
2714
+ break;
2715
+ case /* string uri */ 3:
2716
+ message.uri = reader.string();
2717
+ break;
2718
+ case /* bytes request_id */ 4:
2719
+ message.requestId = reader.bytes();
1442
2720
  break;
1443
- case /* optional string description */ 4:
1444
- message.description = reader.string();
2721
+ case /* string jkt */ 5:
2722
+ message.jkt = reader.string();
1445
2723
  break;
1446
- case /* google.protobuf.Timestamp created_at */ 5:
1447
- message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
2724
+ case /* google.protobuf.Timestamp verified_at */ 6:
2725
+ message.verifiedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.verifiedAt);
1448
2726
  break;
1449
- case /* google.protobuf.Timestamp updated_at */ 6:
1450
- message.updatedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.updatedAt);
2727
+ case /* google.protobuf.Timestamp valid_until */ 7:
2728
+ message.validUntil = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.validUntil);
1451
2729
  break;
1452
2730
  default:
1453
2731
  let u = options.readUnknownField;
@@ -1460,25 +2738,28 @@ class Group$Type extends MessageType<Group> {
1460
2738
  }
1461
2739
  return message;
1462
2740
  }
1463
- internalBinaryWrite(message: Group, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1464
- /* string id = 1; */
1465
- if (message.id !== "")
1466
- writer.tag(1, WireType.LengthDelimited).string(message.id);
1467
- /* string project_id = 2; */
1468
- if (message.projectId !== "")
1469
- writer.tag(2, WireType.LengthDelimited).string(message.projectId);
1470
- /* string name = 3; */
1471
- if (message.name !== "")
1472
- writer.tag(3, WireType.LengthDelimited).string(message.name);
1473
- /* optional string description = 4; */
1474
- if (message.description !== undefined)
1475
- writer.tag(4, WireType.LengthDelimited).string(message.description);
1476
- /* google.protobuf.Timestamp created_at = 5; */
1477
- if (message.createdAt)
1478
- Timestamp.internalBinaryWrite(message.createdAt, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
1479
- /* google.protobuf.Timestamp updated_at = 6; */
1480
- if (message.updatedAt)
1481
- Timestamp.internalBinaryWrite(message.updatedAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2741
+ internalBinaryWrite(message: RequestConfirmation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2742
+ /* sid.v1.authz.SenderProofProfile profile = 1; */
2743
+ if (message.profile !== 0)
2744
+ writer.tag(1, WireType.Varint).int32(message.profile);
2745
+ /* string method = 2; */
2746
+ if (message.method !== "")
2747
+ writer.tag(2, WireType.LengthDelimited).string(message.method);
2748
+ /* string uri = 3; */
2749
+ if (message.uri !== "")
2750
+ writer.tag(3, WireType.LengthDelimited).string(message.uri);
2751
+ /* bytes request_id = 4; */
2752
+ if (message.requestId.length)
2753
+ writer.tag(4, WireType.LengthDelimited).bytes(message.requestId);
2754
+ /* string jkt = 5; */
2755
+ if (message.jkt !== "")
2756
+ writer.tag(5, WireType.LengthDelimited).string(message.jkt);
2757
+ /* google.protobuf.Timestamp verified_at = 6; */
2758
+ if (message.verifiedAt)
2759
+ Timestamp.internalBinaryWrite(message.verifiedAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
2760
+ /* google.protobuf.Timestamp valid_until = 7; */
2761
+ if (message.validUntil)
2762
+ Timestamp.internalBinaryWrite(message.validUntil, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
1482
2763
  let u = options.writeUnknownFields;
1483
2764
  if (u !== false)
1484
2765
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1486,70 +2767,48 @@ class Group$Type extends MessageType<Group> {
1486
2767
  }
1487
2768
  }
1488
2769
  /**
1489
- * @generated MessageType for protobuf message sid.v1.authz.Group
2770
+ * @generated MessageType for protobuf message sid.v1.authz.RequestConfirmation
1490
2771
  */
1491
- export const Group = new Group$Type();
2772
+ export const RequestConfirmation = new RequestConfirmation$Type();
1492
2773
  // @generated message type with reflection information, may provide speed optimized methods
1493
- class RoleAssignment$Type extends MessageType<RoleAssignment> {
2774
+ class SubjectReference$Type extends MessageType<SubjectReference> {
1494
2775
  constructor() {
1495
- super("sid.v1.authz.RoleAssignment", [
1496
- { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1497
- { no: 2, name: "profile_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
1498
- { no: 3, name: "group_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
1499
- { no: 8, name: "machine_user_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
1500
- { no: 4, name: "role_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1501
- { no: 5, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
1502
- { no: 6, name: "expires_at", kind: "message", T: () => Timestamp },
1503
- { no: 7, name: "created_at", kind: "message", T: () => Timestamp }
2776
+ super("sid.v1.authz.SubjectReference", [
2777
+ { no: 1, name: "machine_user_id", kind: "message", oneof: "kind", T: () => MachineUserId },
2778
+ { no: 2, name: "oauth_client_id", kind: "scalar", oneof: "kind", T: 9 /*ScalarType.STRING*/ },
2779
+ { no: 3, name: "issuer_subject", kind: "message", oneof: "kind", T: () => IssuerSubject }
1504
2780
  ]);
1505
2781
  }
1506
- create(value?: PartialMessage<RoleAssignment>): RoleAssignment {
2782
+ create(value?: PartialMessage<SubjectReference>): SubjectReference {
1507
2783
  const message = globalThis.Object.create((this.messagePrototype!));
1508
- message.id = "";
1509
- message.principal = { oneofKind: undefined };
1510
- message.roleId = "";
2784
+ message.kind = { oneofKind: undefined };
1511
2785
  if (value !== undefined)
1512
- reflectionMergePartial<RoleAssignment>(this, message, value);
2786
+ reflectionMergePartial<SubjectReference>(this, message, value);
1513
2787
  return message;
1514
2788
  }
1515
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RoleAssignment): RoleAssignment {
2789
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SubjectReference): SubjectReference {
1516
2790
  let message = target ?? this.create(), end = reader.pos + length;
1517
2791
  while (reader.pos < end) {
1518
2792
  let [fieldNo, wireType] = reader.tag();
1519
2793
  switch (fieldNo) {
1520
- case /* string id */ 1:
1521
- message.id = reader.string();
1522
- break;
1523
- case /* string profile_id */ 2:
1524
- message.principal = {
1525
- oneofKind: "profileId",
1526
- profileId: reader.string()
2794
+ case /* sid.v1.ids.MachineUserId machine_user_id */ 1:
2795
+ message.kind = {
2796
+ oneofKind: "machineUserId",
2797
+ machineUserId: MachineUserId.internalBinaryRead(reader, reader.uint32(), options, (message.kind as any).machineUserId)
1527
2798
  };
1528
2799
  break;
1529
- case /* string group_id */ 3:
1530
- message.principal = {
1531
- oneofKind: "groupId",
1532
- groupId: reader.string()
2800
+ case /* string oauth_client_id */ 2:
2801
+ message.kind = {
2802
+ oneofKind: "oauthClientId",
2803
+ oauthClientId: reader.string()
1533
2804
  };
1534
2805
  break;
1535
- case /* string machine_user_id */ 8:
1536
- message.principal = {
1537
- oneofKind: "machineUserId",
1538
- machineUserId: reader.string()
2806
+ case /* sid.v1.authz.IssuerSubject issuer_subject */ 3:
2807
+ message.kind = {
2808
+ oneofKind: "issuerSubject",
2809
+ issuerSubject: IssuerSubject.internalBinaryRead(reader, reader.uint32(), options, (message.kind as any).issuerSubject)
1539
2810
  };
1540
2811
  break;
1541
- case /* string role_id */ 4:
1542
- message.roleId = reader.string();
1543
- break;
1544
- case /* optional string scope */ 5:
1545
- message.scope = reader.string();
1546
- break;
1547
- case /* optional google.protobuf.Timestamp expires_at */ 6:
1548
- message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
1549
- break;
1550
- case /* google.protobuf.Timestamp created_at */ 7:
1551
- message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
1552
- break;
1553
2812
  default:
1554
2813
  let u = options.readUnknownField;
1555
2814
  if (u === "throw")
@@ -1561,31 +2820,16 @@ class RoleAssignment$Type extends MessageType<RoleAssignment> {
1561
2820
  }
1562
2821
  return message;
1563
2822
  }
1564
- internalBinaryWrite(message: RoleAssignment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1565
- /* string id = 1; */
1566
- if (message.id !== "")
1567
- writer.tag(1, WireType.LengthDelimited).string(message.id);
1568
- /* string profile_id = 2; */
1569
- if (message.principal.oneofKind === "profileId")
1570
- writer.tag(2, WireType.LengthDelimited).string(message.principal.profileId);
1571
- /* string group_id = 3; */
1572
- if (message.principal.oneofKind === "groupId")
1573
- writer.tag(3, WireType.LengthDelimited).string(message.principal.groupId);
1574
- /* string role_id = 4; */
1575
- if (message.roleId !== "")
1576
- writer.tag(4, WireType.LengthDelimited).string(message.roleId);
1577
- /* optional string scope = 5; */
1578
- if (message.scope !== undefined)
1579
- writer.tag(5, WireType.LengthDelimited).string(message.scope);
1580
- /* optional google.protobuf.Timestamp expires_at = 6; */
1581
- if (message.expiresAt)
1582
- Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
1583
- /* google.protobuf.Timestamp created_at = 7; */
1584
- if (message.createdAt)
1585
- Timestamp.internalBinaryWrite(message.createdAt, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
1586
- /* string machine_user_id = 8; */
1587
- if (message.principal.oneofKind === "machineUserId")
1588
- writer.tag(8, WireType.LengthDelimited).string(message.principal.machineUserId);
2823
+ internalBinaryWrite(message: SubjectReference, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2824
+ /* sid.v1.ids.MachineUserId machine_user_id = 1; */
2825
+ if (message.kind.oneofKind === "machineUserId")
2826
+ MachineUserId.internalBinaryWrite(message.kind.machineUserId, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
2827
+ /* string oauth_client_id = 2; */
2828
+ if (message.kind.oneofKind === "oauthClientId")
2829
+ writer.tag(2, WireType.LengthDelimited).string(message.kind.oauthClientId);
2830
+ /* sid.v1.authz.IssuerSubject issuer_subject = 3; */
2831
+ if (message.kind.oneofKind === "issuerSubject")
2832
+ IssuerSubject.internalBinaryWrite(message.kind.issuerSubject, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
1589
2833
  let u = options.writeUnknownFields;
1590
2834
  if (u !== false)
1591
2835
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1593,67 +2837,35 @@ class RoleAssignment$Type extends MessageType<RoleAssignment> {
1593
2837
  }
1594
2838
  }
1595
2839
  /**
1596
- * @generated MessageType for protobuf message sid.v1.authz.RoleAssignment
2840
+ * @generated MessageType for protobuf message sid.v1.authz.SubjectReference
1597
2841
  */
1598
- export const RoleAssignment = new RoleAssignment$Type();
2842
+ export const SubjectReference = new SubjectReference$Type();
1599
2843
  // @generated message type with reflection information, may provide speed optimized methods
1600
- class Policy$Type extends MessageType<Policy> {
2844
+ class IssuerSubject$Type extends MessageType<IssuerSubject> {
1601
2845
  constructor() {
1602
- super("sid.v1.authz.Policy", [
1603
- { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1604
- { no: 2, name: "project_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1605
- { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1606
- { no: 4, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
1607
- { no: 5, name: "policy_text", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1608
- { no: 6, name: "effect", kind: "enum", T: () => ["sid.v1.authz.PolicyEffect", PolicyEffect, "POLICY_EFFECT_"] },
1609
- { no: 7, name: "enabled", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
1610
- { no: 8, name: "created_at", kind: "message", T: () => Timestamp },
1611
- { no: 9, name: "updated_at", kind: "message", T: () => Timestamp }
2846
+ super("sid.v1.authz.IssuerSubject", [
2847
+ { no: 1, name: "issuer", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2848
+ { no: 2, name: "subject", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
1612
2849
  ]);
1613
2850
  }
1614
- create(value?: PartialMessage<Policy>): Policy {
2851
+ create(value?: PartialMessage<IssuerSubject>): IssuerSubject {
1615
2852
  const message = globalThis.Object.create((this.messagePrototype!));
1616
- message.id = "";
1617
- message.projectId = "";
1618
- message.name = "";
1619
- message.policyText = "";
1620
- message.effect = 0;
1621
- message.enabled = false;
2853
+ message.issuer = "";
2854
+ message.subject = "";
1622
2855
  if (value !== undefined)
1623
- reflectionMergePartial<Policy>(this, message, value);
2856
+ reflectionMergePartial<IssuerSubject>(this, message, value);
1624
2857
  return message;
1625
2858
  }
1626
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Policy): Policy {
2859
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: IssuerSubject): IssuerSubject {
1627
2860
  let message = target ?? this.create(), end = reader.pos + length;
1628
2861
  while (reader.pos < end) {
1629
2862
  let [fieldNo, wireType] = reader.tag();
1630
2863
  switch (fieldNo) {
1631
- case /* string id */ 1:
1632
- message.id = reader.string();
1633
- break;
1634
- case /* string project_id */ 2:
1635
- message.projectId = reader.string();
1636
- break;
1637
- case /* string name */ 3:
1638
- message.name = reader.string();
2864
+ case /* string issuer */ 1:
2865
+ message.issuer = reader.string();
1639
2866
  break;
1640
- case /* optional string description */ 4:
1641
- message.description = reader.string();
1642
- break;
1643
- case /* string policy_text */ 5:
1644
- message.policyText = reader.string();
1645
- break;
1646
- case /* sid.v1.authz.PolicyEffect effect */ 6:
1647
- message.effect = reader.int32();
1648
- break;
1649
- case /* bool enabled */ 7:
1650
- message.enabled = reader.bool();
1651
- break;
1652
- case /* google.protobuf.Timestamp created_at */ 8:
1653
- message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
1654
- break;
1655
- case /* google.protobuf.Timestamp updated_at */ 9:
1656
- message.updatedAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.updatedAt);
2867
+ case /* string subject */ 2:
2868
+ message.subject = reader.string();
1657
2869
  break;
1658
2870
  default:
1659
2871
  let u = options.readUnknownField;
@@ -1666,34 +2878,13 @@ class Policy$Type extends MessageType<Policy> {
1666
2878
  }
1667
2879
  return message;
1668
2880
  }
1669
- internalBinaryWrite(message: Policy, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1670
- /* string id = 1; */
1671
- if (message.id !== "")
1672
- writer.tag(1, WireType.LengthDelimited).string(message.id);
1673
- /* string project_id = 2; */
1674
- if (message.projectId !== "")
1675
- writer.tag(2, WireType.LengthDelimited).string(message.projectId);
1676
- /* string name = 3; */
1677
- if (message.name !== "")
1678
- writer.tag(3, WireType.LengthDelimited).string(message.name);
1679
- /* optional string description = 4; */
1680
- if (message.description !== undefined)
1681
- writer.tag(4, WireType.LengthDelimited).string(message.description);
1682
- /* string policy_text = 5; */
1683
- if (message.policyText !== "")
1684
- writer.tag(5, WireType.LengthDelimited).string(message.policyText);
1685
- /* sid.v1.authz.PolicyEffect effect = 6; */
1686
- if (message.effect !== 0)
1687
- writer.tag(6, WireType.Varint).int32(message.effect);
1688
- /* bool enabled = 7; */
1689
- if (message.enabled !== false)
1690
- writer.tag(7, WireType.Varint).bool(message.enabled);
1691
- /* google.protobuf.Timestamp created_at = 8; */
1692
- if (message.createdAt)
1693
- Timestamp.internalBinaryWrite(message.createdAt, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
1694
- /* google.protobuf.Timestamp updated_at = 9; */
1695
- if (message.updatedAt)
1696
- Timestamp.internalBinaryWrite(message.updatedAt, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
2881
+ internalBinaryWrite(message: IssuerSubject, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
2882
+ /* string issuer = 1; */
2883
+ if (message.issuer !== "")
2884
+ writer.tag(1, WireType.LengthDelimited).string(message.issuer);
2885
+ /* string subject = 2; */
2886
+ if (message.subject !== "")
2887
+ writer.tag(2, WireType.LengthDelimited).string(message.subject);
1697
2888
  let u = options.writeUnknownFields;
1698
2889
  if (u !== false)
1699
2890
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1701,51 +2892,25 @@ class Policy$Type extends MessageType<Policy> {
1701
2892
  }
1702
2893
  }
1703
2894
  /**
1704
- * @generated MessageType for protobuf message sid.v1.authz.Policy
2895
+ * @generated MessageType for protobuf message sid.v1.authz.IssuerSubject
1705
2896
  */
1706
- export const Policy = new Policy$Type();
2897
+ export const IssuerSubject = new IssuerSubject$Type();
1707
2898
  // @generated message type with reflection information, may provide speed optimized methods
1708
- class CheckPermissionRequest$Type extends MessageType<CheckPermissionRequest> {
2899
+ class SelfEvaluation$Type extends MessageType<SelfEvaluation> {
1709
2900
  constructor() {
1710
- super("sid.v1.authz.CheckPermissionRequest", [
1711
- { no: 1, name: "subject", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1712
- { no: 2, name: "action", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1713
- { no: 3, name: "resource", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1714
- { no: 4, name: "consistency", kind: "enum", T: () => ["sid.v1.authz.Consistency", Consistency, "CONSISTENCY_"] },
1715
- { no: 5, name: "context", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ } }
1716
- ]);
2901
+ super("sid.v1.authz.SelfEvaluation", []);
1717
2902
  }
1718
- create(value?: PartialMessage<CheckPermissionRequest>): CheckPermissionRequest {
2903
+ create(value?: PartialMessage<SelfEvaluation>): SelfEvaluation {
1719
2904
  const message = globalThis.Object.create((this.messagePrototype!));
1720
- message.subject = "";
1721
- message.action = "";
1722
- message.resource = "";
1723
- message.consistency = 0;
1724
- message.context = {};
1725
2905
  if (value !== undefined)
1726
- reflectionMergePartial<CheckPermissionRequest>(this, message, value);
2906
+ reflectionMergePartial<SelfEvaluation>(this, message, value);
1727
2907
  return message;
1728
2908
  }
1729
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckPermissionRequest): CheckPermissionRequest {
2909
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SelfEvaluation): SelfEvaluation {
1730
2910
  let message = target ?? this.create(), end = reader.pos + length;
1731
2911
  while (reader.pos < end) {
1732
2912
  let [fieldNo, wireType] = reader.tag();
1733
2913
  switch (fieldNo) {
1734
- case /* string subject */ 1:
1735
- message.subject = reader.string();
1736
- break;
1737
- case /* string action */ 2:
1738
- message.action = reader.string();
1739
- break;
1740
- case /* string resource */ 3:
1741
- message.resource = reader.string();
1742
- break;
1743
- case /* sid.v1.authz.Consistency consistency */ 4:
1744
- message.consistency = reader.int32();
1745
- break;
1746
- case /* map<string, string> context */ 5:
1747
- this.binaryReadMap5(message.context, reader, options);
1748
- break;
1749
2914
  default:
1750
2915
  let u = options.readUnknownField;
1751
2916
  if (u === "throw")
@@ -1757,38 +2922,7 @@ class CheckPermissionRequest$Type extends MessageType<CheckPermissionRequest> {
1757
2922
  }
1758
2923
  return message;
1759
2924
  }
1760
- private binaryReadMap5(map: CheckPermissionRequest["context"], reader: IBinaryReader, options: BinaryReadOptions): void {
1761
- let len = reader.uint32(), end = reader.pos + len, key: keyof CheckPermissionRequest["context"] | undefined, val: CheckPermissionRequest["context"][any] | undefined;
1762
- while (reader.pos < end) {
1763
- let [fieldNo, wireType] = reader.tag();
1764
- switch (fieldNo) {
1765
- case 1:
1766
- key = reader.string();
1767
- break;
1768
- case 2:
1769
- val = reader.string();
1770
- break;
1771
- default: throw new globalThis.Error("unknown map entry field for sid.v1.authz.CheckPermissionRequest.context");
1772
- }
1773
- }
1774
- map[key ?? ""] = val ?? "";
1775
- }
1776
- internalBinaryWrite(message: CheckPermissionRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1777
- /* string subject = 1; */
1778
- if (message.subject !== "")
1779
- writer.tag(1, WireType.LengthDelimited).string(message.subject);
1780
- /* string action = 2; */
1781
- if (message.action !== "")
1782
- writer.tag(2, WireType.LengthDelimited).string(message.action);
1783
- /* string resource = 3; */
1784
- if (message.resource !== "")
1785
- writer.tag(3, WireType.LengthDelimited).string(message.resource);
1786
- /* sid.v1.authz.Consistency consistency = 4; */
1787
- if (message.consistency !== 0)
1788
- writer.tag(4, WireType.Varint).int32(message.consistency);
1789
- /* map<string, string> context = 5; */
1790
- for (let k of globalThis.Object.keys(message.context))
1791
- writer.tag(5, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.context[k]).join();
2925
+ internalBinaryWrite(message: SelfEvaluation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1792
2926
  let u = options.writeUnknownFields;
1793
2927
  if (u !== false)
1794
2928
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1796,21 +2930,21 @@ class CheckPermissionRequest$Type extends MessageType<CheckPermissionRequest> {
1796
2930
  }
1797
2931
  }
1798
2932
  /**
1799
- * @generated MessageType for protobuf message sid.v1.authz.CheckPermissionRequest
2933
+ * @generated MessageType for protobuf message sid.v1.authz.SelfEvaluation
1800
2934
  */
1801
- export const CheckPermissionRequest = new CheckPermissionRequest$Type();
2935
+ export const SelfEvaluation = new SelfEvaluation$Type();
1802
2936
  // @generated message type with reflection information, may provide speed optimized methods
1803
2937
  class CheckPermissionResponse$Type extends MessageType<CheckPermissionResponse> {
1804
2938
  constructor() {
1805
2939
  super("sid.v1.authz.CheckPermissionResponse", [
1806
- { no: 1, name: "allowed", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
1807
2940
  { no: 2, name: "reason", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
1808
- { no: 3, name: "zookie", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
2941
+ { no: 3, name: "zookie", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2942
+ { no: 4, name: "outcome", kind: "enum", T: () => ["sid.v1.authz.PermissionOutcome", PermissionOutcome, "PERMISSION_OUTCOME_"] }
1809
2943
  ]);
1810
2944
  }
1811
2945
  create(value?: PartialMessage<CheckPermissionResponse>): CheckPermissionResponse {
1812
2946
  const message = globalThis.Object.create((this.messagePrototype!));
1813
- message.allowed = false;
2947
+ message.outcome = 0;
1814
2948
  if (value !== undefined)
1815
2949
  reflectionMergePartial<CheckPermissionResponse>(this, message, value);
1816
2950
  return message;
@@ -1820,15 +2954,15 @@ class CheckPermissionResponse$Type extends MessageType<CheckPermissionResponse>
1820
2954
  while (reader.pos < end) {
1821
2955
  let [fieldNo, wireType] = reader.tag();
1822
2956
  switch (fieldNo) {
1823
- case /* bool allowed */ 1:
1824
- message.allowed = reader.bool();
1825
- break;
1826
2957
  case /* optional string reason */ 2:
1827
2958
  message.reason = reader.string();
1828
2959
  break;
1829
2960
  case /* optional string zookie */ 3:
1830
2961
  message.zookie = reader.string();
1831
2962
  break;
2963
+ case /* sid.v1.authz.PermissionOutcome outcome */ 4:
2964
+ message.outcome = reader.int32();
2965
+ break;
1832
2966
  default:
1833
2967
  let u = options.readUnknownField;
1834
2968
  if (u === "throw")
@@ -1841,15 +2975,15 @@ class CheckPermissionResponse$Type extends MessageType<CheckPermissionResponse>
1841
2975
  return message;
1842
2976
  }
1843
2977
  internalBinaryWrite(message: CheckPermissionResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1844
- /* bool allowed = 1; */
1845
- if (message.allowed !== false)
1846
- writer.tag(1, WireType.Varint).bool(message.allowed);
1847
2978
  /* optional string reason = 2; */
1848
2979
  if (message.reason !== undefined)
1849
2980
  writer.tag(2, WireType.LengthDelimited).string(message.reason);
1850
2981
  /* optional string zookie = 3; */
1851
2982
  if (message.zookie !== undefined)
1852
2983
  writer.tag(3, WireType.LengthDelimited).string(message.zookie);
2984
+ /* sid.v1.authz.PermissionOutcome outcome = 4; */
2985
+ if (message.outcome !== 0)
2986
+ writer.tag(4, WireType.Varint).int32(message.outcome);
1853
2987
  let u = options.writeUnknownFields;
1854
2988
  if (u !== false)
1855
2989
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -2729,9 +3863,12 @@ class AssignRoleRequest$Type extends MessageType<AssignRoleRequest> {
2729
3863
  { no: 1, name: "profile_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2730
3864
  { no: 2, name: "group_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
2731
3865
  { no: 6, name: "machine_user_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
3866
+ { no: 7, name: "oauth_client_id", kind: "scalar", oneof: "principal", T: 9 /*ScalarType.STRING*/ },
3867
+ { no: 8, name: "provisioning_connector_id", kind: "message", oneof: "principal", T: () => ProvisioningConnectorId },
2732
3868
  { no: 3, name: "role_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
2733
3869
  { no: 4, name: "scope", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
2734
- { no: 5, name: "expires_at", kind: "message", T: () => Timestamp }
3870
+ { no: 5, name: "expires_at", kind: "message", T: () => Timestamp },
3871
+ { no: 9, name: "admin", kind: "message", T: () => AdminEnvelope }
2735
3872
  ]);
2736
3873
  }
2737
3874
  create(value?: PartialMessage<AssignRoleRequest>): AssignRoleRequest {
@@ -2765,6 +3902,18 @@ class AssignRoleRequest$Type extends MessageType<AssignRoleRequest> {
2765
3902
  machineUserId: reader.string()
2766
3903
  };
2767
3904
  break;
3905
+ case /* string oauth_client_id */ 7:
3906
+ message.principal = {
3907
+ oneofKind: "oauthClientId",
3908
+ oauthClientId: reader.string()
3909
+ };
3910
+ break;
3911
+ case /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id */ 8:
3912
+ message.principal = {
3913
+ oneofKind: "provisioningConnectorId",
3914
+ provisioningConnectorId: ProvisioningConnectorId.internalBinaryRead(reader, reader.uint32(), options, (message.principal as any).provisioningConnectorId)
3915
+ };
3916
+ break;
2768
3917
  case /* string role_id */ 3:
2769
3918
  message.roleId = reader.string();
2770
3919
  break;
@@ -2774,6 +3923,9 @@ class AssignRoleRequest$Type extends MessageType<AssignRoleRequest> {
2774
3923
  case /* optional google.protobuf.Timestamp expires_at */ 5:
2775
3924
  message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
2776
3925
  break;
3926
+ case /* optional sid.v1.authz.AdminEnvelope admin */ 9:
3927
+ message.admin = AdminEnvelope.internalBinaryRead(reader, reader.uint32(), options, message.admin);
3928
+ break;
2777
3929
  default:
2778
3930
  let u = options.readUnknownField;
2779
3931
  if (u === "throw")
@@ -2804,6 +3956,15 @@ class AssignRoleRequest$Type extends MessageType<AssignRoleRequest> {
2804
3956
  /* string machine_user_id = 6; */
2805
3957
  if (message.principal.oneofKind === "machineUserId")
2806
3958
  writer.tag(6, WireType.LengthDelimited).string(message.principal.machineUserId);
3959
+ /* string oauth_client_id = 7; */
3960
+ if (message.principal.oneofKind === "oauthClientId")
3961
+ writer.tag(7, WireType.LengthDelimited).string(message.principal.oauthClientId);
3962
+ /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 8; */
3963
+ if (message.principal.oneofKind === "provisioningConnectorId")
3964
+ ProvisioningConnectorId.internalBinaryWrite(message.principal.provisioningConnectorId, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
3965
+ /* optional sid.v1.authz.AdminEnvelope admin = 9; */
3966
+ if (message.admin)
3967
+ AdminEnvelope.internalBinaryWrite(message.admin, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
2807
3968
  let u = options.writeUnknownFields;
2808
3969
  if (u !== false)
2809
3970
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -2952,7 +4113,9 @@ class ListRoleAssignmentsRequest$Type extends MessageType<ListRoleAssignmentsReq
2952
4113
  { no: 1, name: "profile_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ },
2953
4114
  { no: 2, name: "group_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ },
2954
4115
  { no: 3, name: "role_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ },
2955
- { no: 4, name: "machine_user_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ }
4116
+ { no: 4, name: "machine_user_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ },
4117
+ { no: 5, name: "oauth_client_id", kind: "scalar", oneof: "filter", T: 9 /*ScalarType.STRING*/ },
4118
+ { no: 6, name: "provisioning_connector_id", kind: "message", oneof: "filter", T: () => ProvisioningConnectorId }
2956
4119
  ]);
2957
4120
  }
2958
4121
  create(value?: PartialMessage<ListRoleAssignmentsRequest>): ListRoleAssignmentsRequest {
@@ -2991,6 +4154,18 @@ class ListRoleAssignmentsRequest$Type extends MessageType<ListRoleAssignmentsReq
2991
4154
  machineUserId: reader.string()
2992
4155
  };
2993
4156
  break;
4157
+ case /* string oauth_client_id */ 5:
4158
+ message.filter = {
4159
+ oneofKind: "oauthClientId",
4160
+ oauthClientId: reader.string()
4161
+ };
4162
+ break;
4163
+ case /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id */ 6:
4164
+ message.filter = {
4165
+ oneofKind: "provisioningConnectorId",
4166
+ provisioningConnectorId: ProvisioningConnectorId.internalBinaryRead(reader, reader.uint32(), options, (message.filter as any).provisioningConnectorId)
4167
+ };
4168
+ break;
2994
4169
  default:
2995
4170
  let u = options.readUnknownField;
2996
4171
  if (u === "throw")
@@ -3015,6 +4190,12 @@ class ListRoleAssignmentsRequest$Type extends MessageType<ListRoleAssignmentsReq
3015
4190
  /* string machine_user_id = 4; */
3016
4191
  if (message.filter.oneofKind === "machineUserId")
3017
4192
  writer.tag(4, WireType.LengthDelimited).string(message.filter.machineUserId);
4193
+ /* string oauth_client_id = 5; */
4194
+ if (message.filter.oneofKind === "oauthClientId")
4195
+ writer.tag(5, WireType.LengthDelimited).string(message.filter.oauthClientId);
4196
+ /* sid.v1.ids.ProvisioningConnectorId provisioning_connector_id = 6; */
4197
+ if (message.filter.oneofKind === "provisioningConnectorId")
4198
+ ProvisioningConnectorId.internalBinaryWrite(message.filter.provisioningConnectorId, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
3018
4199
  let u = options.writeUnknownFields;
3019
4200
  if (u !== false)
3020
4201
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);