@seamapi/http 0.4.0 → 0.5.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 (103) hide show
  1. package/README.md +212 -1
  2. package/dist/connect.cjs +549 -4
  3. package/dist/connect.cjs.map +1 -1
  4. package/dist/connect.d.cts +56 -2
  5. package/lib/seam/connect/auth.js +55 -4
  6. package/lib/seam/connect/auth.js.map +1 -1
  7. package/lib/seam/connect/options.d.ts +11 -1
  8. package/lib/seam/connect/options.js +51 -1
  9. package/lib/seam/connect/options.js.map +1 -1
  10. package/lib/seam/connect/routes/access-codes-unmanaged.d.ts +3 -1
  11. package/lib/seam/connect/routes/access-codes-unmanaged.js +15 -1
  12. package/lib/seam/connect/routes/access-codes-unmanaged.js.map +1 -1
  13. package/lib/seam/connect/routes/access-codes.d.ts +3 -1
  14. package/lib/seam/connect/routes/access-codes.js +15 -1
  15. package/lib/seam/connect/routes/access-codes.js.map +1 -1
  16. package/lib/seam/connect/routes/acs-access-groups.d.ts +3 -1
  17. package/lib/seam/connect/routes/acs-access-groups.js +15 -1
  18. package/lib/seam/connect/routes/acs-access-groups.js.map +1 -1
  19. package/lib/seam/connect/routes/acs-credentials.d.ts +3 -1
  20. package/lib/seam/connect/routes/acs-credentials.js +15 -1
  21. package/lib/seam/connect/routes/acs-credentials.js.map +1 -1
  22. package/lib/seam/connect/routes/acs-systems.d.ts +3 -1
  23. package/lib/seam/connect/routes/acs-systems.js +15 -1
  24. package/lib/seam/connect/routes/acs-systems.js.map +1 -1
  25. package/lib/seam/connect/routes/acs-users.d.ts +3 -1
  26. package/lib/seam/connect/routes/acs-users.js +15 -1
  27. package/lib/seam/connect/routes/acs-users.js.map +1 -1
  28. package/lib/seam/connect/routes/acs.d.ts +3 -1
  29. package/lib/seam/connect/routes/acs.js +15 -1
  30. package/lib/seam/connect/routes/acs.js.map +1 -1
  31. package/lib/seam/connect/routes/action-attempts.d.ts +3 -1
  32. package/lib/seam/connect/routes/action-attempts.js +15 -1
  33. package/lib/seam/connect/routes/action-attempts.js.map +1 -1
  34. package/lib/seam/connect/routes/client-sessions.d.ts +3 -1
  35. package/lib/seam/connect/routes/client-sessions.js +15 -1
  36. package/lib/seam/connect/routes/client-sessions.js.map +1 -1
  37. package/lib/seam/connect/routes/connect-webviews.d.ts +3 -1
  38. package/lib/seam/connect/routes/connect-webviews.js +15 -1
  39. package/lib/seam/connect/routes/connect-webviews.js.map +1 -1
  40. package/lib/seam/connect/routes/connected-accounts.d.ts +3 -1
  41. package/lib/seam/connect/routes/connected-accounts.js +15 -1
  42. package/lib/seam/connect/routes/connected-accounts.js.map +1 -1
  43. package/lib/seam/connect/routes/devices-unmanaged.d.ts +3 -1
  44. package/lib/seam/connect/routes/devices-unmanaged.js +15 -1
  45. package/lib/seam/connect/routes/devices-unmanaged.js.map +1 -1
  46. package/lib/seam/connect/routes/devices.d.ts +3 -1
  47. package/lib/seam/connect/routes/devices.js +15 -1
  48. package/lib/seam/connect/routes/devices.js.map +1 -1
  49. package/lib/seam/connect/routes/events.d.ts +3 -1
  50. package/lib/seam/connect/routes/events.js +15 -1
  51. package/lib/seam/connect/routes/events.js.map +1 -1
  52. package/lib/seam/connect/routes/locks.d.ts +3 -1
  53. package/lib/seam/connect/routes/locks.js +15 -1
  54. package/lib/seam/connect/routes/locks.js.map +1 -1
  55. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.d.ts +3 -1
  56. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js +15 -1
  57. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js.map +1 -1
  58. package/lib/seam/connect/routes/noise-sensors.d.ts +3 -1
  59. package/lib/seam/connect/routes/noise-sensors.js +15 -1
  60. package/lib/seam/connect/routes/noise-sensors.js.map +1 -1
  61. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.d.ts +3 -1
  62. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js +15 -1
  63. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js.map +1 -1
  64. package/lib/seam/connect/routes/thermostats.d.ts +3 -1
  65. package/lib/seam/connect/routes/thermostats.js +15 -1
  66. package/lib/seam/connect/routes/thermostats.js.map +1 -1
  67. package/lib/seam/connect/routes/webhooks.d.ts +3 -1
  68. package/lib/seam/connect/routes/webhooks.js +15 -1
  69. package/lib/seam/connect/routes/webhooks.js.map +1 -1
  70. package/lib/seam/connect/routes/workspaces.d.ts +3 -1
  71. package/lib/seam/connect/routes/workspaces.js +15 -1
  72. package/lib/seam/connect/routes/workspaces.js.map +1 -1
  73. package/lib/seam/connect/seam-http.d.ts +3 -1
  74. package/lib/seam/connect/seam-http.js +15 -1
  75. package/lib/seam/connect/seam-http.js.map +1 -1
  76. package/lib/version.d.ts +1 -1
  77. package/lib/version.js +1 -1
  78. package/package.json +1 -1
  79. package/src/lib/seam/connect/auth.ts +95 -3
  80. package/src/lib/seam/connect/options.ts +105 -1
  81. package/src/lib/seam/connect/routes/access-codes-unmanaged.ts +38 -0
  82. package/src/lib/seam/connect/routes/access-codes.ts +38 -0
  83. package/src/lib/seam/connect/routes/acs-access-groups.ts +38 -0
  84. package/src/lib/seam/connect/routes/acs-credentials.ts +38 -0
  85. package/src/lib/seam/connect/routes/acs-systems.ts +38 -0
  86. package/src/lib/seam/connect/routes/acs-users.ts +38 -0
  87. package/src/lib/seam/connect/routes/acs.ts +38 -0
  88. package/src/lib/seam/connect/routes/action-attempts.ts +38 -0
  89. package/src/lib/seam/connect/routes/client-sessions.ts +38 -0
  90. package/src/lib/seam/connect/routes/connect-webviews.ts +38 -0
  91. package/src/lib/seam/connect/routes/connected-accounts.ts +38 -0
  92. package/src/lib/seam/connect/routes/devices-unmanaged.ts +38 -0
  93. package/src/lib/seam/connect/routes/devices.ts +38 -0
  94. package/src/lib/seam/connect/routes/events.ts +38 -0
  95. package/src/lib/seam/connect/routes/locks.ts +38 -0
  96. package/src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts +38 -0
  97. package/src/lib/seam/connect/routes/noise-sensors.ts +38 -0
  98. package/src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts +38 -0
  99. package/src/lib/seam/connect/routes/thermostats.ts +38 -0
  100. package/src/lib/seam/connect/routes/webhooks.ts +38 -0
  101. package/src/lib/seam/connect/routes/workspaces.ts +38 -0
  102. package/src/lib/seam/connect/seam-http.ts +38 -0
  103. package/src/lib/version.ts +1 -1
@@ -12,12 +12,16 @@ import {
12
12
  isSeamHttpOptionsWithApiKey,
13
13
  isSeamHttpOptionsWithClient,
14
14
  isSeamHttpOptionsWithClientSessionToken,
15
+ isSeamHttpOptionsWithConsoleSessionToken,
16
+ isSeamHttpOptionsWithPersonalAccessToken,
15
17
  type SeamHttpFromPublishableKeyOptions,
16
18
  SeamHttpInvalidOptionsError,
17
19
  type SeamHttpOptions,
18
20
  type SeamHttpOptionsWithApiKey,
19
21
  type SeamHttpOptionsWithClient,
20
22
  type SeamHttpOptionsWithClientSessionToken,
23
+ type SeamHttpOptionsWithConsoleSessionToken,
24
+ type SeamHttpOptionsWithPersonalAccessToken,
21
25
  } from 'lib/seam/connect/options.js'
22
26
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
23
27
 
@@ -82,6 +86,40 @@ export class SeamHttpEvents {
82
86
  return SeamHttpEvents.fromClientSessionToken(token, options)
83
87
  }
84
88
 
89
+ static fromConsoleSessionToken(
90
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
91
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
92
+ options: Omit<
93
+ SeamHttpOptionsWithConsoleSessionToken,
94
+ 'consoleSessionToken' | 'workspaceId'
95
+ > = {},
96
+ ): SeamHttpEvents {
97
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
98
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
99
+ throw new SeamHttpInvalidOptionsError(
100
+ 'Missing consoleSessionToken or workspaceId',
101
+ )
102
+ }
103
+ return new SeamHttpEvents(constructorOptions)
104
+ }
105
+
106
+ static fromPersonalAccessToken(
107
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
108
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
109
+ options: Omit<
110
+ SeamHttpOptionsWithPersonalAccessToken,
111
+ 'personalAccessToken' | 'workspaceId'
112
+ > = {},
113
+ ): SeamHttpEvents {
114
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
115
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
116
+ throw new SeamHttpInvalidOptionsError(
117
+ 'Missing personalAccessToken or workspaceId',
118
+ )
119
+ }
120
+ return new SeamHttpEvents(constructorOptions)
121
+ }
122
+
85
123
  async get(body?: EventsGetParams): Promise<EventsGetResponse['event']> {
86
124
  const { data } = await this.client.request<EventsGetResponse>({
87
125
  url: '/events/get',
@@ -12,12 +12,16 @@ import {
12
12
  isSeamHttpOptionsWithApiKey,
13
13
  isSeamHttpOptionsWithClient,
14
14
  isSeamHttpOptionsWithClientSessionToken,
15
+ isSeamHttpOptionsWithConsoleSessionToken,
16
+ isSeamHttpOptionsWithPersonalAccessToken,
15
17
  type SeamHttpFromPublishableKeyOptions,
16
18
  SeamHttpInvalidOptionsError,
17
19
  type SeamHttpOptions,
18
20
  type SeamHttpOptionsWithApiKey,
19
21
  type SeamHttpOptionsWithClient,
20
22
  type SeamHttpOptionsWithClientSessionToken,
23
+ type SeamHttpOptionsWithConsoleSessionToken,
24
+ type SeamHttpOptionsWithPersonalAccessToken,
21
25
  } from 'lib/seam/connect/options.js'
22
26
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
23
27
 
@@ -82,6 +86,40 @@ export class SeamHttpLocks {
82
86
  return SeamHttpLocks.fromClientSessionToken(token, options)
83
87
  }
84
88
 
89
+ static fromConsoleSessionToken(
90
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
91
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
92
+ options: Omit<
93
+ SeamHttpOptionsWithConsoleSessionToken,
94
+ 'consoleSessionToken' | 'workspaceId'
95
+ > = {},
96
+ ): SeamHttpLocks {
97
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
98
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
99
+ throw new SeamHttpInvalidOptionsError(
100
+ 'Missing consoleSessionToken or workspaceId',
101
+ )
102
+ }
103
+ return new SeamHttpLocks(constructorOptions)
104
+ }
105
+
106
+ static fromPersonalAccessToken(
107
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
108
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
109
+ options: Omit<
110
+ SeamHttpOptionsWithPersonalAccessToken,
111
+ 'personalAccessToken' | 'workspaceId'
112
+ > = {},
113
+ ): SeamHttpLocks {
114
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
115
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
116
+ throw new SeamHttpInvalidOptionsError(
117
+ 'Missing personalAccessToken or workspaceId',
118
+ )
119
+ }
120
+ return new SeamHttpLocks(constructorOptions)
121
+ }
122
+
85
123
  async get(body?: LocksGetParams): Promise<LocksGetResponse['device']> {
86
124
  const { data } = await this.client.request<LocksGetResponse>({
87
125
  url: '/locks/get',
@@ -12,12 +12,16 @@ import {
12
12
  isSeamHttpOptionsWithApiKey,
13
13
  isSeamHttpOptionsWithClient,
14
14
  isSeamHttpOptionsWithClientSessionToken,
15
+ isSeamHttpOptionsWithConsoleSessionToken,
16
+ isSeamHttpOptionsWithPersonalAccessToken,
15
17
  type SeamHttpFromPublishableKeyOptions,
16
18
  SeamHttpInvalidOptionsError,
17
19
  type SeamHttpOptions,
18
20
  type SeamHttpOptionsWithApiKey,
19
21
  type SeamHttpOptionsWithClient,
20
22
  type SeamHttpOptionsWithClientSessionToken,
23
+ type SeamHttpOptionsWithConsoleSessionToken,
24
+ type SeamHttpOptionsWithPersonalAccessToken,
21
25
  } from 'lib/seam/connect/options.js'
22
26
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
23
27
 
@@ -85,6 +89,40 @@ export class SeamHttpNoiseSensorsNoiseThresholds {
85
89
  )
86
90
  }
87
91
 
92
+ static fromConsoleSessionToken(
93
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
94
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
95
+ options: Omit<
96
+ SeamHttpOptionsWithConsoleSessionToken,
97
+ 'consoleSessionToken' | 'workspaceId'
98
+ > = {},
99
+ ): SeamHttpNoiseSensorsNoiseThresholds {
100
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
101
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
102
+ throw new SeamHttpInvalidOptionsError(
103
+ 'Missing consoleSessionToken or workspaceId',
104
+ )
105
+ }
106
+ return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)
107
+ }
108
+
109
+ static fromPersonalAccessToken(
110
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
111
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
112
+ options: Omit<
113
+ SeamHttpOptionsWithPersonalAccessToken,
114
+ 'personalAccessToken' | 'workspaceId'
115
+ > = {},
116
+ ): SeamHttpNoiseSensorsNoiseThresholds {
117
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
118
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
119
+ throw new SeamHttpInvalidOptionsError(
120
+ 'Missing personalAccessToken or workspaceId',
121
+ )
122
+ }
123
+ return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)
124
+ }
125
+
88
126
  async create(body?: NoiseSensorsNoiseThresholdsCreateBody): Promise<void> {
89
127
  await this.client.request<NoiseSensorsNoiseThresholdsCreateResponse>({
90
128
  url: '/noise_sensors/noise_thresholds/create',
@@ -9,12 +9,16 @@ import {
9
9
  isSeamHttpOptionsWithApiKey,
10
10
  isSeamHttpOptionsWithClient,
11
11
  isSeamHttpOptionsWithClientSessionToken,
12
+ isSeamHttpOptionsWithConsoleSessionToken,
13
+ isSeamHttpOptionsWithPersonalAccessToken,
12
14
  type SeamHttpFromPublishableKeyOptions,
13
15
  SeamHttpInvalidOptionsError,
14
16
  type SeamHttpOptions,
15
17
  type SeamHttpOptionsWithApiKey,
16
18
  type SeamHttpOptionsWithClient,
17
19
  type SeamHttpOptionsWithClientSessionToken,
20
+ type SeamHttpOptionsWithConsoleSessionToken,
21
+ type SeamHttpOptionsWithPersonalAccessToken,
18
22
  } from 'lib/seam/connect/options.js'
19
23
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
20
24
 
@@ -80,6 +84,40 @@ export class SeamHttpNoiseSensors {
80
84
  return SeamHttpNoiseSensors.fromClientSessionToken(token, options)
81
85
  }
82
86
 
87
+ static fromConsoleSessionToken(
88
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
89
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
90
+ options: Omit<
91
+ SeamHttpOptionsWithConsoleSessionToken,
92
+ 'consoleSessionToken' | 'workspaceId'
93
+ > = {},
94
+ ): SeamHttpNoiseSensors {
95
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
96
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
97
+ throw new SeamHttpInvalidOptionsError(
98
+ 'Missing consoleSessionToken or workspaceId',
99
+ )
100
+ }
101
+ return new SeamHttpNoiseSensors(constructorOptions)
102
+ }
103
+
104
+ static fromPersonalAccessToken(
105
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
106
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
107
+ options: Omit<
108
+ SeamHttpOptionsWithPersonalAccessToken,
109
+ 'personalAccessToken' | 'workspaceId'
110
+ > = {},
111
+ ): SeamHttpNoiseSensors {
112
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
113
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
114
+ throw new SeamHttpInvalidOptionsError(
115
+ 'Missing personalAccessToken or workspaceId',
116
+ )
117
+ }
118
+ return new SeamHttpNoiseSensors(constructorOptions)
119
+ }
120
+
83
121
  get noiseThresholds(): SeamHttpNoiseSensorsNoiseThresholds {
84
122
  return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client)
85
123
  }
@@ -12,12 +12,16 @@ import {
12
12
  isSeamHttpOptionsWithApiKey,
13
13
  isSeamHttpOptionsWithClient,
14
14
  isSeamHttpOptionsWithClientSessionToken,
15
+ isSeamHttpOptionsWithConsoleSessionToken,
16
+ isSeamHttpOptionsWithPersonalAccessToken,
15
17
  type SeamHttpFromPublishableKeyOptions,
16
18
  SeamHttpInvalidOptionsError,
17
19
  type SeamHttpOptions,
18
20
  type SeamHttpOptionsWithApiKey,
19
21
  type SeamHttpOptionsWithClient,
20
22
  type SeamHttpOptionsWithClientSessionToken,
23
+ type SeamHttpOptionsWithConsoleSessionToken,
24
+ type SeamHttpOptionsWithPersonalAccessToken,
21
25
  } from 'lib/seam/connect/options.js'
22
26
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
23
27
 
@@ -85,6 +89,40 @@ export class SeamHttpThermostatsClimateSettingSchedules {
85
89
  )
86
90
  }
87
91
 
92
+ static fromConsoleSessionToken(
93
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
94
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
95
+ options: Omit<
96
+ SeamHttpOptionsWithConsoleSessionToken,
97
+ 'consoleSessionToken' | 'workspaceId'
98
+ > = {},
99
+ ): SeamHttpThermostatsClimateSettingSchedules {
100
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
101
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
102
+ throw new SeamHttpInvalidOptionsError(
103
+ 'Missing consoleSessionToken or workspaceId',
104
+ )
105
+ }
106
+ return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)
107
+ }
108
+
109
+ static fromPersonalAccessToken(
110
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
111
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
112
+ options: Omit<
113
+ SeamHttpOptionsWithPersonalAccessToken,
114
+ 'personalAccessToken' | 'workspaceId'
115
+ > = {},
116
+ ): SeamHttpThermostatsClimateSettingSchedules {
117
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
118
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
119
+ throw new SeamHttpInvalidOptionsError(
120
+ 'Missing personalAccessToken or workspaceId',
121
+ )
122
+ }
123
+ return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)
124
+ }
125
+
88
126
  async create(
89
127
  body?: ThermostatsClimateSettingSchedulesCreateBody,
90
128
  ): Promise<
@@ -12,12 +12,16 @@ import {
12
12
  isSeamHttpOptionsWithApiKey,
13
13
  isSeamHttpOptionsWithClient,
14
14
  isSeamHttpOptionsWithClientSessionToken,
15
+ isSeamHttpOptionsWithConsoleSessionToken,
16
+ isSeamHttpOptionsWithPersonalAccessToken,
15
17
  type SeamHttpFromPublishableKeyOptions,
16
18
  SeamHttpInvalidOptionsError,
17
19
  type SeamHttpOptions,
18
20
  type SeamHttpOptionsWithApiKey,
19
21
  type SeamHttpOptionsWithClient,
20
22
  type SeamHttpOptionsWithClientSessionToken,
23
+ type SeamHttpOptionsWithConsoleSessionToken,
24
+ type SeamHttpOptionsWithPersonalAccessToken,
21
25
  } from 'lib/seam/connect/options.js'
22
26
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
23
27
 
@@ -83,6 +87,40 @@ export class SeamHttpThermostats {
83
87
  return SeamHttpThermostats.fromClientSessionToken(token, options)
84
88
  }
85
89
 
90
+ static fromConsoleSessionToken(
91
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
92
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
93
+ options: Omit<
94
+ SeamHttpOptionsWithConsoleSessionToken,
95
+ 'consoleSessionToken' | 'workspaceId'
96
+ > = {},
97
+ ): SeamHttpThermostats {
98
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
99
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
100
+ throw new SeamHttpInvalidOptionsError(
101
+ 'Missing consoleSessionToken or workspaceId',
102
+ )
103
+ }
104
+ return new SeamHttpThermostats(constructorOptions)
105
+ }
106
+
107
+ static fromPersonalAccessToken(
108
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
109
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
110
+ options: Omit<
111
+ SeamHttpOptionsWithPersonalAccessToken,
112
+ 'personalAccessToken' | 'workspaceId'
113
+ > = {},
114
+ ): SeamHttpThermostats {
115
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
116
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
117
+ throw new SeamHttpInvalidOptionsError(
118
+ 'Missing personalAccessToken or workspaceId',
119
+ )
120
+ }
121
+ return new SeamHttpThermostats(constructorOptions)
122
+ }
123
+
86
124
  get climateSettingSchedules(): SeamHttpThermostatsClimateSettingSchedules {
87
125
  return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client)
88
126
  }
@@ -16,12 +16,16 @@ import {
16
16
  isSeamHttpOptionsWithApiKey,
17
17
  isSeamHttpOptionsWithClient,
18
18
  isSeamHttpOptionsWithClientSessionToken,
19
+ isSeamHttpOptionsWithConsoleSessionToken,
20
+ isSeamHttpOptionsWithPersonalAccessToken,
19
21
  type SeamHttpFromPublishableKeyOptions,
20
22
  SeamHttpInvalidOptionsError,
21
23
  type SeamHttpOptions,
22
24
  type SeamHttpOptionsWithApiKey,
23
25
  type SeamHttpOptionsWithClient,
24
26
  type SeamHttpOptionsWithClientSessionToken,
27
+ type SeamHttpOptionsWithConsoleSessionToken,
28
+ type SeamHttpOptionsWithPersonalAccessToken,
25
29
  } from 'lib/seam/connect/options.js'
26
30
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
27
31
 
@@ -86,6 +90,40 @@ export class SeamHttpWebhooks {
86
90
  return SeamHttpWebhooks.fromClientSessionToken(token, options)
87
91
  }
88
92
 
93
+ static fromConsoleSessionToken(
94
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
95
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
96
+ options: Omit<
97
+ SeamHttpOptionsWithConsoleSessionToken,
98
+ 'consoleSessionToken' | 'workspaceId'
99
+ > = {},
100
+ ): SeamHttpWebhooks {
101
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
102
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
103
+ throw new SeamHttpInvalidOptionsError(
104
+ 'Missing consoleSessionToken or workspaceId',
105
+ )
106
+ }
107
+ return new SeamHttpWebhooks(constructorOptions)
108
+ }
109
+
110
+ static fromPersonalAccessToken(
111
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
112
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
113
+ options: Omit<
114
+ SeamHttpOptionsWithPersonalAccessToken,
115
+ 'personalAccessToken' | 'workspaceId'
116
+ > = {},
117
+ ): SeamHttpWebhooks {
118
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
119
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
120
+ throw new SeamHttpInvalidOptionsError(
121
+ 'Missing personalAccessToken or workspaceId',
122
+ )
123
+ }
124
+ return new SeamHttpWebhooks(constructorOptions)
125
+ }
126
+
89
127
  async create(
90
128
  body?: WebhooksCreateBody,
91
129
  ): Promise<WebhooksCreateResponse['webhook']> {
@@ -16,12 +16,16 @@ import {
16
16
  isSeamHttpOptionsWithApiKey,
17
17
  isSeamHttpOptionsWithClient,
18
18
  isSeamHttpOptionsWithClientSessionToken,
19
+ isSeamHttpOptionsWithConsoleSessionToken,
20
+ isSeamHttpOptionsWithPersonalAccessToken,
19
21
  type SeamHttpFromPublishableKeyOptions,
20
22
  SeamHttpInvalidOptionsError,
21
23
  type SeamHttpOptions,
22
24
  type SeamHttpOptionsWithApiKey,
23
25
  type SeamHttpOptionsWithClient,
24
26
  type SeamHttpOptionsWithClientSessionToken,
27
+ type SeamHttpOptionsWithConsoleSessionToken,
28
+ type SeamHttpOptionsWithPersonalAccessToken,
25
29
  } from 'lib/seam/connect/options.js'
26
30
  import { parseOptions } from 'lib/seam/connect/parse-options.js'
27
31
 
@@ -86,6 +90,40 @@ export class SeamHttpWorkspaces {
86
90
  return SeamHttpWorkspaces.fromClientSessionToken(token, options)
87
91
  }
88
92
 
93
+ static fromConsoleSessionToken(
94
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
95
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
96
+ options: Omit<
97
+ SeamHttpOptionsWithConsoleSessionToken,
98
+ 'consoleSessionToken' | 'workspaceId'
99
+ > = {},
100
+ ): SeamHttpWorkspaces {
101
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
102
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
103
+ throw new SeamHttpInvalidOptionsError(
104
+ 'Missing consoleSessionToken or workspaceId',
105
+ )
106
+ }
107
+ return new SeamHttpWorkspaces(constructorOptions)
108
+ }
109
+
110
+ static fromPersonalAccessToken(
111
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
112
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
113
+ options: Omit<
114
+ SeamHttpOptionsWithPersonalAccessToken,
115
+ 'personalAccessToken' | 'workspaceId'
116
+ > = {},
117
+ ): SeamHttpWorkspaces {
118
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
119
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
120
+ throw new SeamHttpInvalidOptionsError(
121
+ 'Missing personalAccessToken or workspaceId',
122
+ )
123
+ }
124
+ return new SeamHttpWorkspaces(constructorOptions)
125
+ }
126
+
89
127
  async get(
90
128
  params?: WorkspacesGetParams,
91
129
  ): Promise<WorkspacesGetResponse['workspace']> {
@@ -4,12 +4,16 @@ import {
4
4
  isSeamHttpOptionsWithApiKey,
5
5
  isSeamHttpOptionsWithClient,
6
6
  isSeamHttpOptionsWithClientSessionToken,
7
+ isSeamHttpOptionsWithConsoleSessionToken,
8
+ isSeamHttpOptionsWithPersonalAccessToken,
7
9
  type SeamHttpFromPublishableKeyOptions,
8
10
  SeamHttpInvalidOptionsError,
9
11
  type SeamHttpOptions,
10
12
  type SeamHttpOptionsWithApiKey,
11
13
  type SeamHttpOptionsWithClient,
12
14
  type SeamHttpOptionsWithClientSessionToken,
15
+ type SeamHttpOptionsWithConsoleSessionToken,
16
+ type SeamHttpOptionsWithPersonalAccessToken,
13
17
  } from './options.js'
14
18
  import { parseOptions } from './parse-options.js'
15
19
  import {
@@ -87,6 +91,40 @@ export class SeamHttp {
87
91
  return SeamHttp.fromClientSessionToken(token, options)
88
92
  }
89
93
 
94
+ static fromConsoleSessionToken(
95
+ consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'],
96
+ workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'],
97
+ options: Omit<
98
+ SeamHttpOptionsWithConsoleSessionToken,
99
+ 'consoleSessionToken' | 'workspaceId'
100
+ > = {},
101
+ ): SeamHttp {
102
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
103
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
104
+ throw new SeamHttpInvalidOptionsError(
105
+ 'Missing consoleSessionToken or workspaceId',
106
+ )
107
+ }
108
+ return new SeamHttp(constructorOptions)
109
+ }
110
+
111
+ static fromPersonalAccessToken(
112
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
113
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
114
+ options: Omit<
115
+ SeamHttpOptionsWithPersonalAccessToken,
116
+ 'personalAccessToken' | 'workspaceId'
117
+ > = {},
118
+ ): SeamHttp {
119
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
120
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
121
+ throw new SeamHttpInvalidOptionsError(
122
+ 'Missing personalAccessToken or workspaceId',
123
+ )
124
+ }
125
+ return new SeamHttp(constructorOptions)
126
+ }
127
+
90
128
  get accessCodes(): SeamHttpAccessCodes {
91
129
  return SeamHttpAccessCodes.fromClient(this.client)
92
130
  }
@@ -1,3 +1,3 @@
1
- const seamapiJavascriptHttpVersion = '0.4.0'
1
+ const seamapiJavascriptHttpVersion = '0.5.0'
2
2
 
3
3
  export default seamapiJavascriptHttpVersion