@busy-app/busy-lib 0.0.4 → 0.0.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.
package/dist/index.d.ts CHANGED
@@ -87,30 +87,106 @@ export declare class BusyBar {
87
87
  stopSound(): Promise<{
88
88
  result: string;
89
89
  }>;
90
+ /**
91
+ * Enables the device's Wi-Fi module.
92
+ *
93
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the enable operation.
94
+ */
95
+ enableWifi(): Promise<components["schemas"]["SuccessResponse"]>;
96
+ /**
97
+ * Disables the device's Wi-Fi module.
98
+ *
99
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the disable operation.
100
+ */
101
+ disableWifi(): Promise<components["schemas"]["SuccessResponse"]>;
102
+ /**
103
+ * Gets the current status of the Wi-Fi module.
104
+ *
105
+ * @returns {Promise<components['schemas']['StatusResponse']>} Current Wi-Fi status.
106
+ */
107
+ statusWifi(): Promise<components["schemas"]["StatusResponse"]>;
108
+ /**
109
+ * Connects the device to a Wi-Fi network with the specified parameters.
110
+ *
111
+ * @param {ConnectParams} params - Connection parameters:
112
+ * @param {ConnectParams['ssid']} params.ssid - SSID (network name) to connect to.
113
+ * @param {ConnectParams['password']} [params.password] - Password for the Wi-Fi network (if required).
114
+ * @param {ConnectParams['security']} params.security - Security type (e.g., "open", "wpa2", etc.).
115
+ * @param {ConnectParams['ipConfig']} params.ipConfig - IP configuration object:
116
+ * @param {ConnectParams['ipConfig']['ipMethod']} params.ipConfig.ipMethod - IP assignment method ("dhcp" or "static").
117
+ * @param {ConnectParams['ipConfig']['ipType']} params.ipConfig.ipType - IP type ("ipv4" or "ipv6").
118
+ * @param {ConnectParams['ipConfig']['address']} [params.ipConfig.address] - Static IP address (if using "static" method).
119
+ * @param {ConnectParams['ipConfig']['mask']} [params.ipConfig.mask] - Subnet mask (if using "static" method).
120
+ * @param {ConnectParams['ipConfig']['gateway']} [params.ipConfig.gateway] - Gateway address (if using "static" method).
121
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the connect operation.
122
+ */
123
+ connectWifi(params: ConnectParams): Promise<components["schemas"]["SuccessResponse"]>;
124
+ /**
125
+ * Disconnects the device from the current Wi-Fi network.
126
+ *
127
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the disconnect operation.
128
+ */
129
+ disconnectWifi(): Promise<components["schemas"]["SuccessResponse"]>;
130
+ /**
131
+ * Scans for available Wi-Fi networks near your device.
132
+ *
133
+ * @returns {Promise<components['schemas']['NetworkResponse']>} List of discovered networks.
134
+ */
135
+ networksWifi(): Promise<components["schemas"]["NetworkResponse"]>;
136
+ /**
137
+ * Removes the saved Wi-Fi configuration (forgets the network).
138
+ *
139
+ * @returns {Promise<never>} Result of the forget operation.
140
+ */
141
+ forgetWifi(): Promise<never>;
142
+ /**
143
+ * Uploads a file to the device's internal storage.
144
+ *
145
+ * @param {UploadFileParams} params - Upload parameters:
146
+ * @param {UploadFileParams['path']} params.path - Path where the file will be saved (e.g., "/ext/test.png").
147
+ * @param {UploadFileParams['file']} params.file - File data to upload.
148
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the upload operation.
149
+ */
150
+ uploadFile(params: UploadFileParams): Promise<components["schemas"]["SuccessResponse"]>;
151
+ /**
152
+ * Downloads a file from the device's internal storage.
153
+ *
154
+ * @param {DownloadFileParams} params - Download parameters:
155
+ * @param {DownloadFileParams['path']} params.path - Path to the file to download (e.g., "/ext/test.png").
156
+ * @param {DownloadFileParams['asArrayBuffer']} [params.asArrayBuffer] - If true, returns data as ArrayBuffer; otherwise, as Blob.
157
+ * @returns {Promise<ArrayBuffer | Blob>} The file data.
158
+ */
159
+ downloadFile(params: DownloadFileParams): Promise<ArrayBuffer | Blob>;
160
+ /**
161
+ * Reads the contents of a directory (files and subdirectories) at the specified path.
162
+ *
163
+ * @param {ReadDirectoryParams} params - List parameters:
164
+ * @param {ReadDirectoryParams['path']} params.path - Path to the directory to list (e.g., "/ext").
165
+ * @returns {Promise<components["schemas"]["StorageList"]>} List of files and directories.
166
+ */
167
+ readDirectory(params: ReadDirectoryParams): Promise<components["schemas"]["StorageList"]>;
168
+ /**
169
+ * Removes a file or a directory from the device's internal storage.
170
+ *
171
+ * @param {RemoveParams} params - Remove parameters:
172
+ * @param {RemoveParams['path']} params.path - Path of the file to remove (e.g., "/ext/test.png").
173
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the remove operation.
174
+ */
175
+ removeResource(params: RemoveParams): Promise<components["schemas"]["SuccessResponse"]>;
176
+ /**
177
+ * Creates a new directory in the device's internal storage.
178
+ *
179
+ * @param {CreateDirectoryParams} params - Directory creation parameters:
180
+ * @param {CreateDirectoryParams['path']} params.path - Path to the new directory (e.g., "/ext/newdir").
181
+ * @returns {Promise<components['schemas']['SuccessResponse']>} Result of the create operation.
182
+ */
183
+ createDirectory(params: CreateDirectoryParams): Promise<components["schemas"]["SuccessResponse"]>;
90
184
  }
91
185
 
186
+ declare type CamelizedRequest = DeepCamelize<components["schemas"]["ConnectRequestConfig"]>;
187
+
92
188
  declare interface components {
93
189
  schemas: {
94
- /** @example {
95
- * "state": 1
96
- * } */
97
- LedState: {
98
- /**
99
- * @description Current LED state (0 for off, 1 for on)
100
- * @enum {integer}
101
- */
102
- state: 0 | 1;
103
- };
104
- /** @example {
105
- * "state": 1
106
- * } */
107
- LedStateRequest: {
108
- /**
109
- * @description LED state (0 for off, 1 for on)
110
- * @enum {integer}
111
- */
112
- state: 0 | 1;
113
- };
114
190
  SuccessResponse: {
115
191
  /**
116
192
  * @description Success status message
@@ -118,12 +194,15 @@ declare interface components {
118
194
  */
119
195
  result: string;
120
196
  };
121
- LedStateResponse: components["schemas"]["SuccessResponse"] & {
122
- /**
123
- * @description Current LED state (0 for off, 1 for on)
124
- * @enum {integer}
125
- */
126
- state: 0 | 1;
197
+ /** @example {
198
+ * "error": "Invalid parameter",
199
+ * "code": 400
200
+ * } */
201
+ Error: {
202
+ /** @description Error message */
203
+ error: string;
204
+ /** @description Error code */
205
+ code?: number;
127
206
  };
128
207
  /** @example {
129
208
  * "branch": "main",
@@ -153,6 +232,49 @@ declare interface components {
153
232
  */
154
233
  commit_hash: string;
155
234
  };
235
+ /** @example {
236
+ * "list": [
237
+ * {
238
+ * "type": "file",
239
+ * "name": "test.png",
240
+ * "size": 65535
241
+ * },
242
+ * {
243
+ * "type": "dir",
244
+ * "name": "assets"
245
+ * }
246
+ * ]
247
+ * } */
248
+ StorageList: {
249
+ /** @description Array of elements to display */
250
+ list: components["schemas"]["StorageListElement"][];
251
+ };
252
+ StorageListElement: {
253
+ /**
254
+ * @description Element type
255
+ * @enum {string}
256
+ */
257
+ type: "file" | "dir";
258
+ /** @description File or directory name */
259
+ name: string;
260
+ };
261
+ StorageFileElement: Omit<components["schemas"]["StorageListElement"], "type"> & {
262
+ /** @description File size in bytes */
263
+ size: number;
264
+ } & {
265
+ /**
266
+ * @description discriminator enum property added by openapi-typescript
267
+ * @enum {string}
268
+ */
269
+ type: "file";
270
+ };
271
+ StorageDirElement: Omit<components["schemas"]["StorageListElement"], "type"> & Record<string, never> & {
272
+ /**
273
+ * @description discriminator enum property added by openapi-typescript
274
+ * @enum {string}
275
+ */
276
+ type: "dir";
277
+ };
156
278
  /**
157
279
  * Format: binary
158
280
  * @description Binary data upload
@@ -165,16 +287,6 @@ declare interface components {
165
287
  */
166
288
  file: string;
167
289
  };
168
- /** @example {
169
- * "error": "Invalid parameter",
170
- * "code": 400
171
- * } */
172
- Error: {
173
- /** @description Error message */
174
- error: string;
175
- /** @description Error code */
176
- code?: number;
177
- };
178
290
  /** @example {
179
291
  * "app_id": "my_app",
180
292
  * "elements": [
@@ -248,6 +360,134 @@ declare interface components {
248
360
  */
249
361
  type: "image";
250
362
  };
363
+ DisplayBrightnessInfo: {
364
+ /**
365
+ * @description Front display brightness (0-100/auto)
366
+ * @example auto
367
+ */
368
+ front?: string;
369
+ /**
370
+ * @description Back display brightness (0-100/auto)
371
+ * @example 50
372
+ */
373
+ back?: string;
374
+ };
375
+ AudioVolumeInfo: {
376
+ /**
377
+ * @description Audio volume value (0-100)
378
+ * @example 50
379
+ */
380
+ volume?: number;
381
+ };
382
+ Status: {
383
+ system?: components["schemas"]["StatusSystem"];
384
+ power?: components["schemas"]["StatusPower"];
385
+ };
386
+ StatusSystem: {
387
+ /**
388
+ * @description Firmware version
389
+ * @example unknown
390
+ */
391
+ version?: string;
392
+ /**
393
+ * @description System uptime
394
+ * @example 00d 00h 04m 13s
395
+ */
396
+ uptime?: string;
397
+ };
398
+ StatusPower: {
399
+ /**
400
+ * @description Power state
401
+ * @example discharging
402
+ * @enum {string}
403
+ */
404
+ state?: "discharging" | "charging" | "charged";
405
+ /**
406
+ * @description Battery charge percent
407
+ * @example 99
408
+ */
409
+ battery_charge?: number;
410
+ /**
411
+ * @description Battery voltage in mV
412
+ * @example 4183
413
+ */
414
+ battery_voltage?: number;
415
+ /**
416
+ * @description Battery current in mA
417
+ * @example -180
418
+ */
419
+ battery_current?: number;
420
+ /**
421
+ * @description USB voltage in mV
422
+ * @example 4843
423
+ */
424
+ usb_voltage?: number;
425
+ };
426
+ /**
427
+ * @example WPA3
428
+ * @enum {string}
429
+ */
430
+ WifiSecurityMethod: "Open" | "WPA" | "WPA2" | "WEP" | "WPA (Enterprise)" | "WPA2 (Enterprise)" | "WPA/WPA2" | "WPA3" | "WPA2/WPA3" | "WPA3 (Enterprise)" | "WPA2/WPA3 (Enterprise)";
431
+ /**
432
+ * @example dhcp
433
+ * @enum {string}
434
+ */
435
+ WifiIpMethod: "dhcp" | "static";
436
+ /**
437
+ * @example ipv4
438
+ * @enum {string}
439
+ */
440
+ WifiIpType: "ipv4" | "ipv6";
441
+ Network: {
442
+ /** @example 42 */
443
+ ssid?: string;
444
+ security?: components["schemas"]["WifiSecurityMethod"];
445
+ /** @example 58 */
446
+ rssi?: number;
447
+ };
448
+ StatusResponse: {
449
+ /**
450
+ * @example enabled
451
+ * @enum {string}
452
+ */
453
+ state?: "disabled" | "enabled" | "connected";
454
+ /** @example Your_WIFI_SSID */
455
+ ssid?: string;
456
+ security?: components["schemas"]["WifiSecurityMethod"];
457
+ ip_config?: {
458
+ ip_method?: components["schemas"]["WifiIpMethod"];
459
+ ip_type?: components["schemas"]["WifiIpType"];
460
+ /** @example 192.168.50.5 */
461
+ address?: string;
462
+ };
463
+ };
464
+ ConnectRequestConfig: {
465
+ /** @example Your_WIFI_SSID */
466
+ ssid?: string;
467
+ /** @example Your_WIFI_Pass */
468
+ password?: string;
469
+ security?: components["schemas"]["WifiSecurityMethod"];
470
+ ip_config?: {
471
+ ip_method?: components["schemas"]["WifiIpMethod"];
472
+ ip_type?: components["schemas"]["WifiIpType"];
473
+ /** @example 192.168.50.5 */
474
+ address?: string;
475
+ /** @example 255.255.255.0 */
476
+ mask?: string;
477
+ /** @example 192.168.50.1 */
478
+ gateway?: string;
479
+ };
480
+ };
481
+ NetworkResponse: {
482
+ /** @example 1 */
483
+ count?: number;
484
+ networks?: components["schemas"]["Network"][];
485
+ };
486
+ /**
487
+ * Format: base64
488
+ * @description Frame for requested display encoded in base64
489
+ */
490
+ ScreenResponse: string;
251
491
  };
252
492
  responses: never;
253
493
  parameters: never;
@@ -256,6 +496,14 @@ declare interface components {
256
496
  pathItems: never;
257
497
  }
258
498
 
499
+ declare type ConnectParams = RequireKeys<Omit<CamelizedRequest, "ipConfig"> & {
500
+ ipConfig: RequiredIpConfig;
501
+ }, "ssid" | "security" | "ipConfig">;
502
+
503
+ export declare interface CreateDirectoryParams {
504
+ path: operations["createStorageDir"]["parameters"]["query"]["path"];
505
+ }
506
+
259
507
  declare type CustomElement = CustomTextElement | CustomImageElement;
260
508
 
261
509
  declare type CustomImageElement = MakeOptional<components["schemas"]["ImageElement"], OptionalFields>;
@@ -264,6 +512,10 @@ declare type CustomTextElement = MakeOptional<components["schemas"]["TextElement
264
512
 
265
513
  declare type DataListener = (data: Uint8Array) => void;
266
514
 
515
+ declare type DeepCamelize<T> = T extends (...args: any[]) => any ? T : T extends Array<infer U> ? Array<DeepCamelize<U>> : T extends object ? {
516
+ [K in keyof T as SnakeToCamel<K & string>]: DeepCamelize<T[K]>;
517
+ } : T;
518
+
267
519
  declare interface DeleteParams {
268
520
  appId: paths["/v0/assets/upload"]["delete"]["parameters"]["query"]["app_id"];
269
521
  }
@@ -275,6 +527,11 @@ export declare enum DeviceScreen {
275
527
  BACK = 1
276
528
  }
277
529
 
530
+ export declare interface DownloadFileParams {
531
+ path: operations["readStorageFile"]["parameters"]["query"]["path"];
532
+ asArrayBuffer?: boolean;
533
+ }
534
+
278
535
  declare interface DrawParams {
279
536
  appId: paths["/v0/display/draw"]["post"]["requestBody"]["content"]["application/json"]["app_id"];
280
537
  elements: CustomElement[];
@@ -297,26 +554,25 @@ declare interface LocalConfig extends BaseConfig {
297
554
 
298
555
  declare type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
299
556
 
557
+ export declare type Network = components["schemas"]["Network"];
558
+
300
559
  declare interface operations {
301
- getLedState: {
560
+ getVersion: {
302
561
  parameters: {
303
- query?: {
304
- /** @description LED state (0 for off, 1 for on) - alternative to JSON body */
305
- state?: 0 | 1;
306
- };
562
+ query?: never;
307
563
  header?: never;
308
564
  path?: never;
309
565
  cookie?: never;
310
566
  };
311
567
  requestBody?: never;
312
568
  responses: {
313
- /** @description LED state retrieved successfully */
569
+ /** @description Version information retrieved successfully */
314
570
  200: {
315
571
  headers: {
316
572
  [name: string]: unknown;
317
573
  };
318
574
  content: {
319
- "application/json": components["schemas"]["LedStateResponse"];
575
+ "application/json": components["schemas"]["VersionInfo"];
320
576
  };
321
577
  };
322
578
  /** @description Internal server error */
@@ -330,33 +586,35 @@ declare interface operations {
330
586
  };
331
587
  };
332
588
  };
333
- setLedState: {
589
+ updateFirmware: {
334
590
  parameters: {
335
591
  query?: {
336
- /** @description LED state (0 for off, 1 for on) - alternative to JSON body */
337
- state?: 0 | 1;
592
+ /**
593
+ * @description Name for the update package. The update will be unpacked to /ext/update/<name>.
594
+ * @example firmware
595
+ */
596
+ name?: string;
338
597
  };
339
598
  header?: never;
340
599
  path?: never;
341
600
  cookie?: never;
342
601
  };
343
- /** @description LED state as JSON (alternative to query parameter) */
344
- requestBody?: {
602
+ requestBody: {
345
603
  content: {
346
- "application/json": components["schemas"]["LedStateRequest"];
604
+ "application/octet-stream": string;
347
605
  };
348
606
  };
349
607
  responses: {
350
- /** @description LED state set successfully */
608
+ /** @description Update initiated successfully. The device will reboot. */
351
609
  200: {
352
610
  headers: {
353
611
  [name: string]: unknown;
354
612
  };
355
613
  content: {
356
- "application/json": components["schemas"]["LedStateResponse"];
614
+ "application/json": components["schemas"]["SuccessResponse"];
357
615
  };
358
616
  };
359
- /** @description Invalid state parameter */
617
+ /** @description Invalid parameters, invalid TAR file, or update preparation failed. */
360
618
  400: {
361
619
  headers: {
362
620
  [name: string]: unknown;
@@ -365,27 +623,16 @@ declare interface operations {
365
623
  "application/json": components["schemas"]["Error"];
366
624
  };
367
625
  };
368
- };
369
- };
370
- getVersion: {
371
- parameters: {
372
- query?: never;
373
- header?: never;
374
- path?: never;
375
- cookie?: never;
376
- };
377
- requestBody?: never;
378
- responses: {
379
- /** @description Version information retrieved successfully */
380
- 200: {
626
+ /** @description Update package too large. */
627
+ 413: {
381
628
  headers: {
382
629
  [name: string]: unknown;
383
630
  };
384
631
  content: {
385
- "application/json": components["schemas"]["VersionInfo"];
632
+ "application/json": components["schemas"]["Error"];
386
633
  };
387
634
  };
388
- /** @description Internal server error */
635
+ /** @description Internal server error during update process. */
389
636
  500: {
390
637
  headers: {
391
638
  [name: string]: unknown;
@@ -484,20 +731,26 @@ declare interface operations {
484
731
  };
485
732
  };
486
733
  };
487
- drawOnDisplay: {
734
+ writeStorageFile: {
488
735
  parameters: {
489
- query?: never;
736
+ query: {
737
+ /**
738
+ * @description Path for the uploaded file
739
+ * @example /ext/test.png
740
+ */
741
+ path: string;
742
+ };
490
743
  header?: never;
491
744
  path?: never;
492
745
  cookie?: never;
493
746
  };
494
747
  requestBody: {
495
748
  content: {
496
- "application/json": components["schemas"]["DisplayElements"];
749
+ "application/octet-stream": string;
497
750
  };
498
751
  };
499
752
  responses: {
500
- /** @description Drawing command executed successfully */
753
+ /** @description File uploaded successfully */
501
754
  200: {
502
755
  headers: {
503
756
  [name: string]: unknown;
@@ -506,7 +759,7 @@ declare interface operations {
506
759
  "application/json": components["schemas"]["SuccessResponse"];
507
760
  };
508
761
  };
509
- /** @description Invalid drawing data */
762
+ /** @description Invalid parameters or upload failed */
510
763
  400: {
511
764
  headers: {
512
765
  [name: string]: unknown;
@@ -515,8 +768,8 @@ declare interface operations {
515
768
  "application/json": components["schemas"]["Error"];
516
769
  };
517
770
  };
518
- /** @description Display error */
519
- 500: {
771
+ /** @description File too large */
772
+ 413: {
520
773
  headers: {
521
774
  [name: string]: unknown;
522
775
  };
@@ -526,26 +779,32 @@ declare interface operations {
526
779
  };
527
780
  };
528
781
  };
529
- clearDisplay: {
782
+ readStorageFile: {
530
783
  parameters: {
531
- query?: never;
784
+ query: {
785
+ /**
786
+ * @description Path to the file
787
+ * @example /ext/test.png
788
+ */
789
+ path: string;
790
+ };
532
791
  header?: never;
533
792
  path?: never;
534
793
  cookie?: never;
535
794
  };
536
795
  requestBody?: never;
537
796
  responses: {
538
- /** @description Display cleared successfully */
797
+ /** @description File uploaded successfully */
539
798
  200: {
540
799
  headers: {
541
800
  [name: string]: unknown;
542
801
  };
543
802
  content: {
544
- "application/json": components["schemas"]["SuccessResponse"];
803
+ "application/octet-stream": string;
545
804
  };
546
805
  };
547
- /** @description Display error */
548
- 500: {
806
+ /** @description Invalid parameters or file not exists */
807
+ 400: {
549
808
  headers: {
550
809
  [name: string]: unknown;
551
810
  };
@@ -555,17 +814,12 @@ declare interface operations {
555
814
  };
556
815
  };
557
816
  };
558
- playAudio: {
817
+ listStorageFiles: {
559
818
  parameters: {
560
819
  query: {
561
820
  /**
562
- * @description Application ID for organizing assets
563
- * @example my_app
564
- */
565
- app_id: string;
566
- /**
567
- * @description Path to audio file within app's assets directory
568
- * @example data.snd
821
+ * @description Path to the file
822
+ * @example /ext
569
823
  */
570
824
  path: string;
571
825
  };
@@ -575,16 +829,16 @@ declare interface operations {
575
829
  };
576
830
  requestBody?: never;
577
831
  responses: {
578
- /** @description Audio playback started successfully */
832
+ /** @description Directory contents read successfully */
579
833
  200: {
580
834
  headers: {
581
835
  [name: string]: unknown;
582
836
  };
583
837
  content: {
584
- "application/json": components["schemas"]["SuccessResponse"];
838
+ "application/json": components["schemas"]["StorageList"];
585
839
  };
586
840
  };
587
- /** @description Invalid file path or file not found */
841
+ /** @description Invalid parameters or directory not exists */
588
842
  400: {
589
843
  headers: {
590
844
  [name: string]: unknown;
@@ -593,27 +847,24 @@ declare interface operations {
593
847
  "application/json": components["schemas"]["Error"];
594
848
  };
595
849
  };
596
- /** @description Audio system error */
597
- 500: {
598
- headers: {
599
- [name: string]: unknown;
600
- };
601
- content: {
602
- "application/json": components["schemas"]["Error"];
603
- };
604
- };
605
850
  };
606
851
  };
607
- stopAudio: {
852
+ removeStorageFile: {
608
853
  parameters: {
609
- query?: never;
854
+ query: {
855
+ /**
856
+ * @description Path of a file to remove
857
+ * @example /ext/test.png
858
+ */
859
+ path: string;
860
+ };
610
861
  header?: never;
611
862
  path?: never;
612
863
  cookie?: never;
613
864
  };
614
865
  requestBody?: never;
615
866
  responses: {
616
- /** @description Audio playback stopped successfully */
867
+ /** @description File deleted successfully */
617
868
  200: {
618
869
  headers: {
619
870
  [name: string]: unknown;
@@ -622,8 +873,8 @@ declare interface operations {
622
873
  "application/json": components["schemas"]["SuccessResponse"];
623
874
  };
624
875
  };
625
- /** @description Audio system error */
626
- 500: {
876
+ /** @description Invalid path or deletion failed */
877
+ 400: {
627
878
  headers: {
628
879
  [name: string]: unknown;
629
880
  };
@@ -633,33 +884,32 @@ declare interface operations {
633
884
  };
634
885
  };
635
886
  };
636
- connectWebSocket: {
887
+ createStorageDir: {
637
888
  parameters: {
638
- query?: never;
889
+ query: {
890
+ /**
891
+ * @description Path to a new directory
892
+ * @example /ext/newdir
893
+ */
894
+ path: string;
895
+ };
639
896
  header?: never;
640
897
  path?: never;
641
898
  cookie?: never;
642
899
  };
643
900
  requestBody?: never;
644
901
  responses: {
645
- /** @description WebSocket connection established */
646
- 101: {
647
- headers: {
648
- [name: string]: unknown;
649
- };
650
- content?: never;
651
- };
652
- /** @description WebSocket upgrade failed */
653
- 400: {
902
+ /** @description Directory created successfully */
903
+ 200: {
654
904
  headers: {
655
905
  [name: string]: unknown;
656
906
  };
657
907
  content: {
658
- "application/json": components["schemas"]["Error"];
908
+ "application/json": components["schemas"]["SuccessResponse"];
659
909
  };
660
910
  };
661
- /** @description Upgrade required */
662
- 426: {
911
+ /** @description Invalid path or deletion failed */
912
+ 400: {
663
913
  headers: {
664
914
  [name: string]: unknown;
665
915
  };
@@ -669,8 +919,457 @@ declare interface operations {
669
919
  };
670
920
  };
671
921
  };
672
- }
673
-
922
+ drawOnDisplay: {
923
+ parameters: {
924
+ query?: never;
925
+ header?: never;
926
+ path?: never;
927
+ cookie?: never;
928
+ };
929
+ requestBody: {
930
+ content: {
931
+ "application/json": components["schemas"]["DisplayElements"];
932
+ };
933
+ };
934
+ responses: {
935
+ /** @description Drawing command executed successfully */
936
+ 200: {
937
+ headers: {
938
+ [name: string]: unknown;
939
+ };
940
+ content: {
941
+ "application/json": components["schemas"]["SuccessResponse"];
942
+ };
943
+ };
944
+ /** @description Invalid drawing data */
945
+ 400: {
946
+ headers: {
947
+ [name: string]: unknown;
948
+ };
949
+ content: {
950
+ "application/json": components["schemas"]["Error"];
951
+ };
952
+ };
953
+ /** @description Display error */
954
+ 500: {
955
+ headers: {
956
+ [name: string]: unknown;
957
+ };
958
+ content: {
959
+ "application/json": components["schemas"]["Error"];
960
+ };
961
+ };
962
+ };
963
+ };
964
+ clearDisplay: {
965
+ parameters: {
966
+ query?: never;
967
+ header?: never;
968
+ path?: never;
969
+ cookie?: never;
970
+ };
971
+ requestBody?: never;
972
+ responses: {
973
+ /** @description Display cleared successfully */
974
+ 200: {
975
+ headers: {
976
+ [name: string]: unknown;
977
+ };
978
+ content: {
979
+ "application/json": components["schemas"]["SuccessResponse"];
980
+ };
981
+ };
982
+ /** @description Display error */
983
+ 500: {
984
+ headers: {
985
+ [name: string]: unknown;
986
+ };
987
+ content: {
988
+ "application/json": components["schemas"]["Error"];
989
+ };
990
+ };
991
+ };
992
+ };
993
+ getDisplayBrightness: {
994
+ parameters: {
995
+ query?: never;
996
+ header?: never;
997
+ path?: never;
998
+ cookie?: never;
999
+ };
1000
+ requestBody?: never;
1001
+ responses: {
1002
+ /** @description Information retrieved successfully */
1003
+ 200: {
1004
+ headers: {
1005
+ [name: string]: unknown;
1006
+ };
1007
+ content: {
1008
+ "application/json": components["schemas"]["DisplayBrightnessInfo"];
1009
+ };
1010
+ };
1011
+ };
1012
+ };
1013
+ setDisplayBrightness: {
1014
+ parameters: {
1015
+ query?: {
1016
+ /**
1017
+ * @description Front display brightness (0-100/auto)
1018
+ * @example auto
1019
+ */
1020
+ front?: string;
1021
+ /**
1022
+ * @description Back display brightness (0-100/auto)
1023
+ * @example 50
1024
+ */
1025
+ back?: string;
1026
+ };
1027
+ header?: never;
1028
+ path?: never;
1029
+ cookie?: never;
1030
+ };
1031
+ requestBody?: never;
1032
+ responses: {
1033
+ /** @description Brightness set successfully */
1034
+ 200: {
1035
+ headers: {
1036
+ [name: string]: unknown;
1037
+ };
1038
+ content: {
1039
+ "application/json": components["schemas"]["SuccessResponse"];
1040
+ };
1041
+ };
1042
+ /** @description Invalid request data */
1043
+ 400: {
1044
+ headers: {
1045
+ [name: string]: unknown;
1046
+ };
1047
+ content: {
1048
+ "application/json": components["schemas"]["Error"];
1049
+ };
1050
+ };
1051
+ };
1052
+ };
1053
+ playAudio: {
1054
+ parameters: {
1055
+ query: {
1056
+ /**
1057
+ * @description Application ID for organizing assets
1058
+ * @example my_app
1059
+ */
1060
+ app_id: string;
1061
+ /**
1062
+ * @description Path to audio file within app's assets directory
1063
+ * @example data.snd
1064
+ */
1065
+ path: string;
1066
+ };
1067
+ header?: never;
1068
+ path?: never;
1069
+ cookie?: never;
1070
+ };
1071
+ requestBody?: never;
1072
+ responses: {
1073
+ /** @description Audio playback started successfully */
1074
+ 200: {
1075
+ headers: {
1076
+ [name: string]: unknown;
1077
+ };
1078
+ content: {
1079
+ "application/json": components["schemas"]["SuccessResponse"];
1080
+ };
1081
+ };
1082
+ /** @description Invalid file path or file not found */
1083
+ 400: {
1084
+ headers: {
1085
+ [name: string]: unknown;
1086
+ };
1087
+ content: {
1088
+ "application/json": components["schemas"]["Error"];
1089
+ };
1090
+ };
1091
+ /** @description Audio system error */
1092
+ 500: {
1093
+ headers: {
1094
+ [name: string]: unknown;
1095
+ };
1096
+ content: {
1097
+ "application/json": components["schemas"]["Error"];
1098
+ };
1099
+ };
1100
+ };
1101
+ };
1102
+ stopAudio: {
1103
+ parameters: {
1104
+ query?: never;
1105
+ header?: never;
1106
+ path?: never;
1107
+ cookie?: never;
1108
+ };
1109
+ requestBody?: never;
1110
+ responses: {
1111
+ /** @description Audio playback stopped successfully */
1112
+ 200: {
1113
+ headers: {
1114
+ [name: string]: unknown;
1115
+ };
1116
+ content: {
1117
+ "application/json": components["schemas"]["SuccessResponse"];
1118
+ };
1119
+ };
1120
+ /** @description Audio system error */
1121
+ 500: {
1122
+ headers: {
1123
+ [name: string]: unknown;
1124
+ };
1125
+ content: {
1126
+ "application/json": components["schemas"]["Error"];
1127
+ };
1128
+ };
1129
+ };
1130
+ };
1131
+ getAudioVolume: {
1132
+ parameters: {
1133
+ query?: never;
1134
+ header?: never;
1135
+ path?: never;
1136
+ cookie?: never;
1137
+ };
1138
+ requestBody?: never;
1139
+ responses: {
1140
+ /** @description Information retrieved successfully */
1141
+ 200: {
1142
+ headers: {
1143
+ [name: string]: unknown;
1144
+ };
1145
+ content: {
1146
+ "application/json": components["schemas"]["AudioVolumeInfo"];
1147
+ };
1148
+ };
1149
+ };
1150
+ };
1151
+ setAudioVolume: {
1152
+ parameters: {
1153
+ query: {
1154
+ /**
1155
+ * @description Audio volume (0-100)
1156
+ * @example 50
1157
+ */
1158
+ volume: number;
1159
+ };
1160
+ header?: never;
1161
+ path?: never;
1162
+ cookie?: never;
1163
+ };
1164
+ requestBody?: never;
1165
+ responses: {
1166
+ /** @description Volume set successfully */
1167
+ 200: {
1168
+ headers: {
1169
+ [name: string]: unknown;
1170
+ };
1171
+ content: {
1172
+ "application/json": components["schemas"]["SuccessResponse"];
1173
+ };
1174
+ };
1175
+ /** @description Invalid request data */
1176
+ 400: {
1177
+ headers: {
1178
+ [name: string]: unknown;
1179
+ };
1180
+ content: {
1181
+ "application/json": components["schemas"]["Error"];
1182
+ };
1183
+ };
1184
+ };
1185
+ };
1186
+ connectInputWebSocket: {
1187
+ parameters: {
1188
+ query?: never;
1189
+ header?: never;
1190
+ path?: never;
1191
+ cookie?: never;
1192
+ };
1193
+ requestBody?: never;
1194
+ responses: {
1195
+ /** @description WebSocket connection established */
1196
+ 101: {
1197
+ headers: {
1198
+ [name: string]: unknown;
1199
+ };
1200
+ content?: never;
1201
+ };
1202
+ /** @description WebSocket upgrade failed */
1203
+ 400: {
1204
+ headers: {
1205
+ [name: string]: unknown;
1206
+ };
1207
+ content: {
1208
+ "application/json": components["schemas"]["Error"];
1209
+ };
1210
+ };
1211
+ /** @description Upgrade required */
1212
+ 426: {
1213
+ headers: {
1214
+ [name: string]: unknown;
1215
+ };
1216
+ content: {
1217
+ "application/json": components["schemas"]["Error"];
1218
+ };
1219
+ };
1220
+ };
1221
+ };
1222
+ setInputKey: {
1223
+ parameters: {
1224
+ query: {
1225
+ /**
1226
+ * @description Key name
1227
+ * @example ok
1228
+ */
1229
+ key: "up" | "down" | "ok" | "back" | "start" | "busy" | "status" | "off" | "apps" | "settings";
1230
+ };
1231
+ header?: never;
1232
+ path?: never;
1233
+ cookie?: never;
1234
+ };
1235
+ requestBody?: never;
1236
+ responses: {
1237
+ /** @description Input event sent successfully */
1238
+ 200: {
1239
+ headers: {
1240
+ [name: string]: unknown;
1241
+ };
1242
+ content: {
1243
+ "application/json": components["schemas"]["SuccessResponse"];
1244
+ };
1245
+ };
1246
+ /** @description Invalid request data */
1247
+ 400: {
1248
+ headers: {
1249
+ [name: string]: unknown;
1250
+ };
1251
+ content: {
1252
+ "application/json": components["schemas"]["Error"];
1253
+ };
1254
+ };
1255
+ };
1256
+ };
1257
+ getStatus: {
1258
+ parameters: {
1259
+ query?: never;
1260
+ header?: never;
1261
+ path?: never;
1262
+ cookie?: never;
1263
+ };
1264
+ requestBody?: never;
1265
+ responses: {
1266
+ /** @description Information retrieved successfully */
1267
+ 200: {
1268
+ headers: {
1269
+ [name: string]: unknown;
1270
+ };
1271
+ content: {
1272
+ "application/json": components["schemas"]["Status"];
1273
+ };
1274
+ };
1275
+ /** @description Internal server error */
1276
+ 500: {
1277
+ headers: {
1278
+ [name: string]: unknown;
1279
+ };
1280
+ content: {
1281
+ "application/json": components["schemas"]["Error"];
1282
+ };
1283
+ };
1284
+ };
1285
+ };
1286
+ getStatusSystem: {
1287
+ parameters: {
1288
+ query?: never;
1289
+ header?: never;
1290
+ path?: never;
1291
+ cookie?: never;
1292
+ };
1293
+ requestBody?: never;
1294
+ responses: {
1295
+ /** @description Information retrieved successfully */
1296
+ 200: {
1297
+ headers: {
1298
+ [name: string]: unknown;
1299
+ };
1300
+ content: {
1301
+ "application/json": components["schemas"]["StatusSystem"];
1302
+ };
1303
+ };
1304
+ /** @description Internal server error */
1305
+ 500: {
1306
+ headers: {
1307
+ [name: string]: unknown;
1308
+ };
1309
+ content: {
1310
+ "application/json": components["schemas"]["Error"];
1311
+ };
1312
+ };
1313
+ };
1314
+ };
1315
+ getStatusPower: {
1316
+ parameters: {
1317
+ query?: never;
1318
+ header?: never;
1319
+ path?: never;
1320
+ cookie?: never;
1321
+ };
1322
+ requestBody?: never;
1323
+ responses: {
1324
+ /** @description Information retrieved successfully */
1325
+ 200: {
1326
+ headers: {
1327
+ [name: string]: unknown;
1328
+ };
1329
+ content: {
1330
+ "application/json": components["schemas"]["StatusPower"];
1331
+ };
1332
+ };
1333
+ /** @description Internal server error */
1334
+ 500: {
1335
+ headers: {
1336
+ [name: string]: unknown;
1337
+ };
1338
+ content: {
1339
+ "application/json": components["schemas"]["Error"];
1340
+ };
1341
+ };
1342
+ };
1343
+ };
1344
+ connectWebSocket: {
1345
+ parameters: {
1346
+ query?: never;
1347
+ header?: never;
1348
+ path?: never;
1349
+ cookie?: never;
1350
+ };
1351
+ requestBody?: never;
1352
+ responses: {
1353
+ /** @description WebSocket connection established */
1354
+ 101: {
1355
+ headers: {
1356
+ [name: string]: unknown;
1357
+ };
1358
+ content?: never;
1359
+ };
1360
+ /** @description Exceed max clients count */
1361
+ 400: {
1362
+ headers: {
1363
+ [name: string]: unknown;
1364
+ };
1365
+ content: {
1366
+ "application/json": components["schemas"]["Error"];
1367
+ };
1368
+ };
1369
+ };
1370
+ };
1371
+ }
1372
+
674
1373
  declare type OptionalFields = "timeout" | "x" | "y" | "display";
675
1374
 
676
1375
  /**
@@ -678,7 +1377,197 @@ declare type OptionalFields = "timeout" | "x" | "y" | "display";
678
1377
  * Do not make direct changes to the file.
679
1378
  */
680
1379
  declare interface paths {
681
- "/v0/led": {
1380
+ "/v0/version": {
1381
+ parameters: {
1382
+ query?: never;
1383
+ header?: never;
1384
+ path?: never;
1385
+ cookie?: never;
1386
+ };
1387
+ /**
1388
+ * Get firmware version information
1389
+ * @description Retrieves firmware version, branch, build date, and commit information
1390
+ */
1391
+ get: operations["getVersion"];
1392
+ put?: never;
1393
+ post?: never;
1394
+ delete?: never;
1395
+ options?: never;
1396
+ head?: never;
1397
+ patch?: never;
1398
+ trace?: never;
1399
+ };
1400
+ "/v0/update": {
1401
+ parameters: {
1402
+ query?: never;
1403
+ header?: never;
1404
+ path?: never;
1405
+ cookie?: never;
1406
+ };
1407
+ get?: never;
1408
+ put?: never;
1409
+ /**
1410
+ * Update firmware
1411
+ * @description Uploads a firmware update package (TAR file) and initiates the update process.
1412
+ */
1413
+ post: operations["updateFirmware"];
1414
+ delete?: never;
1415
+ options?: never;
1416
+ head?: never;
1417
+ patch?: never;
1418
+ trace?: never;
1419
+ };
1420
+ "/v0/assets/upload": {
1421
+ parameters: {
1422
+ query?: never;
1423
+ header?: never;
1424
+ path?: never;
1425
+ cookie?: never;
1426
+ };
1427
+ get?: never;
1428
+ put?: never;
1429
+ /**
1430
+ * Upload asset file with app ID
1431
+ * @description Uploads a file to a specific app's assets directory
1432
+ */
1433
+ post: operations["uploadAssetWithAppId"];
1434
+ /**
1435
+ * Delete app assets
1436
+ * @description Deletes all assets for a specific app ID
1437
+ */
1438
+ delete: operations["deleteAppAssets"];
1439
+ options?: never;
1440
+ head?: never;
1441
+ patch?: never;
1442
+ trace?: never;
1443
+ };
1444
+ "/v0/storage/write": {
1445
+ parameters: {
1446
+ query?: never;
1447
+ header?: never;
1448
+ path?: never;
1449
+ cookie?: never;
1450
+ };
1451
+ get?: never;
1452
+ put?: never;
1453
+ /**
1454
+ * Upload file to internal storage
1455
+ * @description Uploads a file to a specified path
1456
+ */
1457
+ post: operations["writeStorageFile"];
1458
+ delete?: never;
1459
+ options?: never;
1460
+ head?: never;
1461
+ patch?: never;
1462
+ trace?: never;
1463
+ };
1464
+ "/v0/storage/read": {
1465
+ parameters: {
1466
+ query?: never;
1467
+ header?: never;
1468
+ path?: never;
1469
+ cookie?: never;
1470
+ };
1471
+ /**
1472
+ * Download file from internal storage
1473
+ * @description Downloads a file from a specified path
1474
+ */
1475
+ get: operations["readStorageFile"];
1476
+ put?: never;
1477
+ post?: never;
1478
+ delete?: never;
1479
+ options?: never;
1480
+ head?: never;
1481
+ patch?: never;
1482
+ trace?: never;
1483
+ };
1484
+ "/v0/storage/list": {
1485
+ parameters: {
1486
+ query?: never;
1487
+ header?: never;
1488
+ path?: never;
1489
+ cookie?: never;
1490
+ };
1491
+ /**
1492
+ * List files on internal storage
1493
+ * @description Downloads a file from a specified path
1494
+ */
1495
+ get: operations["listStorageFiles"];
1496
+ put?: never;
1497
+ post?: never;
1498
+ delete?: never;
1499
+ options?: never;
1500
+ head?: never;
1501
+ patch?: never;
1502
+ trace?: never;
1503
+ };
1504
+ "/v0/storage/remove": {
1505
+ parameters: {
1506
+ query?: never;
1507
+ header?: never;
1508
+ path?: never;
1509
+ cookie?: never;
1510
+ };
1511
+ get?: never;
1512
+ put?: never;
1513
+ post?: never;
1514
+ /**
1515
+ * Remove a file on internal storage
1516
+ * @description Removes a file with a specified path
1517
+ */
1518
+ delete: operations["removeStorageFile"];
1519
+ options?: never;
1520
+ head?: never;
1521
+ patch?: never;
1522
+ trace?: never;
1523
+ };
1524
+ "/v0/storage/mkdir": {
1525
+ parameters: {
1526
+ query?: never;
1527
+ header?: never;
1528
+ path?: never;
1529
+ cookie?: never;
1530
+ };
1531
+ get?: never;
1532
+ put?: never;
1533
+ /**
1534
+ * Create a directory on internal storage
1535
+ * @description Creates a new directory with a specified path
1536
+ */
1537
+ post: operations["createStorageDir"];
1538
+ delete?: never;
1539
+ options?: never;
1540
+ head?: never;
1541
+ patch?: never;
1542
+ trace?: never;
1543
+ };
1544
+ "/v0/display/draw": {
1545
+ parameters: {
1546
+ query?: never;
1547
+ header?: never;
1548
+ path?: never;
1549
+ cookie?: never;
1550
+ };
1551
+ get?: never;
1552
+ put?: never;
1553
+ /**
1554
+ * Draw on display
1555
+ * @description Sends drawing data to the display.
1556
+ * Supports JSON-defined display elements.
1557
+ *
1558
+ */
1559
+ post: operations["drawOnDisplay"];
1560
+ /**
1561
+ * Clear display
1562
+ * @description Clears the display and stops the Canvas application if running
1563
+ */
1564
+ delete: operations["clearDisplay"];
1565
+ options?: never;
1566
+ head?: never;
1567
+ patch?: never;
1568
+ trace?: never;
1569
+ };
1570
+ "/v0/display/brightness": {
682
1571
  parameters: {
683
1572
  query?: never;
684
1573
  header?: never;
@@ -686,119 +1575,138 @@ declare interface paths {
686
1575
  cookie?: never;
687
1576
  };
688
1577
  /**
689
- * Get LED state
690
- * @description Retrieves the current LED state
1578
+ * Get display brightness
1579
+ * @description Get brightness value for displays
691
1580
  */
692
- get: operations["getLedState"];
1581
+ get: operations["getDisplayBrightness"];
693
1582
  put?: never;
694
1583
  /**
695
- * Set LED state
696
- * @description Sets the LED state via query parameter or JSON body
1584
+ * Set display brightness
1585
+ * @description Set brightness for one or both displays
1586
+ *
697
1587
  */
698
- post: operations["setLedState"];
1588
+ post: operations["setDisplayBrightness"];
699
1589
  delete?: never;
700
1590
  options?: never;
701
1591
  head?: never;
702
1592
  patch?: never;
703
1593
  trace?: never;
704
1594
  };
705
- "/v0/version": {
1595
+ "/v0/audio/play": {
706
1596
  parameters: {
707
1597
  query?: never;
708
1598
  header?: never;
709
1599
  path?: never;
710
1600
  cookie?: never;
711
1601
  };
1602
+ get?: never;
1603
+ put?: never;
712
1604
  /**
713
- * Get firmware version information
714
- * @description Retrieves firmware version, branch, build date, and commit information
1605
+ * Play audio file
1606
+ * @description Plays an audio file from the assets directory.
1607
+ * Supported formats include .snd files.
1608
+ *
715
1609
  */
716
- get: operations["getVersion"];
717
- put?: never;
718
- post?: never;
719
- delete?: never;
1610
+ post: operations["playAudio"];
1611
+ /**
1612
+ * Stop audio playback
1613
+ * @description Stops any currently playing audio
1614
+ */
1615
+ delete: operations["stopAudio"];
720
1616
  options?: never;
721
1617
  head?: never;
722
1618
  patch?: never;
723
1619
  trace?: never;
724
1620
  };
725
- "/v0/assets/upload": {
1621
+ "/v0/audio/volume": {
726
1622
  parameters: {
727
1623
  query?: never;
728
1624
  header?: never;
729
1625
  path?: never;
730
1626
  cookie?: never;
731
1627
  };
732
- get?: never;
733
- put?: never;
734
1628
  /**
735
- * Upload asset file with app ID
736
- * @description Uploads a file to a specific app's assets directory
1629
+ * Get audio volume
1630
+ * @description Get audio volume value
737
1631
  */
738
- post: operations["uploadAssetWithAppId"];
1632
+ get: operations["getAudioVolume"];
1633
+ put?: never;
739
1634
  /**
740
- * Delete app assets
741
- * @description Deletes all assets for a specific app ID
1635
+ * Set audio volume
1636
+ * @description Get audio volume value
742
1637
  */
743
- delete: operations["deleteAppAssets"];
1638
+ post: operations["setAudioVolume"];
1639
+ delete?: never;
744
1640
  options?: never;
745
1641
  head?: never;
746
1642
  patch?: never;
747
1643
  trace?: never;
748
1644
  };
749
- "/v0/display/draw": {
1645
+ "/v0/input": {
750
1646
  parameters: {
751
1647
  query?: never;
752
1648
  header?: never;
753
1649
  path?: never;
754
1650
  cookie?: never;
755
1651
  };
756
- get?: never;
757
- put?: never;
758
1652
  /**
759
- * Draw on display
760
- * @description Sends drawing data to the display.
761
- * Supports JSON-defined display elements.
762
- *
1653
+ * Input evnts streaming
1654
+ * @description Start WebSocket session for input events streaming
763
1655
  */
764
- post: operations["drawOnDisplay"];
1656
+ get: operations["connectInputWebSocket"];
1657
+ put?: never;
765
1658
  /**
766
- * Clear display
767
- * @description Clears the display and stops the Canvas application if running
1659
+ * Send input event
1660
+ * @description Send single key press event
768
1661
  */
769
- delete: operations["clearDisplay"];
1662
+ post: operations["setInputKey"];
1663
+ delete?: never;
770
1664
  options?: never;
771
1665
  head?: never;
772
1666
  patch?: never;
773
1667
  trace?: never;
774
1668
  };
775
- "/v0/audio/play": {
1669
+ "/v0/status": {
776
1670
  parameters: {
777
1671
  query?: never;
778
1672
  header?: never;
779
1673
  path?: never;
780
1674
  cookie?: never;
781
1675
  };
782
- get?: never;
783
- put?: never;
784
1676
  /**
785
- * Play audio file
786
- * @description Plays an audio file from the assets directory.
787
- * Supported formats include .snd files.
788
- *
1677
+ * Get device status
1678
+ * @description Get device status
789
1679
  */
790
- post: operations["playAudio"];
1680
+ get: operations["getStatus"];
1681
+ put?: never;
1682
+ post?: never;
1683
+ delete?: never;
1684
+ options?: never;
1685
+ head?: never;
1686
+ patch?: never;
1687
+ trace?: never;
1688
+ };
1689
+ "/v0/status/system": {
1690
+ parameters: {
1691
+ query?: never;
1692
+ header?: never;
1693
+ path?: never;
1694
+ cookie?: never;
1695
+ };
791
1696
  /**
792
- * Stop audio playback
793
- * @description Stops any currently playing audio
1697
+ * Get system status
1698
+ * @description Get system status
794
1699
  */
795
- delete: operations["stopAudio"];
1700
+ get: operations["getStatusSystem"];
1701
+ put?: never;
1702
+ post?: never;
1703
+ delete?: never;
796
1704
  options?: never;
797
1705
  head?: never;
798
1706
  patch?: never;
799
1707
  trace?: never;
800
1708
  };
801
- "/ws_test": {
1709
+ "/v0/status/power": {
802
1710
  parameters: {
803
1711
  query?: never;
804
1712
  header?: never;
@@ -806,12 +1714,362 @@ declare interface paths {
806
1714
  cookie?: never;
807
1715
  };
808
1716
  /**
809
- * WebSocket test endpoint
810
- * @description WebSocket connection for real-time communication and testing.
811
- * Upgrade from HTTP to WebSocket protocol is required.
812
- *
1717
+ * Get power status
1718
+ * @description Get system status
813
1719
  */
814
- get: operations["connectWebSocket"];
1720
+ get: operations["getStatusPower"];
1721
+ put?: never;
1722
+ post?: never;
1723
+ delete?: never;
1724
+ options?: never;
1725
+ head?: never;
1726
+ patch?: never;
1727
+ trace?: never;
1728
+ };
1729
+ "/v0/wifi/enable": {
1730
+ parameters: {
1731
+ query?: never;
1732
+ header?: never;
1733
+ path?: never;
1734
+ cookie?: never;
1735
+ };
1736
+ get?: never;
1737
+ put?: never;
1738
+ /** @description Enables wifi module */
1739
+ post: {
1740
+ parameters: {
1741
+ query?: never;
1742
+ header?: never;
1743
+ path?: never;
1744
+ cookie?: never;
1745
+ };
1746
+ requestBody?: never;
1747
+ responses: {
1748
+ /** @description Wifi enabled */
1749
+ 200: {
1750
+ headers: {
1751
+ [name: string]: unknown;
1752
+ };
1753
+ content: {
1754
+ "application/json": components["schemas"]["SuccessResponse"];
1755
+ };
1756
+ };
1757
+ /** @description Wifi already enabled */
1758
+ 400: {
1759
+ headers: {
1760
+ [name: string]: unknown;
1761
+ };
1762
+ content: {
1763
+ "application/json": components["schemas"]["Error"];
1764
+ };
1765
+ };
1766
+ };
1767
+ };
1768
+ delete?: never;
1769
+ options?: never;
1770
+ head?: never;
1771
+ patch?: never;
1772
+ trace?: never;
1773
+ };
1774
+ "/v0/wifi/disable": {
1775
+ parameters: {
1776
+ query?: never;
1777
+ header?: never;
1778
+ path?: never;
1779
+ cookie?: never;
1780
+ };
1781
+ get?: never;
1782
+ put?: never;
1783
+ /** @description Disables wifi module */
1784
+ post: {
1785
+ parameters: {
1786
+ query?: never;
1787
+ header?: never;
1788
+ path?: never;
1789
+ cookie?: never;
1790
+ };
1791
+ requestBody?: never;
1792
+ responses: {
1793
+ /** @description Wifi disabled */
1794
+ 200: {
1795
+ headers: {
1796
+ [name: string]: unknown;
1797
+ };
1798
+ content: {
1799
+ "application/json": components["schemas"]["SuccessResponse"];
1800
+ };
1801
+ };
1802
+ /** @description Not initialized */
1803
+ 400: {
1804
+ headers: {
1805
+ [name: string]: unknown;
1806
+ };
1807
+ content: {
1808
+ "application/json": components["schemas"]["Error"];
1809
+ };
1810
+ };
1811
+ };
1812
+ };
1813
+ delete?: never;
1814
+ options?: never;
1815
+ head?: never;
1816
+ patch?: never;
1817
+ trace?: never;
1818
+ };
1819
+ "/v0/wifi/status": {
1820
+ parameters: {
1821
+ query?: never;
1822
+ header?: never;
1823
+ path?: never;
1824
+ cookie?: never;
1825
+ };
1826
+ /** @description Returns current wifi status */
1827
+ get: {
1828
+ parameters: {
1829
+ query?: never;
1830
+ header?: never;
1831
+ path?: never;
1832
+ cookie?: never;
1833
+ };
1834
+ requestBody?: never;
1835
+ responses: {
1836
+ /** @description OK */
1837
+ 200: {
1838
+ headers: {
1839
+ [name: string]: unknown;
1840
+ };
1841
+ content: {
1842
+ "application/json": components["schemas"]["StatusResponse"];
1843
+ };
1844
+ };
1845
+ };
1846
+ };
1847
+ put?: never;
1848
+ post?: never;
1849
+ delete?: never;
1850
+ options?: never;
1851
+ head?: never;
1852
+ patch?: never;
1853
+ trace?: never;
1854
+ };
1855
+ "/v0/wifi/connect": {
1856
+ parameters: {
1857
+ query?: never;
1858
+ header?: never;
1859
+ path?: never;
1860
+ cookie?: never;
1861
+ };
1862
+ get?: never;
1863
+ put?: never;
1864
+ /** @description Attempts to connect to wifi using config */
1865
+ post: {
1866
+ parameters: {
1867
+ query?: never;
1868
+ header?: never;
1869
+ path?: never;
1870
+ cookie?: never;
1871
+ };
1872
+ requestBody: {
1873
+ content: {
1874
+ "application/json": components["schemas"]["ConnectRequestConfig"];
1875
+ };
1876
+ };
1877
+ responses: {
1878
+ /** @description Network connection established */
1879
+ 200: {
1880
+ headers: {
1881
+ [name: string]: unknown;
1882
+ };
1883
+ content: {
1884
+ "application/json": components["schemas"]["SuccessResponse"];
1885
+ };
1886
+ };
1887
+ /** @description Wifi already connected */
1888
+ 400: {
1889
+ headers: {
1890
+ [name: string]: unknown;
1891
+ };
1892
+ content: {
1893
+ "application/json": components["schemas"]["Error"];
1894
+ };
1895
+ };
1896
+ };
1897
+ };
1898
+ delete?: never;
1899
+ options?: never;
1900
+ head?: never;
1901
+ patch?: never;
1902
+ trace?: never;
1903
+ };
1904
+ "/v0/wifi/disconnect": {
1905
+ parameters: {
1906
+ query?: never;
1907
+ header?: never;
1908
+ path?: never;
1909
+ cookie?: never;
1910
+ };
1911
+ get?: never;
1912
+ put?: never;
1913
+ /** @description Attempts to connect to wifi using config */
1914
+ post: {
1915
+ parameters: {
1916
+ query?: never;
1917
+ header?: never;
1918
+ path?: never;
1919
+ cookie?: never;
1920
+ };
1921
+ requestBody?: never;
1922
+ responses: {
1923
+ /** @description Network connection terminated */
1924
+ 200: {
1925
+ headers: {
1926
+ [name: string]: unknown;
1927
+ };
1928
+ content: {
1929
+ "application/json": components["schemas"]["SuccessResponse"];
1930
+ };
1931
+ };
1932
+ /** @description Command issued in an invalid state */
1933
+ 400: {
1934
+ headers: {
1935
+ [name: string]: unknown;
1936
+ };
1937
+ content: {
1938
+ "application/json": components["schemas"]["Error"];
1939
+ };
1940
+ };
1941
+ };
1942
+ };
1943
+ delete?: never;
1944
+ options?: never;
1945
+ head?: never;
1946
+ patch?: never;
1947
+ trace?: never;
1948
+ };
1949
+ "/v0/wifi/networks": {
1950
+ parameters: {
1951
+ query?: never;
1952
+ header?: never;
1953
+ path?: never;
1954
+ cookie?: never;
1955
+ };
1956
+ /** @description Scans environment for available wifi networks */
1957
+ get: {
1958
+ parameters: {
1959
+ query?: never;
1960
+ header?: never;
1961
+ path?: never;
1962
+ cookie?: never;
1963
+ };
1964
+ requestBody?: never;
1965
+ responses: {
1966
+ /** @description OK */
1967
+ 200: {
1968
+ headers: {
1969
+ [name: string]: unknown;
1970
+ };
1971
+ content: {
1972
+ "application/json": components["schemas"]["NetworkResponse"];
1973
+ };
1974
+ };
1975
+ /** @description Wifi already connected */
1976
+ 400: {
1977
+ headers: {
1978
+ [name: string]: unknown;
1979
+ };
1980
+ content: {
1981
+ "application/json": components["schemas"]["Error"];
1982
+ };
1983
+ };
1984
+ };
1985
+ };
1986
+ put?: never;
1987
+ post?: never;
1988
+ delete?: never;
1989
+ options?: never;
1990
+ head?: never;
1991
+ patch?: never;
1992
+ trace?: never;
1993
+ };
1994
+ "/v0/wifi/forget": {
1995
+ parameters: {
1996
+ query?: never;
1997
+ header?: never;
1998
+ path?: never;
1999
+ cookie?: never;
2000
+ };
2001
+ get?: never;
2002
+ put?: never;
2003
+ /** @description Forgets saved Wifi config */
2004
+ post: {
2005
+ parameters: {
2006
+ query?: never;
2007
+ header?: never;
2008
+ path?: never;
2009
+ cookie?: never;
2010
+ };
2011
+ requestBody?: never;
2012
+ responses: {
2013
+ /** @description Not implemented */
2014
+ 400: {
2015
+ headers: {
2016
+ [name: string]: unknown;
2017
+ };
2018
+ content: {
2019
+ "application/json": components["schemas"]["Error"];
2020
+ };
2021
+ };
2022
+ };
2023
+ };
2024
+ delete?: never;
2025
+ options?: never;
2026
+ head?: never;
2027
+ patch?: never;
2028
+ trace?: never;
2029
+ };
2030
+ "/v0/screen": {
2031
+ parameters: {
2032
+ query?: never;
2033
+ header?: never;
2034
+ path?: never;
2035
+ cookie?: never;
2036
+ };
2037
+ /** Get single frame for required screen */
2038
+ get: {
2039
+ parameters: {
2040
+ query: {
2041
+ /**
2042
+ * @description Type of the display Front = 0, Back = 1
2043
+ * @example 0
2044
+ */
2045
+ display: number;
2046
+ };
2047
+ header?: never;
2048
+ path?: never;
2049
+ cookie?: never;
2050
+ };
2051
+ requestBody?: never;
2052
+ responses: {
2053
+ /** @description OK */
2054
+ 200: {
2055
+ headers: {
2056
+ [name: string]: unknown;
2057
+ };
2058
+ content: {
2059
+ "image/bmp": components["schemas"]["ScreenResponse"];
2060
+ };
2061
+ };
2062
+ /** @description Wrong display */
2063
+ 400: {
2064
+ headers: {
2065
+ [name: string]: unknown;
2066
+ };
2067
+ content: {
2068
+ "application/json": components["schemas"]["Error"];
2069
+ };
2070
+ };
2071
+ };
2072
+ };
815
2073
  put?: never;
816
2074
  post?: never;
817
2075
  delete?: never;
@@ -822,6 +2080,18 @@ declare interface paths {
822
2080
  };
823
2081
  }
824
2082
 
2083
+ export declare interface ReadDirectoryParams {
2084
+ path: operations["listStorageFiles"]["parameters"]["query"]["path"];
2085
+ }
2086
+
2087
+ export declare interface RemoveParams {
2088
+ path: operations["removeStorageFile"]["parameters"]["query"]["path"];
2089
+ }
2090
+
2091
+ declare type RequiredIpConfig = RequireKeys<NonNullable<CamelizedRequest["ipConfig"]>, "ipMethod" | "ipType">;
2092
+
2093
+ declare type RequireKeys<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
2094
+
825
2095
  export declare class ScreenStream {
826
2096
  private config;
827
2097
  connected: boolean;
@@ -847,8 +2117,17 @@ declare interface SiteConfig extends BaseConfig {
847
2117
  idDevice: string;
848
2118
  }
849
2119
 
2120
+ declare type SnakeToCamel<S extends string> = S extends `${infer Head}_${infer Tail}` ? `${Head}${Capitalize<SnakeToCamel<Tail>>}` : S;
2121
+
850
2122
  declare type StopListener = () => void;
851
2123
 
2124
+ export declare type StorageListElement = components["schemas"]["StorageListElement"];
2125
+
2126
+ export declare interface UploadFileParams {
2127
+ path: operations["writeStorageFile"]["parameters"]["query"]["path"];
2128
+ file: Buffer | Blob | File | ArrayBuffer;
2129
+ }
2130
+
852
2131
  declare interface UploadParams {
853
2132
  appId: paths["/v0/assets/upload"]["post"]["parameters"]["query"]["app_id"];
854
2133
  fileName: paths["/v0/assets/upload"]["post"]["parameters"]["query"]["file"];