@fivenet-app/gen 2026.8.0 → 2026.10.2

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 (83) hide show
  1. package/LICENSE +201 -0
  2. package/clients.ts +12 -0
  3. package/codegen/perms/perms.ts +331 -2
  4. package/google/protobuf/any.ts +47 -103
  5. package/google/protobuf/descriptor.ts +28 -29
  6. package/google/protobuf/struct.ts +33 -22
  7. package/google/protobuf/timestamp.ts +3 -3
  8. package/package.json +2 -2
  9. package/perms.ts +58 -17
  10. package/resources/calendar/calendar.ts +11 -0
  11. package/resources/calendar/entries/entries.ts +23 -0
  12. package/resources/centrum/dispatches/dispatches.ts +214 -21
  13. package/resources/centrum/units/units.ts +212 -5
  14. package/resources/citizens/labels/access.ts +10 -6
  15. package/resources/cron/cron.ts +44 -3
  16. package/resources/dbsync/state.ts +192 -0
  17. package/resources/documents/stamps/access.ts +25 -0
  18. package/resources/documents/stamps/stamp.ts +0 -21
  19. package/resources/documents/templates/templates.ts +63 -61
  20. package/resources/documents/workflow/workflow.ts +61 -1
  21. package/resources/file/file.ts +3 -3
  22. package/resources/file/filestore.ts +26 -10
  23. package/resources/jobs/colleagues/activity/activity.ts +50 -8
  24. package/resources/jobs/colleagues/colleagues.ts +14 -1
  25. package/resources/jobs/groups/access/access.ts +29 -0
  26. package/resources/jobs/groups/activity.ts +332 -0
  27. package/resources/jobs/groups/group.ts +1666 -0
  28. package/resources/jobs/groups/short/group_member_short.ts +129 -0
  29. package/resources/jobs/job_asset.ts +116 -0
  30. package/resources/jobs/user_selector.ts +170 -0
  31. package/resources/notifications/clientview/clientview.ts +5 -1
  32. package/resources/notifications/events/events.ts +35 -1
  33. package/resources/notifications/notifications.ts +322 -2
  34. package/resources/permissions/attributes/attributes.ts +164 -2
  35. package/resources/permissions/authorization/authorization.ts +86 -0
  36. package/resources/permissions/permissions/permissions.ts +16 -1
  37. package/resources/properties/properties.ts +1648 -0
  38. package/resources/qualifications/activity/activity.ts +328 -0
  39. package/resources/qualifications/exam/exam.ts +108 -4
  40. package/resources/qualifications/qualifications.ts +36 -2
  41. package/resources/settings/config.ts +3 -3
  42. package/resources/settings/status.ts +197 -105
  43. package/resources/sync/activity/activity.ts +4 -4
  44. package/resources/sync/data/data.ts +16 -4
  45. package/resources/users/activity/activity.ts +220 -3
  46. package/resources/users/props/props.ts +13 -1
  47. package/resources/users/user.ts +13 -1
  48. package/resources/vehicles/activity/activity.ts +222 -3
  49. package/resources/vehicles/props/props.ts +13 -1
  50. package/resources/vehicles/vehicles.ts +13 -1
  51. package/services/auth/auth.ts +61 -67
  52. package/services/calendar/calendar.ts +1 -1
  53. package/services/calendar/entries.ts +3 -3
  54. package/services/centrum/centrum.ts +103 -1
  55. package/services/centrum/dispatches.ts +25 -1
  56. package/services/centrum/units.ts +28 -4
  57. package/services/citizens/citizens.client.ts +49 -0
  58. package/services/citizens/citizens.ts +384 -7
  59. package/services/completor/completor.ts +2 -2
  60. package/services/documents/approval.ts +2 -2
  61. package/services/documents/documents.ts +10 -9
  62. package/services/documents/templates.ts +24 -13
  63. package/services/jobs/colleagues.client.ts +34 -8
  64. package/services/jobs/colleagues.ts +289 -75
  65. package/services/jobs/conduct.ts +12 -19
  66. package/services/jobs/groups.client.ts +311 -0
  67. package/services/jobs/groups.ts +3654 -1
  68. package/services/jobs/timeclock.ts +30 -27
  69. package/services/notifications/notifications.client.ts +40 -1
  70. package/services/notifications/notifications.ts +483 -3
  71. package/services/qualifications/qualifications.client.ts +20 -7
  72. package/services/qualifications/qualifications.ts +291 -8
  73. package/services/settings/job_assets.client.ts +105 -0
  74. package/services/settings/job_assets.ts +373 -0
  75. package/services/settings/properties.client.ts +194 -0
  76. package/services/settings/properties.ts +1555 -0
  77. package/services/settings/settings.ts +1 -1
  78. package/services/settings/system.ts +29 -9
  79. package/services/sync/sync.client.ts +69 -33
  80. package/services/sync/sync.ts +557 -18
  81. package/services/vehicles/vehicles.client.ts +52 -0
  82. package/services/vehicles/vehicles.ts +386 -8
  83. package/svcs.ts +87 -1
@@ -5,6 +5,10 @@
5
5
  import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
6
6
  import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
7
7
  import { CitizensService } from "./citizens";
8
+ import type { DeleteCitizenFileResponse } from "./citizens";
9
+ import type { DeleteCitizenFileRequest } from "./citizens";
10
+ import type { ListCitizenFilesResponse } from "./citizens";
11
+ import type { ListCitizenFilesRequest } from "./citizens";
8
12
  import type { DeleteMugshotResponse } from "./citizens";
9
13
  import type { DeleteMugshotRequest } from "./citizens";
10
14
  import type { DeleteAvatarResponse } from "./citizens";
@@ -67,6 +71,24 @@ export interface ICitizensServiceClient {
67
71
  * @generated from protobuf rpc: DeleteMugshot
68
72
  */
69
73
  deleteMugshot(input: DeleteMugshotRequest, options?: RpcOptions): UnaryCall<DeleteMugshotRequest, DeleteMugshotResponse>;
74
+ /**
75
+ * @generated from protobuf rpc: ListCitizenFiles
76
+ */
77
+ listCitizenFiles(input: ListCitizenFilesRequest, options?: RpcOptions): UnaryCall<ListCitizenFilesRequest, ListCitizenFilesResponse>;
78
+ /**
79
+ * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
80
+ * buf:lint:ignore RPC_REQUEST_STANDARD_NAME
81
+ * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME
82
+ *
83
+ * @generated from protobuf rpc: UploadCitizenFile
84
+ */
85
+ uploadCitizenFile(options?: RpcOptions): ClientStreamingCall<UploadFileRequest, UploadFileResponse>;
86
+ /**
87
+ * Requires DeleteCitizenFile and SetUserProps with the user.files property.
88
+ *
89
+ * @generated from protobuf rpc: DeleteCitizenFile
90
+ */
91
+ deleteCitizenFile(input: DeleteCitizenFileRequest, options?: RpcOptions): UnaryCall<DeleteCitizenFileRequest, DeleteCitizenFileResponse>;
70
92
  }
71
93
  /**
72
94
  * @generated from protobuf service services.citizens.CitizensService
@@ -141,4 +163,31 @@ export class CitizensServiceClient implements ICitizensServiceClient, ServiceInf
141
163
  const method = this.methods[7], opt = this._transport.mergeOptions(options);
142
164
  return stackIntercept<DeleteMugshotRequest, DeleteMugshotResponse>("unary", this._transport, method, opt, input);
143
165
  }
166
+ /**
167
+ * @generated from protobuf rpc: ListCitizenFiles
168
+ */
169
+ listCitizenFiles(input: ListCitizenFilesRequest, options?: RpcOptions): UnaryCall<ListCitizenFilesRequest, ListCitizenFilesResponse> {
170
+ const method = this.methods[8], opt = this._transport.mergeOptions(options);
171
+ return stackIntercept<ListCitizenFilesRequest, ListCitizenFilesResponse>("unary", this._transport, method, opt, input);
172
+ }
173
+ /**
174
+ * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
175
+ * buf:lint:ignore RPC_REQUEST_STANDARD_NAME
176
+ * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME
177
+ *
178
+ * @generated from protobuf rpc: UploadCitizenFile
179
+ */
180
+ uploadCitizenFile(options?: RpcOptions): ClientStreamingCall<UploadFileRequest, UploadFileResponse> {
181
+ const method = this.methods[9], opt = this._transport.mergeOptions(options);
182
+ return stackIntercept<UploadFileRequest, UploadFileResponse>("clientStreaming", this._transport, method, opt);
183
+ }
184
+ /**
185
+ * Requires DeleteCitizenFile and SetUserProps with the user.files property.
186
+ *
187
+ * @generated from protobuf rpc: DeleteCitizenFile
188
+ */
189
+ deleteCitizenFile(input: DeleteCitizenFileRequest, options?: RpcOptions): UnaryCall<DeleteCitizenFileRequest, DeleteCitizenFileResponse> {
190
+ const method = this.methods[10], opt = this._transport.mergeOptions(options);
191
+ return stackIntercept<DeleteCitizenFileRequest, DeleteCitizenFileResponse>("unary", this._transport, method, opt, input);
192
+ }
144
193
  }
@@ -14,11 +14,15 @@ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
14
14
  import type { PartialMessage } from "@protobuf-ts/runtime";
15
15
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
16
16
  import { MessageType } from "@protobuf-ts/runtime";
17
+ import { File } from "../../resources/file/file";
18
+ import { PropertyChange } from "../../resources/properties/properties";
17
19
  import { UserProps } from "../../resources/users/props/props";
18
20
  import { UserActivity } from "../../resources/users/activity/activity";
21
+ import { Timestamp } from "../../resources/timestamp/timestamp";
19
22
  import { UserActivityType } from "../../resources/users/activity/activity";
20
23
  import { User } from "../../resources/users/user";
21
24
  import { PaginationResponse } from "../../resources/common/database/database";
25
+ import { PropertyFilter } from "../../resources/properties/properties";
22
26
  import { Sort } from "../../resources/common/database/database";
23
27
  import { PaginationRequest } from "../../resources/common/database/database";
24
28
  /**
@@ -69,6 +73,10 @@ export interface ListCitizensRequest {
69
73
  * @generated from protobuf field: optional float max_height = 10
70
74
  */
71
75
  maxHeight?: number;
76
+ /**
77
+ * @generated from protobuf field: repeated resources.properties.PropertyFilter property_filters = 11
78
+ */
79
+ propertyFilters: PropertyFilter[];
72
80
  }
73
81
  /**
74
82
  * @generated from protobuf message services.citizens.ListCitizensResponse
@@ -124,9 +132,25 @@ export interface ListUserActivityRequest {
124
132
  */
125
133
  userId: number;
126
134
  /**
135
+ * Activity types to filter by. If empty, all activity types will be returned.
136
+ *
127
137
  * @generated from protobuf field: repeated resources.users.activity.UserActivityType types = 4
128
138
  */
129
139
  types: UserActivityType[];
140
+ /**
141
+ * @generated from protobuf field: optional resources.timestamp.Timestamp from = 5
142
+ */
143
+ from?: Timestamp;
144
+ /**
145
+ * @generated from protobuf field: optional resources.timestamp.Timestamp to = 6
146
+ */
147
+ to?: Timestamp;
148
+ /**
149
+ * Restricts generic PROPERTY activity entries to these custom property keys.
150
+ *
151
+ * @generated from protobuf field: repeated string property_keys = 7
152
+ */
153
+ propertyKeys: string[];
130
154
  }
131
155
  /**
132
156
  * @generated from protobuf message services.citizens.ListUserActivityResponse
@@ -153,6 +177,13 @@ export interface SetUserPropsRequest {
153
177
  * @generated from protobuf field: string reason = 2
154
178
  */
155
179
  reason: string;
180
+ /**
181
+ * Generic custom scalar properties. Managed system properties continue to
182
+ * use the dedicated fields above and produce their specialized activities.
183
+ *
184
+ * @generated from protobuf field: repeated resources.properties.PropertyChange property_changes = 3
185
+ */
186
+ propertyChanges: PropertyChange[];
156
187
  }
157
188
  /**
158
189
  * @generated from protobuf message services.citizens.SetUserPropsResponse
@@ -191,6 +222,62 @@ export interface DeleteMugshotRequest {
191
222
  */
192
223
  export interface DeleteMugshotResponse {
193
224
  }
225
+ /**
226
+ * CitizenFile is a restricted investigation attachment. The public profile
227
+ * avatar is deliberately not represented here.
228
+ *
229
+ * @generated from protobuf message services.citizens.CitizenFile
230
+ */
231
+ export interface CitizenFile {
232
+ /**
233
+ * @generated from protobuf field: resources.file.File file = 1
234
+ */
235
+ file?: File;
236
+ /**
237
+ * @generated from protobuf field: string kind = 2
238
+ */
239
+ kind: string;
240
+ }
241
+ /**
242
+ * @generated from protobuf message services.citizens.ListCitizenFilesRequest
243
+ */
244
+ export interface ListCitizenFilesRequest {
245
+ /**
246
+ * @generated from protobuf field: int32 user_id = 1
247
+ */
248
+ userId: number;
249
+ }
250
+ /**
251
+ * @generated from protobuf message services.citizens.ListCitizenFilesResponse
252
+ */
253
+ export interface ListCitizenFilesResponse {
254
+ /**
255
+ * @generated from protobuf field: repeated services.citizens.CitizenFile files = 1
256
+ */
257
+ files: CitizenFile[];
258
+ }
259
+ /**
260
+ * @generated from protobuf message services.citizens.DeleteCitizenFileRequest
261
+ */
262
+ export interface DeleteCitizenFileRequest {
263
+ /**
264
+ * @generated from protobuf field: int32 user_id = 1
265
+ */
266
+ userId: number;
267
+ /**
268
+ * @generated from protobuf field: int64 file_id = 2
269
+ */
270
+ fileId: number;
271
+ /**
272
+ * @generated from protobuf field: string reason = 3
273
+ */
274
+ reason: string;
275
+ }
276
+ /**
277
+ * @generated from protobuf message services.citizens.DeleteCitizenFileResponse
278
+ */
279
+ export interface DeleteCitizenFileResponse {
280
+ }
194
281
  // @generated message type with reflection information, may provide speed optimized methods
195
282
  class ListCitizensRequest$Type extends MessageType<ListCitizensRequest> {
196
283
  constructor() {
@@ -204,12 +291,14 @@ class ListCitizensRequest$Type extends MessageType<ListCitizensRequest> {
204
291
  { no: 7, name: "dateofbirth", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "10" } } } },
205
292
  { no: 8, name: "open_fines", kind: "scalar", opt: true, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
206
293
  { no: 9, name: "min_height", kind: "scalar", opt: true, T: 2 /*ScalarType.FLOAT*/ },
207
- { no: 10, name: "max_height", kind: "scalar", opt: true, T: 2 /*ScalarType.FLOAT*/ }
294
+ { no: 10, name: "max_height", kind: "scalar", opt: true, T: 2 /*ScalarType.FLOAT*/ },
295
+ { no: 11, name: "property_filters", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PropertyFilter, options: { "buf.validate.field": { repeated: { maxItems: "8" } } } }
208
296
  ]);
209
297
  }
210
298
  create(value?: PartialMessage<ListCitizensRequest>): ListCitizensRequest {
211
299
  const message = globalThis.Object.create((this.messagePrototype!));
212
300
  message.search = "";
301
+ message.propertyFilters = [];
213
302
  if (value !== undefined)
214
303
  reflectionMergePartial<ListCitizensRequest>(this, message, value);
215
304
  return message;
@@ -249,6 +338,9 @@ class ListCitizensRequest$Type extends MessageType<ListCitizensRequest> {
249
338
  case /* optional float max_height */ 10:
250
339
  message.maxHeight = reader.float();
251
340
  break;
341
+ case /* repeated resources.properties.PropertyFilter property_filters */ 11:
342
+ message.propertyFilters.push(PropertyFilter.internalBinaryRead(reader, reader.uint32(), options));
343
+ break;
252
344
  default:
253
345
  let u = options.readUnknownField;
254
346
  if (u === "throw")
@@ -291,6 +383,9 @@ class ListCitizensRequest$Type extends MessageType<ListCitizensRequest> {
291
383
  /* optional float max_height = 10; */
292
384
  if (message.maxHeight !== undefined)
293
385
  writer.tag(10, WireType.Bit32).float(message.maxHeight);
386
+ /* repeated resources.properties.PropertyFilter property_filters = 11; */
387
+ for (let i = 0; i < message.propertyFilters.length; i++)
388
+ PropertyFilter.internalBinaryWrite(message.propertyFilters[i], writer.tag(11, WireType.LengthDelimited).fork(), options).join();
294
389
  let u = options.writeUnknownFields;
295
390
  if (u !== false)
296
391
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -462,13 +557,17 @@ class ListUserActivityRequest$Type extends MessageType<ListUserActivityRequest>
462
557
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
463
558
  { no: 2, name: "sort", kind: "message", T: () => Sort },
464
559
  { no: 3, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } },
465
- { no: 4, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.users.activity.UserActivityType", UserActivityType, "USER_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "20", items: { enum: { definedOnly: true } } } } } }
560
+ { no: 4, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.users.activity.UserActivityType", UserActivityType, "USER_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "20", items: { enum: { definedOnly: true } } } } } },
561
+ { no: 5, name: "from", kind: "message", T: () => Timestamp },
562
+ { no: 6, name: "to", kind: "message", T: () => Timestamp },
563
+ { no: 7, name: "property_keys", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { repeated: { maxItems: "20", items: { string: { maxLen: "64" } } } } } }
466
564
  ]);
467
565
  }
468
566
  create(value?: PartialMessage<ListUserActivityRequest>): ListUserActivityRequest {
469
567
  const message = globalThis.Object.create((this.messagePrototype!));
470
568
  message.userId = 0;
471
569
  message.types = [];
570
+ message.propertyKeys = [];
472
571
  if (value !== undefined)
473
572
  reflectionMergePartial<ListUserActivityRequest>(this, message, value);
474
573
  return message;
@@ -494,6 +593,15 @@ class ListUserActivityRequest$Type extends MessageType<ListUserActivityRequest>
494
593
  else
495
594
  message.types.push(reader.int32());
496
595
  break;
596
+ case /* optional resources.timestamp.Timestamp from */ 5:
597
+ message.from = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.from);
598
+ break;
599
+ case /* optional resources.timestamp.Timestamp to */ 6:
600
+ message.to = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.to);
601
+ break;
602
+ case /* repeated string property_keys */ 7:
603
+ message.propertyKeys.push(reader.string());
604
+ break;
497
605
  default:
498
606
  let u = options.readUnknownField;
499
607
  if (u === "throw")
@@ -522,6 +630,15 @@ class ListUserActivityRequest$Type extends MessageType<ListUserActivityRequest>
522
630
  writer.int32(message.types[i]);
523
631
  writer.join();
524
632
  }
633
+ /* optional resources.timestamp.Timestamp from = 5; */
634
+ if (message.from)
635
+ Timestamp.internalBinaryWrite(message.from, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
636
+ /* optional resources.timestamp.Timestamp to = 6; */
637
+ if (message.to)
638
+ Timestamp.internalBinaryWrite(message.to, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
639
+ /* repeated string property_keys = 7; */
640
+ for (let i = 0; i < message.propertyKeys.length; i++)
641
+ writer.tag(7, WireType.LengthDelimited).string(message.propertyKeys[i]);
525
642
  let u = options.writeUnknownFields;
526
643
  if (u !== false)
527
644
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -591,12 +708,14 @@ class SetUserPropsRequest$Type extends MessageType<SetUserPropsRequest> {
591
708
  constructor() {
592
709
  super("services.citizens.SetUserPropsRequest", [
593
710
  { no: 1, name: "props", kind: "message", T: () => UserProps, options: { "buf.validate.field": { required: true } } },
594
- { no: 2, name: "reason", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { ignore: "IGNORE_IF_ZERO_VALUE", string: { minLen: "3", maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true } } }
711
+ { no: 2, name: "reason", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { ignore: "IGNORE_IF_ZERO_VALUE", string: { minLen: "3", maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true } } },
712
+ { no: 3, name: "property_changes", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PropertyChange, options: { "buf.validate.field": { repeated: { maxItems: "20" } } } }
595
713
  ]);
596
714
  }
597
715
  create(value?: PartialMessage<SetUserPropsRequest>): SetUserPropsRequest {
598
716
  const message = globalThis.Object.create((this.messagePrototype!));
599
717
  message.reason = "";
718
+ message.propertyChanges = [];
600
719
  if (value !== undefined)
601
720
  reflectionMergePartial<SetUserPropsRequest>(this, message, value);
602
721
  return message;
@@ -612,6 +731,9 @@ class SetUserPropsRequest$Type extends MessageType<SetUserPropsRequest> {
612
731
  case /* string reason */ 2:
613
732
  message.reason = reader.string();
614
733
  break;
734
+ case /* repeated resources.properties.PropertyChange property_changes */ 3:
735
+ message.propertyChanges.push(PropertyChange.internalBinaryRead(reader, reader.uint32(), options));
736
+ break;
615
737
  default:
616
738
  let u = options.readUnknownField;
617
739
  if (u === "throw")
@@ -630,6 +752,9 @@ class SetUserPropsRequest$Type extends MessageType<SetUserPropsRequest> {
630
752
  /* string reason = 2; */
631
753
  if (message.reason !== "")
632
754
  writer.tag(2, WireType.LengthDelimited).string(message.reason);
755
+ /* repeated resources.properties.PropertyChange property_changes = 3; */
756
+ for (let i = 0; i < message.propertyChanges.length; i++)
757
+ PropertyChange.internalBinaryWrite(message.propertyChanges[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
633
758
  let u = options.writeUnknownFields;
634
759
  if (u !== false)
635
760
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -855,16 +980,268 @@ class DeleteMugshotResponse$Type extends MessageType<DeleteMugshotResponse> {
855
980
  * @generated MessageType for protobuf message services.citizens.DeleteMugshotResponse
856
981
  */
857
982
  export const DeleteMugshotResponse = new DeleteMugshotResponse$Type();
983
+ // @generated message type with reflection information, may provide speed optimized methods
984
+ class CitizenFile$Type extends MessageType<CitizenFile> {
985
+ constructor() {
986
+ super("services.citizens.CitizenFile", [
987
+ { no: 1, name: "file", kind: "message", T: () => File, options: { "buf.validate.field": { required: true } } },
988
+ { no: 2, name: "kind", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } }
989
+ ]);
990
+ }
991
+ create(value?: PartialMessage<CitizenFile>): CitizenFile {
992
+ const message = globalThis.Object.create((this.messagePrototype!));
993
+ message.kind = "";
994
+ if (value !== undefined)
995
+ reflectionMergePartial<CitizenFile>(this, message, value);
996
+ return message;
997
+ }
998
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CitizenFile): CitizenFile {
999
+ let message = target ?? this.create(), end = reader.pos + length;
1000
+ while (reader.pos < end) {
1001
+ let [fieldNo, wireType] = reader.tag();
1002
+ switch (fieldNo) {
1003
+ case /* resources.file.File file */ 1:
1004
+ message.file = File.internalBinaryRead(reader, reader.uint32(), options, message.file);
1005
+ break;
1006
+ case /* string kind */ 2:
1007
+ message.kind = reader.string();
1008
+ break;
1009
+ default:
1010
+ let u = options.readUnknownField;
1011
+ if (u === "throw")
1012
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1013
+ let d = reader.skip(wireType);
1014
+ if (u !== false)
1015
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1016
+ }
1017
+ }
1018
+ return message;
1019
+ }
1020
+ internalBinaryWrite(message: CitizenFile, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1021
+ /* resources.file.File file = 1; */
1022
+ if (message.file)
1023
+ File.internalBinaryWrite(message.file, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1024
+ /* string kind = 2; */
1025
+ if (message.kind !== "")
1026
+ writer.tag(2, WireType.LengthDelimited).string(message.kind);
1027
+ let u = options.writeUnknownFields;
1028
+ if (u !== false)
1029
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1030
+ return writer;
1031
+ }
1032
+ }
1033
+ /**
1034
+ * @generated MessageType for protobuf message services.citizens.CitizenFile
1035
+ */
1036
+ export const CitizenFile = new CitizenFile$Type();
1037
+ // @generated message type with reflection information, may provide speed optimized methods
1038
+ class ListCitizenFilesRequest$Type extends MessageType<ListCitizenFilesRequest> {
1039
+ constructor() {
1040
+ super("services.citizens.ListCitizenFilesRequest", [
1041
+ { no: 1, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } }
1042
+ ]);
1043
+ }
1044
+ create(value?: PartialMessage<ListCitizenFilesRequest>): ListCitizenFilesRequest {
1045
+ const message = globalThis.Object.create((this.messagePrototype!));
1046
+ message.userId = 0;
1047
+ if (value !== undefined)
1048
+ reflectionMergePartial<ListCitizenFilesRequest>(this, message, value);
1049
+ return message;
1050
+ }
1051
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListCitizenFilesRequest): ListCitizenFilesRequest {
1052
+ let message = target ?? this.create(), end = reader.pos + length;
1053
+ while (reader.pos < end) {
1054
+ let [fieldNo, wireType] = reader.tag();
1055
+ switch (fieldNo) {
1056
+ case /* int32 user_id */ 1:
1057
+ message.userId = reader.int32();
1058
+ break;
1059
+ default:
1060
+ let u = options.readUnknownField;
1061
+ if (u === "throw")
1062
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1063
+ let d = reader.skip(wireType);
1064
+ if (u !== false)
1065
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1066
+ }
1067
+ }
1068
+ return message;
1069
+ }
1070
+ internalBinaryWrite(message: ListCitizenFilesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1071
+ /* int32 user_id = 1; */
1072
+ if (message.userId !== 0)
1073
+ writer.tag(1, WireType.Varint).int32(message.userId);
1074
+ let u = options.writeUnknownFields;
1075
+ if (u !== false)
1076
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1077
+ return writer;
1078
+ }
1079
+ }
1080
+ /**
1081
+ * @generated MessageType for protobuf message services.citizens.ListCitizenFilesRequest
1082
+ */
1083
+ export const ListCitizenFilesRequest = new ListCitizenFilesRequest$Type();
1084
+ // @generated message type with reflection information, may provide speed optimized methods
1085
+ class ListCitizenFilesResponse$Type extends MessageType<ListCitizenFilesResponse> {
1086
+ constructor() {
1087
+ super("services.citizens.ListCitizenFilesResponse", [
1088
+ { no: 1, name: "files", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => CitizenFile, options: { "codegen.itemslen.enabled": true } }
1089
+ ]);
1090
+ }
1091
+ create(value?: PartialMessage<ListCitizenFilesResponse>): ListCitizenFilesResponse {
1092
+ const message = globalThis.Object.create((this.messagePrototype!));
1093
+ message.files = [];
1094
+ if (value !== undefined)
1095
+ reflectionMergePartial<ListCitizenFilesResponse>(this, message, value);
1096
+ return message;
1097
+ }
1098
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListCitizenFilesResponse): ListCitizenFilesResponse {
1099
+ let message = target ?? this.create(), end = reader.pos + length;
1100
+ while (reader.pos < end) {
1101
+ let [fieldNo, wireType] = reader.tag();
1102
+ switch (fieldNo) {
1103
+ case /* repeated services.citizens.CitizenFile files */ 1:
1104
+ message.files.push(CitizenFile.internalBinaryRead(reader, reader.uint32(), options));
1105
+ break;
1106
+ default:
1107
+ let u = options.readUnknownField;
1108
+ if (u === "throw")
1109
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1110
+ let d = reader.skip(wireType);
1111
+ if (u !== false)
1112
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1113
+ }
1114
+ }
1115
+ return message;
1116
+ }
1117
+ internalBinaryWrite(message: ListCitizenFilesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1118
+ /* repeated services.citizens.CitizenFile files = 1; */
1119
+ for (let i = 0; i < message.files.length; i++)
1120
+ CitizenFile.internalBinaryWrite(message.files[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1121
+ let u = options.writeUnknownFields;
1122
+ if (u !== false)
1123
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1124
+ return writer;
1125
+ }
1126
+ }
1127
+ /**
1128
+ * @generated MessageType for protobuf message services.citizens.ListCitizenFilesResponse
1129
+ */
1130
+ export const ListCitizenFilesResponse = new ListCitizenFilesResponse$Type();
1131
+ // @generated message type with reflection information, may provide speed optimized methods
1132
+ class DeleteCitizenFileRequest$Type extends MessageType<DeleteCitizenFileRequest> {
1133
+ constructor() {
1134
+ super("services.citizens.DeleteCitizenFileRequest", [
1135
+ { no: 1, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } },
1136
+ { no: 2, name: "file_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } },
1137
+ { no: 3, name: "reason", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "3", maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true } } }
1138
+ ]);
1139
+ }
1140
+ create(value?: PartialMessage<DeleteCitizenFileRequest>): DeleteCitizenFileRequest {
1141
+ const message = globalThis.Object.create((this.messagePrototype!));
1142
+ message.userId = 0;
1143
+ message.fileId = 0;
1144
+ message.reason = "";
1145
+ if (value !== undefined)
1146
+ reflectionMergePartial<DeleteCitizenFileRequest>(this, message, value);
1147
+ return message;
1148
+ }
1149
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteCitizenFileRequest): DeleteCitizenFileRequest {
1150
+ let message = target ?? this.create(), end = reader.pos + length;
1151
+ while (reader.pos < end) {
1152
+ let [fieldNo, wireType] = reader.tag();
1153
+ switch (fieldNo) {
1154
+ case /* int32 user_id */ 1:
1155
+ message.userId = reader.int32();
1156
+ break;
1157
+ case /* int64 file_id */ 2:
1158
+ message.fileId = reader.int64().toNumber();
1159
+ break;
1160
+ case /* string reason */ 3:
1161
+ message.reason = reader.string();
1162
+ break;
1163
+ default:
1164
+ let u = options.readUnknownField;
1165
+ if (u === "throw")
1166
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1167
+ let d = reader.skip(wireType);
1168
+ if (u !== false)
1169
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1170
+ }
1171
+ }
1172
+ return message;
1173
+ }
1174
+ internalBinaryWrite(message: DeleteCitizenFileRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1175
+ /* int32 user_id = 1; */
1176
+ if (message.userId !== 0)
1177
+ writer.tag(1, WireType.Varint).int32(message.userId);
1178
+ /* int64 file_id = 2; */
1179
+ if (message.fileId !== 0)
1180
+ writer.tag(2, WireType.Varint).int64(message.fileId);
1181
+ /* string reason = 3; */
1182
+ if (message.reason !== "")
1183
+ writer.tag(3, WireType.LengthDelimited).string(message.reason);
1184
+ let u = options.writeUnknownFields;
1185
+ if (u !== false)
1186
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1187
+ return writer;
1188
+ }
1189
+ }
1190
+ /**
1191
+ * @generated MessageType for protobuf message services.citizens.DeleteCitizenFileRequest
1192
+ */
1193
+ export const DeleteCitizenFileRequest = new DeleteCitizenFileRequest$Type();
1194
+ // @generated message type with reflection information, may provide speed optimized methods
1195
+ class DeleteCitizenFileResponse$Type extends MessageType<DeleteCitizenFileResponse> {
1196
+ constructor() {
1197
+ super("services.citizens.DeleteCitizenFileResponse", []);
1198
+ }
1199
+ create(value?: PartialMessage<DeleteCitizenFileResponse>): DeleteCitizenFileResponse {
1200
+ const message = globalThis.Object.create((this.messagePrototype!));
1201
+ if (value !== undefined)
1202
+ reflectionMergePartial<DeleteCitizenFileResponse>(this, message, value);
1203
+ return message;
1204
+ }
1205
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteCitizenFileResponse): DeleteCitizenFileResponse {
1206
+ let message = target ?? this.create(), end = reader.pos + length;
1207
+ while (reader.pos < end) {
1208
+ let [fieldNo, wireType] = reader.tag();
1209
+ switch (fieldNo) {
1210
+ default:
1211
+ let u = options.readUnknownField;
1212
+ if (u === "throw")
1213
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1214
+ let d = reader.skip(wireType);
1215
+ if (u !== false)
1216
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1217
+ }
1218
+ }
1219
+ return message;
1220
+ }
1221
+ internalBinaryWrite(message: DeleteCitizenFileResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1222
+ let u = options.writeUnknownFields;
1223
+ if (u !== false)
1224
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1225
+ return writer;
1226
+ }
1227
+ }
1228
+ /**
1229
+ * @generated MessageType for protobuf message services.citizens.DeleteCitizenFileResponse
1230
+ */
1231
+ export const DeleteCitizenFileResponse = new DeleteCitizenFileResponse$Type();
858
1232
  /**
859
1233
  * @generated ServiceType for protobuf service services.citizens.CitizensService
860
1234
  */
861
1235
  export const CitizensService = new ServiceType("services.citizens.CitizensService", [
862
- { name: "ListCitizens", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["PhoneNumber", "Licenses", "UserProps.Wanted", "UserProps.Job", "UserProps.TrafficInfractionPoints", "UserProps.OpenFines", "UserProps.BloodType", "UserProps.Mugshot", "UserProps.Labels", "UserProps.Email"] }] } }, I: ListCitizensRequest, O: ListCitizensResponse },
1236
+ { name: "ListCitizens", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Properties", type: "ATTRIBUTE_TYPE_PROPERTY_LIST", propertyScope: "PROPERTY_SCOPE_USER" }] } }, I: ListCitizensRequest, O: ListCitizensResponse },
863
1237
  { name: "GetUser", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Jobs", type: "ATTRIBUTE_TYPE_JOB_GRADE_LIST" }] } }, I: GetUserRequest, O: GetUserResponse },
864
1238
  { name: "ListUserActivity", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["SourceUser", "Own"] }] } }, I: ListUserActivityRequest, O: ListUserActivityResponse },
865
- { name: "SetUserProps", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Wanted", "Job", "TrafficInfractionPoints", "Mugshot", "Labels"] }] } }, I: SetUserPropsRequest, O: SetUserPropsResponse },
1239
+ { name: "SetUserProps", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Properties", type: "ATTRIBUTE_TYPE_PROPERTY_LIST", propertyScope: "PROPERTY_SCOPE_USER" }] } }, I: SetUserPropsRequest, O: SetUserPropsResponse },
866
1240
  { name: "UploadAvatar", clientStreaming: true, options: { "codegen.perms.perms": { enabled: true, name: "Any" } }, I: UploadFileRequest, O: UploadFileResponse },
867
1241
  { name: "DeleteAvatar", options: { "codegen.perms.perms": { enabled: true, name: "Any" } }, I: DeleteAvatarRequest, O: DeleteAvatarResponse },
868
1242
  { name: "UploadMugshot", clientStreaming: true, options: { "codegen.perms.perms": { enabled: true, name: "SetUserProps" } }, I: UploadFileRequest, O: UploadFileResponse },
869
- { name: "DeleteMugshot", options: { "codegen.perms.perms": { enabled: true, name: "SetUserProps" } }, I: DeleteMugshotRequest, O: DeleteMugshotResponse }
870
- ], { "codegen.perms.perms_svc": { order: 30, icon: "i-mdi-account-multiple-outline" } });
1243
+ { name: "DeleteMugshot", options: { "codegen.perms.perms": { enabled: true, name: "SetUserProps" } }, I: DeleteMugshotRequest, O: DeleteMugshotResponse },
1244
+ { name: "ListCitizenFiles", options: { "codegen.perms.perms": { enabled: true, name: "ListCitizens" } }, I: ListCitizenFilesRequest, O: ListCitizenFilesResponse },
1245
+ { name: "UploadCitizenFile", clientStreaming: true, options: { "codegen.perms.perms": { enabled: true, name: "SetUserProps" } }, I: UploadFileRequest, O: UploadFileResponse },
1246
+ { name: "DeleteCitizenFile", options: { "codegen.perms.perms": { enabled: true } }, I: DeleteCitizenFileRequest, O: DeleteCitizenFileResponse }
1247
+ ], { "codegen.perms.perms_svc": { order: 30, icon: "i-mdi-account-multiple-outline", systemProperties: [{ scope: "PROPERTY_SCOPE_USER", key: "user.dateofbirth", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.date_of_birth", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "personal", sortOrder: 100, implicit: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.sex", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.sex", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "personal", sortOrder: 200, implicit: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.height", valueType: "PROPERTY_VALUE_TYPE_NUMBER", enabled: true, displayKey: "common.height", behavior: "PROPERTY_BEHAVIOR_MANAGED", renderer: "PROPERTY_RENDERER_HEIGHT", groupKey: "personal", sortOrder: 300, implicit: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.phone_number", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.phone_number", searchable: true, behavior: "PROPERTY_BEHAVIOR_MANAGED", renderer: "PROPERTY_RENDERER_PHONE", groupKey: "contact", sortOrder: 100 }, { scope: "PROPERTY_SCOPE_USER", key: "user.visum", valueType: "PROPERTY_VALUE_TYPE_INTEGER", enabled: true, displayKey: "common.visum", groupKey: "contact", sortOrder: 300, implicit: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.licenses", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.license", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "licenses", sortOrder: 100 }, { scope: "PROPERTY_SCOPE_USER", key: "user.wanted", valueType: "PROPERTY_VALUE_TYPE_BOOL", enabled: true, displayKey: "common.wanted", searchable: true, valueFormat: "PROPERTY_VALUE_FORMAT_PLAIN", behavior: "PROPERTY_BEHAVIOR_MANAGED", displayMode: "PROPERTY_DISPLAY_MODE_PROFILE_BADGE", groupKey: "status", sortOrder: 100, pinned: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.job", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.job", searchable: true, displayMode: "PROPERTY_DISPLAY_MODE_PROFILE_BADGE", groupKey: "status", sortOrder: 400, pinned: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.traffic_infraction_points", valueType: "PROPERTY_VALUE_TYPE_INTEGER", enabled: true, displayKey: "common.traffic_infraction_points", searchable: true, renderer: "PROPERTY_RENDERER_TRAFFIC_POINTS", groupKey: "status", sortOrder: 200, pinned: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.open_fines", valueType: "PROPERTY_VALUE_TYPE_INTEGER", enabled: true, displayKey: "common.fine", searchable: true, valueFormat: "PROPERTY_VALUE_FORMAT_MONEY", renderer: "PROPERTY_RENDERER_MONEY", groupKey: "status", sortOrder: 300, pinned: true }, { scope: "PROPERTY_SCOPE_USER", key: "user.blood_type", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.blood_type", searchable: true, groupKey: "personal", sortOrder: 400 }, { scope: "PROPERTY_SCOPE_USER", key: "user.mugshot", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.mugshot", groupKey: "personal", sortOrder: 500 }, { scope: "PROPERTY_SCOPE_USER", key: "user.files", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.file", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "personal", sortOrder: 600 }, { scope: "PROPERTY_SCOPE_USER", key: "user.labels", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.label", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "labels", sortOrder: 500 }, { scope: "PROPERTY_SCOPE_USER", key: "user.email", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.mail", searchable: true, behavior: "PROPERTY_BEHAVIOR_MANAGED", renderer: "PROPERTY_RENDERER_EMAIL", groupKey: "contact", sortOrder: 200 }], propertyGroups: [{ scope: "PROPERTY_SCOPE_USER", key: "personal", displayKey: "components.settings.property_definitions.groups.personal", sortOrder: 100 }, { scope: "PROPERTY_SCOPE_USER", key: "contact", displayKey: "components.settings.property_definitions.groups.contact", sortOrder: 200 }, { scope: "PROPERTY_SCOPE_USER", key: "status", displayKey: "components.settings.property_definitions.groups.status", sortOrder: 300 }, { scope: "PROPERTY_SCOPE_USER", key: "labels", displayKey: "components.settings.property_definitions.groups.labels", sortOrder: 400 }, { scope: "PROPERTY_SCOPE_USER", key: "licenses", displayKey: "components.settings.property_definitions.groups.licenses", sortOrder: 500 }] } });
@@ -119,7 +119,7 @@ class CompleteCitizensRequest$Type extends MessageType<CompleteCitizensRequest>
119
119
  { no: 1, name: "search", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "64" } } } },
120
120
  { no: 2, name: "current_job", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
121
121
  { no: 3, name: "on_duty", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
122
- { no: 4, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { items: { int32: { gt: 0 } } } } } },
122
+ { no: 4, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "10", items: { int32: { gt: 0 } } } } } },
123
123
  { no: 5, name: "user_ids_only", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
124
124
  ]);
125
125
  }
@@ -355,7 +355,7 @@ class CompleteDocumentCategoriesRequest$Type extends MessageType<CompleteDocumen
355
355
  constructor() {
356
356
  super("services.completor.CompleteDocumentCategoriesRequest", [
357
357
  { no: 1, name: "search", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "64" } } } },
358
- { no: 2, name: "category_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { items: { int64: { gt: "0" } } } } } }
358
+ { no: 2, name: "category_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { maxItems: "50", items: { int64: { gt: "0" } } } } } }
359
359
  ]);
360
360
  }
361
361
  create(value?: PartialMessage<CompleteDocumentCategoriesRequest>): CompleteDocumentCategoriesRequest {
@@ -960,7 +960,7 @@ class UpsertApprovalTasksRequest$Type extends MessageType<UpsertApprovalTasksReq
960
960
  super("services.documents.UpsertApprovalTasksRequest", [
961
961
  { no: 1, name: "document_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } },
962
962
  { no: 2, name: "snapshot_date", kind: "message", T: () => Timestamp },
963
- { no: 3, name: "seeds", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => ApprovalTaskSeed }
963
+ { no: 3, name: "seeds", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => ApprovalTaskSeed, options: { "buf.validate.field": { repeated: { maxItems: "10" } } } }
964
964
  ]);
965
965
  }
966
966
  create(value?: PartialMessage<UpsertApprovalTasksRequest>): UpsertApprovalTasksRequest {
@@ -1083,7 +1083,7 @@ class DeleteApprovalTasksRequest$Type extends MessageType<DeleteApprovalTasksReq
1083
1083
  constructor() {
1084
1084
  super("services.documents.DeleteApprovalTasksRequest", [
1085
1085
  { no: 1, name: "document_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } },
1086
- { no: 2, name: "task_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { minItems: "1" } } } },
1086
+ { no: 2, name: "task_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { minItems: "1", maxItems: "15" } } } },
1087
1087
  { no: 3, name: "delete_all_pending", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
1088
1088
  ]);
1089
1089
  }