tesla-fleet-api 0.3.0 → 0.4.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.
Files changed (192) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +22 -0
  2. package/dist/_virtual/_rolldown/runtime.mjs +12 -0
  3. package/dist/charging.cjs +53 -0
  4. package/dist/charging.d.cts +31 -0
  5. package/dist/charging.d.mts +30 -0
  6. package/dist/charging.mjs +53 -0
  7. package/dist/commands.cjs +802 -0
  8. package/dist/commands.d.cts +350 -0
  9. package/dist/commands.d.mts +349 -0
  10. package/dist/commands.mjs +800 -0
  11. package/dist/const.cjs +300 -0
  12. package/dist/const.d.cts +287 -0
  13. package/dist/const.d.mts +287 -0
  14. package/dist/const.mjs +263 -0
  15. package/dist/energy.cjs +137 -0
  16. package/dist/energy.d.cts +95 -0
  17. package/{src/energy.ts → dist/energy.d.mts} +17 -140
  18. package/dist/energy.mjs +137 -0
  19. package/dist/energyspecific.cjs +99 -0
  20. package/dist/energyspecific.d.cts +78 -0
  21. package/dist/energyspecific.d.mts +77 -0
  22. package/dist/energyspecific.mjs +99 -0
  23. package/dist/exceptions.cjs +1487 -0
  24. package/dist/exceptions.d.cts +1142 -0
  25. package/dist/exceptions.d.mts +1142 -0
  26. package/dist/exceptions.mjs +1324 -0
  27. package/dist/index.cjs +226 -0
  28. package/dist/index.d.cts +14 -0
  29. package/dist/index.d.mts +14 -0
  30. package/dist/index.mjs +14 -0
  31. package/dist/partner.cjs +32 -0
  32. package/dist/partner.d.cts +24 -0
  33. package/dist/partner.d.mts +23 -0
  34. package/dist/partner.mjs +32 -0
  35. package/dist/router.cjs +0 -0
  36. package/dist/router.d.cts +1 -0
  37. package/dist/router.d.mts +1 -0
  38. package/dist/router.mjs +1 -0
  39. package/dist/signing/crypto.cjs +31 -0
  40. package/dist/signing/crypto.mjs +27 -0
  41. package/dist/signing/session.cjs +112 -0
  42. package/dist/signing/session.d.cts +69 -0
  43. package/dist/signing/session.d.mts +69 -0
  44. package/dist/signing/session.mjs +110 -0
  45. package/dist/tariff.cjs +292 -0
  46. package/dist/{tariff.d.ts → tariff.d.cts} +17 -17
  47. package/dist/tariff.d.mts +29 -0
  48. package/dist/tariff.mjs +291 -0
  49. package/dist/teslafleetapi.cjs +125 -0
  50. package/dist/teslafleetapi.d.cts +64 -0
  51. package/dist/teslafleetapi.d.mts +64 -0
  52. package/dist/teslafleetapi.mjs +125 -0
  53. package/dist/teslemetry.cjs +36 -0
  54. package/dist/teslemetry.d.cts +23 -0
  55. package/dist/teslemetry.d.mts +23 -0
  56. package/dist/teslemetry.mjs +36 -0
  57. package/dist/tessie.cjs +34 -0
  58. package/dist/tessie.d.cts +23 -0
  59. package/dist/tessie.d.mts +23 -0
  60. package/dist/tessie.mjs +34 -0
  61. package/dist/types/commands.d.cts +28 -0
  62. package/dist/types/commands.d.mts +28 -0
  63. package/dist/types/live_status.d.cts +30 -0
  64. package/dist/types/live_status.d.mts +30 -0
  65. package/dist/types/products.d.cts +58 -0
  66. package/dist/types/products.d.mts +58 -0
  67. package/dist/types/responses.d.cts +9 -0
  68. package/dist/types/responses.d.mts +9 -0
  69. package/dist/types/site_info.d.cts +154 -0
  70. package/dist/types/site_info.d.mts +154 -0
  71. package/dist/types/vehicle.d.cts +27 -0
  72. package/dist/types/vehicle.d.mts +27 -0
  73. package/dist/types/vehicle_data.d.cts +278 -0
  74. package/dist/types/vehicle_data.d.mts +278 -0
  75. package/dist/types.cjs +0 -0
  76. package/dist/types.d.cts +9 -0
  77. package/dist/types.d.mts +9 -0
  78. package/dist/types.mjs +1 -0
  79. package/dist/user.cjs +28 -0
  80. package/dist/user.d.cts +17 -0
  81. package/dist/user.d.mts +16 -0
  82. package/dist/user.mjs +28 -0
  83. package/dist/vehicle.cjs +804 -0
  84. package/dist/vehicle.d.cts +550 -0
  85. package/dist/vehicle.d.mts +549 -0
  86. package/dist/vehicle.mjs +804 -0
  87. package/dist/vehiclesigned.cjs +20 -0
  88. package/dist/vehiclesigned.d.cts +14 -0
  89. package/dist/{vehiclesigned.d.ts → vehiclesigned.d.mts} +3 -3
  90. package/dist/vehiclesigned.mjs +20 -0
  91. package/dist/vehiclespecific.cjs +604 -0
  92. package/dist/vehiclespecific.d.cts +433 -0
  93. package/dist/vehiclespecific.d.mts +432 -0
  94. package/dist/vehiclespecific.mjs +604 -0
  95. package/package.json +108 -35
  96. package/dist/charging.d.ts +0 -30
  97. package/dist/charging.js +0 -51
  98. package/dist/charging.js.map +0 -1
  99. package/dist/commands.d.ts +0 -352
  100. package/dist/commands.js +0 -875
  101. package/dist/commands.js.map +0 -1
  102. package/dist/energy.d.ts +0 -94
  103. package/dist/energy.js +0 -125
  104. package/dist/energy.js.map +0 -1
  105. package/dist/energyspecific.d.ts +0 -77
  106. package/dist/energyspecific.js +0 -97
  107. package/dist/energyspecific.js.map +0 -1
  108. package/dist/helpers.d.ts +0 -2
  109. package/dist/helpers.js +0 -10
  110. package/dist/helpers.js.map +0 -1
  111. package/dist/index.d.ts +0 -15
  112. package/dist/index.js +0 -15
  113. package/dist/index.js.map +0 -1
  114. package/dist/partner.d.ts +0 -23
  115. package/dist/partner.js +0 -31
  116. package/dist/partner.js.map +0 -1
  117. package/dist/signing/crypto.d.ts +0 -10
  118. package/dist/signing/crypto.js +0 -26
  119. package/dist/signing/crypto.js.map +0 -1
  120. package/dist/signing/errors.d.ts +0 -29
  121. package/dist/signing/errors.js +0 -40
  122. package/dist/signing/errors.js.map +0 -1
  123. package/dist/signing/session.d.ts +0 -69
  124. package/dist/signing/session.js +0 -102
  125. package/dist/signing/session.js.map +0 -1
  126. package/dist/tariff.js +0 -302
  127. package/dist/tariff.js.map +0 -1
  128. package/dist/teslafleetapi.d.ts +0 -58
  129. package/dist/teslafleetapi.js +0 -120
  130. package/dist/teslafleetapi.js.map +0 -1
  131. package/dist/teslemetry.d.ts +0 -29
  132. package/dist/teslemetry.js +0 -39
  133. package/dist/teslemetry.js.map +0 -1
  134. package/dist/tessie.d.ts +0 -23
  135. package/dist/tessie.js +0 -28
  136. package/dist/tessie.js.map +0 -1
  137. package/dist/types/commands.d.ts +0 -44
  138. package/dist/types/commands.js +0 -11
  139. package/dist/types/commands.js.map +0 -1
  140. package/dist/types/live_status.d.ts +0 -26
  141. package/dist/types/live_status.js +0 -2
  142. package/dist/types/live_status.js.map +0 -1
  143. package/dist/types/products.d.ts +0 -54
  144. package/dist/types/products.js +0 -2
  145. package/dist/types/products.js.map +0 -1
  146. package/dist/types/responses.d.ts +0 -5
  147. package/dist/types/responses.js +0 -2
  148. package/dist/types/responses.js.map +0 -1
  149. package/dist/types/site_info.d.ts +0 -150
  150. package/dist/types/site_info.js +0 -2
  151. package/dist/types/site_info.js.map +0 -1
  152. package/dist/types/vehicle.d.ts +0 -23
  153. package/dist/types/vehicle.js +0 -10
  154. package/dist/types/vehicle.js.map +0 -1
  155. package/dist/types/vehicle_data.d.ts +0 -274
  156. package/dist/types/vehicle_data.js +0 -2
  157. package/dist/types/vehicle_data.js.map +0 -1
  158. package/dist/user.d.ts +0 -16
  159. package/dist/user.js +0 -26
  160. package/dist/user.js.map +0 -1
  161. package/dist/vehicle.d.ts +0 -548
  162. package/dist/vehicle.js +0 -774
  163. package/dist/vehicle.js.map +0 -1
  164. package/dist/vehiclesigned.js +0 -19
  165. package/dist/vehiclesigned.js.map +0 -1
  166. package/dist/vehiclespecific.d.ts +0 -432
  167. package/dist/vehiclespecific.js +0 -601
  168. package/dist/vehiclespecific.js.map +0 -1
  169. package/src/charging.ts +0 -66
  170. package/src/commands.ts +0 -1134
  171. package/src/energyspecific.ts +0 -116
  172. package/src/helpers.ts +0 -11
  173. package/src/index.ts +0 -21
  174. package/src/partner.ts +0 -37
  175. package/src/signing/crypto.ts +0 -29
  176. package/src/signing/errors.ts +0 -50
  177. package/src/signing/session.ts +0 -132
  178. package/src/tariff.ts +0 -375
  179. package/src/teslafleetapi.ts +0 -182
  180. package/src/teslemetry.ts +0 -54
  181. package/src/tessie.ts +0 -42
  182. package/src/types/commands.ts +0 -62
  183. package/src/types/live_status.ts +0 -27
  184. package/src/types/products.ts +0 -61
  185. package/src/types/responses.ts +0 -1
  186. package/src/types/site_info.ts +0 -159
  187. package/src/types/vehicle.ts +0 -33
  188. package/src/types/vehicle_data.ts +0 -286
  189. package/src/user.ts +0 -35
  190. package/src/vehicle.ts +0 -886
  191. package/src/vehiclesigned.ts +0 -20
  192. package/src/vehiclespecific.ts +0 -818
package/package.json CHANGED
@@ -1,40 +1,113 @@
1
1
  {
2
- "name": "tesla-fleet-api",
3
- "version": "0.3.0",
4
- "type": "module",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/Teslemetry/node-tesla-fleet-api"
2
+ "name": "tesla-fleet-api",
3
+ "version": "0.4.0",
4
+ "type": "module",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/Teslemetry/node-tesla-fleet-api"
8
+ },
9
+ "author": {
10
+ "name": "Teslemetry",
11
+ "email": "hello@teslemetry.com",
12
+ "url": "https://teslemetry.com"
13
+ },
14
+ "devDependencies": {
15
+ "@arethetypeswrong/cli": "^0.18.5",
16
+ "@changesets/cli": "^2.31.1",
17
+ "@eslint/js": "^10.0.1",
18
+ "@types/node": "^24.13.3",
19
+ "eslint": "^10.8.0",
20
+ "publint": "^0.3.23",
21
+ "tsdown": "^0.23.4",
22
+ "typescript": "^5.9.2",
23
+ "typescript-eslint": "^8.66.0",
24
+ "vitest": "^4.1.10"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "provenance": true
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "keywords": [
34
+ "tesla",
35
+ "tesla fleet api",
36
+ "teslemetry",
37
+ "tessie"
38
+ ],
39
+ "main": "./dist/index.cjs",
40
+ "module": "./dist/index.mjs",
41
+ "types": "./dist/index.d.cts",
42
+ "exports": {
43
+ ".": {
44
+ "import": {
45
+ "types": "./dist/index.d.mts",
46
+ "default": "./dist/index.mjs"
47
+ },
48
+ "require": {
49
+ "types": "./dist/index.d.cts",
50
+ "default": "./dist/index.cjs"
51
+ }
8
52
  },
9
- "author": {
10
- "name": "Teslemetry",
11
- "email": "hello@teslemetry.com",
12
- "url": "https://teslemetry.com"
53
+ "./tariff": {
54
+ "import": {
55
+ "types": "./dist/tariff.d.mts",
56
+ "default": "./dist/tariff.mjs"
57
+ },
58
+ "require": {
59
+ "types": "./dist/tariff.d.cts",
60
+ "default": "./dist/tariff.cjs"
61
+ }
13
62
  },
14
- "devDependencies": {
15
- "@types/node": "^24.13.3",
16
- "typescript": "^5.9.2",
17
- "vitest": "^4.1.10"
63
+ "./const": {
64
+ "import": {
65
+ "types": "./dist/const.d.mts",
66
+ "default": "./dist/const.mjs"
67
+ },
68
+ "require": {
69
+ "types": "./dist/const.d.cts",
70
+ "default": "./dist/const.cjs"
71
+ }
18
72
  },
19
- "scripts": {
20
- "prepare": "tsc",
21
- "watch": "tsc -w",
22
- "test": "vitest run",
23
- "test:watch": "vitest"
73
+ "./router": {
74
+ "import": {
75
+ "types": "./dist/router.d.mts",
76
+ "default": "./dist/router.mjs"
77
+ },
78
+ "require": {
79
+ "types": "./dist/router.d.cts",
80
+ "default": "./dist/router.cjs"
81
+ }
24
82
  },
25
- "files": [
26
- "dist",
27
- "src"
28
- ],
29
- "keywords": [
30
- "tesla",
31
- "tesla fleet api",
32
- "teslemetry",
33
- "tessie"
34
- ],
35
- "main": "dist/index.js",
36
- "license": "Apache-2.0",
37
- "dependencies": {
38
- "@teslemetry/tesla-protocol": "^0.5.0"
39
- }
40
- }
83
+ "./types": {
84
+ "import": {
85
+ "types": "./dist/types.d.mts",
86
+ "default": "./dist/types.mjs"
87
+ },
88
+ "require": {
89
+ "types": "./dist/types.d.cts",
90
+ "default": "./dist/types.cjs"
91
+ }
92
+ },
93
+ "./package.json": "./package.json"
94
+ },
95
+ "sideEffects": false,
96
+ "engines": {
97
+ "node": ">=22"
98
+ },
99
+ "license": "Apache-2.0",
100
+ "dependencies": {
101
+ "@teslemetry/tesla-protocol": "~6.0.0"
102
+ },
103
+ "scripts": {
104
+ "watch": "tsdown --watch",
105
+ "test": "vitest run",
106
+ "test:watch": "vitest",
107
+ "lint": "eslint .",
108
+ "pack:check": "publint && attw --pack . --profile node16",
109
+ "changeset": "changeset",
110
+ "ci:publish": "changeset publish",
111
+ "build": "tsdown"
112
+ }
113
+ }
@@ -1,30 +0,0 @@
1
- import TeslaFleetApi from "./teslafleetapi.js";
2
- export default class Charging {
3
- parent: TeslaFleetApi;
4
- constructor(parent: TeslaFleetApi);
5
- /**
6
- * Returns the paginated charging history.
7
- * @param vin Vehicle Identification Number (VIN) of the selected vehicle.
8
- * @param startTime Start time of the windows to download charging history for (i,e "2023-07-27T11:43:45-07:00").
9
- * @param endTime End time of the windows to download charging history for (i,e "2023-07-28T11:43:45-07:00").
10
- * @param pageNo Current page number.
11
- * @param pageSize Number of records per page.
12
- * @param sortBy Field to sort by.
13
- * @param sortOrder Sort order (ASC or DESC).
14
- */
15
- history(vin?: string, startTime?: string, endTime?: string, pageNo?: number, pageSize?: number, sortBy?: string, sortOrder?: string): Promise<Record<string, any>>;
16
- /**
17
- * Returns a charging invoice pdf for an event from charging history.
18
- * @param id Content ID. This can be obtained from the invoices.contentId of a charging history event.
19
- */
20
- invoice(id: string): Promise<Record<string, any>>;
21
- /**
22
- * Returns the charging session information including pricing and energy data. This endpoint is only available for business accounts that own a fleet of vehicles.
23
- * @param vin Vehicle Identification Number (VIN) of the selected vehicle.
24
- * @param date_from Start date of the windows to download charging sessions.
25
- * @param date_to End date of the windows to download charging sessions.
26
- * @param limit Number of entities to be returned.
27
- * @param offset Number of entities to be skipped.
28
- */
29
- sessions(vin?: string, date_from?: string, date_to?: string, limit?: number, offset?: number): Promise<Record<string, any>>;
30
- }
package/dist/charging.js DELETED
@@ -1,51 +0,0 @@
1
- export default class Charging {
2
- constructor(parent) {
3
- this.parent = parent;
4
- }
5
- /**
6
- * Returns the paginated charging history.
7
- * @param vin Vehicle Identification Number (VIN) of the selected vehicle.
8
- * @param startTime Start time of the windows to download charging history for (i,e "2023-07-27T11:43:45-07:00").
9
- * @param endTime End time of the windows to download charging history for (i,e "2023-07-28T11:43:45-07:00").
10
- * @param pageNo Current page number.
11
- * @param pageSize Number of records per page.
12
- * @param sortBy Field to sort by.
13
- * @param sortOrder Sort order (ASC or DESC).
14
- */
15
- async history(vin, startTime, endTime, pageNo, pageSize, sortBy, sortOrder) {
16
- return await this.parent._request("GET", "api/1/dx/charging/history", {
17
- vin,
18
- startTime,
19
- endTime,
20
- pageNo,
21
- pageSize,
22
- sortBy,
23
- sortOrder,
24
- });
25
- }
26
- /**
27
- * Returns a charging invoice pdf for an event from charging history.
28
- * @param id Content ID. This can be obtained from the invoices.contentId of a charging history event.
29
- */
30
- async invoice(id) {
31
- return await this.parent._request("GET", `api/1/dx/charging/invoices/${id}`);
32
- }
33
- /**
34
- * Returns the charging session information including pricing and energy data. This endpoint is only available for business accounts that own a fleet of vehicles.
35
- * @param vin Vehicle Identification Number (VIN) of the selected vehicle.
36
- * @param date_from Start date of the windows to download charging sessions.
37
- * @param date_to End date of the windows to download charging sessions.
38
- * @param limit Number of entities to be returned.
39
- * @param offset Number of entities to be skipped.
40
- */
41
- async sessions(vin, date_from, date_to, limit, offset) {
42
- return await this.parent._request("GET", "api/1/dx/charging/sessions", {
43
- vin,
44
- date_from,
45
- date_to,
46
- limit,
47
- offset,
48
- });
49
- }
50
- }
51
- //# sourceMappingURL=charging.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"charging.js","sourceRoot":"","sources":["../src/charging.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,QAAQ;IAGzB,YAAY,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CACT,GAAY,EACZ,SAAkB,EAClB,OAAgB,EAChB,MAAe,EACf,QAAiB,EACjB,MAAe,EACf,SAAkB;QAElB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAA2B,EAAE;YAClE,GAAG;YACH,SAAS;YACT,OAAO;YACP,MAAM;YACN,QAAQ;YACR,MAAM;YACN,SAAS;SACZ,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,EAAU;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IAEH,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,SAAkB,EAAE,OAAgB,EAAE,KAAc,EAAE,MAAe;QAC9F,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,4BAA4B,EAAE;YACnE,GAAG;YACH,SAAS;YACT,OAAO;YACP,KAAK;YACL,MAAM;SACT,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,352 +0,0 @@
1
- import { RoutableMessage } from "@teslemetry/tesla-protocol/command/universal_message";
2
- import { VehicleStatus } from "@teslemetry/tesla-protocol/command/vcsec";
3
- import { ClimateMode, CommandResponse, Level, Seat, Trunk } from "./types/commands.js";
4
- import Vehicle from "./vehicle.js";
5
- import VehicleSpecific from "./vehiclespecific.js";
6
- /**
7
- * Transport-agnostic signed-command builder for the Tesla Vehicle Command
8
- * Protocol: mirrors `python-tesla-fleet-api`'s `Commands` ABC. Every method
9
- * here builds a `RoutableMessage`, signs it (HMAC-personalized), and
10
- * dispatches it through the single abstract seam `_send`. A concrete
11
- * subclass fills that seam for one transport - the cloud `/signed_command`
12
- * HTTP endpoint (`VehicleSigned`) today, a BLE GATT link in a future story.
13
- *
14
- * AES-GCM personalized signing (the BLE-only auth mode) is intentionally out
15
- * of scope here; see AGENTS.md.
16
- */
17
- export default abstract class Commands extends VehicleSpecific {
18
- #private;
19
- /** Delay between WAIT-retries; overridable so tests don't have to wait for real timers. */
20
- protected retryDelayMs: number;
21
- private readonly fromDestination;
22
- private readonly sessions;
23
- constructor(parent: Vehicle, vin: string, privateKey?: Buffer, publicKey?: Buffer);
24
- /**
25
- * Transmit a signed (or session-handshake) `RoutableMessage` to the
26
- * vehicle and return its reply. Implementations must call
27
- * `validateAndUpdateSession(resp, msg.uuid)` on the reply before
28
- * returning it.
29
- */
30
- protected abstract _send(msg: RoutableMessage, requires: string, expectsData?: boolean, confirmBroadcast?: (status: VehicleStatus) => boolean): Promise<RoutableMessage>;
31
- private sessionFor;
32
- /**
33
- * Absorb session info piggy-backed on any signed-command reply and raise
34
- * on a whitelist rejection or a terminal message fault. Every concrete
35
- * `_send` must call this on the reply - passing the `uuid` of the request
36
- * it just sent - before returning it.
37
- *
38
- * A `SessionInfo` is untrusted wire data until its `session_info_tag` is
39
- * verified: the tag is an HMAC over the exact bytes received, keyed by a
40
- * key derived from the *candidate* vehicle public key carried inside that
41
- * same SessionInfo, and bound to this request's `uuid` as a challenge (so
42
- * a captured older reply can't be replayed against a newer request). Only
43
- * once that tag checks out do we act on anything the message claims -
44
- * including its own whitelist-status field - and even then `Session.commit`
45
- * still refuses a clock time that regresses within the same epoch.
46
- */
47
- protected validateAndUpdateSession(resp: RoutableMessage, requestUuid: Buffer): void;
48
- private handshake;
49
- private buildHmacMessage;
50
- /**
51
- * Build, sign, dispatch (with WAIT/epoch-fault retry), and interpret one
52
- * domain command.
53
- *
54
- * VCSEC requires messages to arrive in strict counter order and warns
55
- * clients to avoid simultaneous requests to it at all (unlike
56
- * Infotainment, which tolerates a sliding window) - so for
57
- * `DOMAIN_VEHICLE_SECURITY` the *entire* dispatch (handshake, build,
58
- * send, and any retry) runs under the domain's lock, guaranteeing at
59
- * most one VCSEC message is ever in flight. Infotainment keeps the
60
- * narrower build-only lock, serializing only counter assignment.
61
- */
62
- private dispatch;
63
- private interpretResponse;
64
- private interpretVcsecResponse;
65
- private interpretInfotainmentResponse;
66
- private sendVehicleSecurity;
67
- private sendInfotainment;
68
- private vehicleAction;
69
- private resolveSeat;
70
- /**
71
- * Controls the front (which_trunk: "front") or rear (which_trunk: "rear") trunk.
72
- * @param which_trunk "front" or "rear"
73
- */
74
- actuate_truck(which_trunk: Trunk): Promise<CommandResponse>;
75
- /**
76
- * Adjusts vehicle media playback volume.
77
- * @param volume A floating point number from 0.0 to 11.0.
78
- */
79
- adjust_volume(volume: number): Promise<CommandResponse>;
80
- /** Starts climate preconditioning. */
81
- auto_conditioning_start(): Promise<CommandResponse>;
82
- /** Stops climate preconditioning. */
83
- auto_conditioning_stop(): Promise<CommandResponse>;
84
- /** Cancels the countdown to install the vehicle software update. */
85
- cancel_software_update(): Promise<CommandResponse>;
86
- /** Charges in max range mode -- we recommend limiting the use of this mode to long trips. */
87
- charge_max_range(): Promise<CommandResponse>;
88
- /** Closes the charge port door. */
89
- charge_port_door_close(): Promise<CommandResponse>;
90
- /** Opens the charge port door. */
91
- charge_port_door_open(): Promise<CommandResponse>;
92
- /** Charges in Standard mode. */
93
- charge_standard(): Promise<CommandResponse>;
94
- /** Starts charging the vehicle. */
95
- charge_start(): Promise<CommandResponse>;
96
- /** Stops charging the vehicle. */
97
- charge_stop(): Promise<CommandResponse>;
98
- /**
99
- * Deactivates PIN to Drive and resets the associated PIN for vehicles running firmware versions 2023.44+. This command is only accessible to fleet managers or owners.
100
- */
101
- clear_pin_to_drive_admin(): Promise<CommandResponse>;
102
- /** Locks the vehicle. */
103
- door_lock(): Promise<CommandResponse>;
104
- /** Unlocks the vehicle. */
105
- door_unlock(): Promise<CommandResponse>;
106
- /** Erases user's data from the user interface. Requires the vehicle to be in park. */
107
- erase_user_data(): Promise<CommandResponse>;
108
- /** Briefly flashes the vehicle headlights. Requires the vehicle to be in park. */
109
- flash_lights(): Promise<CommandResponse>;
110
- /**
111
- * Restricts certain vehicle UI functionality from guest users
112
- * @param enable `true` or `false`
113
- */
114
- guest_mode(enable: boolean): Promise<CommandResponse>;
115
- /** Honks the vehicle horn. Requires the vehicle to be in park. */
116
- honk_horn(): Promise<CommandResponse>;
117
- /** Advances media player to next favorite track. */
118
- media_next_fav(): Promise<CommandResponse>;
119
- /** Advances media player to next track. */
120
- media_next_track(): Promise<CommandResponse>;
121
- /** Advances media player to previous favorite track. */
122
- media_prev_fav(): Promise<CommandResponse>;
123
- /** Advances media player to previous track. */
124
- media_prev_track(): Promise<CommandResponse>;
125
- /** Toggles current play/pause state. */
126
- media_toggle_playback(): Promise<CommandResponse>;
127
- /** Turns the volume down by one. */
128
- media_volume_down(): Promise<CommandResponse>;
129
- /**
130
- * Start navigation to given coordinates. Order can be used to specify order of multiple stops.
131
- * @param lat Latitude
132
- * @param lon Longitude
133
- * @param order Order of multiple stops
134
- */
135
- navigation_gps_request(lat: number, lon: number, order?: number): Promise<CommandResponse>;
136
- /**
137
- * Sends a location to the in-vehicle navigation system.
138
- *
139
- * `locale` and `type` are REST-only fields with no equivalent in the
140
- * signed-command protocol (which only carries a destination string and a
141
- * multi-stop order), so they are accepted for cross-transport signature
142
- * parity but not sent.
143
- * @param value Destination text
144
- */
145
- navigation_request(value: string, _locale?: string, _type?: string): Promise<CommandResponse>;
146
- /**
147
- * Start navigation to a supercharger.
148
- *
149
- * The signed-command protobuf has a single `order` field carrying the
150
- * supercharger identifier; a caller-supplied multi-stop `order` has no
151
- * representable slot and is rejected rather than silently dropped.
152
- * @param id Supercharger ID
153
- * @param order Order of multiple stops - not representable in a signed command
154
- */
155
- navigation_sc_request(id: number, order?: number): Promise<CommandResponse>;
156
- /**
157
- * Sets automatic seat heating and cooling. Only the front seats support this action.
158
- * @param auto_seat_position Seat position
159
- * @param auto_climate_on `true` or `false`
160
- */
161
- remote_auto_seat_climate_request(auto_seat_position: Seat | number, auto_climate_on: boolean): Promise<CommandResponse>;
162
- /**
163
- * Sets automatic steering wheel heating on/off.
164
- * @param on `true` or `false`
165
- */
166
- remote_auto_steering_wheel_heat_climate_request(on: boolean): Promise<CommandResponse>;
167
- /**
168
- * Plays a sound through the vehicle external speaker.
169
- * @param sound Fart is `0`, Locate ping is `2000`
170
- */
171
- remote_boombox(sound?: number): Promise<CommandResponse>;
172
- /**
173
- * Sets seat cooling. Only the front seats support this action.
174
- * @param seat_position Seat position
175
- * @param seat_cooler_level Cooling level
176
- */
177
- remote_seat_cooler_request(seat_position: Seat | number, seat_cooler_level: Level): Promise<CommandResponse>;
178
- /**
179
- * Sets seat heating.
180
- * @param seat_position Seat position
181
- * @param seat_heater_level Heating level
182
- */
183
- remote_seat_heater_request(seat_position: Seat | number, seat_heater_level: Level): Promise<CommandResponse>;
184
- /** Starts the vehicle remotely. Requires keyless driving to be enabled. */
185
- remote_start_drive(): Promise<CommandResponse>;
186
- /**
187
- * Sets steering wheel heat level.
188
- * @param level Heating level (0=Off, 1=Low, 2=High)
189
- */
190
- remote_steering_wheel_heat_level_request(level: Level): Promise<CommandResponse>;
191
- /**
192
- * Sets steering wheel heating on/off. For vehicles that do not support auto steering wheel heat.
193
- * @param on `true` or `false`
194
- */
195
- remote_steering_wheel_heater_request(on: boolean): Promise<CommandResponse>;
196
- /** Removes PIN to Drive. Requires the car to be in Pin to Drive mode and not in Valet mode. */
197
- reset_pin_to_drive_pin(): Promise<CommandResponse>;
198
- /** Removes PIN for Valet Mode. */
199
- reset_valet_pin(): Promise<CommandResponse>;
200
- /**
201
- * Schedules a vehicle software update (over the air "OTA") to be installed in the future.
202
- * @param offset_sec Offset in seconds
203
- */
204
- schedule_software_update(offset_sec: number): Promise<CommandResponse>;
205
- /**
206
- * Turns Bioweapon Defense Mode on and off.
207
- * @param on `true` or `false`
208
- * @param manual_override `true` or `false`
209
- */
210
- set_bioweapon_mode(on: boolean, manual_override: boolean): Promise<CommandResponse>;
211
- /**
212
- * Sets the vehicle overheat protection.
213
- * @param on `true` or `false`
214
- * @param fan_only `true` or `false`
215
- */
216
- set_cabin_overheat_protection(on: boolean, fan_only: boolean): Promise<CommandResponse>;
217
- /**
218
- * Sets the vehicle's charge limit to a custom percentage.
219
- * @param percent Charge limit percentage typically between 50-100
220
- */
221
- set_charge_limit(percent: number): Promise<CommandResponse>;
222
- /**
223
- * Sets the charging amps.
224
- * @param charging_amps Current limit in Amps typically between 5-32
225
- */
226
- set_charging_amps(charging_amps: number): Promise<CommandResponse>;
227
- /**
228
- * Enables climate keeper mode.
229
- * @param climate_keeper_mode `0` is Off, `1` is Keep, `2` is Dog, `3` is Camp
230
- */
231
- set_climate_keeper_mode(climate_keeper_mode: number | ClimateMode): Promise<CommandResponse>;
232
- /**
233
- * Adjusts the Cabin Overheat Protection temperature (COP).
234
- * @param cop_temp Integer representing Low (0/30C/90F), Medium (1/35C/95F), or High (2/40C/100F)
235
- */
236
- set_cop_temp(cop_temp: 0 | 1 | 2 | 30 | 35 | 40 | 90 | 95 | 100): Promise<CommandResponse>;
237
- /**
238
- * Sets a four-digit passcode for PIN to Drive.
239
- * @param on `true` or `false`
240
- * @param password Four-digit passcode
241
- */
242
- set_pin_to_drive(on: boolean, password: string | number): Promise<CommandResponse>;
243
- /**
244
- * Sets an override for preconditioning — it should default to empty if no override is used.
245
- * @param on `true` or `false`
246
- * @param manual_override `true` or `false`
247
- */
248
- set_preconditioning_max(on: boolean, manual_override: boolean): Promise<CommandResponse>;
249
- /**
250
- * Sets a time at which charging should be completed.
251
- * @param enable `true` or `false`
252
- * @param time Minutes after midnight
253
- */
254
- set_scheduled_charging(enable: boolean, time: number): Promise<CommandResponse>;
255
- /**
256
- * Sets a time at which departure should be completed.
257
- *
258
- * `preconditioning_enabled` and `off_peak_charging_enabled` are accepted
259
- * for cross-transport signature parity but have no field in the signed
260
- * command protobuf, so they are not sent.
261
- * @param enable `true` or `false`
262
- * @param preconditioning_enabled not representable in a signed command
263
- * @param preconditioning_weekdays_only `true` or `false`
264
- * @param departure_time Minutes after midnight
265
- * @param off_peak_charging_enabled not representable in a signed command
266
- * @param off_peak_charging_weekdays_only `true` or `false`
267
- * @param end_off_peak_time Minutes after midnight
268
- */
269
- set_scheduled_departure(enable?: boolean, _preconditioning_enabled?: boolean, preconditioning_weekdays_only?: boolean, departure_time?: number, _off_peak_charging_enabled?: boolean, off_peak_charging_weekdays_only?: boolean, end_off_peak_time?: number): Promise<CommandResponse>;
270
- /**
271
- * Enables and disables Sentry Mode.
272
- * @param on `true` or `false`
273
- */
274
- set_sentry_mode(on: boolean): Promise<CommandResponse>;
275
- /**
276
- * Sets the driver and/or passenger-side cabin temperature (and other zones if sync is enabled).
277
- * @param driver_temp Driver temperature
278
- * @param passenger_temp Passenger temperature
279
- */
280
- set_temps(driver_temp: number, passenger_temp: number): Promise<CommandResponse>;
281
- /**
282
- * Turns on Valet Mode and sets a four-digit passcode.
283
- * @param on `true` or `false`
284
- * @param password Four-digit passcode
285
- */
286
- set_valet_mode(on: boolean, password: string | number): Promise<CommandResponse>;
287
- /**
288
- * Changes the name of a vehicle.
289
- * @param vehicle_name New name
290
- */
291
- set_vehicle_name(vehicle_name: string): Promise<CommandResponse>;
292
- /**
293
- * Activates Speed Limit Mode with a four-digit PIN.
294
- * @param pin Four-digit PIN
295
- */
296
- speed_limit_activate(pin: string | number): Promise<CommandResponse>;
297
- /**
298
- * Deactivates Speed Limit Mode and resets the associated PIN.
299
- * @param pin Four-digit PIN
300
- */
301
- speed_limit_clear_pin(pin: string | number): Promise<CommandResponse>;
302
- /** Deactivates Speed Limit Mode and resets the associated PIN, for fleet managers or owners. */
303
- speed_limit_clear_pin_admin(): Promise<CommandResponse>;
304
- /**
305
- * Deactivates Speed Limit Mode.
306
- * @param pin Four-digit PIN
307
- */
308
- speed_limit_deactivate(pin: string | number): Promise<CommandResponse>;
309
- /**
310
- * Sets the maximum speed allowed when Speed Limit Mode is active.
311
- * @param limit_mph Maximum speed in MPH
312
- */
313
- speed_limit_set_limit(limit_mph: number): Promise<CommandResponse>;
314
- /**
315
- * Controls the panoramic sunroof on the Model S.
316
- *
317
- * "stop" has no corresponding field in the signed-command protobuf (only
318
- * vent/close/open), so it is rejected rather than guessed at.
319
- * @param state "close" or "vent"
320
- */
321
- sun_roof_control(state: "stop" | "close" | "vent"): Promise<CommandResponse>;
322
- /**
323
- * Records a drive note. Overrides the inherited plaintext command so it is
324
- * signed and dispatched over the vehicle-command protocol rather than
325
- * silently falling through to the unsigned REST endpoint on vehicles that
326
- * require signing.
327
- * @param note Drive note
328
- */
329
- take_drivenote(note: string): Promise<CommandResponse>;
330
- /**
331
- * Turns on HomeLink (used to open and close garage doors).
332
- * @param lat Latitude
333
- * @param lon Longitude
334
- * @param token
335
- */
336
- trigger_homelink(lat: number, lon: number, token?: string): Promise<CommandResponse>;
337
- /**
338
- * Sends upcoming calendar entries to the vehicle. Overrides the inherited
339
- * plaintext command so it is signed and dispatched over the vehicle-command
340
- * protocol rather than silently falling through to the unsigned REST
341
- * endpoint on vehicles that require signing.
342
- * @param calendar_data Calendar data
343
- */
344
- upcoming_calendar_entries(calendar_data: string): Promise<CommandResponse>;
345
- /**
346
- * Control the windows of a parked vehicle. Supported commands: vent and close.
347
- * @param command "vent" or "close"
348
- * @param lat Latitude
349
- * @param lon Longitude
350
- */
351
- window_control(command: "vent" | "close", _lat?: number, _lon?: number): Promise<CommandResponse>;
352
- }