@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,13 @@
5
5
  import type { RpcTransport } from "@protobuf-ts/runtime-rpc";
6
6
  import type { ServiceInfo } from "@protobuf-ts/runtime-rpc";
7
7
  import { VehiclesService } from "./vehicles";
8
+ import type { DeleteVehicleFileResponse } from "./vehicles";
9
+ import type { DeleteVehicleFileRequest } from "./vehicles";
10
+ import type { ListVehicleFilesResponse } from "./vehicles";
11
+ import type { ListVehicleFilesRequest } from "./vehicles";
12
+ import type { UploadFileResponse } from "../../resources/file/filestore";
13
+ import type { UploadFileRequest } from "../../resources/file/filestore";
14
+ import type { ClientStreamingCall } from "@protobuf-ts/runtime-rpc";
8
15
  import type { ListVehicleActivityResponse } from "./vehicles";
9
16
  import type { ListVehicleActivityRequest } from "./vehicles";
10
17
  import type { SetVehiclePropsResponse } from "./vehicles";
@@ -30,6 +37,24 @@ export interface IVehiclesServiceClient {
30
37
  * @generated from protobuf rpc: ListVehicleActivity
31
38
  */
32
39
  listVehicleActivity(input: ListVehicleActivityRequest, options?: RpcOptions): UnaryCall<ListVehicleActivityRequest, ListVehicleActivityResponse>;
40
+ /**
41
+ * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
42
+ * buf:lint:ignore RPC_REQUEST_STANDARD_NAME
43
+ * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME
44
+ *
45
+ * @generated from protobuf rpc: UploadVehicleFile
46
+ */
47
+ uploadVehicleFile(options?: RpcOptions): ClientStreamingCall<UploadFileRequest, UploadFileResponse>;
48
+ /**
49
+ * @generated from protobuf rpc: ListVehicleFiles
50
+ */
51
+ listVehicleFiles(input: ListVehicleFilesRequest, options?: RpcOptions): UnaryCall<ListVehicleFilesRequest, ListVehicleFilesResponse>;
52
+ /**
53
+ * Requires DeleteVehicleFile and SetVehicleProps with the vehicle.files property.
54
+ *
55
+ * @generated from protobuf rpc: DeleteVehicleFile
56
+ */
57
+ deleteVehicleFile(input: DeleteVehicleFileRequest, options?: RpcOptions): UnaryCall<DeleteVehicleFileRequest, DeleteVehicleFileResponse>;
33
58
  }
34
59
  /**
35
60
  * @generated from protobuf service services.vehicles.VehiclesService
@@ -61,4 +86,31 @@ export class VehiclesServiceClient implements IVehiclesServiceClient, ServiceInf
61
86
  const method = this.methods[2], opt = this._transport.mergeOptions(options);
62
87
  return stackIntercept<ListVehicleActivityRequest, ListVehicleActivityResponse>("unary", this._transport, method, opt, input);
63
88
  }
89
+ /**
90
+ * buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
91
+ * buf:lint:ignore RPC_REQUEST_STANDARD_NAME
92
+ * buf:lint:ignore RPC_RESPONSE_STANDARD_NAME
93
+ *
94
+ * @generated from protobuf rpc: UploadVehicleFile
95
+ */
96
+ uploadVehicleFile(options?: RpcOptions): ClientStreamingCall<UploadFileRequest, UploadFileResponse> {
97
+ const method = this.methods[3], opt = this._transport.mergeOptions(options);
98
+ return stackIntercept<UploadFileRequest, UploadFileResponse>("clientStreaming", this._transport, method, opt);
99
+ }
100
+ /**
101
+ * @generated from protobuf rpc: ListVehicleFiles
102
+ */
103
+ listVehicleFiles(input: ListVehicleFilesRequest, options?: RpcOptions): UnaryCall<ListVehicleFilesRequest, ListVehicleFilesResponse> {
104
+ const method = this.methods[4], opt = this._transport.mergeOptions(options);
105
+ return stackIntercept<ListVehicleFilesRequest, ListVehicleFilesResponse>("unary", this._transport, method, opt, input);
106
+ }
107
+ /**
108
+ * Requires DeleteVehicleFile and SetVehicleProps with the vehicle.files property.
109
+ *
110
+ * @generated from protobuf rpc: DeleteVehicleFile
111
+ */
112
+ deleteVehicleFile(input: DeleteVehicleFileRequest, options?: RpcOptions): UnaryCall<DeleteVehicleFileRequest, DeleteVehicleFileResponse> {
113
+ const method = this.methods[5], opt = this._transport.mergeOptions(options);
114
+ return stackIntercept<DeleteVehicleFileRequest, DeleteVehicleFileResponse>("unary", this._transport, method, opt, input);
115
+ }
64
116
  }
@@ -2,6 +2,8 @@
2
2
  // @generated from protobuf file "services/vehicles/vehicles.proto" (package "services.vehicles", syntax proto3)
3
3
  // tslint:disable
4
4
  // @ts-nocheck
5
+ import { UploadFileResponse } from "../../resources/file/filestore";
6
+ import { UploadFileRequest } from "../../resources/file/filestore";
5
7
  import { ServiceType } from "@protobuf-ts/runtime-rpc";
6
8
  import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
7
9
  import type { IBinaryWriter } from "@protobuf-ts/runtime";
@@ -12,11 +14,15 @@ import { WireType } from "@protobuf-ts/runtime";
12
14
  import type { PartialMessage } from "@protobuf-ts/runtime";
13
15
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
14
16
  import { MessageType } from "@protobuf-ts/runtime";
17
+ import { File } from "../../resources/file/file";
15
18
  import { VehicleActivity } from "../../resources/vehicles/activity/activity";
19
+ import { Timestamp } from "../../resources/timestamp/timestamp";
16
20
  import { VehicleActivityType } from "../../resources/vehicles/activity/activity";
21
+ import { PropertyChange } from "../../resources/properties/properties";
17
22
  import { VehicleProps } from "../../resources/vehicles/props/props";
18
23
  import { Vehicle } from "../../resources/vehicles/vehicles";
19
24
  import { PaginationResponse } from "../../resources/common/database/database";
25
+ import { PropertyFilter } from "../../resources/properties/properties";
20
26
  import { Sort } from "../../resources/common/database/database";
21
27
  import { PaginationRequest } from "../../resources/common/database/database";
22
28
  /**
@@ -53,6 +59,10 @@ export interface ListVehiclesRequest {
53
59
  * @generated from protobuf field: optional bool wanted = 7
54
60
  */
55
61
  wanted?: boolean;
62
+ /**
63
+ * @generated from protobuf field: repeated resources.properties.PropertyFilter property_filters = 8
64
+ */
65
+ propertyFilters: PropertyFilter[];
56
66
  }
57
67
  /**
58
68
  * @generated from protobuf message services.vehicles.ListVehiclesResponse
@@ -79,6 +89,13 @@ export interface SetVehiclePropsRequest {
79
89
  * @generated from protobuf field: string reason = 2
80
90
  */
81
91
  reason: string;
92
+ /**
93
+ * Generic custom scalar properties. Managed system properties continue to
94
+ * use the dedicated fields above and produce their specialized activities.
95
+ *
96
+ * @generated from protobuf field: repeated resources.properties.PropertyChange property_changes = 3
97
+ */
98
+ propertyChanges: PropertyChange[];
82
99
  }
83
100
  /**
84
101
  * @generated from protobuf message services.vehicles.SetVehiclePropsResponse
@@ -102,13 +119,31 @@ export interface ListVehicleActivityRequest {
102
119
  */
103
120
  sort?: Sort;
104
121
  /**
122
+ * Search params
123
+ *
105
124
  * @generated from protobuf field: string plate = 3
106
125
  */
107
126
  plate: string;
108
127
  /**
128
+ * Activity types to filter by. If empty, all activity types will be returned.
129
+ *
109
130
  * @generated from protobuf field: repeated resources.vehicles.activity.VehicleActivityType types = 4
110
131
  */
111
132
  types: VehicleActivityType[];
133
+ /**
134
+ * @generated from protobuf field: optional resources.timestamp.Timestamp from = 5
135
+ */
136
+ from?: Timestamp;
137
+ /**
138
+ * @generated from protobuf field: optional resources.timestamp.Timestamp to = 6
139
+ */
140
+ to?: Timestamp;
141
+ /**
142
+ * Restricts generic PROPERTY activity entries to these custom property keys.
143
+ *
144
+ * @generated from protobuf field: repeated string property_keys = 7
145
+ */
146
+ propertyKeys: string[];
112
147
  }
113
148
  /**
114
149
  * @generated from protobuf message services.vehicles.ListVehicleActivityResponse
@@ -123,6 +158,59 @@ export interface ListVehicleActivityResponse {
123
158
  */
124
159
  activity: VehicleActivity[];
125
160
  }
161
+ /**
162
+ * @generated from protobuf message services.vehicles.VehicleFile
163
+ */
164
+ export interface VehicleFile {
165
+ /**
166
+ * @generated from protobuf field: resources.file.File file = 1
167
+ */
168
+ file?: File;
169
+ /**
170
+ * @generated from protobuf field: string kind = 2
171
+ */
172
+ kind: string;
173
+ }
174
+ /**
175
+ * @generated from protobuf message services.vehicles.ListVehicleFilesRequest
176
+ */
177
+ export interface ListVehicleFilesRequest {
178
+ /**
179
+ * @generated from protobuf field: string plate = 1
180
+ */
181
+ plate: string;
182
+ }
183
+ /**
184
+ * @generated from protobuf message services.vehicles.ListVehicleFilesResponse
185
+ */
186
+ export interface ListVehicleFilesResponse {
187
+ /**
188
+ * @generated from protobuf field: repeated services.vehicles.VehicleFile files = 1
189
+ */
190
+ files: VehicleFile[];
191
+ }
192
+ /**
193
+ * @generated from protobuf message services.vehicles.DeleteVehicleFileRequest
194
+ */
195
+ export interface DeleteVehicleFileRequest {
196
+ /**
197
+ * @generated from protobuf field: string plate = 1
198
+ */
199
+ plate: string;
200
+ /**
201
+ * @generated from protobuf field: int64 file_id = 2
202
+ */
203
+ fileId: number;
204
+ /**
205
+ * @generated from protobuf field: string reason = 3
206
+ */
207
+ reason: string;
208
+ }
209
+ /**
210
+ * @generated from protobuf message services.vehicles.DeleteVehicleFileResponse
211
+ */
212
+ export interface DeleteVehicleFileResponse {
213
+ }
126
214
  // @generated message type with reflection information, may provide speed optimized methods
127
215
  class ListVehiclesRequest$Type extends MessageType<ListVehiclesRequest> {
128
216
  constructor() {
@@ -131,14 +219,16 @@ class ListVehiclesRequest$Type extends MessageType<ListVehiclesRequest> {
131
219
  { no: 2, name: "sort", kind: "message", T: () => Sort },
132
220
  { no: 3, name: "license_plate", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } },
133
221
  { no: 4, name: "model", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } },
134
- { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { items: { int32: { gte: 0 } } } } } },
222
+ { no: 5, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "10", items: { int32: { gte: 0 } } } } } },
135
223
  { no: 6, name: "job", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "20" } } } },
136
- { no: 7, name: "wanted", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
224
+ { no: 7, name: "wanted", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
225
+ { no: 8, name: "property_filters", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PropertyFilter, options: { "buf.validate.field": { repeated: { maxItems: "8" } } } }
137
226
  ]);
138
227
  }
139
228
  create(value?: PartialMessage<ListVehiclesRequest>): ListVehiclesRequest {
140
229
  const message = globalThis.Object.create((this.messagePrototype!));
141
230
  message.userIds = [];
231
+ message.propertyFilters = [];
142
232
  if (value !== undefined)
143
233
  reflectionMergePartial<ListVehiclesRequest>(this, message, value);
144
234
  return message;
@@ -173,6 +263,9 @@ class ListVehiclesRequest$Type extends MessageType<ListVehiclesRequest> {
173
263
  case /* optional bool wanted */ 7:
174
264
  message.wanted = reader.bool();
175
265
  break;
266
+ case /* repeated resources.properties.PropertyFilter property_filters */ 8:
267
+ message.propertyFilters.push(PropertyFilter.internalBinaryRead(reader, reader.uint32(), options));
268
+ break;
176
269
  default:
177
270
  let u = options.readUnknownField;
178
271
  if (u === "throw")
@@ -210,6 +303,9 @@ class ListVehiclesRequest$Type extends MessageType<ListVehiclesRequest> {
210
303
  /* optional bool wanted = 7; */
211
304
  if (message.wanted !== undefined)
212
305
  writer.tag(7, WireType.Varint).bool(message.wanted);
306
+ /* repeated resources.properties.PropertyFilter property_filters = 8; */
307
+ for (let i = 0; i < message.propertyFilters.length; i++)
308
+ PropertyFilter.internalBinaryWrite(message.propertyFilters[i], writer.tag(8, WireType.LengthDelimited).fork(), options).join();
213
309
  let u = options.writeUnknownFields;
214
310
  if (u !== false)
215
311
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -279,12 +375,14 @@ class SetVehiclePropsRequest$Type extends MessageType<SetVehiclePropsRequest> {
279
375
  constructor() {
280
376
  super("services.vehicles.SetVehiclePropsRequest", [
281
377
  { no: 1, name: "props", kind: "message", T: () => VehicleProps, options: { "buf.validate.field": { required: true } } },
282
- { 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 } } }
378
+ { 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 } } },
379
+ { no: 3, name: "property_changes", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => PropertyChange, options: { "buf.validate.field": { repeated: { maxItems: "20" } } } }
283
380
  ]);
284
381
  }
285
382
  create(value?: PartialMessage<SetVehiclePropsRequest>): SetVehiclePropsRequest {
286
383
  const message = globalThis.Object.create((this.messagePrototype!));
287
384
  message.reason = "";
385
+ message.propertyChanges = [];
288
386
  if (value !== undefined)
289
387
  reflectionMergePartial<SetVehiclePropsRequest>(this, message, value);
290
388
  return message;
@@ -300,6 +398,9 @@ class SetVehiclePropsRequest$Type extends MessageType<SetVehiclePropsRequest> {
300
398
  case /* string reason */ 2:
301
399
  message.reason = reader.string();
302
400
  break;
401
+ case /* repeated resources.properties.PropertyChange property_changes */ 3:
402
+ message.propertyChanges.push(PropertyChange.internalBinaryRead(reader, reader.uint32(), options));
403
+ break;
303
404
  default:
304
405
  let u = options.readUnknownField;
305
406
  if (u === "throw")
@@ -318,6 +419,9 @@ class SetVehiclePropsRequest$Type extends MessageType<SetVehiclePropsRequest> {
318
419
  /* string reason = 2; */
319
420
  if (message.reason !== "")
320
421
  writer.tag(2, WireType.LengthDelimited).string(message.reason);
422
+ /* repeated resources.properties.PropertyChange property_changes = 3; */
423
+ for (let i = 0; i < message.propertyChanges.length; i++)
424
+ PropertyChange.internalBinaryWrite(message.propertyChanges[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
321
425
  let u = options.writeUnknownFields;
322
426
  if (u !== false)
323
427
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -381,13 +485,17 @@ class ListVehicleActivityRequest$Type extends MessageType<ListVehicleActivityReq
381
485
  { no: 1, name: "pagination", kind: "message", T: () => PaginationRequest, options: { "buf.validate.field": { required: true } } },
382
486
  { no: 2, name: "sort", kind: "message", T: () => Sort },
383
487
  { no: 3, name: "plate", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "1", maxLen: "32" } } } },
384
- { no: 4, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.vehicles.activity.VehicleActivityType", VehicleActivityType, "VEHICLE_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "20", items: { enum: { definedOnly: true } } } } } }
488
+ { no: 4, name: "types", kind: "enum", repeat: 1 /*RepeatType.PACKED*/, T: () => ["resources.vehicles.activity.VehicleActivityType", VehicleActivityType, "VEHICLE_ACTIVITY_TYPE_"], options: { "buf.validate.field": { repeated: { maxItems: "10", items: { enum: { definedOnly: true } } } } } },
489
+ { no: 5, name: "from", kind: "message", T: () => Timestamp },
490
+ { no: 6, name: "to", kind: "message", T: () => Timestamp },
491
+ { 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" } } } } } }
385
492
  ]);
386
493
  }
387
494
  create(value?: PartialMessage<ListVehicleActivityRequest>): ListVehicleActivityRequest {
388
495
  const message = globalThis.Object.create((this.messagePrototype!));
389
496
  message.plate = "";
390
497
  message.types = [];
498
+ message.propertyKeys = [];
391
499
  if (value !== undefined)
392
500
  reflectionMergePartial<ListVehicleActivityRequest>(this, message, value);
393
501
  return message;
@@ -413,6 +521,15 @@ class ListVehicleActivityRequest$Type extends MessageType<ListVehicleActivityReq
413
521
  else
414
522
  message.types.push(reader.int32());
415
523
  break;
524
+ case /* optional resources.timestamp.Timestamp from */ 5:
525
+ message.from = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.from);
526
+ break;
527
+ case /* optional resources.timestamp.Timestamp to */ 6:
528
+ message.to = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.to);
529
+ break;
530
+ case /* repeated string property_keys */ 7:
531
+ message.propertyKeys.push(reader.string());
532
+ break;
416
533
  default:
417
534
  let u = options.readUnknownField;
418
535
  if (u === "throw")
@@ -441,6 +558,15 @@ class ListVehicleActivityRequest$Type extends MessageType<ListVehicleActivityReq
441
558
  writer.int32(message.types[i]);
442
559
  writer.join();
443
560
  }
561
+ /* optional resources.timestamp.Timestamp from = 5; */
562
+ if (message.from)
563
+ Timestamp.internalBinaryWrite(message.from, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
564
+ /* optional resources.timestamp.Timestamp to = 6; */
565
+ if (message.to)
566
+ Timestamp.internalBinaryWrite(message.to, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
567
+ /* repeated string property_keys = 7; */
568
+ for (let i = 0; i < message.propertyKeys.length; i++)
569
+ writer.tag(7, WireType.LengthDelimited).string(message.propertyKeys[i]);
444
570
  let u = options.writeUnknownFields;
445
571
  if (u !== false)
446
572
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -505,11 +631,263 @@ class ListVehicleActivityResponse$Type extends MessageType<ListVehicleActivityRe
505
631
  * @generated MessageType for protobuf message services.vehicles.ListVehicleActivityResponse
506
632
  */
507
633
  export const ListVehicleActivityResponse = new ListVehicleActivityResponse$Type();
634
+ // @generated message type with reflection information, may provide speed optimized methods
635
+ class VehicleFile$Type extends MessageType<VehicleFile> {
636
+ constructor() {
637
+ super("services.vehicles.VehicleFile", [
638
+ { no: 1, name: "file", kind: "message", T: () => File, options: { "buf.validate.field": { required: true } } },
639
+ { no: 2, name: "kind", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } }
640
+ ]);
641
+ }
642
+ create(value?: PartialMessage<VehicleFile>): VehicleFile {
643
+ const message = globalThis.Object.create((this.messagePrototype!));
644
+ message.kind = "";
645
+ if (value !== undefined)
646
+ reflectionMergePartial<VehicleFile>(this, message, value);
647
+ return message;
648
+ }
649
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: VehicleFile): VehicleFile {
650
+ let message = target ?? this.create(), end = reader.pos + length;
651
+ while (reader.pos < end) {
652
+ let [fieldNo, wireType] = reader.tag();
653
+ switch (fieldNo) {
654
+ case /* resources.file.File file */ 1:
655
+ message.file = File.internalBinaryRead(reader, reader.uint32(), options, message.file);
656
+ break;
657
+ case /* string kind */ 2:
658
+ message.kind = reader.string();
659
+ break;
660
+ default:
661
+ let u = options.readUnknownField;
662
+ if (u === "throw")
663
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
664
+ let d = reader.skip(wireType);
665
+ if (u !== false)
666
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
667
+ }
668
+ }
669
+ return message;
670
+ }
671
+ internalBinaryWrite(message: VehicleFile, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
672
+ /* resources.file.File file = 1; */
673
+ if (message.file)
674
+ File.internalBinaryWrite(message.file, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
675
+ /* string kind = 2; */
676
+ if (message.kind !== "")
677
+ writer.tag(2, WireType.LengthDelimited).string(message.kind);
678
+ let u = options.writeUnknownFields;
679
+ if (u !== false)
680
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
681
+ return writer;
682
+ }
683
+ }
684
+ /**
685
+ * @generated MessageType for protobuf message services.vehicles.VehicleFile
686
+ */
687
+ export const VehicleFile = new VehicleFile$Type();
688
+ // @generated message type with reflection information, may provide speed optimized methods
689
+ class ListVehicleFilesRequest$Type extends MessageType<ListVehicleFilesRequest> {
690
+ constructor() {
691
+ super("services.vehicles.ListVehicleFilesRequest", [
692
+ { no: 1, name: "plate", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "1", maxLen: "32" } } } }
693
+ ]);
694
+ }
695
+ create(value?: PartialMessage<ListVehicleFilesRequest>): ListVehicleFilesRequest {
696
+ const message = globalThis.Object.create((this.messagePrototype!));
697
+ message.plate = "";
698
+ if (value !== undefined)
699
+ reflectionMergePartial<ListVehicleFilesRequest>(this, message, value);
700
+ return message;
701
+ }
702
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListVehicleFilesRequest): ListVehicleFilesRequest {
703
+ let message = target ?? this.create(), end = reader.pos + length;
704
+ while (reader.pos < end) {
705
+ let [fieldNo, wireType] = reader.tag();
706
+ switch (fieldNo) {
707
+ case /* string plate */ 1:
708
+ message.plate = reader.string();
709
+ break;
710
+ default:
711
+ let u = options.readUnknownField;
712
+ if (u === "throw")
713
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
714
+ let d = reader.skip(wireType);
715
+ if (u !== false)
716
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
717
+ }
718
+ }
719
+ return message;
720
+ }
721
+ internalBinaryWrite(message: ListVehicleFilesRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
722
+ /* string plate = 1; */
723
+ if (message.plate !== "")
724
+ writer.tag(1, WireType.LengthDelimited).string(message.plate);
725
+ let u = options.writeUnknownFields;
726
+ if (u !== false)
727
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
728
+ return writer;
729
+ }
730
+ }
731
+ /**
732
+ * @generated MessageType for protobuf message services.vehicles.ListVehicleFilesRequest
733
+ */
734
+ export const ListVehicleFilesRequest = new ListVehicleFilesRequest$Type();
735
+ // @generated message type with reflection information, may provide speed optimized methods
736
+ class ListVehicleFilesResponse$Type extends MessageType<ListVehicleFilesResponse> {
737
+ constructor() {
738
+ super("services.vehicles.ListVehicleFilesResponse", [
739
+ { no: 1, name: "files", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => VehicleFile, options: { "codegen.itemslen.enabled": true } }
740
+ ]);
741
+ }
742
+ create(value?: PartialMessage<ListVehicleFilesResponse>): ListVehicleFilesResponse {
743
+ const message = globalThis.Object.create((this.messagePrototype!));
744
+ message.files = [];
745
+ if (value !== undefined)
746
+ reflectionMergePartial<ListVehicleFilesResponse>(this, message, value);
747
+ return message;
748
+ }
749
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListVehicleFilesResponse): ListVehicleFilesResponse {
750
+ let message = target ?? this.create(), end = reader.pos + length;
751
+ while (reader.pos < end) {
752
+ let [fieldNo, wireType] = reader.tag();
753
+ switch (fieldNo) {
754
+ case /* repeated services.vehicles.VehicleFile files */ 1:
755
+ message.files.push(VehicleFile.internalBinaryRead(reader, reader.uint32(), options));
756
+ break;
757
+ default:
758
+ let u = options.readUnknownField;
759
+ if (u === "throw")
760
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
761
+ let d = reader.skip(wireType);
762
+ if (u !== false)
763
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
764
+ }
765
+ }
766
+ return message;
767
+ }
768
+ internalBinaryWrite(message: ListVehicleFilesResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
769
+ /* repeated services.vehicles.VehicleFile files = 1; */
770
+ for (let i = 0; i < message.files.length; i++)
771
+ VehicleFile.internalBinaryWrite(message.files[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
772
+ let u = options.writeUnknownFields;
773
+ if (u !== false)
774
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
775
+ return writer;
776
+ }
777
+ }
778
+ /**
779
+ * @generated MessageType for protobuf message services.vehicles.ListVehicleFilesResponse
780
+ */
781
+ export const ListVehicleFilesResponse = new ListVehicleFilesResponse$Type();
782
+ // @generated message type with reflection information, may provide speed optimized methods
783
+ class DeleteVehicleFileRequest$Type extends MessageType<DeleteVehicleFileRequest> {
784
+ constructor() {
785
+ super("services.vehicles.DeleteVehicleFileRequest", [
786
+ { no: 1, name: "plate", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "1", maxLen: "32" } } } },
787
+ { no: 2, name: "file_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } },
788
+ { no: 3, name: "reason", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "3", maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true } } }
789
+ ]);
790
+ }
791
+ create(value?: PartialMessage<DeleteVehicleFileRequest>): DeleteVehicleFileRequest {
792
+ const message = globalThis.Object.create((this.messagePrototype!));
793
+ message.plate = "";
794
+ message.fileId = 0;
795
+ message.reason = "";
796
+ if (value !== undefined)
797
+ reflectionMergePartial<DeleteVehicleFileRequest>(this, message, value);
798
+ return message;
799
+ }
800
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteVehicleFileRequest): DeleteVehicleFileRequest {
801
+ let message = target ?? this.create(), end = reader.pos + length;
802
+ while (reader.pos < end) {
803
+ let [fieldNo, wireType] = reader.tag();
804
+ switch (fieldNo) {
805
+ case /* string plate */ 1:
806
+ message.plate = reader.string();
807
+ break;
808
+ case /* int64 file_id */ 2:
809
+ message.fileId = reader.int64().toNumber();
810
+ break;
811
+ case /* string reason */ 3:
812
+ message.reason = reader.string();
813
+ break;
814
+ default:
815
+ let u = options.readUnknownField;
816
+ if (u === "throw")
817
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
818
+ let d = reader.skip(wireType);
819
+ if (u !== false)
820
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
821
+ }
822
+ }
823
+ return message;
824
+ }
825
+ internalBinaryWrite(message: DeleteVehicleFileRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
826
+ /* string plate = 1; */
827
+ if (message.plate !== "")
828
+ writer.tag(1, WireType.LengthDelimited).string(message.plate);
829
+ /* int64 file_id = 2; */
830
+ if (message.fileId !== 0)
831
+ writer.tag(2, WireType.Varint).int64(message.fileId);
832
+ /* string reason = 3; */
833
+ if (message.reason !== "")
834
+ writer.tag(3, WireType.LengthDelimited).string(message.reason);
835
+ let u = options.writeUnknownFields;
836
+ if (u !== false)
837
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
838
+ return writer;
839
+ }
840
+ }
841
+ /**
842
+ * @generated MessageType for protobuf message services.vehicles.DeleteVehicleFileRequest
843
+ */
844
+ export const DeleteVehicleFileRequest = new DeleteVehicleFileRequest$Type();
845
+ // @generated message type with reflection information, may provide speed optimized methods
846
+ class DeleteVehicleFileResponse$Type extends MessageType<DeleteVehicleFileResponse> {
847
+ constructor() {
848
+ super("services.vehicles.DeleteVehicleFileResponse", []);
849
+ }
850
+ create(value?: PartialMessage<DeleteVehicleFileResponse>): DeleteVehicleFileResponse {
851
+ const message = globalThis.Object.create((this.messagePrototype!));
852
+ if (value !== undefined)
853
+ reflectionMergePartial<DeleteVehicleFileResponse>(this, message, value);
854
+ return message;
855
+ }
856
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DeleteVehicleFileResponse): DeleteVehicleFileResponse {
857
+ let message = target ?? this.create(), end = reader.pos + length;
858
+ while (reader.pos < end) {
859
+ let [fieldNo, wireType] = reader.tag();
860
+ switch (fieldNo) {
861
+ default:
862
+ let u = options.readUnknownField;
863
+ if (u === "throw")
864
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
865
+ let d = reader.skip(wireType);
866
+ if (u !== false)
867
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
868
+ }
869
+ }
870
+ return message;
871
+ }
872
+ internalBinaryWrite(message: DeleteVehicleFileResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
873
+ let u = options.writeUnknownFields;
874
+ if (u !== false)
875
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
876
+ return writer;
877
+ }
878
+ }
879
+ /**
880
+ * @generated MessageType for protobuf message services.vehicles.DeleteVehicleFileResponse
881
+ */
882
+ export const DeleteVehicleFileResponse = new DeleteVehicleFileResponse$Type();
508
883
  /**
509
884
  * @generated ServiceType for protobuf service services.vehicles.VehiclesService
510
885
  */
511
886
  export const VehiclesService = new ServiceType("services.vehicles.VehiclesService", [
512
- { name: "ListVehicles", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Wanted"] }] } }, I: ListVehiclesRequest, O: ListVehiclesResponse },
513
- { name: "SetVehicleProps", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Wanted"] }] } }, I: SetVehiclePropsRequest, O: SetVehiclePropsResponse },
514
- { name: "ListVehicleActivity", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Creator", "Own"] }] } }, I: ListVehicleActivityRequest, O: ListVehicleActivityResponse }
515
- ], { "codegen.perms.perms_svc": { order: 40, icon: "i-mdi-car-outline" } });
887
+ { name: "ListVehicles", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Properties", type: "ATTRIBUTE_TYPE_PROPERTY_LIST", propertyScope: "PROPERTY_SCOPE_VEHICLE" }] } }, I: ListVehiclesRequest, O: ListVehiclesResponse },
888
+ { name: "SetVehicleProps", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Properties", type: "ATTRIBUTE_TYPE_PROPERTY_LIST", propertyScope: "PROPERTY_SCOPE_VEHICLE" }] } }, I: SetVehiclePropsRequest, O: SetVehiclePropsResponse },
889
+ { name: "ListVehicleActivity", options: { "codegen.perms.perms": { enabled: true, attrs: [{ key: "Fields", type: "ATTRIBUTE_TYPE_STRING_LIST", validStringList: ["Creator", "Own"] }] } }, I: ListVehicleActivityRequest, O: ListVehicleActivityResponse },
890
+ { name: "UploadVehicleFile", clientStreaming: true, options: { "codegen.perms.perms": { enabled: true, name: "SetVehicleProps" } }, I: UploadFileRequest, O: UploadFileResponse },
891
+ { name: "ListVehicleFiles", options: { "codegen.perms.perms": { enabled: true, name: "ListVehicles" } }, I: ListVehicleFilesRequest, O: ListVehicleFilesResponse },
892
+ { name: "DeleteVehicleFile", options: { "codegen.perms.perms": { enabled: true } }, I: DeleteVehicleFileRequest, O: DeleteVehicleFileResponse }
893
+ ], { "codegen.perms.perms_svc": { order: 40, icon: "i-mdi-car-outline", systemProperties: [{ scope: "PROPERTY_SCOPE_VEHICLE", key: "vehicle.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_VEHICLE", key: "vehicle.files", valueType: "PROPERTY_VALUE_TYPE_STRING", enabled: true, displayKey: "common.file", behavior: "PROPERTY_BEHAVIOR_MANAGED", groupKey: "status", sortOrder: 200 }], propertyGroups: [{ scope: "PROPERTY_SCOPE_VEHICLE", key: "status", displayKey: "components.settings.property_definitions.groups.status", sortOrder: 100 }] } });