@seamapi/http 0.3.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 (122) hide show
  1. package/README.md +212 -1
  2. package/dist/connect.cjs +643 -4
  3. package/dist/connect.cjs.map +1 -1
  4. package/dist/connect.d.cts +84 -2
  5. package/lib/seam/connect/api-error-type.d.ts +8 -0
  6. package/lib/seam/connect/api-error-type.js +3 -0
  7. package/lib/seam/connect/api-error-type.js.map +1 -0
  8. package/lib/seam/connect/auth.js +55 -4
  9. package/lib/seam/connect/auth.js.map +1 -1
  10. package/lib/seam/connect/client.js +5 -0
  11. package/lib/seam/connect/client.js.map +1 -1
  12. package/lib/seam/connect/error-interceptor.d.ts +1 -0
  13. package/lib/seam/connect/error-interceptor.js +43 -0
  14. package/lib/seam/connect/error-interceptor.js.map +1 -0
  15. package/lib/seam/connect/index.d.ts +3 -1
  16. package/lib/seam/connect/index.js +3 -1
  17. package/lib/seam/connect/index.js.map +1 -1
  18. package/lib/seam/connect/options.d.ts +11 -1
  19. package/lib/seam/connect/options.js +51 -1
  20. package/lib/seam/connect/options.js.map +1 -1
  21. package/lib/seam/connect/routes/access-codes-unmanaged.d.ts +3 -1
  22. package/lib/seam/connect/routes/access-codes-unmanaged.js +15 -1
  23. package/lib/seam/connect/routes/access-codes-unmanaged.js.map +1 -1
  24. package/lib/seam/connect/routes/access-codes.d.ts +3 -1
  25. package/lib/seam/connect/routes/access-codes.js +15 -1
  26. package/lib/seam/connect/routes/access-codes.js.map +1 -1
  27. package/lib/seam/connect/routes/acs-access-groups.d.ts +3 -1
  28. package/lib/seam/connect/routes/acs-access-groups.js +15 -1
  29. package/lib/seam/connect/routes/acs-access-groups.js.map +1 -1
  30. package/lib/seam/connect/routes/acs-credentials.d.ts +3 -1
  31. package/lib/seam/connect/routes/acs-credentials.js +15 -1
  32. package/lib/seam/connect/routes/acs-credentials.js.map +1 -1
  33. package/lib/seam/connect/routes/acs-systems.d.ts +3 -1
  34. package/lib/seam/connect/routes/acs-systems.js +15 -1
  35. package/lib/seam/connect/routes/acs-systems.js.map +1 -1
  36. package/lib/seam/connect/routes/acs-users.d.ts +3 -1
  37. package/lib/seam/connect/routes/acs-users.js +15 -1
  38. package/lib/seam/connect/routes/acs-users.js.map +1 -1
  39. package/lib/seam/connect/routes/acs.d.ts +3 -1
  40. package/lib/seam/connect/routes/acs.js +15 -1
  41. package/lib/seam/connect/routes/acs.js.map +1 -1
  42. package/lib/seam/connect/routes/action-attempts.d.ts +3 -1
  43. package/lib/seam/connect/routes/action-attempts.js +15 -1
  44. package/lib/seam/connect/routes/action-attempts.js.map +1 -1
  45. package/lib/seam/connect/routes/client-sessions.d.ts +3 -1
  46. package/lib/seam/connect/routes/client-sessions.js +15 -1
  47. package/lib/seam/connect/routes/client-sessions.js.map +1 -1
  48. package/lib/seam/connect/routes/connect-webviews.d.ts +3 -1
  49. package/lib/seam/connect/routes/connect-webviews.js +15 -1
  50. package/lib/seam/connect/routes/connect-webviews.js.map +1 -1
  51. package/lib/seam/connect/routes/connected-accounts.d.ts +3 -1
  52. package/lib/seam/connect/routes/connected-accounts.js +15 -1
  53. package/lib/seam/connect/routes/connected-accounts.js.map +1 -1
  54. package/lib/seam/connect/routes/devices-unmanaged.d.ts +3 -1
  55. package/lib/seam/connect/routes/devices-unmanaged.js +15 -1
  56. package/lib/seam/connect/routes/devices-unmanaged.js.map +1 -1
  57. package/lib/seam/connect/routes/devices.d.ts +3 -1
  58. package/lib/seam/connect/routes/devices.js +15 -1
  59. package/lib/seam/connect/routes/devices.js.map +1 -1
  60. package/lib/seam/connect/routes/events.d.ts +3 -1
  61. package/lib/seam/connect/routes/events.js +15 -1
  62. package/lib/seam/connect/routes/events.js.map +1 -1
  63. package/lib/seam/connect/routes/locks.d.ts +3 -1
  64. package/lib/seam/connect/routes/locks.js +15 -1
  65. package/lib/seam/connect/routes/locks.js.map +1 -1
  66. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.d.ts +3 -1
  67. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js +15 -1
  68. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js.map +1 -1
  69. package/lib/seam/connect/routes/noise-sensors.d.ts +3 -1
  70. package/lib/seam/connect/routes/noise-sensors.js +15 -1
  71. package/lib/seam/connect/routes/noise-sensors.js.map +1 -1
  72. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.d.ts +3 -1
  73. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js +15 -1
  74. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js.map +1 -1
  75. package/lib/seam/connect/routes/thermostats.d.ts +3 -1
  76. package/lib/seam/connect/routes/thermostats.js +15 -1
  77. package/lib/seam/connect/routes/thermostats.js.map +1 -1
  78. package/lib/seam/connect/routes/webhooks.d.ts +3 -1
  79. package/lib/seam/connect/routes/webhooks.js +15 -1
  80. package/lib/seam/connect/routes/webhooks.js.map +1 -1
  81. package/lib/seam/connect/routes/workspaces.d.ts +3 -1
  82. package/lib/seam/connect/routes/workspaces.js +15 -1
  83. package/lib/seam/connect/routes/workspaces.js.map +1 -1
  84. package/lib/seam/connect/seam-http-error.d.ts +20 -0
  85. package/lib/seam/connect/seam-http-error.js +43 -0
  86. package/lib/seam/connect/seam-http-error.js.map +1 -0
  87. package/lib/seam/connect/seam-http.d.ts +3 -1
  88. package/lib/seam/connect/seam-http.js +15 -1
  89. package/lib/seam/connect/seam-http.js.map +1 -1
  90. package/lib/version.d.ts +1 -1
  91. package/lib/version.js +1 -1
  92. package/package.json +3 -2
  93. package/src/lib/seam/connect/api-error-type.ts +11 -0
  94. package/src/lib/seam/connect/auth.ts +95 -3
  95. package/src/lib/seam/connect/client.ts +8 -0
  96. package/src/lib/seam/connect/error-interceptor.ts +61 -0
  97. package/src/lib/seam/connect/index.ts +3 -1
  98. package/src/lib/seam/connect/options.ts +105 -1
  99. package/src/lib/seam/connect/routes/access-codes-unmanaged.ts +38 -0
  100. package/src/lib/seam/connect/routes/access-codes.ts +38 -0
  101. package/src/lib/seam/connect/routes/acs-access-groups.ts +38 -0
  102. package/src/lib/seam/connect/routes/acs-credentials.ts +38 -0
  103. package/src/lib/seam/connect/routes/acs-systems.ts +38 -0
  104. package/src/lib/seam/connect/routes/acs-users.ts +38 -0
  105. package/src/lib/seam/connect/routes/acs.ts +38 -0
  106. package/src/lib/seam/connect/routes/action-attempts.ts +38 -0
  107. package/src/lib/seam/connect/routes/client-sessions.ts +38 -0
  108. package/src/lib/seam/connect/routes/connect-webviews.ts +38 -0
  109. package/src/lib/seam/connect/routes/connected-accounts.ts +38 -0
  110. package/src/lib/seam/connect/routes/devices-unmanaged.ts +38 -0
  111. package/src/lib/seam/connect/routes/devices.ts +38 -0
  112. package/src/lib/seam/connect/routes/events.ts +38 -0
  113. package/src/lib/seam/connect/routes/locks.ts +38 -0
  114. package/src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts +38 -0
  115. package/src/lib/seam/connect/routes/noise-sensors.ts +38 -0
  116. package/src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts +38 -0
  117. package/src/lib/seam/connect/routes/thermostats.ts +38 -0
  118. package/src/lib/seam/connect/routes/webhooks.ts +38 -0
  119. package/src/lib/seam/connect/routes/workspaces.ts +38 -0
  120. package/src/lib/seam/connect/seam-http-error.ts +64 -0
  121. package/src/lib/seam/connect/seam-http.ts +38 -0
  122. 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 SeamHttpAcsUsers {
82
86
  return SeamHttpAcsUsers.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
+ ): SeamHttpAcsUsers {
97
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
98
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
99
+ throw new SeamHttpInvalidOptionsError(
100
+ 'Missing consoleSessionToken or workspaceId',
101
+ )
102
+ }
103
+ return new SeamHttpAcsUsers(constructorOptions)
104
+ }
105
+
106
+ static fromPersonalAccessToken(
107
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
108
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
109
+ options: Omit<
110
+ SeamHttpOptionsWithPersonalAccessToken,
111
+ 'personalAccessToken' | 'workspaceId'
112
+ > = {},
113
+ ): SeamHttpAcsUsers {
114
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
115
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
116
+ throw new SeamHttpInvalidOptionsError(
117
+ 'Missing personalAccessToken or workspaceId',
118
+ )
119
+ }
120
+ return new SeamHttpAcsUsers(constructorOptions)
121
+ }
122
+
85
123
  async addToAccessGroup(body?: AcsUsersAddToAccessGroupBody): Promise<void> {
86
124
  await this.client.request<AcsUsersAddToAccessGroupResponse>({
87
125
  url: '/acs/users/add_to_access_group',
@@ -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
 
@@ -83,6 +87,40 @@ export class SeamHttpAcs {
83
87
  return SeamHttpAcs.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
+ ): SeamHttpAcs {
98
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
99
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
100
+ throw new SeamHttpInvalidOptionsError(
101
+ 'Missing consoleSessionToken or workspaceId',
102
+ )
103
+ }
104
+ return new SeamHttpAcs(constructorOptions)
105
+ }
106
+
107
+ static fromPersonalAccessToken(
108
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
109
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
110
+ options: Omit<
111
+ SeamHttpOptionsWithPersonalAccessToken,
112
+ 'personalAccessToken' | 'workspaceId'
113
+ > = {},
114
+ ): SeamHttpAcs {
115
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
116
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
117
+ throw new SeamHttpInvalidOptionsError(
118
+ 'Missing personalAccessToken or workspaceId',
119
+ )
120
+ }
121
+ return new SeamHttpAcs(constructorOptions)
122
+ }
123
+
86
124
  get accessGroups(): SeamHttpAcsAccessGroups {
87
125
  return SeamHttpAcsAccessGroups.fromClient(this.client)
88
126
  }
@@ -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 SeamHttpActionAttempts {
82
86
  return SeamHttpActionAttempts.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
+ ): SeamHttpActionAttempts {
97
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
98
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
99
+ throw new SeamHttpInvalidOptionsError(
100
+ 'Missing consoleSessionToken or workspaceId',
101
+ )
102
+ }
103
+ return new SeamHttpActionAttempts(constructorOptions)
104
+ }
105
+
106
+ static fromPersonalAccessToken(
107
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
108
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
109
+ options: Omit<
110
+ SeamHttpOptionsWithPersonalAccessToken,
111
+ 'personalAccessToken' | 'workspaceId'
112
+ > = {},
113
+ ): SeamHttpActionAttempts {
114
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
115
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
116
+ throw new SeamHttpInvalidOptionsError(
117
+ 'Missing personalAccessToken or workspaceId',
118
+ )
119
+ }
120
+ return new SeamHttpActionAttempts(constructorOptions)
121
+ }
122
+
85
123
  async get(
86
124
  body?: ActionAttemptsGetParams,
87
125
  ): Promise<ActionAttemptsGetResponse['action_attempt']> {
@@ -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
 
@@ -80,6 +84,40 @@ export class SeamHttpClientSessions {
80
84
  return SeamHttpClientSessions.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
+ ): SeamHttpClientSessions {
95
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
96
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
97
+ throw new SeamHttpInvalidOptionsError(
98
+ 'Missing consoleSessionToken or workspaceId',
99
+ )
100
+ }
101
+ return new SeamHttpClientSessions(constructorOptions)
102
+ }
103
+
104
+ static fromPersonalAccessToken(
105
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
106
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
107
+ options: Omit<
108
+ SeamHttpOptionsWithPersonalAccessToken,
109
+ 'personalAccessToken' | 'workspaceId'
110
+ > = {},
111
+ ): SeamHttpClientSessions {
112
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
113
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
114
+ throw new SeamHttpInvalidOptionsError(
115
+ 'Missing personalAccessToken or workspaceId',
116
+ )
117
+ }
118
+ return new SeamHttpClientSessions(constructorOptions)
119
+ }
120
+
83
121
  async create(
84
122
  body?: ClientSessionsCreateBody,
85
123
  ): Promise<ClientSessionsCreateResponse['client_session']> {
@@ -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 SeamHttpConnectWebviews {
86
90
  return SeamHttpConnectWebviews.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
+ ): SeamHttpConnectWebviews {
101
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
102
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
103
+ throw new SeamHttpInvalidOptionsError(
104
+ 'Missing consoleSessionToken or workspaceId',
105
+ )
106
+ }
107
+ return new SeamHttpConnectWebviews(constructorOptions)
108
+ }
109
+
110
+ static fromPersonalAccessToken(
111
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
112
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
113
+ options: Omit<
114
+ SeamHttpOptionsWithPersonalAccessToken,
115
+ 'personalAccessToken' | 'workspaceId'
116
+ > = {},
117
+ ): SeamHttpConnectWebviews {
118
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
119
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
120
+ throw new SeamHttpInvalidOptionsError(
121
+ 'Missing personalAccessToken or workspaceId',
122
+ )
123
+ }
124
+ return new SeamHttpConnectWebviews(constructorOptions)
125
+ }
126
+
89
127
  async create(
90
128
  body?: ConnectWebviewsCreateBody,
91
129
  ): Promise<ConnectWebviewsCreateResponse['connect_webview']> {
@@ -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 SeamHttpConnectedAccounts {
86
90
  return SeamHttpConnectedAccounts.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
+ ): SeamHttpConnectedAccounts {
101
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
102
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
103
+ throw new SeamHttpInvalidOptionsError(
104
+ 'Missing consoleSessionToken or workspaceId',
105
+ )
106
+ }
107
+ return new SeamHttpConnectedAccounts(constructorOptions)
108
+ }
109
+
110
+ static fromPersonalAccessToken(
111
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
112
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
113
+ options: Omit<
114
+ SeamHttpOptionsWithPersonalAccessToken,
115
+ 'personalAccessToken' | 'workspaceId'
116
+ > = {},
117
+ ): SeamHttpConnectedAccounts {
118
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
119
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
120
+ throw new SeamHttpInvalidOptionsError(
121
+ 'Missing personalAccessToken or workspaceId',
122
+ )
123
+ }
124
+ return new SeamHttpConnectedAccounts(constructorOptions)
125
+ }
126
+
89
127
  async delete(body?: ConnectedAccountsDeleteBody): Promise<void> {
90
128
  await this.client.request<ConnectedAccountsDeleteResponse>({
91
129
  url: '/connected_accounts/delete',
@@ -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 SeamHttpDevicesUnmanaged {
82
86
  return SeamHttpDevicesUnmanaged.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
+ ): SeamHttpDevicesUnmanaged {
97
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
98
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
99
+ throw new SeamHttpInvalidOptionsError(
100
+ 'Missing consoleSessionToken or workspaceId',
101
+ )
102
+ }
103
+ return new SeamHttpDevicesUnmanaged(constructorOptions)
104
+ }
105
+
106
+ static fromPersonalAccessToken(
107
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
108
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
109
+ options: Omit<
110
+ SeamHttpOptionsWithPersonalAccessToken,
111
+ 'personalAccessToken' | 'workspaceId'
112
+ > = {},
113
+ ): SeamHttpDevicesUnmanaged {
114
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
115
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
116
+ throw new SeamHttpInvalidOptionsError(
117
+ 'Missing personalAccessToken or workspaceId',
118
+ )
119
+ }
120
+ return new SeamHttpDevicesUnmanaged(constructorOptions)
121
+ }
122
+
85
123
  async get(
86
124
  body?: DevicesUnmanagedGetParams,
87
125
  ): Promise<DevicesUnmanagedGetResponse['device']> {
@@ -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 SeamHttpDevices {
83
87
  return SeamHttpDevices.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
+ ): SeamHttpDevices {
98
+ const constructorOptions = { ...options, consoleSessionToken, workspaceId }
99
+ if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) {
100
+ throw new SeamHttpInvalidOptionsError(
101
+ 'Missing consoleSessionToken or workspaceId',
102
+ )
103
+ }
104
+ return new SeamHttpDevices(constructorOptions)
105
+ }
106
+
107
+ static fromPersonalAccessToken(
108
+ personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'],
109
+ workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'],
110
+ options: Omit<
111
+ SeamHttpOptionsWithPersonalAccessToken,
112
+ 'personalAccessToken' | 'workspaceId'
113
+ > = {},
114
+ ): SeamHttpDevices {
115
+ const constructorOptions = { ...options, personalAccessToken, workspaceId }
116
+ if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) {
117
+ throw new SeamHttpInvalidOptionsError(
118
+ 'Missing personalAccessToken or workspaceId',
119
+ )
120
+ }
121
+ return new SeamHttpDevices(constructorOptions)
122
+ }
123
+
86
124
  get unmanaged(): SeamHttpDevicesUnmanaged {
87
125
  return SeamHttpDevicesUnmanaged.fromClient(this.client)
88
126
  }
@@ -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',