@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
@@ -20,6 +20,8 @@ import type { CreateOrUpdateQualificationRequestResponse } from "./qualification
20
20
  import type { CreateOrUpdateQualificationRequestRequest } from "./qualifications";
21
21
  import type { ListQualificationRequestsResponse } from "./qualifications";
22
22
  import type { ListQualificationRequestsRequest } from "./qualifications";
23
+ import type { ListQualificationActivityResponse } from "./qualifications";
24
+ import type { ListQualificationActivityRequest } from "./qualifications";
23
25
  import type { DeleteQualificationResponse } from "./qualifications";
24
26
  import type { DeleteQualificationRequest } from "./qualifications";
25
27
  import type { UpdateQualificationResponse } from "./qualifications";
@@ -57,6 +59,10 @@ export interface IQualificationsServiceClient {
57
59
  * @generated from protobuf rpc: DeleteQualification
58
60
  */
59
61
  deleteQualification(input: DeleteQualificationRequest, options?: RpcOptions): UnaryCall<DeleteQualificationRequest, DeleteQualificationResponse>;
62
+ /**
63
+ * @generated from protobuf rpc: ListQualificationActivity
64
+ */
65
+ listQualificationActivity(input: ListQualificationActivityRequest, options?: RpcOptions): UnaryCall<ListQualificationActivityRequest, ListQualificationActivityResponse>;
60
66
  /**
61
67
  * @generated from protobuf rpc: ListQualificationRequests
62
68
  */
@@ -130,53 +136,60 @@ export class QualificationsServiceClient implements IQualificationsServiceClient
130
136
  const method = this.methods[4], opt = this._transport.mergeOptions(options);
131
137
  return stackIntercept<DeleteQualificationRequest, DeleteQualificationResponse>("unary", this._transport, method, opt, input);
132
138
  }
139
+ /**
140
+ * @generated from protobuf rpc: ListQualificationActivity
141
+ */
142
+ listQualificationActivity(input: ListQualificationActivityRequest, options?: RpcOptions): UnaryCall<ListQualificationActivityRequest, ListQualificationActivityResponse> {
143
+ const method = this.methods[5], opt = this._transport.mergeOptions(options);
144
+ return stackIntercept<ListQualificationActivityRequest, ListQualificationActivityResponse>("unary", this._transport, method, opt, input);
145
+ }
133
146
  /**
134
147
  * @generated from protobuf rpc: ListQualificationRequests
135
148
  */
136
149
  listQualificationRequests(input: ListQualificationRequestsRequest, options?: RpcOptions): UnaryCall<ListQualificationRequestsRequest, ListQualificationRequestsResponse> {
137
- const method = this.methods[5], opt = this._transport.mergeOptions(options);
150
+ const method = this.methods[6], opt = this._transport.mergeOptions(options);
138
151
  return stackIntercept<ListQualificationRequestsRequest, ListQualificationRequestsResponse>("unary", this._transport, method, opt, input);
139
152
  }
140
153
  /**
141
154
  * @generated from protobuf rpc: CreateOrUpdateQualificationRequest
142
155
  */
143
156
  createOrUpdateQualificationRequest(input: CreateOrUpdateQualificationRequestRequest, options?: RpcOptions): UnaryCall<CreateOrUpdateQualificationRequestRequest, CreateOrUpdateQualificationRequestResponse> {
144
- const method = this.methods[6], opt = this._transport.mergeOptions(options);
157
+ const method = this.methods[7], opt = this._transport.mergeOptions(options);
145
158
  return stackIntercept<CreateOrUpdateQualificationRequestRequest, CreateOrUpdateQualificationRequestResponse>("unary", this._transport, method, opt, input);
146
159
  }
147
160
  /**
148
161
  * @generated from protobuf rpc: DeleteQualificationReq
149
162
  */
150
163
  deleteQualificationReq(input: DeleteQualificationReqRequest, options?: RpcOptions): UnaryCall<DeleteQualificationReqRequest, DeleteQualificationReqResponse> {
151
- const method = this.methods[7], opt = this._transport.mergeOptions(options);
164
+ const method = this.methods[8], opt = this._transport.mergeOptions(options);
152
165
  return stackIntercept<DeleteQualificationReqRequest, DeleteQualificationReqResponse>("unary", this._transport, method, opt, input);
153
166
  }
154
167
  /**
155
168
  * @generated from protobuf rpc: ListQualificationsResults
156
169
  */
157
170
  listQualificationsResults(input: ListQualificationsResultsRequest, options?: RpcOptions): UnaryCall<ListQualificationsResultsRequest, ListQualificationsResultsResponse> {
158
- const method = this.methods[8], opt = this._transport.mergeOptions(options);
171
+ const method = this.methods[9], opt = this._transport.mergeOptions(options);
159
172
  return stackIntercept<ListQualificationsResultsRequest, ListQualificationsResultsResponse>("unary", this._transport, method, opt, input);
160
173
  }
161
174
  /**
162
175
  * @generated from protobuf rpc: CreateOrUpdateQualificationResult
163
176
  */
164
177
  createOrUpdateQualificationResult(input: CreateOrUpdateQualificationResultRequest, options?: RpcOptions): UnaryCall<CreateOrUpdateQualificationResultRequest, CreateOrUpdateQualificationResultResponse> {
165
- const method = this.methods[9], opt = this._transport.mergeOptions(options);
178
+ const method = this.methods[10], opt = this._transport.mergeOptions(options);
166
179
  return stackIntercept<CreateOrUpdateQualificationResultRequest, CreateOrUpdateQualificationResultResponse>("unary", this._transport, method, opt, input);
167
180
  }
168
181
  /**
169
182
  * @generated from protobuf rpc: DeleteQualificationResult
170
183
  */
171
184
  deleteQualificationResult(input: DeleteQualificationResultRequest, options?: RpcOptions): UnaryCall<DeleteQualificationResultRequest, DeleteQualificationResultResponse> {
172
- const method = this.methods[10], opt = this._transport.mergeOptions(options);
185
+ const method = this.methods[11], opt = this._transport.mergeOptions(options);
173
186
  return stackIntercept<DeleteQualificationResultRequest, DeleteQualificationResultResponse>("unary", this._transport, method, opt, input);
174
187
  }
175
188
  /**
176
189
  * @generated from protobuf rpc: UploadFile
177
190
  */
178
191
  uploadFile(options?: RpcOptions): ClientStreamingCall<UploadFileRequest, UploadFileResponse> {
179
- const method = this.methods[11], opt = this._transport.mergeOptions(options);
192
+ const method = this.methods[12], opt = this._transport.mergeOptions(options);
180
193
  return stackIntercept<UploadFileRequest, UploadFileResponse>("clientStreaming", this._transport, method, opt);
181
194
  }
182
195
  }
@@ -20,6 +20,9 @@ import { ResultStatus } from "../../resources/qualifications/qualifications";
20
20
  import { QualificationRequest } from "../../resources/qualifications/qualifications";
21
21
  import { RequestStatus } from "../../resources/qualifications/qualifications";
22
22
  import { Access } from "../../resources/access/access";
23
+ import { QualificationActivity } from "../../resources/qualifications/activity/activity";
24
+ import { Timestamp } from "../../resources/timestamp/timestamp";
25
+ import { QualificationActivityType } from "../../resources/qualifications/activity/activity";
23
26
  import { ContentType } from "../../resources/common/content/content";
24
27
  import { Qualification } from "../../resources/qualifications/qualifications";
25
28
  import { PaginationResponse } from "../../resources/common/database/database";
@@ -133,6 +136,55 @@ export interface DeleteQualificationRequest {
133
136
  */
134
137
  export interface DeleteQualificationResponse {
135
138
  }
139
+ /**
140
+ * @generated from protobuf message services.qualifications.ListQualificationActivityRequest
141
+ */
142
+ export interface ListQualificationActivityRequest {
143
+ /**
144
+ * @generated from protobuf field: resources.common.database.PaginationRequest pagination = 1
145
+ */
146
+ pagination?: PaginationRequest;
147
+ /**
148
+ * @generated from protobuf field: optional resources.common.database.Sort sort = 2
149
+ */
150
+ sort?: Sort;
151
+ /**
152
+ * @generated from protobuf field: int64 qualification_id = 3
153
+ */
154
+ qualificationId: number;
155
+ /**
156
+ * Search params
157
+ * Activity types to filter by. If empty, all activity types will be returned.
158
+ *
159
+ * @generated from protobuf field: repeated resources.qualifications.activity.QualificationActivityType types = 4
160
+ */
161
+ types: QualificationActivityType[];
162
+ /**
163
+ * @generated from protobuf field: optional int32 user_id = 5
164
+ */
165
+ userId?: number;
166
+ /**
167
+ * @generated from protobuf field: optional resources.timestamp.Timestamp from = 6
168
+ */
169
+ from?: Timestamp;
170
+ /**
171
+ * @generated from protobuf field: optional resources.timestamp.Timestamp to = 7
172
+ */
173
+ to?: Timestamp;
174
+ }
175
+ /**
176
+ * @generated from protobuf message services.qualifications.ListQualificationActivityResponse
177
+ */
178
+ export interface ListQualificationActivityResponse {
179
+ /**
180
+ * @generated from protobuf field: resources.common.database.PaginationResponse pagination = 1
181
+ */
182
+ pagination?: PaginationResponse;
183
+ /**
184
+ * @generated from protobuf field: repeated resources.qualifications.activity.QualificationActivity activity = 2
185
+ */
186
+ activity: QualificationActivity[];
187
+ }
136
188
  // Access
137
189
 
138
190
  /**
@@ -199,6 +251,10 @@ export interface ListQualificationRequestsRequest {
199
251
  * @generated from protobuf field: repeated int32 user_ids = 5
200
252
  */
201
253
  userIds: number[];
254
+ /**
255
+ * @generated from protobuf field: optional string search = 6
256
+ */
257
+ search?: string;
202
258
  }
203
259
  /**
204
260
  * @generated from protobuf message services.qualifications.ListQualificationRequestsResponse
@@ -221,6 +277,12 @@ export interface CreateOrUpdateQualificationRequestRequest {
221
277
  * @generated from protobuf field: resources.qualifications.QualificationRequest request = 1
222
278
  */
223
279
  request?: QualificationRequest;
280
+ /**
281
+ * Suppresses the inbox notification normally sent when a tutor updates the request status.
282
+ *
283
+ * @generated from protobuf field: bool skip_notification = 2
284
+ */
285
+ skipNotification: boolean;
224
286
  }
225
287
  /**
226
288
  * @generated from protobuf message services.qualifications.CreateOrUpdateQualificationRequestResponse
@@ -243,6 +305,12 @@ export interface DeleteQualificationReqRequest {
243
305
  * @generated from protobuf field: int32 user_id = 2
244
306
  */
245
307
  userId: number;
308
+ /**
309
+ * Suppresses the inbox notification normally sent to the affected user.
310
+ *
311
+ * @generated from protobuf field: bool skip_notification = 3
312
+ */
313
+ skipNotification: boolean;
246
314
  }
247
315
  /**
248
316
  * @generated from protobuf message services.qualifications.DeleteQualificationReqResponse
@@ -277,6 +345,10 @@ export interface ListQualificationsResultsRequest {
277
345
  * @generated from protobuf field: repeated int32 user_ids = 5
278
346
  */
279
347
  userIds: number[];
348
+ /**
349
+ * @generated from protobuf field: optional string search = 6
350
+ */
351
+ search?: string;
280
352
  }
281
353
  /**
282
354
  * @generated from protobuf message services.qualifications.ListQualificationsResultsResponse
@@ -303,6 +375,12 @@ export interface CreateOrUpdateQualificationResultRequest {
303
375
  * @generated from protobuf field: optional resources.qualifications.exam.ExamGrading grading = 2
304
376
  */
305
377
  grading?: ExamGrading;
378
+ /**
379
+ * Suppresses the inbox notification normally sent to the affected user.
380
+ *
381
+ * @generated from protobuf field: bool skip_notification = 3
382
+ */
383
+ skipNotification: boolean;
306
384
  }
307
385
  /**
308
386
  * @generated from protobuf message services.qualifications.CreateOrUpdateQualificationResultResponse
@@ -321,6 +399,12 @@ export interface DeleteQualificationResultRequest {
321
399
  * @generated from protobuf field: int64 result_id = 1
322
400
  */
323
401
  resultId: number;
402
+ /**
403
+ * Suppresses the inbox notification normally sent to the affected user.
404
+ *
405
+ * @generated from protobuf field: bool skip_notification = 2
406
+ */
407
+ skipNotification: boolean;
324
408
  }
325
409
  /**
326
410
  * @generated from protobuf message services.qualifications.DeleteQualificationResultResponse
@@ -821,6 +905,158 @@ class DeleteQualificationResponse$Type extends MessageType<DeleteQualificationRe
821
905
  */
822
906
  export const DeleteQualificationResponse = new DeleteQualificationResponse$Type();
823
907
  // @generated message type with reflection information, may provide speed optimized methods
908
+ class ListQualificationActivityRequest$Type extends MessageType<ListQualificationActivityRequest> {
909
+ constructor() {
910
+ super("services.qualifications.ListQualificationActivityRequest", [
911
+ { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
912
+ { no: 2, name: "sort", kind: "message", T: () => Sort },
913
+ { no: 3, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
914
+ { no: 4, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.qualifications.activity.QualificationActivityType", QualificationActivityType, "QUALIFICATION_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "18", items: { enum: { definedOnly: true } } } } } },
915
+ { no: 5, name: "user_id", kind: "scalar", opt: true, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } },
916
+ { no: 6, name: "from", kind: "message", T: () => Timestamp },
917
+ { no: 7, name: "to", kind: "message", T: () => Timestamp }
918
+ ]);
919
+ }
920
+ create(value?: PartialMessage<ListQualificationActivityRequest>): ListQualificationActivityRequest {
921
+ const message = globalThis.Object.create((this.messagePrototype!));
922
+ message.qualificationId = 0;
923
+ message.types = [];
924
+ if (value !== undefined)
925
+ reflectionMergePartial<ListQualificationActivityRequest>(this, message, value);
926
+ return message;
927
+ }
928
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListQualificationActivityRequest): ListQualificationActivityRequest {
929
+ let message = target ?? this.create(), end = reader.pos + length;
930
+ while (reader.pos < end) {
931
+ let [fieldNo, wireType] = reader.tag();
932
+ switch (fieldNo) {
933
+ case /* resources.common.database.PaginationRequest pagination */ 1:
934
+ message.pagination = PaginationRequest.internalBinaryRead(reader, reader.uint32(), options, message.pagination);
935
+ break;
936
+ case /* optional resources.common.database.Sort sort */ 2:
937
+ message.sort = Sort.internalBinaryRead(reader, reader.uint32(), options, message.sort);
938
+ break;
939
+ case /* int64 qualification_id */ 3:
940
+ message.qualificationId = reader.int64().toNumber();
941
+ break;
942
+ case /* repeated resources.qualifications.activity.QualificationActivityType types */ 4:
943
+ if (wireType === WireType.LengthDelimited)
944
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
945
+ message.types.push(reader.int32());
946
+ else
947
+ message.types.push(reader.int32());
948
+ break;
949
+ case /* optional int32 user_id */ 5:
950
+ message.userId = reader.int32();
951
+ break;
952
+ case /* optional resources.timestamp.Timestamp from */ 6:
953
+ message.from = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.from);
954
+ break;
955
+ case /* optional resources.timestamp.Timestamp to */ 7:
956
+ message.to = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.to);
957
+ break;
958
+ default:
959
+ let u = options.readUnknownField;
960
+ if (u === "throw")
961
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
962
+ let d = reader.skip(wireType);
963
+ if (u !== false)
964
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
965
+ }
966
+ }
967
+ return message;
968
+ }
969
+ internalBinaryWrite(message: ListQualificationActivityRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
970
+ /* resources.common.database.PaginationRequest pagination = 1; */
971
+ if (message.pagination)
972
+ PaginationRequest.internalBinaryWrite(message.pagination, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
973
+ /* optional resources.common.database.Sort sort = 2; */
974
+ if (message.sort)
975
+ Sort.internalBinaryWrite(message.sort, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
976
+ /* int64 qualification_id = 3; */
977
+ if (message.qualificationId !== 0)
978
+ writer.tag(3, WireType.Varint).int64(message.qualificationId);
979
+ /* repeated resources.qualifications.activity.QualificationActivityType types = 4; */
980
+ if (message.types.length) {
981
+ writer.tag(4, WireType.LengthDelimited).fork();
982
+ for (let i = 0; i < message.types.length; i++)
983
+ writer.int32(message.types[i]);
984
+ writer.join();
985
+ }
986
+ /* optional int32 user_id = 5; */
987
+ if (message.userId !== undefined)
988
+ writer.tag(5, WireType.Varint).int32(message.userId);
989
+ /* optional resources.timestamp.Timestamp from = 6; */
990
+ if (message.from)
991
+ Timestamp.internalBinaryWrite(message.from, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
992
+ /* optional resources.timestamp.Timestamp to = 7; */
993
+ if (message.to)
994
+ Timestamp.internalBinaryWrite(message.to, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
995
+ let u = options.writeUnknownFields;
996
+ if (u !== false)
997
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
998
+ return writer;
999
+ }
1000
+ }
1001
+ /**
1002
+ * @generated MessageType for protobuf message services.qualifications.ListQualificationActivityRequest
1003
+ */
1004
+ export const ListQualificationActivityRequest = new ListQualificationActivityRequest$Type();
1005
+ // @generated message type with reflection information, may provide speed optimized methods
1006
+ class ListQualificationActivityResponse$Type extends MessageType<ListQualificationActivityResponse> {
1007
+ constructor() {
1008
+ super("services.qualifications.ListQualificationActivityResponse", [
1009
+ { no: 1, name: "pagination", kind: "message", T: () => PaginationResponse, options: { "buf.validate.field": { required: true } } },
1010
+ { no: 2, name: "activity", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => QualificationActivity, options: { "codegen.itemslen.enabled": true } }
1011
+ ]);
1012
+ }
1013
+ create(value?: PartialMessage<ListQualificationActivityResponse>): ListQualificationActivityResponse {
1014
+ const message = globalThis.Object.create((this.messagePrototype!));
1015
+ message.activity = [];
1016
+ if (value !== undefined)
1017
+ reflectionMergePartial<ListQualificationActivityResponse>(this, message, value);
1018
+ return message;
1019
+ }
1020
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListQualificationActivityResponse): ListQualificationActivityResponse {
1021
+ let message = target ?? this.create(), end = reader.pos + length;
1022
+ while (reader.pos < end) {
1023
+ let [fieldNo, wireType] = reader.tag();
1024
+ switch (fieldNo) {
1025
+ case /* resources.common.database.PaginationResponse pagination */ 1:
1026
+ message.pagination = PaginationResponse.internalBinaryRead(reader, reader.uint32(), options, message.pagination);
1027
+ break;
1028
+ case /* repeated resources.qualifications.activity.QualificationActivity activity */ 2:
1029
+ message.activity.push(QualificationActivity.internalBinaryRead(reader, reader.uint32(), options));
1030
+ break;
1031
+ default:
1032
+ let u = options.readUnknownField;
1033
+ if (u === "throw")
1034
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1035
+ let d = reader.skip(wireType);
1036
+ if (u !== false)
1037
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1038
+ }
1039
+ }
1040
+ return message;
1041
+ }
1042
+ internalBinaryWrite(message: ListQualificationActivityResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1043
+ /* resources.common.database.PaginationResponse pagination = 1; */
1044
+ if (message.pagination)
1045
+ PaginationResponse.internalBinaryWrite(message.pagination, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1046
+ /* repeated resources.qualifications.activity.QualificationActivity activity = 2; */
1047
+ for (let i = 0; i < message.activity.length; i++)
1048
+ QualificationActivity.internalBinaryWrite(message.activity[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
1049
+ let u = options.writeUnknownFields;
1050
+ if (u !== false)
1051
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1052
+ return writer;
1053
+ }
1054
+ }
1055
+ /**
1056
+ * @generated MessageType for protobuf message services.qualifications.ListQualificationActivityResponse
1057
+ */
1058
+ export const ListQualificationActivityResponse = new ListQualificationActivityResponse$Type();
1059
+ // @generated message type with reflection information, may provide speed optimized methods
824
1060
  class GetQualificationAccessRequest$Type extends MessageType<GetQualificationAccessRequest> {
825
1061
  constructor() {
826
1062
  super("services.qualifications.GetQualificationAccessRequest", [
@@ -1012,8 +1248,9 @@ class ListQualificationRequestsRequest$Type extends MessageType<ListQualificatio
1012
1248
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
1013
1249
  { no: 2, name: "sort", kind: "message", T: () => Sort },
1014
1250
  { no: 3, name: "qualification_id", kind: "scalar", opt: true, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
1015
- { no: 4, name: "status", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.qualifications.RequestStatus", RequestStatus, "REQUEST_STATUS_"], options: { "buf.validate.field": { repeated: { items: { enum: { definedOnly: true } } } } } },
1016
- { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "5", items: { int32: { gt: 0 } } } } } }
1251
+ { no: 4, name: "status", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.qualifications.RequestStatus", RequestStatus, "REQUEST_STATUS_"], options: { "buf.validate.field": { repeated: { maxItems: "6", items: { enum: { definedOnly: true } } } } } },
1252
+ { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "10", items: { int32: { gt: 0 } } } } } },
1253
+ { no: 6, name: "search", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "64" } } } }
1017
1254
  ]);
1018
1255
  }
1019
1256
  create(value?: PartialMessage<ListQualificationRequestsRequest>): ListQualificationRequestsRequest {
@@ -1052,6 +1289,9 @@ class ListQualificationRequestsRequest$Type extends MessageType<ListQualificatio
1052
1289
  else
1053
1290
  message.userIds.push(reader.int32());
1054
1291
  break;
1292
+ case /* optional string search */ 6:
1293
+ message.search = reader.string();
1294
+ break;
1055
1295
  default:
1056
1296
  let u = options.readUnknownField;
1057
1297
  if (u === "throw")
@@ -1087,6 +1327,9 @@ class ListQualificationRequestsRequest$Type extends MessageType<ListQualificatio
1087
1327
  writer.int32(message.userIds[i]);
1088
1328
  writer.join();
1089
1329
  }
1330
+ /* optional string search = 6; */
1331
+ if (message.search !== undefined)
1332
+ writer.tag(6, WireType.LengthDelimited).string(message.search);
1090
1333
  let u = options.writeUnknownFields;
1091
1334
  if (u !== false)
1092
1335
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1155,11 +1398,13 @@ export const ListQualificationRequestsResponse = new ListQualificationRequestsRe
1155
1398
  class CreateOrUpdateQualificationRequestRequest$Type extends MessageType<CreateOrUpdateQualificationRequestRequest> {
1156
1399
  constructor() {
1157
1400
  super("services.qualifications.CreateOrUpdateQualificationRequestRequest", [
1158
- { no: 1, name: "request", kind: "message", T: () => QualificationRequest, options: { "buf.validate.field": { required: true } } }
1401
+ { no: 1, name: "request", kind: "message", T: () => QualificationRequest, options: { "buf.validate.field": { required: true } } },
1402
+ { no: 2, name: "skip_notification", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
1159
1403
  ]);
1160
1404
  }
1161
1405
  create(value?: PartialMessage<CreateOrUpdateQualificationRequestRequest>): CreateOrUpdateQualificationRequestRequest {
1162
1406
  const message = globalThis.Object.create((this.messagePrototype!));
1407
+ message.skipNotification = false;
1163
1408
  if (value !== undefined)
1164
1409
  reflectionMergePartial<CreateOrUpdateQualificationRequestRequest>(this, message, value);
1165
1410
  return message;
@@ -1172,6 +1417,9 @@ class CreateOrUpdateQualificationRequestRequest$Type extends MessageType<CreateO
1172
1417
  case /* resources.qualifications.QualificationRequest request */ 1:
1173
1418
  message.request = QualificationRequest.internalBinaryRead(reader, reader.uint32(), options, message.request);
1174
1419
  break;
1420
+ case /* bool skip_notification */ 2:
1421
+ message.skipNotification = reader.bool();
1422
+ break;
1175
1423
  default:
1176
1424
  let u = options.readUnknownField;
1177
1425
  if (u === "throw")
@@ -1187,6 +1435,9 @@ class CreateOrUpdateQualificationRequestRequest$Type extends MessageType<CreateO
1187
1435
  /* resources.qualifications.QualificationRequest request = 1; */
1188
1436
  if (message.request)
1189
1437
  QualificationRequest.internalBinaryWrite(message.request, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1438
+ /* bool skip_notification = 2; */
1439
+ if (message.skipNotification !== false)
1440
+ writer.tag(2, WireType.Varint).bool(message.skipNotification);
1190
1441
  let u = options.writeUnknownFields;
1191
1442
  if (u !== false)
1192
1443
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1248,13 +1499,15 @@ class DeleteQualificationReqRequest$Type extends MessageType<DeleteQualification
1248
1499
  constructor() {
1249
1500
  super("services.qualifications.DeleteQualificationReqRequest", [
1250
1501
  { no: 1, name: "qualification_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
1251
- { no: 2, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } }
1502
+ { no: 2, name: "user_id", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gt: 0 } } } },
1503
+ { no: 3, name: "skip_notification", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
1252
1504
  ]);
1253
1505
  }
1254
1506
  create(value?: PartialMessage<DeleteQualificationReqRequest>): DeleteQualificationReqRequest {
1255
1507
  const message = globalThis.Object.create((this.messagePrototype!));
1256
1508
  message.qualificationId = 0;
1257
1509
  message.userId = 0;
1510
+ message.skipNotification = false;
1258
1511
  if (value !== undefined)
1259
1512
  reflectionMergePartial<DeleteQualificationReqRequest>(this, message, value);
1260
1513
  return message;
@@ -1270,6 +1523,9 @@ class DeleteQualificationReqRequest$Type extends MessageType<DeleteQualification
1270
1523
  case /* int32 user_id */ 2:
1271
1524
  message.userId = reader.int32();
1272
1525
  break;
1526
+ case /* bool skip_notification */ 3:
1527
+ message.skipNotification = reader.bool();
1528
+ break;
1273
1529
  default:
1274
1530
  let u = options.readUnknownField;
1275
1531
  if (u === "throw")
@@ -1288,6 +1544,9 @@ class DeleteQualificationReqRequest$Type extends MessageType<DeleteQualification
1288
1544
  /* int32 user_id = 2; */
1289
1545
  if (message.userId !== 0)
1290
1546
  writer.tag(2, WireType.Varint).int32(message.userId);
1547
+ /* bool skip_notification = 3; */
1548
+ if (message.skipNotification !== false)
1549
+ writer.tag(3, WireType.Varint).bool(message.skipNotification);
1291
1550
  let u = options.writeUnknownFields;
1292
1551
  if (u !== false)
1293
1552
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1343,8 +1602,9 @@ class ListQualificationsResultsRequest$Type extends MessageType<ListQualificatio
1343
1602
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
1344
1603
  { no: 2, name: "sort", kind: "message", T: () => Sort },
1345
1604
  { no: 3, name: "qualification_id", kind: "scalar", opt: true, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
1346
- { no: 4, name: "status", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.qualifications.ResultStatus", ResultStatus, "RESULT_STATUS_"], options: { "buf.validate.field": { repeated: { items: { enum: { definedOnly: true } } } } } },
1347
- { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "5", items: { int32: { gt: 0 } } } } } }
1605
+ { no: 4, name: "status", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.qualifications.ResultStatus", ResultStatus, "RESULT_STATUS_"], options: { "buf.validate.field": { repeated: { maxItems: "3", items: { enum: { definedOnly: true } } } } } },
1606
+ { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "10", items: { int32: { gt: 0 } } } } } },
1607
+ { no: 6, name: "search", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "64" } } } }
1348
1608
  ]);
1349
1609
  }
1350
1610
  create(value?: PartialMessage<ListQualificationsResultsRequest>): ListQualificationsResultsRequest {
@@ -1383,6 +1643,9 @@ class ListQualificationsResultsRequest$Type extends MessageType<ListQualificatio
1383
1643
  else
1384
1644
  message.userIds.push(reader.int32());
1385
1645
  break;
1646
+ case /* optional string search */ 6:
1647
+ message.search = reader.string();
1648
+ break;
1386
1649
  default:
1387
1650
  let u = options.readUnknownField;
1388
1651
  if (u === "throw")
@@ -1418,6 +1681,9 @@ class ListQualificationsResultsRequest$Type extends MessageType<ListQualificatio
1418
1681
  writer.int32(message.userIds[i]);
1419
1682
  writer.join();
1420
1683
  }
1684
+ /* optional string search = 6; */
1685
+ if (message.search !== undefined)
1686
+ writer.tag(6, WireType.LengthDelimited).string(message.search);
1421
1687
  let u = options.writeUnknownFields;
1422
1688
  if (u !== false)
1423
1689
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1487,11 +1753,13 @@ class CreateOrUpdateQualificationResultRequest$Type extends MessageType<CreateOr
1487
1753
  constructor() {
1488
1754
  super("services.qualifications.CreateOrUpdateQualificationResultRequest", [
1489
1755
  { no: 1, name: "result", kind: "message", T: () => QualificationResult, options: { "buf.validate.field": { required: true } } },
1490
- { no: 2, name: "grading", kind: "message", T: () => ExamGrading }
1756
+ { no: 2, name: "grading", kind: "message", T: () => ExamGrading },
1757
+ { no: 3, name: "skip_notification", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
1491
1758
  ]);
1492
1759
  }
1493
1760
  create(value?: PartialMessage<CreateOrUpdateQualificationResultRequest>): CreateOrUpdateQualificationResultRequest {
1494
1761
  const message = globalThis.Object.create((this.messagePrototype!));
1762
+ message.skipNotification = false;
1495
1763
  if (value !== undefined)
1496
1764
  reflectionMergePartial<CreateOrUpdateQualificationResultRequest>(this, message, value);
1497
1765
  return message;
@@ -1507,6 +1775,9 @@ class CreateOrUpdateQualificationResultRequest$Type extends MessageType<CreateOr
1507
1775
  case /* optional resources.qualifications.exam.ExamGrading grading */ 2:
1508
1776
  message.grading = ExamGrading.internalBinaryRead(reader, reader.uint32(), options, message.grading);
1509
1777
  break;
1778
+ case /* bool skip_notification */ 3:
1779
+ message.skipNotification = reader.bool();
1780
+ break;
1510
1781
  default:
1511
1782
  let u = options.readUnknownField;
1512
1783
  if (u === "throw")
@@ -1525,6 +1796,9 @@ class CreateOrUpdateQualificationResultRequest$Type extends MessageType<CreateOr
1525
1796
  /* optional resources.qualifications.exam.ExamGrading grading = 2; */
1526
1797
  if (message.grading)
1527
1798
  ExamGrading.internalBinaryWrite(message.grading, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
1799
+ /* bool skip_notification = 3; */
1800
+ if (message.skipNotification !== false)
1801
+ writer.tag(3, WireType.Varint).bool(message.skipNotification);
1528
1802
  let u = options.writeUnknownFields;
1529
1803
  if (u !== false)
1530
1804
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1585,12 +1859,14 @@ export const CreateOrUpdateQualificationResultResponse = new CreateOrUpdateQuali
1585
1859
  class DeleteQualificationResultRequest$Type extends MessageType<DeleteQualificationResultRequest> {
1586
1860
  constructor() {
1587
1861
  super("services.qualifications.DeleteQualificationResultRequest", [
1588
- { no: 1, name: "result_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ }
1862
+ { no: 1, name: "result_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
1863
+ { no: 2, name: "skip_notification", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
1589
1864
  ]);
1590
1865
  }
1591
1866
  create(value?: PartialMessage<DeleteQualificationResultRequest>): DeleteQualificationResultRequest {
1592
1867
  const message = globalThis.Object.create((this.messagePrototype!));
1593
1868
  message.resultId = 0;
1869
+ message.skipNotification = false;
1594
1870
  if (value !== undefined)
1595
1871
  reflectionMergePartial<DeleteQualificationResultRequest>(this, message, value);
1596
1872
  return message;
@@ -1603,6 +1879,9 @@ class DeleteQualificationResultRequest$Type extends MessageType<DeleteQualificat
1603
1879
  case /* int64 result_id */ 1:
1604
1880
  message.resultId = reader.int64().toNumber();
1605
1881
  break;
1882
+ case /* bool skip_notification */ 2:
1883
+ message.skipNotification = reader.bool();
1884
+ break;
1606
1885
  default:
1607
1886
  let u = options.readUnknownField;
1608
1887
  if (u === "throw")
@@ -1618,6 +1897,9 @@ class DeleteQualificationResultRequest$Type extends MessageType<DeleteQualificat
1618
1897
  /* int64 result_id = 1; */
1619
1898
  if (message.resultId !== 0)
1620
1899
  writer.tag(1, WireType.Varint).int64(message.resultId);
1900
+ /* bool skip_notification = 2; */
1901
+ if (message.skipNotification !== false)
1902
+ writer.tag(2, WireType.Varint).bool(message.skipNotification);
1621
1903
  let u = options.writeUnknownFields;
1622
1904
  if (u !== false)
1623
1905
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1675,6 +1957,7 @@ export const QualificationsService = new ServiceType("services.qualifications.Qu
1675
1957
  { name: "CreateQualification", options: { "codegen.perms.perms": { enabled: true, name: "UpdateQualification" } }, I: CreateQualificationRequest, O: CreateQualificationResponse },
1676
1958
  { name: "UpdateQualification", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Access", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Own", "Lower_Rank", "Same_Rank", "Any"] }, { key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Public"] }] } }, I: UpdateQualificationRequest, O: UpdateQualificationResponse },
1677
1959
  { name: "DeleteQualification", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Access", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Own", "Lower_Rank", "Same_Rank", "Any"] }] } }, I: DeleteQualificationRequest, O: DeleteQualificationResponse },
1960
+ { name: "ListQualificationActivity", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: ListQualificationActivityRequest, O: ListQualificationActivityResponse },
1678
1961
  { name: "ListQualificationRequests", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: ListQualificationRequestsRequest, O: ListQualificationRequestsResponse },
1679
1962
  { name: "CreateOrUpdateQualificationRequest", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: CreateOrUpdateQualificationRequestRequest, O: CreateOrUpdateQualificationRequestResponse },
1680
1963
  { name: "DeleteQualificationReq", options: { "codegen.perms.perms": { enabled: true, name: "ListQualifications" } }, I: DeleteQualificationReqRequest, O: DeleteQualificationReqResponse },