@fivenet-app/gen 2026.7.3 → 2026.8.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 (40) hide show
  1. package/google/protobuf/descriptor.ts +3 -11
  2. package/google/protobuf/timestamp.ts +6 -7
  3. package/package.json +1 -1
  4. package/perms.ts +21 -4
  5. package/resources/audit/audit.ts +19 -9
  6. package/resources/calendar/calendar.ts +11 -0
  7. package/resources/calendar/entries/entries.ts +23 -0
  8. package/resources/centrum/dispatches/dispatches.ts +8 -8
  9. package/resources/centrum/units/units.ts +5 -5
  10. package/resources/citizens/labels/access.ts +10 -6
  11. package/resources/dbsync/state.ts +192 -0
  12. package/resources/documents/stamps/access.ts +25 -0
  13. package/resources/documents/stamps/stamp.ts +0 -21
  14. package/resources/documents/templates/templates.ts +61 -83
  15. package/resources/documents/workflow/workflow.ts +61 -1
  16. package/resources/jobs/groups/access/access.ts +29 -0
  17. package/resources/jobs/groups/activity.ts +332 -0
  18. package/resources/jobs/groups/group.ts +1666 -0
  19. package/resources/jobs/user_selector.ts +184 -0
  20. package/resources/settings/status.ts +197 -105
  21. package/services/calendar/calendar.ts +1 -1
  22. package/services/calendar/entries.ts +3 -3
  23. package/services/centrum/units.ts +3 -3
  24. package/services/completor/completor.ts +2 -2
  25. package/services/documents/approval.ts +2 -2
  26. package/services/documents/documents.ts +9 -9
  27. package/services/documents/templates.client.ts +13 -0
  28. package/services/documents/templates.ts +136 -14
  29. package/services/jobs/colleagues.client.ts +34 -8
  30. package/services/jobs/colleagues.ts +263 -74
  31. package/services/jobs/conduct.ts +11 -19
  32. package/services/jobs/groups.client.ts +311 -0
  33. package/services/jobs/groups.ts +3596 -1
  34. package/services/jobs/timeclock.ts +30 -27
  35. package/services/qualifications/qualifications.ts +26 -4
  36. package/services/settings/settings.ts +1 -1
  37. package/services/sync/sync.client.ts +90 -37
  38. package/services/sync/sync.ts +555 -6
  39. package/services/vehicles/vehicles.ts +2 -2
  40. package/svcs.ts +31 -1
@@ -19,6 +19,7 @@ import { ColleagueActivity } from "../../resources/jobs/colleagues/activity/acti
19
19
  import { ColleagueActivityType } from "../../resources/jobs/colleagues/activity/activity";
20
20
  import { Colleague } from "../../resources/jobs/colleagues/colleagues";
21
21
  import { PaginationResponse } from "../../resources/common/database/database";
22
+ import { UserSelector } from "../../resources/jobs/user_selector";
22
23
  import { Sort } from "../../resources/common/database/database";
23
24
  import { PaginationRequest } from "../../resources/common/database/database";
24
25
  // Colleagues
@@ -42,9 +43,9 @@ export interface ListColleaguesRequest {
42
43
  */
43
44
  search: string;
44
45
  /**
45
- * @generated from protobuf field: repeated int32 user_ids = 4
46
+ * @generated from protobuf field: optional resources.jobs.UserSelector users = 4
46
47
  */
47
- userIds: number[];
48
+ users?: UserSelector;
48
49
  /**
49
50
  * @generated from protobuf field: optional bool user_only = 5
50
51
  */
@@ -130,9 +131,9 @@ export interface ListColleagueActivityRequest {
130
131
  /**
131
132
  * Search params
132
133
  *
133
- * @generated from protobuf field: repeated int32 user_ids = 3
134
+ * @generated from protobuf field: optional resources.jobs.UserSelector users = 3
134
135
  */
135
- userIds: number[];
136
+ users?: UserSelector;
136
137
  /**
137
138
  * @generated from protobuf field: repeated resources.jobs.colleagues.activity.ColleagueActivityType activity_types = 4
138
139
  */
@@ -192,22 +193,50 @@ export interface GetColleagueLabelsResponse {
192
193
  labels: Label[];
193
194
  }
194
195
  /**
195
- * @generated from protobuf message services.jobs.ManageLabelsRequest
196
+ * @generated from protobuf message services.jobs.CreateOrUpdateLabelRequest
196
197
  */
197
- export interface ManageLabelsRequest {
198
+ export interface CreateOrUpdateLabelRequest {
198
199
  /**
199
- * @generated from protobuf field: repeated resources.jobs.labels.Label labels = 1
200
+ * @generated from protobuf field: resources.jobs.labels.Label label = 1
200
201
  */
201
- labels: Label[];
202
+ label?: Label;
202
203
  }
203
204
  /**
204
- * @generated from protobuf message services.jobs.ManageLabelsResponse
205
+ * @generated from protobuf message services.jobs.CreateOrUpdateLabelResponse
205
206
  */
206
- export interface ManageLabelsResponse {
207
+ export interface CreateOrUpdateLabelResponse {
207
208
  /**
208
- * @generated from protobuf field: repeated resources.jobs.labels.Label labels = 1
209
+ * @generated from protobuf field: resources.jobs.labels.Label label = 1
209
210
  */
210
- labels: Label[];
211
+ label?: Label;
212
+ }
213
+ /**
214
+ * @generated from protobuf message services.jobs.DeleteLabelRequest
215
+ */
216
+ export interface DeleteLabelRequest {
217
+ /**
218
+ * @generated from protobuf field: int64 id = 1
219
+ */
220
+ id: number;
221
+ }
222
+ /**
223
+ * @generated from protobuf message services.jobs.DeleteLabelResponse
224
+ */
225
+ export interface DeleteLabelResponse {
226
+ }
227
+ /**
228
+ * @generated from protobuf message services.jobs.ReorderLabelsRequest
229
+ */
230
+ export interface ReorderLabelsRequest {
231
+ /**
232
+ * @generated from protobuf field: repeated int64 label_ids = 1
233
+ */
234
+ labelIds: number[];
235
+ }
236
+ /**
237
+ * @generated from protobuf message services.jobs.ReorderLabelsResponse
238
+ */
239
+ export interface ReorderLabelsResponse {
211
240
  }
212
241
  /**
213
242
  * @generated from protobuf message services.jobs.GetColleagueLabelsStatsRequest
@@ -234,7 +263,7 @@ class ListColleaguesRequest$Type extends MessageType<ListColleaguesRequest> {
234
263
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
235
264
  { no: 2, name: "sort", kind: "message", T: () => Sort },
236
265
  { no: 3, name: "search", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "64" } } } },
237
- { no: 4, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "10", items: { int32: { gte: 0 } } } } } },
266
+ { no: 4, name: "users", kind: "message", T: () => UserSelector },
238
267
  { no: 5, name: "user_only", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
239
268
  { no: 6, name: "absent", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
240
269
  { no: 7, name: "label_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { maxItems: "10" } } } },
@@ -245,7 +274,6 @@ class ListColleaguesRequest$Type extends MessageType<ListColleaguesRequest> {
245
274
  create(value?: PartialMessage<ListColleaguesRequest>): ListColleaguesRequest {
246
275
  const message = globalThis.Object.create((this.messagePrototype!));
247
276
  message.search = "";
248
- message.userIds = [];
249
277
  message.labelIds = [];
250
278
  if (value !== undefined)
251
279
  reflectionMergePartial<ListColleaguesRequest>(this, message, value);
@@ -265,12 +293,8 @@ class ListColleaguesRequest$Type extends MessageType<ListColleaguesRequest> {
265
293
  case /* string search */ 3:
266
294
  message.search = reader.string();
267
295
  break;
268
- case /* repeated int32 user_ids */ 4:
269
- if (wireType === WireType.LengthDelimited)
270
- for (let e = reader.int32() + reader.pos; reader.pos < e;)
271
- message.userIds.push(reader.int32());
272
- else
273
- message.userIds.push(reader.int32());
296
+ case /* optional resources.jobs.UserSelector users */ 4:
297
+ message.users = UserSelector.internalBinaryRead(reader, reader.uint32(), options, message.users);
274
298
  break;
275
299
  case /* optional bool user_only */ 5:
276
300
  message.userOnly = reader.bool();
@@ -312,13 +336,9 @@ class ListColleaguesRequest$Type extends MessageType<ListColleaguesRequest> {
312
336
  /* string search = 3; */
313
337
  if (message.search !== "")
314
338
  writer.tag(3, WireType.LengthDelimited).string(message.search);
315
- /* repeated int32 user_ids = 4; */
316
- if (message.userIds.length) {
317
- writer.tag(4, WireType.LengthDelimited).fork();
318
- for (let i = 0; i < message.userIds.length; i++)
319
- writer.int32(message.userIds[i]);
320
- writer.join();
321
- }
339
+ /* optional resources.jobs.UserSelector users = 4; */
340
+ if (message.users)
341
+ UserSelector.internalBinaryWrite(message.users, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
322
342
  /* optional bool user_only = 5; */
323
343
  if (message.userOnly !== undefined)
324
344
  writer.tag(5, WireType.Varint).bool(message.userOnly);
@@ -592,13 +612,12 @@ class ListColleagueActivityRequest$Type extends MessageType<ListColleagueActivit
592
612
  super("services.jobs.ListColleagueActivityRequest", [
593
613
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
594
614
  { no: 2, name: "sort", kind: "message", T: () => Sort },
595
- { no: 3, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/ },
615
+ { no: 3, name: "users", kind: "message", T: () => UserSelector },
596
616
  { no: 4, name: "activity_types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.jobs.colleagues.activity.ColleagueActivityType", ColleagueActivityType, "COLLEAGUE_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "10", items: { enum: { definedOnly: true } } } } } }
597
617
  ]);
598
618
  }
599
619
  create(value?: PartialMessage<ListColleagueActivityRequest>): ListColleagueActivityRequest {
600
620
  const message = globalThis.Object.create((this.messagePrototype!));
601
- message.userIds = [];
602
621
  message.activityTypes = [];
603
622
  if (value !== undefined)
604
623
  reflectionMergePartial<ListColleagueActivityRequest>(this, message, value);
@@ -615,12 +634,8 @@ class ListColleagueActivityRequest$Type extends MessageType<ListColleagueActivit
615
634
  case /* optional resources.common.database.Sort sort */ 2:
616
635
  message.sort = Sort.internalBinaryRead(reader, reader.uint32(), options, message.sort);
617
636
  break;
618
- case /* repeated int32 user_ids */ 3:
619
- if (wireType === WireType.LengthDelimited)
620
- for (let e = reader.int32() + reader.pos; reader.pos < e;)
621
- message.userIds.push(reader.int32());
622
- else
623
- message.userIds.push(reader.int32());
637
+ case /* optional resources.jobs.UserSelector users */ 3:
638
+ message.users = UserSelector.internalBinaryRead(reader, reader.uint32(), options, message.users);
624
639
  break;
625
640
  case /* repeated resources.jobs.colleagues.activity.ColleagueActivityType activity_types */ 4:
626
641
  if (wireType === WireType.LengthDelimited)
@@ -647,13 +662,9 @@ class ListColleagueActivityRequest$Type extends MessageType<ListColleagueActivit
647
662
  /* optional resources.common.database.Sort sort = 2; */
648
663
  if (message.sort)
649
664
  Sort.internalBinaryWrite(message.sort, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
650
- /* repeated int32 user_ids = 3; */
651
- if (message.userIds.length) {
652
- writer.tag(3, WireType.LengthDelimited).fork();
653
- for (let i = 0; i < message.userIds.length; i++)
654
- writer.int32(message.userIds[i]);
655
- writer.join();
656
- }
665
+ /* optional resources.jobs.UserSelector users = 3; */
666
+ if (message.users)
667
+ UserSelector.internalBinaryWrite(message.users, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
657
668
  /* repeated resources.jobs.colleagues.activity.ColleagueActivityType activity_types = 4; */
658
669
  if (message.activityTypes.length) {
659
670
  writer.tag(4, WireType.LengthDelimited).fork();
@@ -919,26 +930,25 @@ class GetColleagueLabelsResponse$Type extends MessageType<GetColleagueLabelsResp
919
930
  */
920
931
  export const GetColleagueLabelsResponse = new GetColleagueLabelsResponse$Type();
921
932
  // @generated message type with reflection information, may provide speed optimized methods
922
- class ManageLabelsRequest$Type extends MessageType<ManageLabelsRequest> {
933
+ class CreateOrUpdateLabelRequest$Type extends MessageType<CreateOrUpdateLabelRequest> {
923
934
  constructor() {
924
- super("services.jobs.ManageLabelsRequest", [
925
- { no: 1, name: "labels", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Label, options: { "buf.validate.field": { repeated: { maxItems: "50" } } } }
935
+ super("services.jobs.CreateOrUpdateLabelRequest", [
936
+ { no: 1, name: "label", kind: "message", T: () => Label, options: { "buf.validate.field": { required: true } } }
926
937
  ]);
927
938
  }
928
- create(value?: PartialMessage<ManageLabelsRequest>): ManageLabelsRequest {
939
+ create(value?: PartialMessage<CreateOrUpdateLabelRequest>): CreateOrUpdateLabelRequest {
929
940
  const message = globalThis.Object.create((this.messagePrototype!));
930
- message.labels = [];
931
941
  if (value !== undefined)
932
- reflectionMergePartial<ManageLabelsRequest>(this, message, value);
942
+ reflectionMergePartial<CreateOrUpdateLabelRequest>(this, message, value);
933
943
  return message;
934
944
  }
935
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ManageLabelsRequest): ManageLabelsRequest {
945
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateOrUpdateLabelRequest): CreateOrUpdateLabelRequest {
936
946
  let message = target ?? this.create(), end = reader.pos + length;
937
947
  while (reader.pos < end) {
938
948
  let [fieldNo, wireType] = reader.tag();
939
949
  switch (fieldNo) {
940
- case /* repeated resources.jobs.labels.Label labels */ 1:
941
- message.labels.push(Label.internalBinaryRead(reader, reader.uint32(), options));
950
+ case /* resources.jobs.labels.Label label */ 1:
951
+ message.label = Label.internalBinaryRead(reader, reader.uint32(), options, message.label);
942
952
  break;
943
953
  default:
944
954
  let u = options.readUnknownField;
@@ -951,10 +961,10 @@ class ManageLabelsRequest$Type extends MessageType<ManageLabelsRequest> {
951
961
  }
952
962
  return message;
953
963
  }
954
- internalBinaryWrite(message: ManageLabelsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
955
- /* repeated resources.jobs.labels.Label labels = 1; */
956
- for (let i = 0; i < message.labels.length; i++)
957
- Label.internalBinaryWrite(message.labels[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
964
+ internalBinaryWrite(message: CreateOrUpdateLabelRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
965
+ /* resources.jobs.labels.Label label = 1; */
966
+ if (message.label)
967
+ Label.internalBinaryWrite(message.label, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
958
968
  let u = options.writeUnknownFields;
959
969
  if (u !== false)
960
970
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -962,30 +972,29 @@ class ManageLabelsRequest$Type extends MessageType<ManageLabelsRequest> {
962
972
  }
963
973
  }
964
974
  /**
965
- * @generated MessageType for protobuf message services.jobs.ManageLabelsRequest
975
+ * @generated MessageType for protobuf message services.jobs.CreateOrUpdateLabelRequest
966
976
  */
967
- export const ManageLabelsRequest = new ManageLabelsRequest$Type();
977
+ export const CreateOrUpdateLabelRequest = new CreateOrUpdateLabelRequest$Type();
968
978
  // @generated message type with reflection information, may provide speed optimized methods
969
- class ManageLabelsResponse$Type extends MessageType<ManageLabelsResponse> {
979
+ class CreateOrUpdateLabelResponse$Type extends MessageType<CreateOrUpdateLabelResponse> {
970
980
  constructor() {
971
- super("services.jobs.ManageLabelsResponse", [
972
- { no: 1, name: "labels", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Label }
981
+ super("services.jobs.CreateOrUpdateLabelResponse", [
982
+ { no: 1, name: "label", kind: "message", T: () => Label }
973
983
  ]);
974
984
  }
975
- create(value?: PartialMessage<ManageLabelsResponse>): ManageLabelsResponse {
985
+ create(value?: PartialMessage<CreateOrUpdateLabelResponse>): CreateOrUpdateLabelResponse {
976
986
  const message = globalThis.Object.create((this.messagePrototype!));
977
- message.labels = [];
978
987
  if (value !== undefined)
979
- reflectionMergePartial<ManageLabelsResponse>(this, message, value);
988
+ reflectionMergePartial<CreateOrUpdateLabelResponse>(this, message, value);
980
989
  return message;
981
990
  }
982
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ManageLabelsResponse): ManageLabelsResponse {
991
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CreateOrUpdateLabelResponse): CreateOrUpdateLabelResponse {
983
992
  let message = target ?? this.create(), end = reader.pos + length;
984
993
  while (reader.pos < end) {
985
994
  let [fieldNo, wireType] = reader.tag();
986
995
  switch (fieldNo) {
987
- case /* repeated resources.jobs.labels.Label labels */ 1:
988
- message.labels.push(Label.internalBinaryRead(reader, reader.uint32(), options));
996
+ case /* resources.jobs.labels.Label label */ 1:
997
+ message.label = Label.internalBinaryRead(reader, reader.uint32(), options, message.label);
989
998
  break;
990
999
  default:
991
1000
  let u = options.readUnknownField;
@@ -998,10 +1007,188 @@ class ManageLabelsResponse$Type extends MessageType<ManageLabelsResponse> {
998
1007
  }
999
1008
  return message;
1000
1009
  }
1001
- internalBinaryWrite(message: ManageLabelsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1002
- /* repeated resources.jobs.labels.Label labels = 1; */
1003
- for (let i = 0; i < message.labels.length; i++)
1004
- Label.internalBinaryWrite(message.labels[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1010
+ internalBinaryWrite(message: CreateOrUpdateLabelResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1011
+ /* resources.jobs.labels.Label label = 1; */
1012
+ if (message.label)
1013
+ Label.internalBinaryWrite(message.label, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1014
+ let u = options.writeUnknownFields;
1015
+ if (u !== false)
1016
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1017
+ return writer;
1018
+ }
1019
+ }
1020
+ /**
1021
+ * @generated MessageType for protobuf message services.jobs.CreateOrUpdateLabelResponse
1022
+ */
1023
+ export const CreateOrUpdateLabelResponse = new CreateOrUpdateLabelResponse$Type();
1024
+ // @generated message type with reflection information, may provide speed optimized methods
1025
+ class DeleteLabelRequest$Type extends MessageType<DeleteLabelRequest> {
1026
+ constructor() {
1027
+ super("services.jobs.DeleteLabelRequest", [
1028
+ { no: 1, name: "id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } }
1029
+ ]);
1030
+ }
1031
+ create(value?: PartialMessage<DeleteLabelRequest>): DeleteLabelRequest {
1032
+ const message = globalThis.Object.create((this.messagePrototype!));
1033
+ message.id = 0;
1034
+ if (value !== undefined)
1035
+ reflectionMergePartial<DeleteLabelRequest>(this, message, value);
1036
+ return message;
1037
+ }
1038
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteLabelRequest): DeleteLabelRequest {
1039
+ let message = target ?? this.create(), end = reader.pos + length;
1040
+ while (reader.pos < end) {
1041
+ let [fieldNo, wireType] = reader.tag();
1042
+ switch (fieldNo) {
1043
+ case /* int64 id */ 1:
1044
+ message.id = reader.int64().toNumber();
1045
+ break;
1046
+ default:
1047
+ let u = options.readUnknownField;
1048
+ if (u === "throw")
1049
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1050
+ let d = reader.skip(wireType);
1051
+ if (u !== false)
1052
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1053
+ }
1054
+ }
1055
+ return message;
1056
+ }
1057
+ internalBinaryWrite(message: DeleteLabelRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1058
+ /* int64 id = 1; */
1059
+ if (message.id !== 0)
1060
+ writer.tag(1, WireType.Varint).int64(message.id);
1061
+ let u = options.writeUnknownFields;
1062
+ if (u !== false)
1063
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1064
+ return writer;
1065
+ }
1066
+ }
1067
+ /**
1068
+ * @generated MessageType for protobuf message services.jobs.DeleteLabelRequest
1069
+ */
1070
+ export const DeleteLabelRequest = new DeleteLabelRequest$Type();
1071
+ // @generated message type with reflection information, may provide speed optimized methods
1072
+ class DeleteLabelResponse$Type extends MessageType<DeleteLabelResponse> {
1073
+ constructor() {
1074
+ super("services.jobs.DeleteLabelResponse", []);
1075
+ }
1076
+ create(value?: PartialMessage<DeleteLabelResponse>): DeleteLabelResponse {
1077
+ const message = globalThis.Object.create((this.messagePrototype!));
1078
+ if (value !== undefined)
1079
+ reflectionMergePartial<DeleteLabelResponse>(this, message, value);
1080
+ return message;
1081
+ }
1082
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteLabelResponse): DeleteLabelResponse {
1083
+ let message = target ?? this.create(), end = reader.pos + length;
1084
+ while (reader.pos < end) {
1085
+ let [fieldNo, wireType] = reader.tag();
1086
+ switch (fieldNo) {
1087
+ default:
1088
+ let u = options.readUnknownField;
1089
+ if (u === "throw")
1090
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1091
+ let d = reader.skip(wireType);
1092
+ if (u !== false)
1093
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1094
+ }
1095
+ }
1096
+ return message;
1097
+ }
1098
+ internalBinaryWrite(message: DeleteLabelResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1099
+ let u = options.writeUnknownFields;
1100
+ if (u !== false)
1101
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1102
+ return writer;
1103
+ }
1104
+ }
1105
+ /**
1106
+ * @generated MessageType for protobuf message services.jobs.DeleteLabelResponse
1107
+ */
1108
+ export const DeleteLabelResponse = new DeleteLabelResponse$Type();
1109
+ // @generated message type with reflection information, may provide speed optimized methods
1110
+ class ReorderLabelsRequest$Type extends MessageType<ReorderLabelsRequest> {
1111
+ constructor() {
1112
+ super("services.jobs.ReorderLabelsRequest", [
1113
+ { no: 1, name: "label_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { minItems: "1", maxItems: "50", items: { int64: { gt: "0" } } } } } }
1114
+ ]);
1115
+ }
1116
+ create(value?: PartialMessage<ReorderLabelsRequest>): ReorderLabelsRequest {
1117
+ const message = globalThis.Object.create((this.messagePrototype!));
1118
+ message.labelIds = [];
1119
+ if (value !== undefined)
1120
+ reflectionMergePartial<ReorderLabelsRequest>(this, message, value);
1121
+ return message;
1122
+ }
1123
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReorderLabelsRequest): ReorderLabelsRequest {
1124
+ let message = target ?? this.create(), end = reader.pos + length;
1125
+ while (reader.pos < end) {
1126
+ let [fieldNo, wireType] = reader.tag();
1127
+ switch (fieldNo) {
1128
+ case /* repeated int64 label_ids */ 1:
1129
+ if (wireType === WireType.LengthDelimited)
1130
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
1131
+ message.labelIds.push(reader.int64().toNumber());
1132
+ else
1133
+ message.labelIds.push(reader.int64().toNumber());
1134
+ break;
1135
+ default:
1136
+ let u = options.readUnknownField;
1137
+ if (u === "throw")
1138
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1139
+ let d = reader.skip(wireType);
1140
+ if (u !== false)
1141
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1142
+ }
1143
+ }
1144
+ return message;
1145
+ }
1146
+ internalBinaryWrite(message: ReorderLabelsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1147
+ /* repeated int64 label_ids = 1; */
1148
+ if (message.labelIds.length) {
1149
+ writer.tag(1, WireType.LengthDelimited).fork();
1150
+ for (let i = 0; i < message.labelIds.length; i++)
1151
+ writer.int64(message.labelIds[i]);
1152
+ writer.join();
1153
+ }
1154
+ let u = options.writeUnknownFields;
1155
+ if (u !== false)
1156
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1157
+ return writer;
1158
+ }
1159
+ }
1160
+ /**
1161
+ * @generated MessageType for protobuf message services.jobs.ReorderLabelsRequest
1162
+ */
1163
+ export const ReorderLabelsRequest = new ReorderLabelsRequest$Type();
1164
+ // @generated message type with reflection information, may provide speed optimized methods
1165
+ class ReorderLabelsResponse$Type extends MessageType<ReorderLabelsResponse> {
1166
+ constructor() {
1167
+ super("services.jobs.ReorderLabelsResponse", []);
1168
+ }
1169
+ create(value?: PartialMessage<ReorderLabelsResponse>): ReorderLabelsResponse {
1170
+ const message = globalThis.Object.create((this.messagePrototype!));
1171
+ if (value !== undefined)
1172
+ reflectionMergePartial<ReorderLabelsResponse>(this, message, value);
1173
+ return message;
1174
+ }
1175
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ReorderLabelsResponse): ReorderLabelsResponse {
1176
+ let message = target ?? this.create(), end = reader.pos + length;
1177
+ while (reader.pos < end) {
1178
+ let [fieldNo, wireType] = reader.tag();
1179
+ switch (fieldNo) {
1180
+ default:
1181
+ let u = options.readUnknownField;
1182
+ if (u === "throw")
1183
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1184
+ let d = reader.skip(wireType);
1185
+ if (u !== false)
1186
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1187
+ }
1188
+ }
1189
+ return message;
1190
+ }
1191
+ internalBinaryWrite(message: ReorderLabelsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
1005
1192
  let u = options.writeUnknownFields;
1006
1193
  if (u !== false)
1007
1194
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -1009,14 +1196,14 @@ class ManageLabelsResponse$Type extends MessageType<ManageLabelsResponse> {
1009
1196
  }
1010
1197
  }
1011
1198
  /**
1012
- * @generated MessageType for protobuf message services.jobs.ManageLabelsResponse
1199
+ * @generated MessageType for protobuf message services.jobs.ReorderLabelsResponse
1013
1200
  */
1014
- export const ManageLabelsResponse = new ManageLabelsResponse$Type();
1201
+ export const ReorderLabelsResponse = new ReorderLabelsResponse$Type();
1015
1202
  // @generated message type with reflection information, may provide speed optimized methods
1016
1203
  class GetColleagueLabelsStatsRequest$Type extends MessageType<GetColleagueLabelsStatsRequest> {
1017
1204
  constructor() {
1018
1205
  super("services.jobs.GetColleagueLabelsStatsRequest", [
1019
- { no: 1, name: "label_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ }
1206
+ { no: 1, name: "label_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { maxItems: "50" } } } }
1020
1207
  ]);
1021
1208
  }
1022
1209
  create(value?: PartialMessage<GetColleagueLabelsStatsRequest>): GetColleagueLabelsStatsRequest {
@@ -1124,6 +1311,8 @@ export const ColleaguesService = new ServiceType("services.jobs.ColleaguesServic
1124
1311
  { name: "ListColleagueActivity", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Types", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["HIRED", "FIRED", "PROMOTED", "DEMOTED", "ABSENCE_DATE", "NOTE", "LABELS", "NAME"] }] } }, I: ListColleagueActivityRequest, O: ListColleagueActivityResponse },
1125
1312
  { name: "SetColleagueProps", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Access", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Own", "Lower_Rank", "Same_Rank", "Any"] }, { key: "Types", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["AbsenceDate", "Note", "Labels", "Name"] }] } }, I: SetColleaguePropsRequest, O: SetColleaguePropsResponse },
1126
1313
  { name: "GetColleagueLabels", options: { "codegen.perms.perms": { enabled: true, name: "GetColleague" } }, I: GetColleagueLabelsRequest, O: GetColleagueLabelsResponse },
1127
- { name: "ManageLabels", options: { "codegen.perms.perms": { enabled: true } }, I: ManageLabelsRequest, O: ManageLabelsResponse },
1314
+ { name: "CreateOrUpdateLabel", options: { "codegen.perms.perms": { enabled: true } }, I: CreateOrUpdateLabelRequest, O: CreateOrUpdateLabelResponse },
1315
+ { name: "DeleteLabel", options: { "codegen.perms.perms": { enabled: true, name: "CreateOrUpdateLabel" } }, I: DeleteLabelRequest, O: DeleteLabelResponse },
1316
+ { name: "ReorderLabels", options: { "codegen.perms.perms": { enabled: true, name: "CreateOrUpdateLabel" } }, I: ReorderLabelsRequest, O: ReorderLabelsResponse },
1128
1317
  { name: "GetColleagueLabelsStats", options: { "codegen.perms.perms": { enabled: true, name: "GetColleague" } }, I: GetColleagueLabelsStatsRequest, O: GetColleagueLabelsStatsResponse }
1129
1318
  ], { "codegen.perms.perms_svc": { order: 61, icon: "i-mdi-account-group" } });
@@ -16,6 +16,7 @@ import { reflectionMergePartial } from "@protobuf-ts/runtime";
16
16
  import { MessageType } from "@protobuf-ts/runtime";
17
17
  import { ConductEntry } from "../../resources/jobs/conduct/conduct";
18
18
  import { PaginationResponse } from "../../resources/common/database/database";
19
+ import { UserSelector } from "../../resources/jobs/user_selector";
19
20
  import { ConductType } from "../../resources/jobs/conduct/conduct";
20
21
  import { Sort } from "../../resources/common/database/database";
21
22
  import { PaginationRequest } from "../../resources/common/database/database";
@@ -48,9 +49,9 @@ export interface ListConductEntriesRequest {
48
49
  */
49
50
  showDrafts?: boolean;
50
51
  /**
51
- * @generated from protobuf field: repeated int32 user_ids = 6
52
+ * @generated from protobuf field: optional resources.jobs.UserSelector users = 6
52
53
  */
53
- userIds: number[];
54
+ users?: UserSelector;
54
55
  /**
55
56
  * @generated from protobuf field: repeated int64 ids = 7
56
57
  */
@@ -147,18 +148,17 @@ class ListConductEntriesRequest$Type extends MessageType<ListConductEntriesReque
147
148
  super("services.jobs.ListConductEntriesRequest", [
148
149
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
149
150
  { no: 2, name: "sort", kind: "message", T: () => Sort },
150
- { no: 3, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.jobs.conduct.ConductType", ConductType, "CONDUCT_TYPE_"], options: { "buf.validate.field": { repeated: { items: { enum: { definedOnly: true } } } } } },
151
+ { no: 3, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.jobs.conduct.ConductType", ConductType, "CONDUCT_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "10", items: { enum: { definedOnly: true } } } } } },
151
152
  { no: 4, name: "show_expired", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
152
153
  { no: 5, name: "show_drafts", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
153
- { no: 6, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/ },
154
- { no: 7, name: "ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
154
+ { no: 6, name: "users", kind: "message", T: () => UserSelector },
155
+ { no: 7, name: "ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { maxItems: "100" } } } },
155
156
  { no: 8, name: "show_deleted", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
156
157
  ]);
157
158
  }
158
159
  create(value?: PartialMessage<ListConductEntriesRequest>): ListConductEntriesRequest {
159
160
  const message = globalThis.Object.create((this.messagePrototype!));
160
161
  message.types = [];
161
- message.userIds = [];
162
162
  message.ids = [];
163
163
  if (value !== undefined)
164
164
  reflectionMergePartial<ListConductEntriesRequest>(this, message, value);
@@ -188,12 +188,8 @@ class ListConductEntriesRequest$Type extends MessageType<ListConductEntriesReque
188
188
  case /* optional bool show_drafts */ 5:
189
189
  message.showDrafts = reader.bool();
190
190
  break;
191
- case /* repeated int32 user_ids */ 6:
192
- if (wireType === WireType.LengthDelimited)
193
- for (let e = reader.int32() + reader.pos; reader.pos < e;)
194
- message.userIds.push(reader.int32());
195
- else
196
- message.userIds.push(reader.int32());
191
+ case /* optional resources.jobs.UserSelector users */ 6:
192
+ message.users = UserSelector.internalBinaryRead(reader, reader.uint32(), options, message.users);
197
193
  break;
198
194
  case /* repeated int64 ids */ 7:
199
195
  if (wireType === WireType.LengthDelimited)
@@ -236,13 +232,9 @@ class ListConductEntriesRequest$Type extends MessageType<ListConductEntriesReque
236
232
  /* optional bool show_drafts = 5; */
237
233
  if (message.showDrafts !== undefined)
238
234
  writer.tag(5, WireType.Varint).bool(message.showDrafts);
239
- /* repeated int32 user_ids = 6; */
240
- if (message.userIds.length) {
241
- writer.tag(6, WireType.LengthDelimited).fork();
242
- for (let i = 0; i < message.userIds.length; i++)
243
- writer.int32(message.userIds[i]);
244
- writer.join();
245
- }
235
+ /* optional resources.jobs.UserSelector users = 6; */
236
+ if (message.users)
237
+ UserSelector.internalBinaryWrite(message.users, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
246
238
  /* repeated int64 ids = 7; */
247
239
  if (message.ids.length) {
248
240
  writer.tag(7, WireType.LengthDelimited).fork();