@busy-app/busy-lib 0.4.0 → 0.6.0

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
@@ -1,3 +1,7 @@
1
+ export declare type AccountInfo = components["schemas"]["AccountInfo"];
2
+
3
+ export declare type AccountLink = components["schemas"]["AccountLink"];
4
+
1
5
  declare type ApiKey = string;
2
6
 
3
7
  declare type ApiSemver = components["schemas"]["VersionInfo"]["api_semver"];
@@ -34,6 +38,8 @@ declare interface BaseConfig_2 {
34
38
  apiSemver?: ApiSemver;
35
39
  }
36
40
 
41
+ export declare type BleStatusResponse = components["schemas"]["BleStatusResponse"];
42
+
37
43
  declare type Brightness = number | "auto";
38
44
 
39
45
  /**
@@ -47,7 +53,7 @@ export declare class BusyBar {
47
53
  * @type {BusyBarConfig['host']}
48
54
  * @readonly
49
55
  */
50
- readonly host: BusyBarConfig["host"];
56
+ readonly addr: BusyBarConfig["addr"];
51
57
  /**
52
58
  * Current API semantic version.
53
59
  * @type {ApiSemver}
@@ -57,9 +63,25 @@ export declare class BusyBar {
57
63
  * Creates an instance of BUSY Bar.
58
64
  * Initializes the API client with the provided host address.
59
65
  *
60
- * @param {BusyBarConfig} config - The host address of the device (IP or mDNS).
66
+ * @param {BusyBarConfig} config - BUSY Bar connection configuration
67
+ * @param {BusyBarConfig['addr']} config.addr -
68
+ * The device address or proxy endpoint.
69
+ *
70
+ * Can be:
71
+ * - An IP address (e.g. `192.168.0.10`)
72
+ * - An mDNS hostname (e.g. `busybar.local`)
73
+ * - A domain name
74
+ * - A full URL (`http://` or `https://`)
75
+ *
76
+ * If no protocol is specified, `http://` will be automatically added.
77
+ *
78
+ * @param {BusyBarConfig['token']} config.token -
79
+ * Optional authentication token.
80
+ *
81
+ * Must be provided when `addr` points to a secured proxy endpoint
82
+ * such as `https://proxy.busy.app`.
61
83
  */
62
- constructor(config: BusyBarConfig);
84
+ constructor(config?: BusyBarConfig);
63
85
  /**
64
86
  * Retrieves the API semantic version.
65
87
  *
@@ -93,6 +115,46 @@ export declare class BusyBar {
93
115
  * @returns {Promise<StatusPower>} Current power status.
94
116
  */
95
117
  powerStatus(): Promise<StatusPower>;
118
+ /**
119
+ * Gets current device timestamp with timezone.
120
+ *
121
+ * @returns {Promise<TimestampInfo>} Current device timestamp as an ISO 8601 string.
122
+ */
123
+ getTime(): Promise<TimestampInfo>;
124
+ /**
125
+ * Sets the current device timestamp.
126
+ *
127
+ * @param {SetTimestampParams} params - The parameters for setting the timestamp.
128
+ * @param {SetTimestampParams['timestamp']} params.timestamp - The new timestamp (ISO 8601 string).
129
+ * @returns {Promise<SuccessResponse>} A success response if the timestamp was set.
130
+ */
131
+ setTimestamp(params: SystemTimestampParams): Promise<SuccessResponse>;
132
+ /**
133
+ * Sets the device timezone.
134
+ *
135
+ * @param {SetTimezoneParams} params - The parameters for setting the timezone.
136
+ * @param {SetTimezoneParams['timezone']} params.timezone - The new timezone identifier (IANA TZ string).
137
+ * @returns {Promise<SuccessResponse>} A success response if the timezone was set.
138
+ */
139
+ setTimezone(params: SystemTimezoneParams): Promise<SuccessResponse>;
140
+ /**
141
+ * Gets the status of the MQTT account linked to the device.
142
+ *
143
+ * @returns {Promise<AccountInfo>} Information about the current MQTT account status.
144
+ */
145
+ getMqttStatus(): Promise<AccountInfo>;
146
+ /**
147
+ * Unlinks the current account from the device.
148
+ *
149
+ * @returns {Promise<SuccessResponse>} Result of the account unlink operation.
150
+ */
151
+ unlinkAccount(): Promise<SuccessResponse>;
152
+ /**
153
+ * Links an account to the device.
154
+ *
155
+ * @returns {Promise<AccountLink>} Information about the account link operation.
156
+ */
157
+ linkAccount(): Promise<AccountLink>;
96
158
  /**
97
159
  * Uploads an asset to the device.
98
160
  *
@@ -142,15 +204,23 @@ export declare class BusyBar {
142
204
  */
143
205
  stopSound(): Promise<SuccessResponse>;
144
206
  /**
145
- * Enables the device's Wi-Fi module.
207
+ * @deprecated since 0.5.0 will be removed in 0.7.0.
146
208
  *
147
- * @returns {Promise<SuccessResponse>} Result of the enable operation.
209
+ * This method is no longer supported and does nothing.
210
+ *
211
+ * Works only with BusyLib v0.5.0 and device firmware v0.3.0.
212
+ *
213
+ * Always throws an error.
148
214
  */
149
215
  enableWifi(): Promise<SuccessResponse>;
150
216
  /**
151
- * Disables the device's Wi-Fi module.
217
+ * @deprecated since 0.5.0 will be removed in 0.7.0.
152
218
  *
153
- * @returns {Promise<SuccessResponse>} Result of the disable operation.
219
+ * This method is no longer supported and does nothing.
220
+ *
221
+ * Works only with BusyLib v0.5.0 and device firmware v0.3.0.
222
+ *
223
+ * Always throws an error.
154
224
  */
155
225
  disableWifi(): Promise<SuccessResponse>;
156
226
  /**
@@ -188,9 +258,13 @@ export declare class BusyBar {
188
258
  */
189
259
  networksWifi(): Promise<WifiNetworkResponse>;
190
260
  /**
191
- * Removes the saved Wi-Fi configuration (forgets the network).
261
+ * @deprecated since 0.5.0 will be removed in 0.7.0.
262
+ *
263
+ * This method is no longer supported and does nothing.
192
264
  *
193
- * @returns {Promise<never>} Result of the forget operation.
265
+ * Works only with BusyLib v0.5.0 and device firmware v0.3.0.
266
+ *
267
+ * Always throws an error.
194
268
  */
195
269
  forgetWifi(): Promise<never>;
196
270
  /**
@@ -235,6 +309,12 @@ export declare class BusyBar {
235
309
  * @returns {Promise<SuccessResponse>} Result of the create operation.
236
310
  */
237
311
  createDirectory(params: CreateDirectoryParams): Promise<SuccessResponse>;
312
+ /**
313
+ * Gets the current status of the device's internal storage.
314
+ *
315
+ * @returns {Promise<StorageStatus>} Current storage status information.
316
+ */
317
+ statusStorage(): Promise<StorageStatus>;
238
318
  /**
239
319
  * Gets the current display brightness settings for the device.
240
320
  *
@@ -281,6 +361,20 @@ export declare class BusyBar {
281
361
  * @returns {Promise<SuccessResponse>} Result of the set operation.
282
362
  */
283
363
  setHttpAccess(params: HttpAccessParams): Promise<SuccessResponse>;
364
+ /**
365
+ * Gets the current device name.
366
+ *
367
+ * @returns {Promise<NameInfo>} The current device name information.
368
+ */
369
+ getName(): Promise<NameInfo>;
370
+ /**
371
+ * Sets the device name.
372
+ *
373
+ * @param {NameParams} params - The parameters for setting the device name.
374
+ * @param {NameParams['name']} params.name - The new device name.
375
+ * @returns {Promise<SuccessResponse>} Result of setting the device name.
376
+ */
377
+ setName(params: NameParams): Promise<SuccessResponse>;
284
378
  /**
285
379
  * Sets API key for all subsequent requests.
286
380
  * @param {string} key - API key to use in "X-API-Token" header.
@@ -296,6 +390,18 @@ export declare class BusyBar {
296
390
  * @returns {Promise<SuccessResponse>} Result of the disable operation.
297
391
  */
298
392
  disableBle(): Promise<SuccessResponse>;
393
+ /**
394
+ * Removes all BLE pairings from the device.
395
+ *
396
+ * @returns {Promise<SuccessResponse>} Result of the BLE pairing removal operation.
397
+ */
398
+ pairingBle(): Promise<SuccessResponse>;
399
+ /**
400
+ * Gets the current BLE module status.
401
+ *
402
+ * @returns {Promise<BleStatusResponse>} Current BLE status information.
403
+ */
404
+ statusBle(): Promise<BleStatusResponse>;
299
405
  /**
300
406
  * Sends a button press.
301
407
  *
@@ -310,9 +416,10 @@ export declare class BusyBar {
310
416
  pressButton(params: InputKeyParams): Promise<SuccessResponse>;
311
417
  }
312
418
 
313
- declare interface BusyBarConfig {
314
- host: string;
315
- }
419
+ declare type BusyBarConfig = {
420
+ addr?: string;
421
+ token?: string;
422
+ };
316
423
 
317
424
  declare type BusyFile = Buffer | Blob | File | ArrayBuffer;
318
425
 
@@ -327,19 +434,23 @@ declare interface components {
327
434
  */
328
435
  result: string;
329
436
  };
330
- /** @example {
437
+ /**
438
+ * @example {
331
439
  * "error": "Invalid parameter",
332
440
  * "code": 400
333
- * } */
441
+ * }
442
+ */
334
443
  Error: {
335
444
  /** @description Error message */
336
445
  error: string;
337
446
  /** @description Error code */
338
447
  code?: number;
339
448
  };
340
- /** @example {
449
+ /**
450
+ * @example {
341
451
  * "api_semver": "0.0.0"
342
- * } */
452
+ * }
453
+ */
343
454
  VersionInfo: {
344
455
  /**
345
456
  * @description Api SemVer
@@ -347,6 +458,18 @@ declare interface components {
347
458
  */
348
459
  api_semver: string;
349
460
  };
461
+ /**
462
+ * @example {
463
+ * "name": "BUSY bar"
464
+ * }
465
+ */
466
+ NameInfo: {
467
+ /**
468
+ * @description Device name
469
+ * @example BUSY bar
470
+ */
471
+ name: string;
472
+ };
350
473
  HttpAccessInfo: {
351
474
  /**
352
475
  * @description Access mode
@@ -360,7 +483,8 @@ declare interface components {
360
483
  */
361
484
  key_valid?: Record<string, never>;
362
485
  };
363
- /** @example {
486
+ /**
487
+ * @example {
364
488
  * "list": [
365
489
  * {
366
490
  * "type": "file",
@@ -372,11 +496,23 @@ declare interface components {
372
496
  * "name": "assets"
373
497
  * }
374
498
  * ]
375
- * } */
499
+ * }
500
+ */
376
501
  StorageList: {
377
502
  /** @description Array of elements to display */
378
503
  list: components["schemas"]["StorageListElement"][];
379
504
  };
505
+ StorageStatus: {
506
+ /** @example 123456 */
507
+ used_bytes?: number;
508
+ /** @example 654321 */
509
+ free_bytes?: number;
510
+ /**
511
+ * @description Total size of the parition
512
+ * @example 777777
513
+ */
514
+ total_bytes?: number;
515
+ };
380
516
  StorageListElement: {
381
517
  /**
382
518
  * @description Element type
@@ -415,21 +551,39 @@ declare interface components {
415
551
  */
416
552
  file: string;
417
553
  };
418
- /** @example {
554
+ /**
555
+ * @example {
419
556
  * "app_id": "my_app",
420
557
  * "elements": [
421
558
  * {
422
559
  * "id": "0",
423
- * "timeout": 5,
560
+ * "timeout": 6,
561
+ * "align": "center",
562
+ * "x": 36,
563
+ * "y": 10,
424
564
  * "type": "text",
425
- * "text": "Hello, world!",
426
- * "x": 0,
427
- * "y": 0,
565
+ * "text": "Hello, World! Long text",
566
+ * "font": "medium",
567
+ * "color": "#FFFFFFFF",
568
+ * "width": 72,
569
+ * "scroll_rate": 160,
428
570
  * "display": "front"
429
571
  * },
430
572
  * {
431
573
  * "id": "1",
432
574
  * "timeout": 6,
575
+ * "align": "top_mid",
576
+ * "x": 36,
577
+ * "y": 0,
578
+ * "type": "text",
579
+ * "text": "top_mid",
580
+ * "font": "small",
581
+ * "color": "#AAFF00FF",
582
+ * "display": "front"
583
+ * },
584
+ * {
585
+ * "id": "2",
586
+ * "timeout": 6,
433
587
  * "type": "image",
434
588
  * "path": "data.png",
435
589
  * "x": 0,
@@ -437,7 +591,8 @@ declare interface components {
437
591
  * "display": "back"
438
592
  * }
439
593
  * ]
440
- * } */
594
+ * }
595
+ */
441
596
  DisplayElements: {
442
597
  /**
443
598
  * @description Application ID for organizing assets
@@ -450,27 +605,49 @@ declare interface components {
450
605
  DisplayElement: {
451
606
  /** @description Unique identifier for the element */
452
607
  id: string;
453
- /** @description Time in seconds the element should be displayed (0 for no timeout) */
608
+ /** @description Time in seconds the element should be displayed (0 for no timeout). Mutually exclusive with display_until. */
454
609
  timeout?: number;
610
+ /** @description The element will be hidden when system time reaches the specified Unix timestamp (in seconds). Mutually exclusive with timeout. */
611
+ display_until?: string;
455
612
  /**
456
613
  * @description Type of display element
457
614
  * @enum {string}
458
615
  */
459
616
  type: "text" | "image";
460
- /** @description X coordinate for placement on display */
461
- x: number;
462
- /** @description Y coordinate for placement on display */
463
- y: number;
617
+ /** @description X coordinate of selected anchor point relative to top-left of display */
618
+ x?: number;
619
+ /** @description Y coordinate of selected anchor point relative to top-left of display */
620
+ y?: number;
464
621
  /**
465
622
  * @description Which display to show the element on (for dual-display devices)
466
623
  * @default front
467
624
  * @enum {string}
468
625
  */
469
626
  display: "front" | "back";
627
+ /**
628
+ * @description Anchor point of element. Also use `x` and `y` to position element.
629
+ * @enum {string}
630
+ */
631
+ align?: "top_left" | "top_mid" | "top_right" | "mid_left" | "center" | "mid_right" | "bottom_left" | "bottom_mid" | "bottom_right";
470
632
  };
471
633
  TextElement: Omit<components["schemas"]["DisplayElement"], "type"> & {
472
634
  /** @description Text content to display */
473
635
  text: string;
636
+ /**
637
+ * @description One of the available fonts to display the text in
638
+ * @default tiny5_8
639
+ * @enum {string}
640
+ */
641
+ font: "small" | "medium" | "medium_condensed" | "big";
642
+ /**
643
+ * @description Color to display the text in, in #RRGGBBAA format
644
+ * @default #FFFFFFFF
645
+ */
646
+ color: string;
647
+ /** @description Width of the label */
648
+ width?: number;
649
+ /** @description Scroll rate in characters per minute */
650
+ scroll_rate?: number;
474
651
  } & {
475
652
  /**
476
653
  * @description discriminator enum property added by openapi-typescript
@@ -478,10 +655,13 @@ declare interface components {
478
655
  */
479
656
  type: "text";
480
657
  };
481
- ImageElement: Omit<components["schemas"]["DisplayElement"], "type"> & {
658
+ ImageElement: Omit<components["schemas"]["DisplayElement"], "type"> & ({
482
659
  /** @description Path to the image file in the app's assets */
483
- path: string;
484
- } & {
660
+ path?: string;
661
+ } | {
662
+ /** @description Identifier of builtin image */
663
+ builtin_image?: string;
664
+ }) & {
485
665
  /**
486
666
  * @description discriminator enum property added by openapi-typescript
487
667
  * @enum {string}
@@ -507,6 +687,13 @@ declare interface components {
507
687
  */
508
688
  volume?: number;
509
689
  };
690
+ TimestampInfo: {
691
+ /**
692
+ * @description ISO 8601 formatted timestamp with timezone
693
+ * @example 2025-10-02T14:30:45+04:00
694
+ */
695
+ timestamp: string;
696
+ };
510
697
  Status: {
511
698
  system?: components["schemas"]["StatusSystem"];
512
699
  power?: components["schemas"]["StatusPower"];
@@ -570,7 +757,7 @@ declare interface components {
570
757
  * @example WPA3
571
758
  * @enum {string}
572
759
  */
573
- WifiSecurityMethod: "Open" | "WPA" | "WPA2" | "WEP" | "WPA (Enterprise)" | "WPA2 (Enterprise)" | "WPA/WPA2" | "WPA3" | "WPA2/WPA3" | "WPA3 (Enterprise)" | "WPA2/WPA3 (Enterprise)";
760
+ WifiSecurityMethod: "Open" | "WPA" | "WPA2" | "WEP" | "WPA/WPA2" | "WPA3" | "WPA2/WPA3";
574
761
  /**
575
762
  * @example dhcp
576
763
  * @enum {string}
@@ -590,12 +777,18 @@ declare interface components {
590
777
  };
591
778
  StatusResponse: {
592
779
  /**
593
- * @example enabled
780
+ * @example disconnected
594
781
  * @enum {string}
595
782
  */
596
- state?: "disabled" | "enabled" | "connected";
783
+ state?: "unknown" | "disconnected" | "connected" | "connecting" | "disconnecting";
597
784
  /** @example Your_WIFI_SSID */
598
785
  ssid?: string;
786
+ /** @example EC:5A:00:0B:55:1D */
787
+ bssid?: string;
788
+ /** @example 3 */
789
+ channel?: number;
790
+ /** @example -43 */
791
+ rssi?: number;
599
792
  security?: components["schemas"]["WifiSecurityMethod"];
600
793
  ip_config?: {
601
794
  ip_method?: components["schemas"]["WifiIpMethod"];
@@ -612,7 +805,6 @@ declare interface components {
612
805
  security?: components["schemas"]["WifiSecurityMethod"];
613
806
  ip_config?: {
614
807
  ip_method?: components["schemas"]["WifiIpMethod"];
615
- ip_type?: components["schemas"]["WifiIpType"];
616
808
  /** @example 192.168.50.5 */
617
809
  address?: string;
618
810
  /** @example 255.255.255.0 */
@@ -631,6 +823,27 @@ declare interface components {
631
823
  * @description Frame for requested display encoded in base64
632
824
  */
633
825
  ScreenResponse: string;
826
+ AccountInfo: {
827
+ /**
828
+ * @example linked
829
+ * @enum {string}
830
+ */
831
+ state?: "error" | "disconnected" | "not_linked" | "linked";
832
+ /** @example 12345678-9abc-def0-1234-56789abcdef0 */
833
+ id?: string;
834
+ /** @example name@example.com */
835
+ email?: string;
836
+ };
837
+ AccountLink: {
838
+ /** @example ABCD */
839
+ code?: string;
840
+ /** @example 1761060863 */
841
+ expires_at?: number;
842
+ };
843
+ BleStatusResponse: {
844
+ /** @example connected */
845
+ state?: string;
846
+ };
634
847
  };
635
848
  responses: never;
636
849
  parameters: never;
@@ -645,12 +858,6 @@ declare interface CreateDirectoryParams {
645
858
  export { CreateDirectoryParams }
646
859
  export { CreateDirectoryParams as StorageCreateDirectoryParams }
647
860
 
648
- declare type CustomElement = CustomTextElement | CustomImageElement;
649
-
650
- declare type CustomImageElement = MakeOptional<components["schemas"]["ImageElement"], OptionalFields>;
651
-
652
- declare type CustomTextElement = MakeOptional<components["schemas"]["TextElement"], OptionalFields>;
653
-
654
861
  declare type DataListener = (data: Uint8Array) => void;
655
862
 
656
863
  declare type DeepCamelize<T> = T extends (...args: any[]) => any ? T : T extends Array<infer U> ? Array<DeepCamelize<U>> : T extends object ? {
@@ -674,8 +881,8 @@ export declare interface DisplayBrightnessParams {
674
881
  }
675
882
 
676
883
  export declare interface DisplayDrawParams {
677
- appId: paths["/display/draw"]["post"]["requestBody"]["content"]["application/json"]["app_id"];
678
- elements: CustomElement[];
884
+ appId: components["schemas"]["DisplayElements"]["app_id"];
885
+ elements: components["schemas"]["DisplayElements"]["elements"];
679
886
  }
680
887
 
681
888
  declare interface DownloadFileParams {
@@ -746,7 +953,11 @@ declare interface LocalConfig_2 extends BaseConfig_2 {
746
953
  barUrl: string;
747
954
  }
748
955
 
749
- declare type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
956
+ export declare type NameInfo = components["schemas"]["NameInfo"];
957
+
958
+ export declare interface NameParams {
959
+ name: NameInfo["name"];
960
+ }
750
961
 
751
962
  declare interface operations {
752
963
  getVersion: {
@@ -1171,6 +1382,35 @@ declare interface operations {
1171
1382
  };
1172
1383
  };
1173
1384
  };
1385
+ getStorageStatus: {
1386
+ parameters: {
1387
+ query?: never;
1388
+ header?: never;
1389
+ path?: never;
1390
+ cookie?: never;
1391
+ };
1392
+ requestBody?: never;
1393
+ responses: {
1394
+ /** @description Storage status queried successfully */
1395
+ 200: {
1396
+ headers: {
1397
+ [name: string]: unknown;
1398
+ };
1399
+ content: {
1400
+ "application/json": components["schemas"]["StorageStatus"];
1401
+ };
1402
+ };
1403
+ /** @description Invalid parameters or storage doesn't exist */
1404
+ 400: {
1405
+ headers: {
1406
+ [name: string]: unknown;
1407
+ };
1408
+ content: {
1409
+ "application/json": components["schemas"]["Error"];
1410
+ };
1411
+ };
1412
+ };
1413
+ };
1174
1414
  drawOnDisplay: {
1175
1415
  parameters: {
1176
1416
  query?: never;
@@ -1215,7 +1455,13 @@ declare interface operations {
1215
1455
  };
1216
1456
  clearDisplay: {
1217
1457
  parameters: {
1218
- query?: never;
1458
+ query?: {
1459
+ /**
1460
+ * @description Application identifier
1461
+ * @example my_app
1462
+ */
1463
+ app_id?: string;
1464
+ };
1219
1465
  header?: never;
1220
1466
  path?: never;
1221
1467
  cookie?: never;
@@ -1478,7 +1724,7 @@ declare interface operations {
1478
1724
  * @description Key name
1479
1725
  * @example ok
1480
1726
  */
1481
- key: "up" | "down" | "ok" | "back" | "start" | "busy" | "status" | "off" | "apps" | "settings";
1727
+ key: "up" | "down" | "ok" | "back" | "start" | "busy" | "custom" | "off" | "apps" | "settings";
1482
1728
  };
1483
1729
  header?: never;
1484
1730
  path?: never;
@@ -1620,106 +1866,347 @@ declare interface operations {
1620
1866
  };
1621
1867
  };
1622
1868
  };
1623
- }
1624
-
1625
- declare type OptionalFields = "timeout" | "x" | "y" | "display";
1626
-
1627
- /**
1628
- * This file was auto-generated by openapi-typescript.
1629
- * Do not make direct changes to the file.
1630
- */
1631
- declare interface paths {
1632
- "/version": {
1869
+ getTime: {
1633
1870
  parameters: {
1634
1871
  query?: never;
1635
1872
  header?: never;
1636
1873
  path?: never;
1637
1874
  cookie?: never;
1638
1875
  };
1639
- /**
1640
- * Get API version information
1641
- * @description Retrieves api version
1642
- */
1643
- get: operations["getVersion"];
1644
- put?: never;
1645
- post?: never;
1646
- delete?: never;
1647
- options?: never;
1648
- head?: never;
1649
- patch?: never;
1650
- trace?: never;
1876
+ requestBody?: never;
1877
+ responses: {
1878
+ /** @description Timestamp retrieved successfully */
1879
+ 200: {
1880
+ headers: {
1881
+ [name: string]: unknown;
1882
+ };
1883
+ content: {
1884
+ "application/json": components["schemas"]["TimestampInfo"];
1885
+ };
1886
+ };
1887
+ /** @description Bad request */
1888
+ 400: {
1889
+ headers: {
1890
+ [name: string]: unknown;
1891
+ };
1892
+ content: {
1893
+ "application/json": components["schemas"]["Error"];
1894
+ };
1895
+ };
1896
+ };
1651
1897
  };
1652
- "/access": {
1898
+ getAccountInfo: {
1653
1899
  parameters: {
1654
1900
  query?: never;
1655
1901
  header?: never;
1656
1902
  path?: never;
1657
1903
  cookie?: never;
1658
1904
  };
1659
- /**
1660
- * HTTP API access over Wi-Fi configuration get
1661
- * @description HTTP API access over Wi-Fi configuration get
1662
- */
1663
- get: operations["getHttpAccess"];
1664
- put?: never;
1665
- /**
1666
- * HTTP API access over Wi-Fi configuration set
1667
- * @description HTTP API access over Wi-Fi configuration set
1668
- */
1669
- post: operations["setHttpAccess"];
1670
- delete?: never;
1671
- options?: never;
1672
- head?: never;
1673
- patch?: never;
1674
- trace?: never;
1905
+ requestBody?: never;
1906
+ responses: {
1907
+ /** @description Data retrieved successfully */
1908
+ 200: {
1909
+ headers: {
1910
+ [name: string]: unknown;
1911
+ };
1912
+ content: {
1913
+ "application/json": components["schemas"]["AccountInfo"];
1914
+ };
1915
+ };
1916
+ };
1675
1917
  };
1676
- "/update": {
1918
+ unlinkAccount: {
1677
1919
  parameters: {
1678
1920
  query?: never;
1679
1921
  header?: never;
1680
1922
  path?: never;
1681
1923
  cookie?: never;
1682
1924
  };
1683
- get?: never;
1684
- put?: never;
1685
- /**
1686
- * Update firmware
1687
- * @description Uploads a firmware update package (TAR file) and initiates the update process.
1688
- */
1689
- post: operations["updateFirmware"];
1690
- delete?: never;
1691
- options?: never;
1692
- head?: never;
1693
- patch?: never;
1694
- trace?: never;
1925
+ requestBody?: never;
1926
+ responses: {
1927
+ /** @description Done successfully */
1928
+ 200: {
1929
+ headers: {
1930
+ [name: string]: unknown;
1931
+ };
1932
+ content: {
1933
+ "application/json": components["schemas"]["SuccessResponse"];
1934
+ };
1935
+ };
1936
+ };
1695
1937
  };
1696
- "/assets/upload": {
1938
+ linkAccount: {
1697
1939
  parameters: {
1698
1940
  query?: never;
1699
1941
  header?: never;
1700
1942
  path?: never;
1701
1943
  cookie?: never;
1702
1944
  };
1703
- get?: never;
1704
- put?: never;
1705
- /**
1706
- * Upload asset file with app ID
1707
- * @description Uploads a file to a specific app's assets directory
1708
- */
1709
- post: operations["uploadAssetWithAppId"];
1710
- /**
1711
- * Delete app assets
1712
- * @description Deletes all assets for a specific app ID
1713
- */
1714
- delete: operations["deleteAppAssets"];
1715
- options?: never;
1716
- head?: never;
1717
- patch?: never;
1718
- trace?: never;
1945
+ requestBody?: never;
1946
+ responses: {
1947
+ /** @description Data retrieved successfully */
1948
+ 200: {
1949
+ headers: {
1950
+ [name: string]: unknown;
1951
+ };
1952
+ content: {
1953
+ "application/json": components["schemas"]["AccountLink"];
1954
+ };
1955
+ };
1956
+ /** @description Bad request */
1957
+ 400: {
1958
+ headers: {
1959
+ [name: string]: unknown;
1960
+ };
1961
+ content: {
1962
+ "application/json": components["schemas"]["Error"];
1963
+ };
1964
+ };
1965
+ };
1719
1966
  };
1720
- "/storage/write": {
1967
+ setTimeTimestamp: {
1721
1968
  parameters: {
1722
- query?: never;
1969
+ query: {
1970
+ /**
1971
+ * @description ISO 8601 timestamp (e.g., 2025-10-02T14:30:45 for local time or 2025-10-02T14:30:45Z for UTC)
1972
+ * @example 2025-10-02T14:30:45
1973
+ */
1974
+ timestamp: string;
1975
+ };
1976
+ header?: never;
1977
+ path?: never;
1978
+ cookie?: never;
1979
+ };
1980
+ requestBody?: never;
1981
+ responses: {
1982
+ /** @description Timestamp set successfully */
1983
+ 200: {
1984
+ headers: {
1985
+ [name: string]: unknown;
1986
+ };
1987
+ content: {
1988
+ "application/json": components["schemas"]["SuccessResponse"];
1989
+ };
1990
+ };
1991
+ /** @description Invalid timestamp format or value */
1992
+ 400: {
1993
+ headers: {
1994
+ [name: string]: unknown;
1995
+ };
1996
+ content: {
1997
+ "application/json": components["schemas"]["Error"];
1998
+ };
1999
+ };
2000
+ };
2001
+ };
2002
+ setTimeTimezone: {
2003
+ parameters: {
2004
+ query: {
2005
+ /**
2006
+ * @description Timezone offset in ±HH:MM format (range -12:00 to +14:00)
2007
+ * @example +04:00
2008
+ */
2009
+ timezone: string;
2010
+ };
2011
+ header?: never;
2012
+ path?: never;
2013
+ cookie?: never;
2014
+ };
2015
+ requestBody?: never;
2016
+ responses: {
2017
+ /** @description Timezone set successfully */
2018
+ 200: {
2019
+ headers: {
2020
+ [name: string]: unknown;
2021
+ };
2022
+ content: {
2023
+ "application/json": components["schemas"]["SuccessResponse"];
2024
+ };
2025
+ };
2026
+ /** @description Invalid timezone offset */
2027
+ 400: {
2028
+ headers: {
2029
+ [name: string]: unknown;
2030
+ };
2031
+ content: {
2032
+ "application/json": components["schemas"]["Error"];
2033
+ };
2034
+ };
2035
+ };
2036
+ };
2037
+ }
2038
+
2039
+ /**
2040
+ * This file was auto-generated by openapi-typescript.
2041
+ * Do not make direct changes to the file.
2042
+ */
2043
+ declare interface paths {
2044
+ "/version": {
2045
+ parameters: {
2046
+ query?: never;
2047
+ header?: never;
2048
+ path?: never;
2049
+ cookie?: never;
2050
+ };
2051
+ /**
2052
+ * Get API version information
2053
+ * @description Retrieves api version
2054
+ */
2055
+ get: operations["getVersion"];
2056
+ put?: never;
2057
+ post?: never;
2058
+ delete?: never;
2059
+ options?: never;
2060
+ head?: never;
2061
+ patch?: never;
2062
+ trace?: never;
2063
+ };
2064
+ "/access": {
2065
+ parameters: {
2066
+ query?: never;
2067
+ header?: never;
2068
+ path?: never;
2069
+ cookie?: never;
2070
+ };
2071
+ /**
2072
+ * HTTP API access over Wi-Fi configuration get
2073
+ * @description HTTP API access over Wi-Fi configuration get
2074
+ */
2075
+ get: operations["getHttpAccess"];
2076
+ put?: never;
2077
+ /**
2078
+ * HTTP API access over Wi-Fi configuration set
2079
+ * @description HTTP API access over Wi-Fi configuration set
2080
+ */
2081
+ post: operations["setHttpAccess"];
2082
+ delete?: never;
2083
+ options?: never;
2084
+ head?: never;
2085
+ patch?: never;
2086
+ trace?: never;
2087
+ };
2088
+ "/name": {
2089
+ parameters: {
2090
+ query?: never;
2091
+ header?: never;
2092
+ path?: never;
2093
+ cookie?: never;
2094
+ };
2095
+ /**
2096
+ * Get current device name
2097
+ * @description Get current device name
2098
+ */
2099
+ get: {
2100
+ parameters: {
2101
+ query?: never;
2102
+ header?: never;
2103
+ path?: never;
2104
+ cookie?: never;
2105
+ };
2106
+ requestBody?: never;
2107
+ responses: {
2108
+ /** @description Information retrieved successfully */
2109
+ 200: {
2110
+ headers: {
2111
+ [name: string]: unknown;
2112
+ };
2113
+ content: {
2114
+ "application/json": components["schemas"]["NameInfo"];
2115
+ };
2116
+ };
2117
+ };
2118
+ };
2119
+ put?: never;
2120
+ /**
2121
+ * Set new device name
2122
+ * @description Set new device name
2123
+ */
2124
+ post: {
2125
+ parameters: {
2126
+ query?: never;
2127
+ header?: never;
2128
+ path?: never;
2129
+ cookie?: never;
2130
+ };
2131
+ requestBody: {
2132
+ content: {
2133
+ "application/json": components["schemas"]["NameInfo"];
2134
+ };
2135
+ };
2136
+ responses: {
2137
+ /** @description New name successfully set */
2138
+ 200: {
2139
+ headers: {
2140
+ [name: string]: unknown;
2141
+ };
2142
+ content: {
2143
+ "application/json": components["schemas"]["SuccessResponse"];
2144
+ };
2145
+ };
2146
+ /** @description Invalid name parameter, or failed to store new name */
2147
+ 400: {
2148
+ headers: {
2149
+ [name: string]: unknown;
2150
+ };
2151
+ content: {
2152
+ "application/json": components["schemas"]["Error"];
2153
+ };
2154
+ };
2155
+ };
2156
+ };
2157
+ delete?: never;
2158
+ options?: never;
2159
+ head?: never;
2160
+ patch?: never;
2161
+ trace?: never;
2162
+ };
2163
+ "/update": {
2164
+ parameters: {
2165
+ query?: never;
2166
+ header?: never;
2167
+ path?: never;
2168
+ cookie?: never;
2169
+ };
2170
+ get?: never;
2171
+ put?: never;
2172
+ /**
2173
+ * Update firmware
2174
+ * @description Uploads a firmware update package (TAR file) and initiates the update process.
2175
+ */
2176
+ post: operations["updateFirmware"];
2177
+ delete?: never;
2178
+ options?: never;
2179
+ head?: never;
2180
+ patch?: never;
2181
+ trace?: never;
2182
+ };
2183
+ "/assets/upload": {
2184
+ parameters: {
2185
+ query?: never;
2186
+ header?: never;
2187
+ path?: never;
2188
+ cookie?: never;
2189
+ };
2190
+ get?: never;
2191
+ put?: never;
2192
+ /**
2193
+ * Upload asset file with app ID
2194
+ * @description Uploads a file to a specific app's assets directory
2195
+ */
2196
+ post: operations["uploadAssetWithAppId"];
2197
+ /**
2198
+ * Delete app assets
2199
+ * @description Deletes all assets for a specific app ID
2200
+ */
2201
+ delete: operations["deleteAppAssets"];
2202
+ options?: never;
2203
+ head?: never;
2204
+ patch?: never;
2205
+ trace?: never;
2206
+ };
2207
+ "/storage/write": {
2208
+ parameters: {
2209
+ query?: never;
1723
2210
  header?: never;
1724
2211
  path?: never;
1725
2212
  cookie?: never;
@@ -1764,10 +2251,7 @@ declare interface paths {
1764
2251
  path?: never;
1765
2252
  cookie?: never;
1766
2253
  };
1767
- /**
1768
- * List files on internal storage
1769
- * @description Downloads a file from a specified path
1770
- */
2254
+ /** List files on internal storage */
1771
2255
  get: operations["listStorageFiles"];
1772
2256
  put?: never;
1773
2257
  post?: never;
@@ -1817,6 +2301,23 @@ declare interface paths {
1817
2301
  patch?: never;
1818
2302
  trace?: never;
1819
2303
  };
2304
+ "/storage/status": {
2305
+ parameters: {
2306
+ query?: never;
2307
+ header?: never;
2308
+ path?: never;
2309
+ cookie?: never;
2310
+ };
2311
+ /** Show storage usage */
2312
+ get: operations["getStorageStatus"];
2313
+ put?: never;
2314
+ post?: never;
2315
+ delete?: never;
2316
+ options?: never;
2317
+ head?: never;
2318
+ patch?: never;
2319
+ trace?: never;
2320
+ };
1820
2321
  "/display/draw": {
1821
2322
  parameters: {
1822
2323
  query?: never;
@@ -1830,7 +2331,6 @@ declare interface paths {
1830
2331
  * Draw on display
1831
2332
  * @description Sends drawing data to the display.
1832
2333
  * Supports JSON-defined display elements.
1833
- *
1834
2334
  */
1835
2335
  post: operations["drawOnDisplay"];
1836
2336
  /**
@@ -1859,7 +2359,6 @@ declare interface paths {
1859
2359
  /**
1860
2360
  * Set display brightness
1861
2361
  * @description Set brightness for one or both displays
1862
- *
1863
2362
  */
1864
2363
  post: operations["setDisplayBrightness"];
1865
2364
  delete?: never;
@@ -1881,7 +2380,6 @@ declare interface paths {
1881
2380
  * Play audio file
1882
2381
  * @description Plays an audio file from the assets directory.
1883
2382
  * Supported formats include .snd files.
1884
- *
1885
2383
  */
1886
2384
  post: operations["playAudio"];
1887
2385
  /**
@@ -2013,7 +2511,6 @@ declare interface paths {
2013
2511
  * WebSocket test endpoint
2014
2512
  * @description WebSocket connection for real-time communication and testing.
2015
2513
  * Upgrade from HTTP to WebSocket protocol is required.
2016
- *
2017
2514
  */
2018
2515
  get: operations["connectWebSocket"];
2019
2516
  put?: never;
@@ -2024,7 +2521,43 @@ declare interface paths {
2024
2521
  patch?: never;
2025
2522
  trace?: never;
2026
2523
  };
2027
- "/wifi/enable": {
2524
+ "/wifi/status": {
2525
+ parameters: {
2526
+ query?: never;
2527
+ header?: never;
2528
+ path?: never;
2529
+ cookie?: never;
2530
+ };
2531
+ /** @description Returns current Wi-Fi status */
2532
+ get: {
2533
+ parameters: {
2534
+ query?: never;
2535
+ header?: never;
2536
+ path?: never;
2537
+ cookie?: never;
2538
+ };
2539
+ requestBody?: never;
2540
+ responses: {
2541
+ /** @description OK */
2542
+ 200: {
2543
+ headers: {
2544
+ [name: string]: unknown;
2545
+ };
2546
+ content: {
2547
+ "application/json": components["schemas"]["StatusResponse"];
2548
+ };
2549
+ };
2550
+ };
2551
+ };
2552
+ put?: never;
2553
+ post?: never;
2554
+ delete?: never;
2555
+ options?: never;
2556
+ head?: never;
2557
+ patch?: never;
2558
+ trace?: never;
2559
+ };
2560
+ "/wifi/connect": {
2028
2561
  parameters: {
2029
2562
  query?: never;
2030
2563
  header?: never;
@@ -2033,7 +2566,7 @@ declare interface paths {
2033
2566
  };
2034
2567
  get?: never;
2035
2568
  put?: never;
2036
- /** @description Enables wifi module */
2569
+ /** @description Attempts to connect to Wi-Fi using config */
2037
2570
  post: {
2038
2571
  parameters: {
2039
2572
  query?: never;
@@ -2041,9 +2574,13 @@ declare interface paths {
2041
2574
  path?: never;
2042
2575
  cookie?: never;
2043
2576
  };
2044
- requestBody?: never;
2577
+ requestBody: {
2578
+ content: {
2579
+ "application/json": components["schemas"]["ConnectRequestConfig"];
2580
+ };
2581
+ };
2045
2582
  responses: {
2046
- /** @description Wifi enabled */
2583
+ /** @description Network connection established */
2047
2584
  200: {
2048
2585
  headers: {
2049
2586
  [name: string]: unknown;
@@ -2052,7 +2589,7 @@ declare interface paths {
2052
2589
  "application/json": components["schemas"]["SuccessResponse"];
2053
2590
  };
2054
2591
  };
2055
- /** @description Wifi already enabled */
2592
+ /** @description Already connected */
2056
2593
  400: {
2057
2594
  headers: {
2058
2595
  [name: string]: unknown;
@@ -2069,7 +2606,7 @@ declare interface paths {
2069
2606
  patch?: never;
2070
2607
  trace?: never;
2071
2608
  };
2072
- "/wifi/disable": {
2609
+ "/wifi/disconnect": {
2073
2610
  parameters: {
2074
2611
  query?: never;
2075
2612
  header?: never;
@@ -2078,7 +2615,7 @@ declare interface paths {
2078
2615
  };
2079
2616
  get?: never;
2080
2617
  put?: never;
2081
- /** @description Disables wifi module */
2618
+ /** @description Attempts to connect to Wi-Fi using config */
2082
2619
  post: {
2083
2620
  parameters: {
2084
2621
  query?: never;
@@ -2088,7 +2625,7 @@ declare interface paths {
2088
2625
  };
2089
2626
  requestBody?: never;
2090
2627
  responses: {
2091
- /** @description Wifi disabled */
2628
+ /** @description Network connection terminated */
2092
2629
  200: {
2093
2630
  headers: {
2094
2631
  [name: string]: unknown;
@@ -2097,7 +2634,7 @@ declare interface paths {
2097
2634
  "application/json": components["schemas"]["SuccessResponse"];
2098
2635
  };
2099
2636
  };
2100
- /** @description Not initialized */
2637
+ /** @description Already disconnected */
2101
2638
  400: {
2102
2639
  headers: {
2103
2640
  [name: string]: unknown;
@@ -2114,14 +2651,14 @@ declare interface paths {
2114
2651
  patch?: never;
2115
2652
  trace?: never;
2116
2653
  };
2117
- "/wifi/status": {
2654
+ "/wifi/networks": {
2118
2655
  parameters: {
2119
2656
  query?: never;
2120
2657
  header?: never;
2121
2658
  path?: never;
2122
2659
  cookie?: never;
2123
2660
  };
2124
- /** @description Returns current wifi status */
2661
+ /** @description Scans environment for available Wi-Fi networks */
2125
2662
  get: {
2126
2663
  parameters: {
2127
2664
  query?: never;
@@ -2137,7 +2674,16 @@ declare interface paths {
2137
2674
  [name: string]: unknown;
2138
2675
  };
2139
2676
  content: {
2140
- "application/json": components["schemas"]["StatusResponse"];
2677
+ "application/json": components["schemas"]["NetworkResponse"];
2678
+ };
2679
+ };
2680
+ /** @description Scan not possible when connected */
2681
+ 400: {
2682
+ headers: {
2683
+ [name: string]: unknown;
2684
+ };
2685
+ content: {
2686
+ "application/json": components["schemas"]["Error"];
2141
2687
  };
2142
2688
  };
2143
2689
  };
@@ -2150,39 +2696,39 @@ declare interface paths {
2150
2696
  patch?: never;
2151
2697
  trace?: never;
2152
2698
  };
2153
- "/wifi/connect": {
2699
+ "/screen": {
2154
2700
  parameters: {
2155
2701
  query?: never;
2156
2702
  header?: never;
2157
2703
  path?: never;
2158
2704
  cookie?: never;
2159
2705
  };
2160
- get?: never;
2161
- put?: never;
2162
- /** @description Attempts to connect to wifi using config */
2163
- post: {
2706
+ /** Get single frame for required screen */
2707
+ get: {
2164
2708
  parameters: {
2165
- query?: never;
2709
+ query: {
2710
+ /**
2711
+ * @description Type of the display Front = 0, Back = 1
2712
+ * @example 0
2713
+ */
2714
+ display: number;
2715
+ };
2166
2716
  header?: never;
2167
2717
  path?: never;
2168
2718
  cookie?: never;
2169
2719
  };
2170
- requestBody: {
2171
- content: {
2172
- "application/json": components["schemas"]["ConnectRequestConfig"];
2173
- };
2174
- };
2720
+ requestBody?: never;
2175
2721
  responses: {
2176
- /** @description Network connection established */
2722
+ /** @description OK */
2177
2723
  200: {
2178
2724
  headers: {
2179
2725
  [name: string]: unknown;
2180
2726
  };
2181
2727
  content: {
2182
- "application/json": components["schemas"]["SuccessResponse"];
2728
+ "image/bmp": components["schemas"]["ScreenResponse"];
2183
2729
  };
2184
2730
  };
2185
- /** @description Wifi already connected */
2731
+ /** @description Wrong display */
2186
2732
  400: {
2187
2733
  headers: {
2188
2734
  [name: string]: unknown;
@@ -2193,13 +2739,38 @@ declare interface paths {
2193
2739
  };
2194
2740
  };
2195
2741
  };
2742
+ put?: never;
2743
+ post?: never;
2196
2744
  delete?: never;
2197
2745
  options?: never;
2198
2746
  head?: never;
2199
2747
  patch?: never;
2200
2748
  trace?: never;
2201
2749
  };
2202
- "/wifi/disconnect": {
2750
+ "/screen/ws": {
2751
+ parameters: {
2752
+ query?: never;
2753
+ header?: never;
2754
+ path?: never;
2755
+ cookie?: never;
2756
+ };
2757
+ /**
2758
+ * Screen streaming WebSocket endpoint
2759
+ * @description WebSocket connection for real-time screen streaming.
2760
+ * Upgrade from HTTP to WebSocket protocol is required.
2761
+ * After connection client must send desired display id
2762
+ * as json {"display": 0}
2763
+ */
2764
+ get: operations["connectWebSocket"];
2765
+ put?: never;
2766
+ post?: never;
2767
+ delete?: never;
2768
+ options?: never;
2769
+ head?: never;
2770
+ patch?: never;
2771
+ trace?: never;
2772
+ };
2773
+ "/ble/enable": {
2203
2774
  parameters: {
2204
2775
  query?: never;
2205
2776
  header?: never;
@@ -2208,7 +2779,10 @@ declare interface paths {
2208
2779
  };
2209
2780
  get?: never;
2210
2781
  put?: never;
2211
- /** @description Attempts to connect to wifi using config */
2782
+ /**
2783
+ * Enable BLE
2784
+ * @description Enables BLE module and starts advertising
2785
+ */
2212
2786
  post: {
2213
2787
  parameters: {
2214
2788
  query?: never;
@@ -2218,7 +2792,7 @@ declare interface paths {
2218
2792
  };
2219
2793
  requestBody?: never;
2220
2794
  responses: {
2221
- /** @description Network connection terminated */
2795
+ /** @description BLE enabled */
2222
2796
  200: {
2223
2797
  headers: {
2224
2798
  [name: string]: unknown;
@@ -2227,15 +2801,6 @@ declare interface paths {
2227
2801
  "application/json": components["schemas"]["SuccessResponse"];
2228
2802
  };
2229
2803
  };
2230
- /** @description Command issued in an invalid state */
2231
- 400: {
2232
- headers: {
2233
- [name: string]: unknown;
2234
- };
2235
- content: {
2236
- "application/json": components["schemas"]["Error"];
2237
- };
2238
- };
2239
2804
  };
2240
2805
  };
2241
2806
  delete?: never;
@@ -2244,15 +2809,20 @@ declare interface paths {
2244
2809
  patch?: never;
2245
2810
  trace?: never;
2246
2811
  };
2247
- "/wifi/networks": {
2812
+ "/ble/disable": {
2248
2813
  parameters: {
2249
2814
  query?: never;
2250
2815
  header?: never;
2251
2816
  path?: never;
2252
2817
  cookie?: never;
2253
2818
  };
2254
- /** @description Scans environment for available wifi networks */
2255
- get: {
2819
+ get?: never;
2820
+ put?: never;
2821
+ /**
2822
+ * Disable BLE
2823
+ * @description Stop advertising
2824
+ */
2825
+ post: {
2256
2826
  parameters: {
2257
2827
  query?: never;
2258
2828
  header?: never;
@@ -2261,35 +2831,24 @@ declare interface paths {
2261
2831
  };
2262
2832
  requestBody?: never;
2263
2833
  responses: {
2264
- /** @description OK */
2834
+ /** @description BLE disabled */
2265
2835
  200: {
2266
2836
  headers: {
2267
2837
  [name: string]: unknown;
2268
2838
  };
2269
2839
  content: {
2270
- "application/json": components["schemas"]["NetworkResponse"];
2271
- };
2272
- };
2273
- /** @description Wifi already connected */
2274
- 400: {
2275
- headers: {
2276
- [name: string]: unknown;
2277
- };
2278
- content: {
2279
- "application/json": components["schemas"]["Error"];
2840
+ "application/json": components["schemas"]["SuccessResponse"];
2280
2841
  };
2281
2842
  };
2282
2843
  };
2283
2844
  };
2284
- put?: never;
2285
- post?: never;
2286
2845
  delete?: never;
2287
2846
  options?: never;
2288
2847
  head?: never;
2289
2848
  patch?: never;
2290
2849
  trace?: never;
2291
2850
  };
2292
- "/wifi/forget": {
2851
+ "/ble/pairing": {
2293
2852
  parameters: {
2294
2853
  query?: never;
2295
2854
  header?: never;
@@ -2298,8 +2857,12 @@ declare interface paths {
2298
2857
  };
2299
2858
  get?: never;
2300
2859
  put?: never;
2301
- /** @description Forgets saved Wifi config */
2302
- post: {
2860
+ post?: never;
2861
+ /**
2862
+ * Remove pairing
2863
+ * @description Remove pairing with previous device
2864
+ */
2865
+ delete: {
2303
2866
  parameters: {
2304
2867
  query?: never;
2305
2868
  header?: never;
@@ -2308,8 +2871,17 @@ declare interface paths {
2308
2871
  };
2309
2872
  requestBody?: never;
2310
2873
  responses: {
2311
- /** @description Not implemented */
2312
- 400: {
2874
+ /** @description Pairing removed, now device is discoverable */
2875
+ 200: {
2876
+ headers: {
2877
+ [name: string]: unknown;
2878
+ };
2879
+ content: {
2880
+ "application/json": components["schemas"]["SuccessResponse"];
2881
+ };
2882
+ };
2883
+ /** @description Failed to remove, due to BLE is not initialized, or pairing was already removed before */
2884
+ 503: {
2313
2885
  headers: {
2314
2886
  [name: string]: unknown;
2315
2887
  };
@@ -2319,29 +2891,22 @@ declare interface paths {
2319
2891
  };
2320
2892
  };
2321
2893
  };
2322
- delete?: never;
2323
2894
  options?: never;
2324
2895
  head?: never;
2325
2896
  patch?: never;
2326
2897
  trace?: never;
2327
2898
  };
2328
- "/screen": {
2899
+ "/ble/status": {
2329
2900
  parameters: {
2330
2901
  query?: never;
2331
2902
  header?: never;
2332
2903
  path?: never;
2333
2904
  cookie?: never;
2334
2905
  };
2335
- /** Get single frame for required screen */
2906
+ /** @description Returns current BLE status */
2336
2907
  get: {
2337
2908
  parameters: {
2338
- query: {
2339
- /**
2340
- * @description Type of the display Front = 0, Back = 1
2341
- * @example 0
2342
- */
2343
- display: number;
2344
- };
2909
+ query?: never;
2345
2910
  header?: never;
2346
2911
  path?: never;
2347
2912
  cookie?: never;
@@ -2354,16 +2919,7 @@ declare interface paths {
2354
2919
  [name: string]: unknown;
2355
2920
  };
2356
2921
  content: {
2357
- "image/bmp": components["schemas"]["ScreenResponse"];
2358
- };
2359
- };
2360
- /** @description Wrong display */
2361
- 400: {
2362
- headers: {
2363
- [name: string]: unknown;
2364
- };
2365
- content: {
2366
- "application/json": components["schemas"]["Error"];
2922
+ "application/json": components["schemas"]["BleStatusResponse"];
2367
2923
  };
2368
2924
  };
2369
2925
  };
@@ -2376,7 +2932,7 @@ declare interface paths {
2376
2932
  patch?: never;
2377
2933
  trace?: never;
2378
2934
  };
2379
- "/screen/ws": {
2935
+ "/time": {
2380
2936
  parameters: {
2381
2937
  query?: never;
2382
2938
  header?: never;
@@ -2384,14 +2940,10 @@ declare interface paths {
2384
2940
  cookie?: never;
2385
2941
  };
2386
2942
  /**
2387
- * Screen streaming WebSocket endpoint
2388
- * @description WebSocket connection for real-time screen streaming.
2389
- * Upgrade from HTTP to WebSocket protocol is required.
2390
- * After connection client must send desired display id
2391
- * as json {"display": 0}
2392
- *
2943
+ * Get current timestamp with timezone
2944
+ * @description Retrieves the current timestamp from RTC with timezone in ISO 8601 format
2393
2945
  */
2394
- get: operations["connectWebSocket"];
2946
+ get: operations["getTime"];
2395
2947
  put?: never;
2396
2948
  post?: never;
2397
2949
  delete?: never;
@@ -2400,43 +2952,51 @@ declare interface paths {
2400
2952
  patch?: never;
2401
2953
  trace?: never;
2402
2954
  };
2403
- "/ble/enable": {
2955
+ "/account": {
2404
2956
  parameters: {
2405
2957
  query?: never;
2406
2958
  header?: never;
2407
2959
  path?: never;
2408
2960
  cookie?: never;
2409
2961
  };
2410
- get?: never;
2962
+ /**
2963
+ * Get MQTT status
2964
+ * @description Retrieves MQTT status and linked account data
2965
+ */
2966
+ get: operations["getAccountInfo"];
2411
2967
  put?: never;
2412
- /** @description Enables ble module */
2413
- post: {
2414
- parameters: {
2415
- query?: never;
2416
- header?: never;
2417
- path?: never;
2418
- cookie?: never;
2419
- };
2420
- requestBody?: never;
2421
- responses: {
2422
- /** @description Ble enabled */
2423
- 200: {
2424
- headers: {
2425
- [name: string]: unknown;
2426
- };
2427
- content: {
2428
- "application/json": components["schemas"]["SuccessResponse"];
2429
- };
2430
- };
2431
- };
2968
+ post?: never;
2969
+ /**
2970
+ * Unlink device from account
2971
+ * @description Removes account linking data
2972
+ */
2973
+ delete: operations["unlinkAccount"];
2974
+ options?: never;
2975
+ head?: never;
2976
+ patch?: never;
2977
+ trace?: never;
2978
+ };
2979
+ "/account/link": {
2980
+ parameters: {
2981
+ query?: never;
2982
+ header?: never;
2983
+ path?: never;
2984
+ cookie?: never;
2432
2985
  };
2986
+ get?: never;
2987
+ put?: never;
2988
+ /**
2989
+ * Link device to account
2990
+ * @description Requests account link PIN. Works only if device is connected to MQTT and is not linked to account
2991
+ */
2992
+ post: operations["linkAccount"];
2433
2993
  delete?: never;
2434
2994
  options?: never;
2435
2995
  head?: never;
2436
2996
  patch?: never;
2437
2997
  trace?: never;
2438
2998
  };
2439
- "/ble/disable": {
2999
+ "/time/timestamp": {
2440
3000
  parameters: {
2441
3001
  query?: never;
2442
3002
  header?: never;
@@ -2445,27 +3005,33 @@ declare interface paths {
2445
3005
  };
2446
3006
  get?: never;
2447
3007
  put?: never;
2448
- /** @description Disables ble module */
2449
- post: {
2450
- parameters: {
2451
- query?: never;
2452
- header?: never;
2453
- path?: never;
2454
- cookie?: never;
2455
- };
2456
- requestBody?: never;
2457
- responses: {
2458
- /** @description Ble disabled */
2459
- 200: {
2460
- headers: {
2461
- [name: string]: unknown;
2462
- };
2463
- content: {
2464
- "application/json": components["schemas"]["SuccessResponse"];
2465
- };
2466
- };
2467
- };
3008
+ /**
3009
+ * Set current timestamp
3010
+ * @description Sets the RTC timestamp in ISO 8601 format.
3011
+ * - Without 'Z': treated as local time
3012
+ * - With 'Z': treated as UTC and converted to local time using current timezone offset
3013
+ */
3014
+ post: operations["setTimeTimestamp"];
3015
+ delete?: never;
3016
+ options?: never;
3017
+ head?: never;
3018
+ patch?: never;
3019
+ trace?: never;
3020
+ };
3021
+ "/time/timezone": {
3022
+ parameters: {
3023
+ query?: never;
3024
+ header?: never;
3025
+ path?: never;
3026
+ cookie?: never;
2468
3027
  };
3028
+ get?: never;
3029
+ put?: never;
3030
+ /**
3031
+ * Set timezone offset
3032
+ * @description Sets the timezone offset in ±HH:MM format
3033
+ */
3034
+ post: operations["setTimeTimezone"];
2469
3035
  delete?: never;
2470
3036
  options?: never;
2471
3037
  head?: never;
@@ -2486,7 +3052,7 @@ declare interface RemoveParams {
2486
3052
  export { RemoveParams }
2487
3053
  export { RemoveParams as StorageRemoveParams }
2488
3054
 
2489
- declare type RequiredIpConfig = RequireKeys<NonNullable<CamelizedRequest["ipConfig"]>, "ipMethod" | "ipType">;
3055
+ declare type RequiredIpConfig = RequireKeys<NonNullable<CamelizedRequest["ipConfig"]>, "ipMethod">;
2490
3056
 
2491
3057
  declare type RequireKeys<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
2492
3058
 
@@ -2544,13 +3110,25 @@ export declare type StorageListElement = components["schemas"]["StorageListEleme
2544
3110
 
2545
3111
  export declare type StorageReadResponse = ArrayBuffer | Blob;
2546
3112
 
3113
+ export declare type StorageStatus = components["schemas"]["StorageStatus"];
3114
+
2547
3115
  export declare type SuccessResponse = components["schemas"]["SuccessResponse"];
2548
3116
 
3117
+ export declare interface SystemTimestampParams {
3118
+ timestamp: operations["setTimeTimestamp"]["parameters"]["query"]["timestamp"];
3119
+ }
3120
+
3121
+ export declare interface SystemTimezoneParams {
3122
+ timezone: operations["setTimeTimezone"]["parameters"]["query"]["timezone"];
3123
+ }
3124
+
2549
3125
  export declare interface SystemUpdateParams {
2550
3126
  name?: string;
2551
3127
  file: BusyFile;
2552
3128
  }
2553
3129
 
3130
+ export declare type TimestampInfo = components["schemas"]["TimestampInfo"];
3131
+
2554
3132
  declare interface UploadFileParams {
2555
3133
  path: operations["writeStorageFile"]["parameters"]["query"]["path"];
2556
3134
  file: BusyFile;