@structured-id/ui-core 0.1.5

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 (156) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +47 -0
  3. package/dist/browser-vp/index.cjs +349 -0
  4. package/dist/browser-vp/index.d.cts +287 -0
  5. package/dist/browser-vp/index.d.ts +287 -0
  6. package/dist/browser-vp/index.js +349 -0
  7. package/dist/chunk-C3Q766CY.cjs +125 -0
  8. package/dist/chunk-J5YXRXB5.js +125 -0
  9. package/dist/index.cjs +19360 -0
  10. package/dist/index.d.cts +9536 -0
  11. package/dist/index.d.ts +9536 -0
  12. package/dist/index.js +19360 -0
  13. package/dist/storage-4CB2JTLW.cjs +22 -0
  14. package/dist/storage-THRWREZP.js +22 -0
  15. package/package.json +93 -0
  16. package/src/browser-vp/crypto.ts +254 -0
  17. package/src/browser-vp/index.test.ts +10 -0
  18. package/src/browser-vp/index.ts +118 -0
  19. package/src/browser-vp/prf.ts +181 -0
  20. package/src/browser-vp/storage.test.ts +9 -0
  21. package/src/browser-vp/storage.ts +165 -0
  22. package/src/browser-vp/types.ts +97 -0
  23. package/src/browser-vp/vp.test.ts +43 -0
  24. package/src/browser-vp/vp.ts +113 -0
  25. package/src/components/SidAvatar.vue +106 -0
  26. package/src/components/SidConfirmDialog.vue +125 -0
  27. package/src/components/SidStatusBadge.vue +71 -0
  28. package/src/components/index.ts +5 -0
  29. package/src/composables/index.ts +10 -0
  30. package/src/composables/useAuth.ts +40 -0
  31. package/src/composables/useBffAuth.ts +147 -0
  32. package/src/composables/useGrpc.test.ts +196 -0
  33. package/src/composables/useGrpc.ts +120 -0
  34. package/src/composables/useSession.ts +80 -0
  35. package/src/generated/google/api/http.ts +687 -0
  36. package/src/generated/google/protobuf/descriptor.ts +4865 -0
  37. package/src/generated/google/protobuf/duration.ts +230 -0
  38. package/src/generated/google/protobuf/empty.ts +94 -0
  39. package/src/generated/google/protobuf/struct.ts +484 -0
  40. package/src/generated/google/protobuf/timestamp.ts +287 -0
  41. package/src/generated/sid/v1/account/account.client.ts +527 -0
  42. package/src/generated/sid/v1/account/account.ts +3261 -0
  43. package/src/generated/sid/v1/admin/admin.client.ts +136 -0
  44. package/src/generated/sid/v1/admin/admin.ts +846 -0
  45. package/src/generated/sid/v1/admin/admin_roles.client.ts +181 -0
  46. package/src/generated/sid/v1/admin/admin_roles.ts +1606 -0
  47. package/src/generated/sid/v1/admin/analytics.client.ts +106 -0
  48. package/src/generated/sid/v1/admin/analytics.ts +1017 -0
  49. package/src/generated/sid/v1/admin/branding.client.ts +166 -0
  50. package/src/generated/sid/v1/admin/branding.ts +1906 -0
  51. package/src/generated/sid/v1/admin/enrollment.client.ts +165 -0
  52. package/src/generated/sid/v1/admin/enrollment.ts +1704 -0
  53. package/src/generated/sid/v1/admin/events.client.ts +195 -0
  54. package/src/generated/sid/v1/admin/events.ts +1900 -0
  55. package/src/generated/sid/v1/admin/flow.client.ts +183 -0
  56. package/src/generated/sid/v1/admin/flow.ts +1552 -0
  57. package/src/generated/sid/v1/admin/keys.client.ts +107 -0
  58. package/src/generated/sid/v1/admin/keys.ts +931 -0
  59. package/src/generated/sid/v1/admin/login_experience.client.ts +160 -0
  60. package/src/generated/sid/v1/admin/login_experience.ts +1061 -0
  61. package/src/generated/sid/v1/admin/migration.client.ts +127 -0
  62. package/src/generated/sid/v1/admin/migration.ts +1948 -0
  63. package/src/generated/sid/v1/admin/notifications.client.ts +128 -0
  64. package/src/generated/sid/v1/admin/notifications.ts +1332 -0
  65. package/src/generated/sid/v1/admin/operations.client.ts +241 -0
  66. package/src/generated/sid/v1/admin/operations.ts +2648 -0
  67. package/src/generated/sid/v1/admin/organizations.client.ts +57 -0
  68. package/src/generated/sid/v1/admin/organizations.ts +349 -0
  69. package/src/generated/sid/v1/admin/scopes.client.ts +171 -0
  70. package/src/generated/sid/v1/admin/scopes.ts +1324 -0
  71. package/src/generated/sid/v1/admin/security.client.ts +412 -0
  72. package/src/generated/sid/v1/admin/security.ts +4086 -0
  73. package/src/generated/sid/v1/admin/sessions.client.ts +114 -0
  74. package/src/generated/sid/v1/admin/sessions.ts +923 -0
  75. package/src/generated/sid/v1/admin/settings.client.ts +340 -0
  76. package/src/generated/sid/v1/admin/settings.ts +2395 -0
  77. package/src/generated/sid/v1/admin/user_profile.client.ts +57 -0
  78. package/src/generated/sid/v1/admin/user_profile.ts +730 -0
  79. package/src/generated/sid/v1/admin/webhooks.client.ts +269 -0
  80. package/src/generated/sid/v1/admin/webhooks.ts +2804 -0
  81. package/src/generated/sid/v1/attestation/attestation.client.ts +115 -0
  82. package/src/generated/sid/v1/attestation/attestation.ts +813 -0
  83. package/src/generated/sid/v1/authn/auth.client.ts +900 -0
  84. package/src/generated/sid/v1/authn/auth.ts +9287 -0
  85. package/src/generated/sid/v1/authn/flows.client.ts +413 -0
  86. package/src/generated/sid/v1/authn/flows.ts +3217 -0
  87. package/src/generated/sid/v1/authz/authz.client.ts +459 -0
  88. package/src/generated/sid/v1/authz/authz.ts +5343 -0
  89. package/src/generated/sid/v1/authz/governance.client.ts +102 -0
  90. package/src/generated/sid/v1/authz/governance.ts +818 -0
  91. package/src/generated/sid/v1/common/errors.ts +184 -0
  92. package/src/generated/sid/v1/common/pagination.ts +152 -0
  93. package/src/generated/sid/v1/common/transport.ts +227 -0
  94. package/src/generated/sid/v1/common/types.ts +151 -0
  95. package/src/generated/sid/v1/events/event_stream.client.ts +67 -0
  96. package/src/generated/sid/v1/events/event_stream.ts +374 -0
  97. package/src/generated/sid/v1/federation/upstream.client.ts +142 -0
  98. package/src/generated/sid/v1/federation/upstream.ts +1736 -0
  99. package/src/generated/sid/v1/identity/identity.client.ts +467 -0
  100. package/src/generated/sid/v1/identity/identity.ts +5613 -0
  101. package/src/generated/sid/v1/machine/machine_user.client.ts +219 -0
  102. package/src/generated/sid/v1/machine/machine_user.ts +2400 -0
  103. package/src/generated/sid/v1/machine/pat.client.ts +147 -0
  104. package/src/generated/sid/v1/machine/pat.ts +1268 -0
  105. package/src/generated/sid/v1/projects/projects.client.ts +286 -0
  106. package/src/generated/sid/v1/projects/projects.ts +2714 -0
  107. package/src/generated/sid/v1/scim/scim.client.ts +274 -0
  108. package/src/generated/sid/v1/scim/scim.ts +3043 -0
  109. package/src/generated/sid/v1/test/test.client.ts +232 -0
  110. package/src/generated/sid/v1/test/test.ts +1136 -0
  111. package/src/i18n/index.ts +40 -0
  112. package/src/index.ts +157 -0
  113. package/src/profile/auth.ts +15 -0
  114. package/src/profile/components/ConsentManager.vue +88 -0
  115. package/src/profile/components/ProfileEditor.vue +146 -0
  116. package/src/profile/components/SecuritySettings.vue +170 -0
  117. package/src/profile/components/SessionList.vue +100 -0
  118. package/src/profile/components/SidLoginForm.test.ts +80 -0
  119. package/src/profile/components/SidLoginForm.vue +230 -0
  120. package/src/profile/components/SidMfaChallenge.test.ts +127 -0
  121. package/src/profile/components/SidMfaChallenge.vue +243 -0
  122. package/src/profile/components/SidRegistrationForm.test.ts +79 -0
  123. package/src/profile/components/SidRegistrationForm.vue +317 -0
  124. package/src/profile/components/index.ts +11 -0
  125. package/src/profile/composables/index.ts +6 -0
  126. package/src/profile/composables/useAccountApi.ts +203 -0
  127. package/src/profile/composables/useAuthApi.opaque.test.ts +140 -0
  128. package/src/profile/composables/useAuthApi.ts +617 -0
  129. package/src/profile/composables/useIdentityApi.ts +123 -0
  130. package/src/profile/composables/useLoginSuccess.test.ts +112 -0
  131. package/src/profile/composables/useLoginSuccess.ts +65 -0
  132. package/src/profile/composables/useOpaqueAuth.test.ts +290 -0
  133. package/src/profile/composables/useOpaqueAuth.ts +191 -0
  134. package/src/profile/composables/useSecurityLevel.test.ts +198 -0
  135. package/src/profile/composables/useSecurityLevel.ts +324 -0
  136. package/src/profile/index.ts +18 -0
  137. package/src/quasar/SidPrincipalInput.vue +209 -0
  138. package/src/quasar/index.ts +8 -0
  139. package/src/stores/auth.test.ts +83 -0
  140. package/src/stores/auth.ts +92 -0
  141. package/src/stores/index.ts +1 -0
  142. package/src/transport/adaptive.test.ts +728 -0
  143. package/src/transport/adaptive.ts +308 -0
  144. package/src/transport/framing.test.ts +227 -0
  145. package/src/transport/framing.ts +98 -0
  146. package/src/transport/webtransport.test.ts +728 -0
  147. package/src/transport/webtransport.ts +323 -0
  148. package/src/types/auth.ts +58 -0
  149. package/src/types/index.ts +1 -0
  150. package/src/utils/formatters.test.ts +26 -0
  151. package/src/utils/formatters.ts +69 -0
  152. package/src/utils/index.ts +16 -0
  153. package/src/utils/normalizePrincipal.test.ts +188 -0
  154. package/src/utils/normalizePrincipal.ts +159 -0
  155. package/src/utils/validators.test.ts +75 -0
  156. package/src/utils/validators.ts +36 -0
@@ -0,0 +1,1704 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter client_generic,generate_dependencies
2
+ // @generated from protobuf file "sid/v1/admin/enrollment.proto" (package "sid.v1.admin", syntax proto3)
3
+ // tslint:disable
4
+ import { Empty } from "../../../google/protobuf/empty";
5
+ import { ServiceType } from "@protobuf-ts/runtime-rpc";
6
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
7
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
8
+ import { WireType } from "@protobuf-ts/runtime";
9
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
10
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
11
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
12
+ import type { PartialMessage } from "@protobuf-ts/runtime";
13
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
14
+ import { MessageType } from "@protobuf-ts/runtime";
15
+ import { Timestamp } from "../../../google/protobuf/timestamp";
16
+ // ══════════════════════════════════════════════════════════════════════════
17
+ // Enrollment Policy
18
+ // ══════════════════════════════════════════════════════════════════════════
19
+
20
+ /**
21
+ * Enrollment (registration) policy — controls who can create profiles.
22
+ * Sub-policy of SecurityPolicy.
23
+ *
24
+ * @generated from protobuf message sid.v1.admin.EnrollmentPolicy
25
+ */
26
+ export interface EnrollmentPolicy {
27
+ /**
28
+ * Registration gating mode.
29
+ *
30
+ * @generated from protobuf field: sid.v1.admin.EnrollmentMode mode = 1
31
+ */
32
+ mode: EnrollmentMode;
33
+ /**
34
+ * Invite configuration (only used when mode = INVITE_ONLY).
35
+ *
36
+ * @generated from protobuf field: sid.v1.admin.InviteConfig invite = 2
37
+ */
38
+ invite?: InviteConfig;
39
+ /**
40
+ * Allowed email domains (only used when mode = DOMAIN_RESTRICTED).
41
+ * Example: ["acme.corp", "partner.org"]
42
+ *
43
+ * @generated from protobuf field: repeated string allowed_domains = 3
44
+ */
45
+ allowedDomains: string[];
46
+ /**
47
+ * Whether to track registration source metadata on profiles.
48
+ * Default: true.
49
+ *
50
+ * @generated from protobuf field: bool track_source = 4
51
+ */
52
+ trackSource: boolean;
53
+ }
54
+ /**
55
+ * Configuration for the invite system.
56
+ *
57
+ * @generated from protobuf message sid.v1.admin.InviteConfig
58
+ */
59
+ export interface InviteConfig {
60
+ /**
61
+ * Default max uses for new invite codes. 1 = single-use.
62
+ *
63
+ * @generated from protobuf field: uint32 default_max_uses = 1
64
+ */
65
+ defaultMaxUses: number;
66
+ /**
67
+ * Default expiration duration in hours. 0 = no expiry.
68
+ *
69
+ * @generated from protobuf field: uint32 default_expiry_hours = 2
70
+ */
71
+ defaultExpiryHours: number;
72
+ }
73
+ // ══════════════════════════════════════════════════════════════════════════
74
+ // Invite
75
+ // ══════════════════════════════════════════════════════════════════════════
76
+
77
+ /**
78
+ * Invite code for gated registration.
79
+ *
80
+ * @generated from protobuf message sid.v1.admin.Invite
81
+ */
82
+ export interface Invite {
83
+ /**
84
+ * Unique invite ID (UUID).
85
+ *
86
+ * @generated from protobuf field: string id = 1
87
+ */
88
+ id: string;
89
+ /**
90
+ * The code that the user enters during registration.
91
+ * Cryptographically random, URL-safe, 8-character alphanumeric (case-insensitive).
92
+ *
93
+ * @generated from protobuf field: string code = 2
94
+ */
95
+ code: string;
96
+ /**
97
+ * Profile ID of the admin who created this invite.
98
+ *
99
+ * @generated from protobuf field: string created_by = 3
100
+ */
101
+ createdBy: string;
102
+ /**
103
+ * Display name of the creator (for admin-ui).
104
+ *
105
+ * @generated from protobuf field: string created_by_name = 4
106
+ */
107
+ createdByName: string;
108
+ /**
109
+ * Optional: pre-fill profile fields on registration.
110
+ * Example: department, role, group membership.
111
+ *
112
+ * @generated from protobuf field: map<string, string> metadata = 5
113
+ */
114
+ metadata: {
115
+ [key: string]: string;
116
+ };
117
+ /**
118
+ * Maximum number of times this code can be used.
119
+ * 1 = single-use (most common). 0 = unlimited.
120
+ *
121
+ * @generated from protobuf field: uint32 max_uses = 6
122
+ */
123
+ maxUses: number;
124
+ /**
125
+ * How many times this code has been used.
126
+ *
127
+ * @generated from protobuf field: uint32 use_count = 7
128
+ */
129
+ useCount: number;
130
+ /**
131
+ * Expiration. Not set = no expiry.
132
+ *
133
+ * @generated from protobuf field: optional google.protobuf.Timestamp expires_at = 8
134
+ */
135
+ expiresAt?: Timestamp;
136
+ /**
137
+ * Whether this invite is active.
138
+ *
139
+ * @generated from protobuf field: bool active = 9
140
+ */
141
+ active: boolean;
142
+ /**
143
+ * Computed status for display purposes.
144
+ *
145
+ * @generated from protobuf field: sid.v1.admin.InviteStatus status = 10
146
+ */
147
+ status: InviteStatus;
148
+ /**
149
+ * @generated from protobuf field: google.protobuf.Timestamp created_at = 11
150
+ */
151
+ createdAt?: Timestamp;
152
+ }
153
+ // ══════════════════════════════════════════════════════════════════════════
154
+ // Registration Source
155
+ // ══════════════════════════════════════════════════════════════════════════
156
+
157
+ /**
158
+ * How a profile was created. Stored as metadata on the profile.
159
+ *
160
+ * @generated from protobuf message sid.v1.admin.RegistrationSource
161
+ */
162
+ export interface RegistrationSource {
163
+ /**
164
+ * Source type.
165
+ *
166
+ * @generated from protobuf field: sid.v1.admin.RegistrationSourceType source_type = 1
167
+ */
168
+ sourceType: RegistrationSourceType;
169
+ /**
170
+ * Raw source identifier.
171
+ * invite:{code}, scim:{provider}, admin:{admin_profile_id},
172
+ * federation:{idp_id}, self:{client_id}
173
+ *
174
+ * @generated from protobuf field: string source_id = 2
175
+ */
176
+ sourceId: string;
177
+ /**
178
+ * Referrer profile ID (if provided during registration).
179
+ *
180
+ * @generated from protobuf field: optional string referrer_id = 3
181
+ */
182
+ referrerId?: string;
183
+ /**
184
+ * UTM parameters (if captured from registration URL).
185
+ *
186
+ * @generated from protobuf field: sid.v1.admin.UtmParams utm = 4
187
+ */
188
+ utm?: UtmParams;
189
+ /**
190
+ * Client application through which registration occurred.
191
+ *
192
+ * @generated from protobuf field: optional string client_id = 5
193
+ */
194
+ clientId?: string;
195
+ /**
196
+ * @generated from protobuf field: google.protobuf.Timestamp created_at = 6
197
+ */
198
+ createdAt?: Timestamp;
199
+ }
200
+ /**
201
+ * UTM tracking parameters from registration URL.
202
+ *
203
+ * @generated from protobuf message sid.v1.admin.UtmParams
204
+ */
205
+ export interface UtmParams {
206
+ /**
207
+ * @generated from protobuf field: string source = 1
208
+ */
209
+ source: string; // utm_source
210
+ /**
211
+ * @generated from protobuf field: string medium = 2
212
+ */
213
+ medium: string; // utm_medium
214
+ /**
215
+ * @generated from protobuf field: string campaign = 3
216
+ */
217
+ campaign: string; // utm_campaign
218
+ /**
219
+ * @generated from protobuf field: string term = 4
220
+ */
221
+ term: string; // utm_term
222
+ /**
223
+ * @generated from protobuf field: string content = 5
224
+ */
225
+ content: string; // utm_content
226
+ }
227
+ // ══════════════════════════════════════════════════════════════════════════
228
+ // Registration Statistics
229
+ // ══════════════════════════════════════════════════════════════════════════
230
+
231
+ /**
232
+ * Aggregated registration statistics for admin dashboard.
233
+ *
234
+ * @generated from protobuf message sid.v1.admin.RegistrationStats
235
+ */
236
+ export interface RegistrationStats {
237
+ /**
238
+ * Total new profiles in the period.
239
+ *
240
+ * @generated from protobuf field: uint32 total = 1
241
+ */
242
+ total: number;
243
+ /**
244
+ * Breakdown by source type.
245
+ *
246
+ * @generated from protobuf field: repeated sid.v1.admin.SourceBreakdown by_source = 2
247
+ */
248
+ bySource: SourceBreakdown[];
249
+ /**
250
+ * Top referrers in the period.
251
+ *
252
+ * @generated from protobuf field: repeated sid.v1.admin.ReferrerEntry top_referrers = 3
253
+ */
254
+ topReferrers: ReferrerEntry[];
255
+ /**
256
+ * Total referrals count.
257
+ *
258
+ * @generated from protobuf field: uint32 total_referrals = 4
259
+ */
260
+ totalReferrals: number;
261
+ /**
262
+ * Number of unique referrers.
263
+ *
264
+ * @generated from protobuf field: uint32 unique_referrers = 5
265
+ */
266
+ uniqueReferrers: number;
267
+ }
268
+ /**
269
+ * Registration count for a single source type.
270
+ *
271
+ * @generated from protobuf message sid.v1.admin.SourceBreakdown
272
+ */
273
+ export interface SourceBreakdown {
274
+ /**
275
+ * @generated from protobuf field: sid.v1.admin.RegistrationSourceType source_type = 1
276
+ */
277
+ sourceType: RegistrationSourceType;
278
+ /**
279
+ * @generated from protobuf field: uint32 count = 2
280
+ */
281
+ count: number;
282
+ /**
283
+ * Percentage of total (0-100).
284
+ *
285
+ * @generated from protobuf field: double percentage = 3
286
+ */
287
+ percentage: number;
288
+ }
289
+ /**
290
+ * A referrer and their referral count.
291
+ *
292
+ * @generated from protobuf message sid.v1.admin.ReferrerEntry
293
+ */
294
+ export interface ReferrerEntry {
295
+ /**
296
+ * @generated from protobuf field: string profile_id = 1
297
+ */
298
+ profileId: string;
299
+ /**
300
+ * @generated from protobuf field: string display_name = 2
301
+ */
302
+ displayName: string;
303
+ /**
304
+ * @generated from protobuf field: uint32 referral_count = 3
305
+ */
306
+ referralCount: number;
307
+ }
308
+ // ══════════════════════════════════════════════════════════════════════════
309
+ // Requests
310
+ // ══════════════════════════════════════════════════════════════════════════
311
+
312
+ /**
313
+ * @generated from protobuf message sid.v1.admin.UpdateEnrollmentPolicyRequest
314
+ */
315
+ export interface UpdateEnrollmentPolicyRequest {
316
+ /**
317
+ * @generated from protobuf field: sid.v1.admin.EnrollmentPolicy policy = 1
318
+ */
319
+ policy?: EnrollmentPolicy;
320
+ }
321
+ /**
322
+ * @generated from protobuf message sid.v1.admin.CreateInviteRequest
323
+ */
324
+ export interface CreateInviteRequest {
325
+ /**
326
+ * Maximum number of times this code can be used. Default: 1.
327
+ *
328
+ * @generated from protobuf field: uint32 max_uses = 1
329
+ */
330
+ maxUses: number;
331
+ /**
332
+ * Expiration timestamp. Not set = no expiry.
333
+ *
334
+ * @generated from protobuf field: optional google.protobuf.Timestamp expires_at = 2
335
+ */
336
+ expiresAt?: Timestamp;
337
+ /**
338
+ * Optional metadata to pre-fill on registration.
339
+ *
340
+ * @generated from protobuf field: map<string, string> metadata = 3
341
+ */
342
+ metadata: {
343
+ [key: string]: string;
344
+ };
345
+ }
346
+ /**
347
+ * @generated from protobuf message sid.v1.admin.ListInvitesRequest
348
+ */
349
+ export interface ListInvitesRequest {
350
+ /**
351
+ * Pagination.
352
+ *
353
+ * @generated from protobuf field: uint32 page_size = 1
354
+ */
355
+ pageSize: number;
356
+ /**
357
+ * @generated from protobuf field: string page_token = 2
358
+ */
359
+ pageToken: string;
360
+ /**
361
+ * Filter by status.
362
+ *
363
+ * @generated from protobuf field: sid.v1.admin.InviteStatus status = 3
364
+ */
365
+ status: InviteStatus;
366
+ /**
367
+ * Search by code or creator name.
368
+ *
369
+ * @generated from protobuf field: string search = 4
370
+ */
371
+ search: string;
372
+ }
373
+ /**
374
+ * @generated from protobuf message sid.v1.admin.ListInvitesResponse
375
+ */
376
+ export interface ListInvitesResponse {
377
+ /**
378
+ * @generated from protobuf field: repeated sid.v1.admin.Invite invites = 1
379
+ */
380
+ invites: Invite[];
381
+ /**
382
+ * @generated from protobuf field: string next_page_token = 2
383
+ */
384
+ nextPageToken: string;
385
+ /**
386
+ * @generated from protobuf field: uint32 total_count = 3
387
+ */
388
+ totalCount: number;
389
+ }
390
+ /**
391
+ * @generated from protobuf message sid.v1.admin.RevokeInviteRequest
392
+ */
393
+ export interface RevokeInviteRequest {
394
+ /**
395
+ * @generated from protobuf field: string invite_id = 1
396
+ */
397
+ inviteId: string;
398
+ }
399
+ /**
400
+ * @generated from protobuf message sid.v1.admin.BulkCreateInvitesRequest
401
+ */
402
+ export interface BulkCreateInvitesRequest {
403
+ /**
404
+ * Number of invite codes to generate.
405
+ *
406
+ * @generated from protobuf field: uint32 count = 1
407
+ */
408
+ count: number;
409
+ /**
410
+ * Max uses per code. Default: 1.
411
+ *
412
+ * @generated from protobuf field: uint32 max_uses = 2
413
+ */
414
+ maxUses: number;
415
+ /**
416
+ * Expiration for all generated codes.
417
+ *
418
+ * @generated from protobuf field: optional google.protobuf.Timestamp expires_at = 3
419
+ */
420
+ expiresAt?: Timestamp;
421
+ /**
422
+ * Metadata applied to all generated codes.
423
+ *
424
+ * @generated from protobuf field: map<string, string> metadata = 4
425
+ */
426
+ metadata: {
427
+ [key: string]: string;
428
+ };
429
+ }
430
+ /**
431
+ * @generated from protobuf message sid.v1.admin.BulkCreateInvitesResponse
432
+ */
433
+ export interface BulkCreateInvitesResponse {
434
+ /**
435
+ * Generated invite codes.
436
+ *
437
+ * @generated from protobuf field: repeated sid.v1.admin.Invite invites = 1
438
+ */
439
+ invites: Invite[];
440
+ }
441
+ /**
442
+ * @generated from protobuf message sid.v1.admin.GetRegistrationStatsRequest
443
+ */
444
+ export interface GetRegistrationStatsRequest {
445
+ /**
446
+ * Period in days (7, 30, 90). Default: 30.
447
+ *
448
+ * @generated from protobuf field: uint32 period_days = 1
449
+ */
450
+ periodDays: number;
451
+ }
452
+ // ══════════════════════════════════════════════════════════════════════════
453
+ // Enums
454
+ // ══════════════════════════════════════════════════════════════════════════
455
+
456
+ /**
457
+ * Registration gating mode. CE: 4 hardcoded options.
458
+ * EE adds POLICY mode for composable rules.
459
+ *
460
+ * @generated from protobuf enum sid.v1.admin.EnrollmentMode
461
+ */
462
+ export enum EnrollmentMode {
463
+ /**
464
+ * @generated from protobuf enum value: ENROLLMENT_MODE_UNSPECIFIED = 0;
465
+ */
466
+ UNSPECIFIED = 0,
467
+ /**
468
+ * Anyone can register. Default for new instances.
469
+ *
470
+ * @generated from protobuf enum value: ENROLLMENT_MODE_OPEN = 1;
471
+ */
472
+ OPEN = 1,
473
+ /**
474
+ * Registration only with a valid invite code.
475
+ *
476
+ * @generated from protobuf enum value: ENROLLMENT_MODE_INVITE_ONLY = 2;
477
+ */
478
+ INVITE_ONLY = 2,
479
+ /**
480
+ * Only admin can create profiles (SCIM, admin-ui, API).
481
+ * Self-registration disabled entirely.
482
+ *
483
+ * @generated from protobuf enum value: ENROLLMENT_MODE_ADMIN_ONLY = 3;
484
+ */
485
+ ADMIN_ONLY = 3,
486
+ /**
487
+ * Only users with email in allowed domains can self-register.
488
+ *
489
+ * @generated from protobuf enum value: ENROLLMENT_MODE_DOMAIN_RESTRICTED = 4;
490
+ */
491
+ DOMAIN_RESTRICTED = 4
492
+ }
493
+ /**
494
+ * How a profile was created.
495
+ *
496
+ * @generated from protobuf enum sid.v1.admin.RegistrationSourceType
497
+ */
498
+ export enum RegistrationSourceType {
499
+ /**
500
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_UNSPECIFIED = 0;
501
+ */
502
+ UNSPECIFIED = 0,
503
+ /**
504
+ * Self-registration (open mode).
505
+ *
506
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_SELF_SIGNUP = 1;
507
+ */
508
+ SELF_SIGNUP = 1,
509
+ /**
510
+ * Registration with invite code.
511
+ *
512
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_INVITE = 2;
513
+ */
514
+ INVITE = 2,
515
+ /**
516
+ * Admin created profile manually.
517
+ *
518
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_ADMIN_CREATED = 3;
519
+ */
520
+ ADMIN_CREATED = 3,
521
+ /**
522
+ * SCIM provisioning.
523
+ *
524
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_SCIM_PROVISIONED = 4;
525
+ */
526
+ SCIM_PROVISIONED = 4,
527
+ /**
528
+ * Federation (person linked to this org).
529
+ *
530
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_FEDERATION = 5;
531
+ */
532
+ FEDERATION = 5,
533
+ /**
534
+ * Identity brokering (upstream IdP).
535
+ *
536
+ * @generated from protobuf enum value: REGISTRATION_SOURCE_TYPE_IDENTITY_BROKERED = 6;
537
+ */
538
+ IDENTITY_BROKERED = 6
539
+ }
540
+ /**
541
+ * Invite status for filtering.
542
+ *
543
+ * @generated from protobuf enum sid.v1.admin.InviteStatus
544
+ */
545
+ export enum InviteStatus {
546
+ /**
547
+ * @generated from protobuf enum value: INVITE_STATUS_UNSPECIFIED = 0;
548
+ */
549
+ UNSPECIFIED = 0,
550
+ /**
551
+ * Active and can be used.
552
+ *
553
+ * @generated from protobuf enum value: INVITE_STATUS_ACTIVE = 1;
554
+ */
555
+ ACTIVE = 1,
556
+ /**
557
+ * All uses consumed (use_count >= max_uses).
558
+ *
559
+ * @generated from protobuf enum value: INVITE_STATUS_CONSUMED = 2;
560
+ */
561
+ CONSUMED = 2,
562
+ /**
563
+ * Manually revoked by admin.
564
+ *
565
+ * @generated from protobuf enum value: INVITE_STATUS_REVOKED = 3;
566
+ */
567
+ REVOKED = 3,
568
+ /**
569
+ * Past expiration date.
570
+ *
571
+ * @generated from protobuf enum value: INVITE_STATUS_EXPIRED = 4;
572
+ */
573
+ EXPIRED = 4
574
+ }
575
+ // @generated message type with reflection information, may provide speed optimized methods
576
+ class EnrollmentPolicy$Type extends MessageType<EnrollmentPolicy> {
577
+ constructor() {
578
+ super("sid.v1.admin.EnrollmentPolicy", [
579
+ { no: 1, name: "mode", kind: "enum", T: () => ["sid.v1.admin.EnrollmentMode", EnrollmentMode, "ENROLLMENT_MODE_"] },
580
+ { no: 2, name: "invite", kind: "message", T: () => InviteConfig },
581
+ { no: 3, name: "allowed_domains", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
582
+ { no: 4, name: "track_source", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
583
+ ]);
584
+ }
585
+ create(value?: PartialMessage<EnrollmentPolicy>): EnrollmentPolicy {
586
+ const message = globalThis.Object.create((this.messagePrototype!));
587
+ message.mode = 0;
588
+ message.allowedDomains = [];
589
+ message.trackSource = false;
590
+ if (value !== undefined)
591
+ reflectionMergePartial<EnrollmentPolicy>(this, message, value);
592
+ return message;
593
+ }
594
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: EnrollmentPolicy): EnrollmentPolicy {
595
+ let message = target ?? this.create(), end = reader.pos + length;
596
+ while (reader.pos < end) {
597
+ let [fieldNo, wireType] = reader.tag();
598
+ switch (fieldNo) {
599
+ case /* sid.v1.admin.EnrollmentMode mode */ 1:
600
+ message.mode = reader.int32();
601
+ break;
602
+ case /* sid.v1.admin.InviteConfig invite */ 2:
603
+ message.invite = InviteConfig.internalBinaryRead(reader, reader.uint32(), options, message.invite);
604
+ break;
605
+ case /* repeated string allowed_domains */ 3:
606
+ message.allowedDomains.push(reader.string());
607
+ break;
608
+ case /* bool track_source */ 4:
609
+ message.trackSource = reader.bool();
610
+ break;
611
+ default:
612
+ let u = options.readUnknownField;
613
+ if (u === "throw")
614
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
615
+ let d = reader.skip(wireType);
616
+ if (u !== false)
617
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
618
+ }
619
+ }
620
+ return message;
621
+ }
622
+ internalBinaryWrite(message: EnrollmentPolicy, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
623
+ /* sid.v1.admin.EnrollmentMode mode = 1; */
624
+ if (message.mode !== 0)
625
+ writer.tag(1, WireType.Varint).int32(message.mode);
626
+ /* sid.v1.admin.InviteConfig invite = 2; */
627
+ if (message.invite)
628
+ InviteConfig.internalBinaryWrite(message.invite, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
629
+ /* repeated string allowed_domains = 3; */
630
+ for (let i = 0; i < message.allowedDomains.length; i++)
631
+ writer.tag(3, WireType.LengthDelimited).string(message.allowedDomains[i]);
632
+ /* bool track_source = 4; */
633
+ if (message.trackSource !== false)
634
+ writer.tag(4, WireType.Varint).bool(message.trackSource);
635
+ let u = options.writeUnknownFields;
636
+ if (u !== false)
637
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
638
+ return writer;
639
+ }
640
+ }
641
+ /**
642
+ * @generated MessageType for protobuf message sid.v1.admin.EnrollmentPolicy
643
+ */
644
+ export const EnrollmentPolicy = new EnrollmentPolicy$Type();
645
+ // @generated message type with reflection information, may provide speed optimized methods
646
+ class InviteConfig$Type extends MessageType<InviteConfig> {
647
+ constructor() {
648
+ super("sid.v1.admin.InviteConfig", [
649
+ { no: 1, name: "default_max_uses", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
650
+ { no: 2, name: "default_expiry_hours", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
651
+ ]);
652
+ }
653
+ create(value?: PartialMessage<InviteConfig>): InviteConfig {
654
+ const message = globalThis.Object.create((this.messagePrototype!));
655
+ message.defaultMaxUses = 0;
656
+ message.defaultExpiryHours = 0;
657
+ if (value !== undefined)
658
+ reflectionMergePartial<InviteConfig>(this, message, value);
659
+ return message;
660
+ }
661
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InviteConfig): InviteConfig {
662
+ let message = target ?? this.create(), end = reader.pos + length;
663
+ while (reader.pos < end) {
664
+ let [fieldNo, wireType] = reader.tag();
665
+ switch (fieldNo) {
666
+ case /* uint32 default_max_uses */ 1:
667
+ message.defaultMaxUses = reader.uint32();
668
+ break;
669
+ case /* uint32 default_expiry_hours */ 2:
670
+ message.defaultExpiryHours = reader.uint32();
671
+ break;
672
+ default:
673
+ let u = options.readUnknownField;
674
+ if (u === "throw")
675
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
676
+ let d = reader.skip(wireType);
677
+ if (u !== false)
678
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
679
+ }
680
+ }
681
+ return message;
682
+ }
683
+ internalBinaryWrite(message: InviteConfig, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
684
+ /* uint32 default_max_uses = 1; */
685
+ if (message.defaultMaxUses !== 0)
686
+ writer.tag(1, WireType.Varint).uint32(message.defaultMaxUses);
687
+ /* uint32 default_expiry_hours = 2; */
688
+ if (message.defaultExpiryHours !== 0)
689
+ writer.tag(2, WireType.Varint).uint32(message.defaultExpiryHours);
690
+ let u = options.writeUnknownFields;
691
+ if (u !== false)
692
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
693
+ return writer;
694
+ }
695
+ }
696
+ /**
697
+ * @generated MessageType for protobuf message sid.v1.admin.InviteConfig
698
+ */
699
+ export const InviteConfig = new InviteConfig$Type();
700
+ // @generated message type with reflection information, may provide speed optimized methods
701
+ class Invite$Type extends MessageType<Invite> {
702
+ constructor() {
703
+ super("sid.v1.admin.Invite", [
704
+ { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
705
+ { no: 2, name: "code", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
706
+ { no: 3, name: "created_by", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
707
+ { no: 4, name: "created_by_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
708
+ { no: 5, name: "metadata", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ } },
709
+ { no: 6, name: "max_uses", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
710
+ { no: 7, name: "use_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
711
+ { no: 8, name: "expires_at", kind: "message", T: () => Timestamp },
712
+ { no: 9, name: "active", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
713
+ { no: 10, name: "status", kind: "enum", T: () => ["sid.v1.admin.InviteStatus", InviteStatus, "INVITE_STATUS_"] },
714
+ { no: 11, name: "created_at", kind: "message", T: () => Timestamp }
715
+ ]);
716
+ }
717
+ create(value?: PartialMessage<Invite>): Invite {
718
+ const message = globalThis.Object.create((this.messagePrototype!));
719
+ message.id = "";
720
+ message.code = "";
721
+ message.createdBy = "";
722
+ message.createdByName = "";
723
+ message.metadata = {};
724
+ message.maxUses = 0;
725
+ message.useCount = 0;
726
+ message.active = false;
727
+ message.status = 0;
728
+ if (value !== undefined)
729
+ reflectionMergePartial<Invite>(this, message, value);
730
+ return message;
731
+ }
732
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Invite): Invite {
733
+ let message = target ?? this.create(), end = reader.pos + length;
734
+ while (reader.pos < end) {
735
+ let [fieldNo, wireType] = reader.tag();
736
+ switch (fieldNo) {
737
+ case /* string id */ 1:
738
+ message.id = reader.string();
739
+ break;
740
+ case /* string code */ 2:
741
+ message.code = reader.string();
742
+ break;
743
+ case /* string created_by */ 3:
744
+ message.createdBy = reader.string();
745
+ break;
746
+ case /* string created_by_name */ 4:
747
+ message.createdByName = reader.string();
748
+ break;
749
+ case /* map<string, string> metadata */ 5:
750
+ this.binaryReadMap5(message.metadata, reader, options);
751
+ break;
752
+ case /* uint32 max_uses */ 6:
753
+ message.maxUses = reader.uint32();
754
+ break;
755
+ case /* uint32 use_count */ 7:
756
+ message.useCount = reader.uint32();
757
+ break;
758
+ case /* optional google.protobuf.Timestamp expires_at */ 8:
759
+ message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
760
+ break;
761
+ case /* bool active */ 9:
762
+ message.active = reader.bool();
763
+ break;
764
+ case /* sid.v1.admin.InviteStatus status */ 10:
765
+ message.status = reader.int32();
766
+ break;
767
+ case /* google.protobuf.Timestamp created_at */ 11:
768
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
769
+ break;
770
+ default:
771
+ let u = options.readUnknownField;
772
+ if (u === "throw")
773
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
774
+ let d = reader.skip(wireType);
775
+ if (u !== false)
776
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
777
+ }
778
+ }
779
+ return message;
780
+ }
781
+ private binaryReadMap5(map: Invite["metadata"], reader: IBinaryReader, options: BinaryReadOptions): void {
782
+ let len = reader.uint32(), end = reader.pos + len, key: keyof Invite["metadata"] | undefined, val: Invite["metadata"][any] | undefined;
783
+ while (reader.pos < end) {
784
+ let [fieldNo, wireType] = reader.tag();
785
+ switch (fieldNo) {
786
+ case 1:
787
+ key = reader.string();
788
+ break;
789
+ case 2:
790
+ val = reader.string();
791
+ break;
792
+ default: throw new globalThis.Error("unknown map entry field for sid.v1.admin.Invite.metadata");
793
+ }
794
+ }
795
+ map[key ?? ""] = val ?? "";
796
+ }
797
+ internalBinaryWrite(message: Invite, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
798
+ /* string id = 1; */
799
+ if (message.id !== "")
800
+ writer.tag(1, WireType.LengthDelimited).string(message.id);
801
+ /* string code = 2; */
802
+ if (message.code !== "")
803
+ writer.tag(2, WireType.LengthDelimited).string(message.code);
804
+ /* string created_by = 3; */
805
+ if (message.createdBy !== "")
806
+ writer.tag(3, WireType.LengthDelimited).string(message.createdBy);
807
+ /* string created_by_name = 4; */
808
+ if (message.createdByName !== "")
809
+ writer.tag(4, WireType.LengthDelimited).string(message.createdByName);
810
+ /* map<string, string> metadata = 5; */
811
+ for (let k of globalThis.Object.keys(message.metadata))
812
+ writer.tag(5, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.metadata[k]).join();
813
+ /* uint32 max_uses = 6; */
814
+ if (message.maxUses !== 0)
815
+ writer.tag(6, WireType.Varint).uint32(message.maxUses);
816
+ /* uint32 use_count = 7; */
817
+ if (message.useCount !== 0)
818
+ writer.tag(7, WireType.Varint).uint32(message.useCount);
819
+ /* optional google.protobuf.Timestamp expires_at = 8; */
820
+ if (message.expiresAt)
821
+ Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
822
+ /* bool active = 9; */
823
+ if (message.active !== false)
824
+ writer.tag(9, WireType.Varint).bool(message.active);
825
+ /* sid.v1.admin.InviteStatus status = 10; */
826
+ if (message.status !== 0)
827
+ writer.tag(10, WireType.Varint).int32(message.status);
828
+ /* google.protobuf.Timestamp created_at = 11; */
829
+ if (message.createdAt)
830
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(11, WireType.LengthDelimited).fork(), options).join();
831
+ let u = options.writeUnknownFields;
832
+ if (u !== false)
833
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
834
+ return writer;
835
+ }
836
+ }
837
+ /**
838
+ * @generated MessageType for protobuf message sid.v1.admin.Invite
839
+ */
840
+ export const Invite = new Invite$Type();
841
+ // @generated message type with reflection information, may provide speed optimized methods
842
+ class RegistrationSource$Type extends MessageType<RegistrationSource> {
843
+ constructor() {
844
+ super("sid.v1.admin.RegistrationSource", [
845
+ { no: 1, name: "source_type", kind: "enum", T: () => ["sid.v1.admin.RegistrationSourceType", RegistrationSourceType, "REGISTRATION_SOURCE_TYPE_"] },
846
+ { no: 2, name: "source_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
847
+ { no: 3, name: "referrer_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
848
+ { no: 4, name: "utm", kind: "message", T: () => UtmParams },
849
+ { no: 5, name: "client_id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
850
+ { no: 6, name: "created_at", kind: "message", T: () => Timestamp }
851
+ ]);
852
+ }
853
+ create(value?: PartialMessage<RegistrationSource>): RegistrationSource {
854
+ const message = globalThis.Object.create((this.messagePrototype!));
855
+ message.sourceType = 0;
856
+ message.sourceId = "";
857
+ if (value !== undefined)
858
+ reflectionMergePartial<RegistrationSource>(this, message, value);
859
+ return message;
860
+ }
861
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RegistrationSource): RegistrationSource {
862
+ let message = target ?? this.create(), end = reader.pos + length;
863
+ while (reader.pos < end) {
864
+ let [fieldNo, wireType] = reader.tag();
865
+ switch (fieldNo) {
866
+ case /* sid.v1.admin.RegistrationSourceType source_type */ 1:
867
+ message.sourceType = reader.int32();
868
+ break;
869
+ case /* string source_id */ 2:
870
+ message.sourceId = reader.string();
871
+ break;
872
+ case /* optional string referrer_id */ 3:
873
+ message.referrerId = reader.string();
874
+ break;
875
+ case /* sid.v1.admin.UtmParams utm */ 4:
876
+ message.utm = UtmParams.internalBinaryRead(reader, reader.uint32(), options, message.utm);
877
+ break;
878
+ case /* optional string client_id */ 5:
879
+ message.clientId = reader.string();
880
+ break;
881
+ case /* google.protobuf.Timestamp created_at */ 6:
882
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
883
+ break;
884
+ default:
885
+ let u = options.readUnknownField;
886
+ if (u === "throw")
887
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
888
+ let d = reader.skip(wireType);
889
+ if (u !== false)
890
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
891
+ }
892
+ }
893
+ return message;
894
+ }
895
+ internalBinaryWrite(message: RegistrationSource, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
896
+ /* sid.v1.admin.RegistrationSourceType source_type = 1; */
897
+ if (message.sourceType !== 0)
898
+ writer.tag(1, WireType.Varint).int32(message.sourceType);
899
+ /* string source_id = 2; */
900
+ if (message.sourceId !== "")
901
+ writer.tag(2, WireType.LengthDelimited).string(message.sourceId);
902
+ /* optional string referrer_id = 3; */
903
+ if (message.referrerId !== undefined)
904
+ writer.tag(3, WireType.LengthDelimited).string(message.referrerId);
905
+ /* sid.v1.admin.UtmParams utm = 4; */
906
+ if (message.utm)
907
+ UtmParams.internalBinaryWrite(message.utm, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
908
+ /* optional string client_id = 5; */
909
+ if (message.clientId !== undefined)
910
+ writer.tag(5, WireType.LengthDelimited).string(message.clientId);
911
+ /* google.protobuf.Timestamp created_at = 6; */
912
+ if (message.createdAt)
913
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
914
+ let u = options.writeUnknownFields;
915
+ if (u !== false)
916
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
917
+ return writer;
918
+ }
919
+ }
920
+ /**
921
+ * @generated MessageType for protobuf message sid.v1.admin.RegistrationSource
922
+ */
923
+ export const RegistrationSource = new RegistrationSource$Type();
924
+ // @generated message type with reflection information, may provide speed optimized methods
925
+ class UtmParams$Type extends MessageType<UtmParams> {
926
+ constructor() {
927
+ super("sid.v1.admin.UtmParams", [
928
+ { no: 1, name: "source", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
929
+ { no: 2, name: "medium", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
930
+ { no: 3, name: "campaign", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
931
+ { no: 4, name: "term", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
932
+ { no: 5, name: "content", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
933
+ ]);
934
+ }
935
+ create(value?: PartialMessage<UtmParams>): UtmParams {
936
+ const message = globalThis.Object.create((this.messagePrototype!));
937
+ message.source = "";
938
+ message.medium = "";
939
+ message.campaign = "";
940
+ message.term = "";
941
+ message.content = "";
942
+ if (value !== undefined)
943
+ reflectionMergePartial<UtmParams>(this, message, value);
944
+ return message;
945
+ }
946
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UtmParams): UtmParams {
947
+ let message = target ?? this.create(), end = reader.pos + length;
948
+ while (reader.pos < end) {
949
+ let [fieldNo, wireType] = reader.tag();
950
+ switch (fieldNo) {
951
+ case /* string source */ 1:
952
+ message.source = reader.string();
953
+ break;
954
+ case /* string medium */ 2:
955
+ message.medium = reader.string();
956
+ break;
957
+ case /* string campaign */ 3:
958
+ message.campaign = reader.string();
959
+ break;
960
+ case /* string term */ 4:
961
+ message.term = reader.string();
962
+ break;
963
+ case /* string content */ 5:
964
+ message.content = reader.string();
965
+ break;
966
+ default:
967
+ let u = options.readUnknownField;
968
+ if (u === "throw")
969
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
970
+ let d = reader.skip(wireType);
971
+ if (u !== false)
972
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
973
+ }
974
+ }
975
+ return message;
976
+ }
977
+ internalBinaryWrite(message: UtmParams, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
978
+ /* string source = 1; */
979
+ if (message.source !== "")
980
+ writer.tag(1, WireType.LengthDelimited).string(message.source);
981
+ /* string medium = 2; */
982
+ if (message.medium !== "")
983
+ writer.tag(2, WireType.LengthDelimited).string(message.medium);
984
+ /* string campaign = 3; */
985
+ if (message.campaign !== "")
986
+ writer.tag(3, WireType.LengthDelimited).string(message.campaign);
987
+ /* string term = 4; */
988
+ if (message.term !== "")
989
+ writer.tag(4, WireType.LengthDelimited).string(message.term);
990
+ /* string content = 5; */
991
+ if (message.content !== "")
992
+ writer.tag(5, WireType.LengthDelimited).string(message.content);
993
+ let u = options.writeUnknownFields;
994
+ if (u !== false)
995
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
996
+ return writer;
997
+ }
998
+ }
999
+ /**
1000
+ * @generated MessageType for protobuf message sid.v1.admin.UtmParams
1001
+ */
1002
+ export const UtmParams = new UtmParams$Type();
1003
+ // @generated message type with reflection information, may provide speed optimized methods
1004
+ class RegistrationStats$Type extends MessageType<RegistrationStats> {
1005
+ constructor() {
1006
+ super("sid.v1.admin.RegistrationStats", [
1007
+ { no: 1, name: "total", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1008
+ { no: 2, name: "by_source", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => SourceBreakdown },
1009
+ { no: 3, name: "top_referrers", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => ReferrerEntry },
1010
+ { no: 4, name: "total_referrals", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1011
+ { no: 5, name: "unique_referrers", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
1012
+ ]);
1013
+ }
1014
+ create(value?: PartialMessage<RegistrationStats>): RegistrationStats {
1015
+ const message = globalThis.Object.create((this.messagePrototype!));
1016
+ message.total = 0;
1017
+ message.bySource = [];
1018
+ message.topReferrers = [];
1019
+ message.totalReferrals = 0;
1020
+ message.uniqueReferrers = 0;
1021
+ if (value !== undefined)
1022
+ reflectionMergePartial<RegistrationStats>(this, message, value);
1023
+ return message;
1024
+ }
1025
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RegistrationStats): RegistrationStats {
1026
+ let message = target ?? this.create(), end = reader.pos + length;
1027
+ while (reader.pos < end) {
1028
+ let [fieldNo, wireType] = reader.tag();
1029
+ switch (fieldNo) {
1030
+ case /* uint32 total */ 1:
1031
+ message.total = reader.uint32();
1032
+ break;
1033
+ case /* repeated sid.v1.admin.SourceBreakdown by_source */ 2:
1034
+ message.bySource.push(SourceBreakdown.internalBinaryRead(reader, reader.uint32(), options));
1035
+ break;
1036
+ case /* repeated sid.v1.admin.ReferrerEntry top_referrers */ 3:
1037
+ message.topReferrers.push(ReferrerEntry.internalBinaryRead(reader, reader.uint32(), options));
1038
+ break;
1039
+ case /* uint32 total_referrals */ 4:
1040
+ message.totalReferrals = reader.uint32();
1041
+ break;
1042
+ case /* uint32 unique_referrers */ 5:
1043
+ message.uniqueReferrers = reader.uint32();
1044
+ break;
1045
+ default:
1046
+ let u = options.readUnknownField;
1047
+ if (u === "throw")
1048
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1049
+ let d = reader.skip(wireType);
1050
+ if (u !== false)
1051
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1052
+ }
1053
+ }
1054
+ return message;
1055
+ }
1056
+ internalBinaryWrite(message: RegistrationStats, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1057
+ /* uint32 total = 1; */
1058
+ if (message.total !== 0)
1059
+ writer.tag(1, WireType.Varint).uint32(message.total);
1060
+ /* repeated sid.v1.admin.SourceBreakdown by_source = 2; */
1061
+ for (let i = 0; i < message.bySource.length; i++)
1062
+ SourceBreakdown.internalBinaryWrite(message.bySource[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
1063
+ /* repeated sid.v1.admin.ReferrerEntry top_referrers = 3; */
1064
+ for (let i = 0; i < message.topReferrers.length; i++)
1065
+ ReferrerEntry.internalBinaryWrite(message.topReferrers[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
1066
+ /* uint32 total_referrals = 4; */
1067
+ if (message.totalReferrals !== 0)
1068
+ writer.tag(4, WireType.Varint).uint32(message.totalReferrals);
1069
+ /* uint32 unique_referrers = 5; */
1070
+ if (message.uniqueReferrers !== 0)
1071
+ writer.tag(5, WireType.Varint).uint32(message.uniqueReferrers);
1072
+ let u = options.writeUnknownFields;
1073
+ if (u !== false)
1074
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1075
+ return writer;
1076
+ }
1077
+ }
1078
+ /**
1079
+ * @generated MessageType for protobuf message sid.v1.admin.RegistrationStats
1080
+ */
1081
+ export const RegistrationStats = new RegistrationStats$Type();
1082
+ // @generated message type with reflection information, may provide speed optimized methods
1083
+ class SourceBreakdown$Type extends MessageType<SourceBreakdown> {
1084
+ constructor() {
1085
+ super("sid.v1.admin.SourceBreakdown", [
1086
+ { no: 1, name: "source_type", kind: "enum", T: () => ["sid.v1.admin.RegistrationSourceType", RegistrationSourceType, "REGISTRATION_SOURCE_TYPE_"] },
1087
+ { no: 2, name: "count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1088
+ { no: 3, name: "percentage", kind: "scalar", T: 1 /*ScalarType.DOUBLE*/ }
1089
+ ]);
1090
+ }
1091
+ create(value?: PartialMessage<SourceBreakdown>): SourceBreakdown {
1092
+ const message = globalThis.Object.create((this.messagePrototype!));
1093
+ message.sourceType = 0;
1094
+ message.count = 0;
1095
+ message.percentage = 0;
1096
+ if (value !== undefined)
1097
+ reflectionMergePartial<SourceBreakdown>(this, message, value);
1098
+ return message;
1099
+ }
1100
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SourceBreakdown): SourceBreakdown {
1101
+ let message = target ?? this.create(), end = reader.pos + length;
1102
+ while (reader.pos < end) {
1103
+ let [fieldNo, wireType] = reader.tag();
1104
+ switch (fieldNo) {
1105
+ case /* sid.v1.admin.RegistrationSourceType source_type */ 1:
1106
+ message.sourceType = reader.int32();
1107
+ break;
1108
+ case /* uint32 count */ 2:
1109
+ message.count = reader.uint32();
1110
+ break;
1111
+ case /* double percentage */ 3:
1112
+ message.percentage = reader.double();
1113
+ break;
1114
+ default:
1115
+ let u = options.readUnknownField;
1116
+ if (u === "throw")
1117
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1118
+ let d = reader.skip(wireType);
1119
+ if (u !== false)
1120
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1121
+ }
1122
+ }
1123
+ return message;
1124
+ }
1125
+ internalBinaryWrite(message: SourceBreakdown, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1126
+ /* sid.v1.admin.RegistrationSourceType source_type = 1; */
1127
+ if (message.sourceType !== 0)
1128
+ writer.tag(1, WireType.Varint).int32(message.sourceType);
1129
+ /* uint32 count = 2; */
1130
+ if (message.count !== 0)
1131
+ writer.tag(2, WireType.Varint).uint32(message.count);
1132
+ /* double percentage = 3; */
1133
+ if (message.percentage !== 0)
1134
+ writer.tag(3, WireType.Bit64).double(message.percentage);
1135
+ let u = options.writeUnknownFields;
1136
+ if (u !== false)
1137
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1138
+ return writer;
1139
+ }
1140
+ }
1141
+ /**
1142
+ * @generated MessageType for protobuf message sid.v1.admin.SourceBreakdown
1143
+ */
1144
+ export const SourceBreakdown = new SourceBreakdown$Type();
1145
+ // @generated message type with reflection information, may provide speed optimized methods
1146
+ class ReferrerEntry$Type extends MessageType<ReferrerEntry> {
1147
+ constructor() {
1148
+ super("sid.v1.admin.ReferrerEntry", [
1149
+ { no: 1, name: "profile_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1150
+ { no: 2, name: "display_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1151
+ { no: 3, name: "referral_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
1152
+ ]);
1153
+ }
1154
+ create(value?: PartialMessage<ReferrerEntry>): ReferrerEntry {
1155
+ const message = globalThis.Object.create((this.messagePrototype!));
1156
+ message.profileId = "";
1157
+ message.displayName = "";
1158
+ message.referralCount = 0;
1159
+ if (value !== undefined)
1160
+ reflectionMergePartial<ReferrerEntry>(this, message, value);
1161
+ return message;
1162
+ }
1163
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReferrerEntry): ReferrerEntry {
1164
+ let message = target ?? this.create(), end = reader.pos + length;
1165
+ while (reader.pos < end) {
1166
+ let [fieldNo, wireType] = reader.tag();
1167
+ switch (fieldNo) {
1168
+ case /* string profile_id */ 1:
1169
+ message.profileId = reader.string();
1170
+ break;
1171
+ case /* string display_name */ 2:
1172
+ message.displayName = reader.string();
1173
+ break;
1174
+ case /* uint32 referral_count */ 3:
1175
+ message.referralCount = reader.uint32();
1176
+ break;
1177
+ default:
1178
+ let u = options.readUnknownField;
1179
+ if (u === "throw")
1180
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1181
+ let d = reader.skip(wireType);
1182
+ if (u !== false)
1183
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1184
+ }
1185
+ }
1186
+ return message;
1187
+ }
1188
+ internalBinaryWrite(message: ReferrerEntry, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1189
+ /* string profile_id = 1; */
1190
+ if (message.profileId !== "")
1191
+ writer.tag(1, WireType.LengthDelimited).string(message.profileId);
1192
+ /* string display_name = 2; */
1193
+ if (message.displayName !== "")
1194
+ writer.tag(2, WireType.LengthDelimited).string(message.displayName);
1195
+ /* uint32 referral_count = 3; */
1196
+ if (message.referralCount !== 0)
1197
+ writer.tag(3, WireType.Varint).uint32(message.referralCount);
1198
+ let u = options.writeUnknownFields;
1199
+ if (u !== false)
1200
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1201
+ return writer;
1202
+ }
1203
+ }
1204
+ /**
1205
+ * @generated MessageType for protobuf message sid.v1.admin.ReferrerEntry
1206
+ */
1207
+ export const ReferrerEntry = new ReferrerEntry$Type();
1208
+ // @generated message type with reflection information, may provide speed optimized methods
1209
+ class UpdateEnrollmentPolicyRequest$Type extends MessageType<UpdateEnrollmentPolicyRequest> {
1210
+ constructor() {
1211
+ super("sid.v1.admin.UpdateEnrollmentPolicyRequest", [
1212
+ { no: 1, name: "policy", kind: "message", T: () => EnrollmentPolicy }
1213
+ ]);
1214
+ }
1215
+ create(value?: PartialMessage<UpdateEnrollmentPolicyRequest>): UpdateEnrollmentPolicyRequest {
1216
+ const message = globalThis.Object.create((this.messagePrototype!));
1217
+ if (value !== undefined)
1218
+ reflectionMergePartial<UpdateEnrollmentPolicyRequest>(this, message, value);
1219
+ return message;
1220
+ }
1221
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpdateEnrollmentPolicyRequest): UpdateEnrollmentPolicyRequest {
1222
+ let message = target ?? this.create(), end = reader.pos + length;
1223
+ while (reader.pos < end) {
1224
+ let [fieldNo, wireType] = reader.tag();
1225
+ switch (fieldNo) {
1226
+ case /* sid.v1.admin.EnrollmentPolicy policy */ 1:
1227
+ message.policy = EnrollmentPolicy.internalBinaryRead(reader, reader.uint32(), options, message.policy);
1228
+ break;
1229
+ default:
1230
+ let u = options.readUnknownField;
1231
+ if (u === "throw")
1232
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1233
+ let d = reader.skip(wireType);
1234
+ if (u !== false)
1235
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1236
+ }
1237
+ }
1238
+ return message;
1239
+ }
1240
+ internalBinaryWrite(message: UpdateEnrollmentPolicyRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1241
+ /* sid.v1.admin.EnrollmentPolicy policy = 1; */
1242
+ if (message.policy)
1243
+ EnrollmentPolicy.internalBinaryWrite(message.policy, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1244
+ let u = options.writeUnknownFields;
1245
+ if (u !== false)
1246
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1247
+ return writer;
1248
+ }
1249
+ }
1250
+ /**
1251
+ * @generated MessageType for protobuf message sid.v1.admin.UpdateEnrollmentPolicyRequest
1252
+ */
1253
+ export const UpdateEnrollmentPolicyRequest = new UpdateEnrollmentPolicyRequest$Type();
1254
+ // @generated message type with reflection information, may provide speed optimized methods
1255
+ class CreateInviteRequest$Type extends MessageType<CreateInviteRequest> {
1256
+ constructor() {
1257
+ super("sid.v1.admin.CreateInviteRequest", [
1258
+ { no: 1, name: "max_uses", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1259
+ { no: 2, name: "expires_at", kind: "message", T: () => Timestamp },
1260
+ { no: 3, name: "metadata", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ } }
1261
+ ]);
1262
+ }
1263
+ create(value?: PartialMessage<CreateInviteRequest>): CreateInviteRequest {
1264
+ const message = globalThis.Object.create((this.messagePrototype!));
1265
+ message.maxUses = 0;
1266
+ message.metadata = {};
1267
+ if (value !== undefined)
1268
+ reflectionMergePartial<CreateInviteRequest>(this, message, value);
1269
+ return message;
1270
+ }
1271
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateInviteRequest): CreateInviteRequest {
1272
+ let message = target ?? this.create(), end = reader.pos + length;
1273
+ while (reader.pos < end) {
1274
+ let [fieldNo, wireType] = reader.tag();
1275
+ switch (fieldNo) {
1276
+ case /* uint32 max_uses */ 1:
1277
+ message.maxUses = reader.uint32();
1278
+ break;
1279
+ case /* optional google.protobuf.Timestamp expires_at */ 2:
1280
+ message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
1281
+ break;
1282
+ case /* map<string, string> metadata */ 3:
1283
+ this.binaryReadMap3(message.metadata, reader, options);
1284
+ break;
1285
+ default:
1286
+ let u = options.readUnknownField;
1287
+ if (u === "throw")
1288
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1289
+ let d = reader.skip(wireType);
1290
+ if (u !== false)
1291
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1292
+ }
1293
+ }
1294
+ return message;
1295
+ }
1296
+ private binaryReadMap3(map: CreateInviteRequest["metadata"], reader: IBinaryReader, options: BinaryReadOptions): void {
1297
+ let len = reader.uint32(), end = reader.pos + len, key: keyof CreateInviteRequest["metadata"] | undefined, val: CreateInviteRequest["metadata"][any] | undefined;
1298
+ while (reader.pos < end) {
1299
+ let [fieldNo, wireType] = reader.tag();
1300
+ switch (fieldNo) {
1301
+ case 1:
1302
+ key = reader.string();
1303
+ break;
1304
+ case 2:
1305
+ val = reader.string();
1306
+ break;
1307
+ default: throw new globalThis.Error("unknown map entry field for sid.v1.admin.CreateInviteRequest.metadata");
1308
+ }
1309
+ }
1310
+ map[key ?? ""] = val ?? "";
1311
+ }
1312
+ internalBinaryWrite(message: CreateInviteRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1313
+ /* uint32 max_uses = 1; */
1314
+ if (message.maxUses !== 0)
1315
+ writer.tag(1, WireType.Varint).uint32(message.maxUses);
1316
+ /* optional google.protobuf.Timestamp expires_at = 2; */
1317
+ if (message.expiresAt)
1318
+ Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
1319
+ /* map<string, string> metadata = 3; */
1320
+ for (let k of globalThis.Object.keys(message.metadata))
1321
+ writer.tag(3, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.metadata[k]).join();
1322
+ let u = options.writeUnknownFields;
1323
+ if (u !== false)
1324
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1325
+ return writer;
1326
+ }
1327
+ }
1328
+ /**
1329
+ * @generated MessageType for protobuf message sid.v1.admin.CreateInviteRequest
1330
+ */
1331
+ export const CreateInviteRequest = new CreateInviteRequest$Type();
1332
+ // @generated message type with reflection information, may provide speed optimized methods
1333
+ class ListInvitesRequest$Type extends MessageType<ListInvitesRequest> {
1334
+ constructor() {
1335
+ super("sid.v1.admin.ListInvitesRequest", [
1336
+ { no: 1, name: "page_size", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1337
+ { no: 2, name: "page_token", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1338
+ { no: 3, name: "status", kind: "enum", T: () => ["sid.v1.admin.InviteStatus", InviteStatus, "INVITE_STATUS_"] },
1339
+ { no: 4, name: "search", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
1340
+ ]);
1341
+ }
1342
+ create(value?: PartialMessage<ListInvitesRequest>): ListInvitesRequest {
1343
+ const message = globalThis.Object.create((this.messagePrototype!));
1344
+ message.pageSize = 0;
1345
+ message.pageToken = "";
1346
+ message.status = 0;
1347
+ message.search = "";
1348
+ if (value !== undefined)
1349
+ reflectionMergePartial<ListInvitesRequest>(this, message, value);
1350
+ return message;
1351
+ }
1352
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListInvitesRequest): ListInvitesRequest {
1353
+ let message = target ?? this.create(), end = reader.pos + length;
1354
+ while (reader.pos < end) {
1355
+ let [fieldNo, wireType] = reader.tag();
1356
+ switch (fieldNo) {
1357
+ case /* uint32 page_size */ 1:
1358
+ message.pageSize = reader.uint32();
1359
+ break;
1360
+ case /* string page_token */ 2:
1361
+ message.pageToken = reader.string();
1362
+ break;
1363
+ case /* sid.v1.admin.InviteStatus status */ 3:
1364
+ message.status = reader.int32();
1365
+ break;
1366
+ case /* string search */ 4:
1367
+ message.search = reader.string();
1368
+ break;
1369
+ default:
1370
+ let u = options.readUnknownField;
1371
+ if (u === "throw")
1372
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1373
+ let d = reader.skip(wireType);
1374
+ if (u !== false)
1375
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1376
+ }
1377
+ }
1378
+ return message;
1379
+ }
1380
+ internalBinaryWrite(message: ListInvitesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1381
+ /* uint32 page_size = 1; */
1382
+ if (message.pageSize !== 0)
1383
+ writer.tag(1, WireType.Varint).uint32(message.pageSize);
1384
+ /* string page_token = 2; */
1385
+ if (message.pageToken !== "")
1386
+ writer.tag(2, WireType.LengthDelimited).string(message.pageToken);
1387
+ /* sid.v1.admin.InviteStatus status = 3; */
1388
+ if (message.status !== 0)
1389
+ writer.tag(3, WireType.Varint).int32(message.status);
1390
+ /* string search = 4; */
1391
+ if (message.search !== "")
1392
+ writer.tag(4, WireType.LengthDelimited).string(message.search);
1393
+ let u = options.writeUnknownFields;
1394
+ if (u !== false)
1395
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1396
+ return writer;
1397
+ }
1398
+ }
1399
+ /**
1400
+ * @generated MessageType for protobuf message sid.v1.admin.ListInvitesRequest
1401
+ */
1402
+ export const ListInvitesRequest = new ListInvitesRequest$Type();
1403
+ // @generated message type with reflection information, may provide speed optimized methods
1404
+ class ListInvitesResponse$Type extends MessageType<ListInvitesResponse> {
1405
+ constructor() {
1406
+ super("sid.v1.admin.ListInvitesResponse", [
1407
+ { no: 1, name: "invites", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Invite },
1408
+ { no: 2, name: "next_page_token", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
1409
+ { no: 3, name: "total_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
1410
+ ]);
1411
+ }
1412
+ create(value?: PartialMessage<ListInvitesResponse>): ListInvitesResponse {
1413
+ const message = globalThis.Object.create((this.messagePrototype!));
1414
+ message.invites = [];
1415
+ message.nextPageToken = "";
1416
+ message.totalCount = 0;
1417
+ if (value !== undefined)
1418
+ reflectionMergePartial<ListInvitesResponse>(this, message, value);
1419
+ return message;
1420
+ }
1421
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListInvitesResponse): ListInvitesResponse {
1422
+ let message = target ?? this.create(), end = reader.pos + length;
1423
+ while (reader.pos < end) {
1424
+ let [fieldNo, wireType] = reader.tag();
1425
+ switch (fieldNo) {
1426
+ case /* repeated sid.v1.admin.Invite invites */ 1:
1427
+ message.invites.push(Invite.internalBinaryRead(reader, reader.uint32(), options));
1428
+ break;
1429
+ case /* string next_page_token */ 2:
1430
+ message.nextPageToken = reader.string();
1431
+ break;
1432
+ case /* uint32 total_count */ 3:
1433
+ message.totalCount = reader.uint32();
1434
+ break;
1435
+ default:
1436
+ let u = options.readUnknownField;
1437
+ if (u === "throw")
1438
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1439
+ let d = reader.skip(wireType);
1440
+ if (u !== false)
1441
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1442
+ }
1443
+ }
1444
+ return message;
1445
+ }
1446
+ internalBinaryWrite(message: ListInvitesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1447
+ /* repeated sid.v1.admin.Invite invites = 1; */
1448
+ for (let i = 0; i < message.invites.length; i++)
1449
+ Invite.internalBinaryWrite(message.invites[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1450
+ /* string next_page_token = 2; */
1451
+ if (message.nextPageToken !== "")
1452
+ writer.tag(2, WireType.LengthDelimited).string(message.nextPageToken);
1453
+ /* uint32 total_count = 3; */
1454
+ if (message.totalCount !== 0)
1455
+ writer.tag(3, WireType.Varint).uint32(message.totalCount);
1456
+ let u = options.writeUnknownFields;
1457
+ if (u !== false)
1458
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1459
+ return writer;
1460
+ }
1461
+ }
1462
+ /**
1463
+ * @generated MessageType for protobuf message sid.v1.admin.ListInvitesResponse
1464
+ */
1465
+ export const ListInvitesResponse = new ListInvitesResponse$Type();
1466
+ // @generated message type with reflection information, may provide speed optimized methods
1467
+ class RevokeInviteRequest$Type extends MessageType<RevokeInviteRequest> {
1468
+ constructor() {
1469
+ super("sid.v1.admin.RevokeInviteRequest", [
1470
+ { no: 1, name: "invite_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
1471
+ ]);
1472
+ }
1473
+ create(value?: PartialMessage<RevokeInviteRequest>): RevokeInviteRequest {
1474
+ const message = globalThis.Object.create((this.messagePrototype!));
1475
+ message.inviteId = "";
1476
+ if (value !== undefined)
1477
+ reflectionMergePartial<RevokeInviteRequest>(this, message, value);
1478
+ return message;
1479
+ }
1480
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RevokeInviteRequest): RevokeInviteRequest {
1481
+ let message = target ?? this.create(), end = reader.pos + length;
1482
+ while (reader.pos < end) {
1483
+ let [fieldNo, wireType] = reader.tag();
1484
+ switch (fieldNo) {
1485
+ case /* string invite_id */ 1:
1486
+ message.inviteId = reader.string();
1487
+ break;
1488
+ default:
1489
+ let u = options.readUnknownField;
1490
+ if (u === "throw")
1491
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1492
+ let d = reader.skip(wireType);
1493
+ if (u !== false)
1494
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1495
+ }
1496
+ }
1497
+ return message;
1498
+ }
1499
+ internalBinaryWrite(message: RevokeInviteRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1500
+ /* string invite_id = 1; */
1501
+ if (message.inviteId !== "")
1502
+ writer.tag(1, WireType.LengthDelimited).string(message.inviteId);
1503
+ let u = options.writeUnknownFields;
1504
+ if (u !== false)
1505
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1506
+ return writer;
1507
+ }
1508
+ }
1509
+ /**
1510
+ * @generated MessageType for protobuf message sid.v1.admin.RevokeInviteRequest
1511
+ */
1512
+ export const RevokeInviteRequest = new RevokeInviteRequest$Type();
1513
+ // @generated message type with reflection information, may provide speed optimized methods
1514
+ class BulkCreateInvitesRequest$Type extends MessageType<BulkCreateInvitesRequest> {
1515
+ constructor() {
1516
+ super("sid.v1.admin.BulkCreateInvitesRequest", [
1517
+ { no: 1, name: "count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1518
+ { no: 2, name: "max_uses", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
1519
+ { no: 3, name: "expires_at", kind: "message", T: () => Timestamp },
1520
+ { no: 4, name: "metadata", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ } }
1521
+ ]);
1522
+ }
1523
+ create(value?: PartialMessage<BulkCreateInvitesRequest>): BulkCreateInvitesRequest {
1524
+ const message = globalThis.Object.create((this.messagePrototype!));
1525
+ message.count = 0;
1526
+ message.maxUses = 0;
1527
+ message.metadata = {};
1528
+ if (value !== undefined)
1529
+ reflectionMergePartial<BulkCreateInvitesRequest>(this, message, value);
1530
+ return message;
1531
+ }
1532
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BulkCreateInvitesRequest): BulkCreateInvitesRequest {
1533
+ let message = target ?? this.create(), end = reader.pos + length;
1534
+ while (reader.pos < end) {
1535
+ let [fieldNo, wireType] = reader.tag();
1536
+ switch (fieldNo) {
1537
+ case /* uint32 count */ 1:
1538
+ message.count = reader.uint32();
1539
+ break;
1540
+ case /* uint32 max_uses */ 2:
1541
+ message.maxUses = reader.uint32();
1542
+ break;
1543
+ case /* optional google.protobuf.Timestamp expires_at */ 3:
1544
+ message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
1545
+ break;
1546
+ case /* map<string, string> metadata */ 4:
1547
+ this.binaryReadMap4(message.metadata, reader, options);
1548
+ break;
1549
+ default:
1550
+ let u = options.readUnknownField;
1551
+ if (u === "throw")
1552
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1553
+ let d = reader.skip(wireType);
1554
+ if (u !== false)
1555
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1556
+ }
1557
+ }
1558
+ return message;
1559
+ }
1560
+ private binaryReadMap4(map: BulkCreateInvitesRequest["metadata"], reader: IBinaryReader, options: BinaryReadOptions): void {
1561
+ let len = reader.uint32(), end = reader.pos + len, key: keyof BulkCreateInvitesRequest["metadata"] | undefined, val: BulkCreateInvitesRequest["metadata"][any] | undefined;
1562
+ while (reader.pos < end) {
1563
+ let [fieldNo, wireType] = reader.tag();
1564
+ switch (fieldNo) {
1565
+ case 1:
1566
+ key = reader.string();
1567
+ break;
1568
+ case 2:
1569
+ val = reader.string();
1570
+ break;
1571
+ default: throw new globalThis.Error("unknown map entry field for sid.v1.admin.BulkCreateInvitesRequest.metadata");
1572
+ }
1573
+ }
1574
+ map[key ?? ""] = val ?? "";
1575
+ }
1576
+ internalBinaryWrite(message: BulkCreateInvitesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1577
+ /* uint32 count = 1; */
1578
+ if (message.count !== 0)
1579
+ writer.tag(1, WireType.Varint).uint32(message.count);
1580
+ /* uint32 max_uses = 2; */
1581
+ if (message.maxUses !== 0)
1582
+ writer.tag(2, WireType.Varint).uint32(message.maxUses);
1583
+ /* optional google.protobuf.Timestamp expires_at = 3; */
1584
+ if (message.expiresAt)
1585
+ Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
1586
+ /* map<string, string> metadata = 4; */
1587
+ for (let k of globalThis.Object.keys(message.metadata))
1588
+ writer.tag(4, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k).tag(2, WireType.LengthDelimited).string(message.metadata[k]).join();
1589
+ let u = options.writeUnknownFields;
1590
+ if (u !== false)
1591
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1592
+ return writer;
1593
+ }
1594
+ }
1595
+ /**
1596
+ * @generated MessageType for protobuf message sid.v1.admin.BulkCreateInvitesRequest
1597
+ */
1598
+ export const BulkCreateInvitesRequest = new BulkCreateInvitesRequest$Type();
1599
+ // @generated message type with reflection information, may provide speed optimized methods
1600
+ class BulkCreateInvitesResponse$Type extends MessageType<BulkCreateInvitesResponse> {
1601
+ constructor() {
1602
+ super("sid.v1.admin.BulkCreateInvitesResponse", [
1603
+ { no: 1, name: "invites", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Invite }
1604
+ ]);
1605
+ }
1606
+ create(value?: PartialMessage<BulkCreateInvitesResponse>): BulkCreateInvitesResponse {
1607
+ const message = globalThis.Object.create((this.messagePrototype!));
1608
+ message.invites = [];
1609
+ if (value !== undefined)
1610
+ reflectionMergePartial<BulkCreateInvitesResponse>(this, message, value);
1611
+ return message;
1612
+ }
1613
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BulkCreateInvitesResponse): BulkCreateInvitesResponse {
1614
+ let message = target ?? this.create(), end = reader.pos + length;
1615
+ while (reader.pos < end) {
1616
+ let [fieldNo, wireType] = reader.tag();
1617
+ switch (fieldNo) {
1618
+ case /* repeated sid.v1.admin.Invite invites */ 1:
1619
+ message.invites.push(Invite.internalBinaryRead(reader, reader.uint32(), options));
1620
+ break;
1621
+ default:
1622
+ let u = options.readUnknownField;
1623
+ if (u === "throw")
1624
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1625
+ let d = reader.skip(wireType);
1626
+ if (u !== false)
1627
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1628
+ }
1629
+ }
1630
+ return message;
1631
+ }
1632
+ internalBinaryWrite(message: BulkCreateInvitesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1633
+ /* repeated sid.v1.admin.Invite invites = 1; */
1634
+ for (let i = 0; i < message.invites.length; i++)
1635
+ Invite.internalBinaryWrite(message.invites[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1636
+ let u = options.writeUnknownFields;
1637
+ if (u !== false)
1638
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1639
+ return writer;
1640
+ }
1641
+ }
1642
+ /**
1643
+ * @generated MessageType for protobuf message sid.v1.admin.BulkCreateInvitesResponse
1644
+ */
1645
+ export const BulkCreateInvitesResponse = new BulkCreateInvitesResponse$Type();
1646
+ // @generated message type with reflection information, may provide speed optimized methods
1647
+ class GetRegistrationStatsRequest$Type extends MessageType<GetRegistrationStatsRequest> {
1648
+ constructor() {
1649
+ super("sid.v1.admin.GetRegistrationStatsRequest", [
1650
+ { no: 1, name: "period_days", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
1651
+ ]);
1652
+ }
1653
+ create(value?: PartialMessage<GetRegistrationStatsRequest>): GetRegistrationStatsRequest {
1654
+ const message = globalThis.Object.create((this.messagePrototype!));
1655
+ message.periodDays = 0;
1656
+ if (value !== undefined)
1657
+ reflectionMergePartial<GetRegistrationStatsRequest>(this, message, value);
1658
+ return message;
1659
+ }
1660
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GetRegistrationStatsRequest): GetRegistrationStatsRequest {
1661
+ let message = target ?? this.create(), end = reader.pos + length;
1662
+ while (reader.pos < end) {
1663
+ let [fieldNo, wireType] = reader.tag();
1664
+ switch (fieldNo) {
1665
+ case /* uint32 period_days */ 1:
1666
+ message.periodDays = reader.uint32();
1667
+ break;
1668
+ default:
1669
+ let u = options.readUnknownField;
1670
+ if (u === "throw")
1671
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1672
+ let d = reader.skip(wireType);
1673
+ if (u !== false)
1674
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1675
+ }
1676
+ }
1677
+ return message;
1678
+ }
1679
+ internalBinaryWrite(message: GetRegistrationStatsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1680
+ /* uint32 period_days = 1; */
1681
+ if (message.periodDays !== 0)
1682
+ writer.tag(1, WireType.Varint).uint32(message.periodDays);
1683
+ let u = options.writeUnknownFields;
1684
+ if (u !== false)
1685
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1686
+ return writer;
1687
+ }
1688
+ }
1689
+ /**
1690
+ * @generated MessageType for protobuf message sid.v1.admin.GetRegistrationStatsRequest
1691
+ */
1692
+ export const GetRegistrationStatsRequest = new GetRegistrationStatsRequest$Type();
1693
+ /**
1694
+ * @generated ServiceType for protobuf service sid.v1.admin.EnrollmentService
1695
+ */
1696
+ export const EnrollmentService = new ServiceType("sid.v1.admin.EnrollmentService", [
1697
+ { name: "GetEnrollmentPolicy", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { get: "/v1/admin/enrollment/policy" } }, I: Empty, O: EnrollmentPolicy },
1698
+ { name: "UpdateEnrollmentPolicy", idempotency: "IDEMPOTENT", options: { "google.api.http": { put: "/v1/admin/enrollment/policy", body: "*" } }, I: UpdateEnrollmentPolicyRequest, O: EnrollmentPolicy },
1699
+ { name: "CreateInvite", options: { "google.api.http": { post: "/v1/admin/enrollment/invites", body: "*" } }, I: CreateInviteRequest, O: Invite },
1700
+ { name: "ListInvites", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { get: "/v1/admin/enrollment/invites" } }, I: ListInvitesRequest, O: ListInvitesResponse },
1701
+ { name: "RevokeInvite", idempotency: "IDEMPOTENT", options: { "google.api.http": { post: "/v1/admin/enrollment/invites/{invite_id}/revoke", body: "*" } }, I: RevokeInviteRequest, O: Empty },
1702
+ { name: "BulkCreateInvites", options: { "google.api.http": { post: "/v1/admin/enrollment/invites/bulk", body: "*" } }, I: BulkCreateInvitesRequest, O: BulkCreateInvitesResponse },
1703
+ { name: "GetRegistrationStats", idempotency: "NO_SIDE_EFFECTS", options: { "google.api.http": { get: "/v1/admin/enrollment/stats" } }, I: GetRegistrationStatsRequest, O: RegistrationStats }
1704
+ ]);