@seamapi/http 2.14.0 → 2.16.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 (77) hide show
  1. package/lib/routes/access-codes/access-codes.js +3 -2
  2. package/lib/routes/access-codes/access-codes.js.map +1 -1
  3. package/lib/routes/access-codes/unmanaged/unmanaged.js +1 -0
  4. package/lib/routes/access-codes/unmanaged/unmanaged.js.map +1 -1
  5. package/lib/routes/access-grants/access-grants.js +5 -4
  6. package/lib/routes/access-grants/access-grants.js.map +1 -1
  7. package/lib/routes/access-grants/unmanaged/unmanaged.js +1 -0
  8. package/lib/routes/access-grants/unmanaged/unmanaged.js.map +1 -1
  9. package/lib/routes/access-methods/access-methods.js +3 -2
  10. package/lib/routes/access-methods/access-methods.js.map +1 -1
  11. package/lib/routes/acs/credentials/credentials.js +1 -0
  12. package/lib/routes/acs/credentials/credentials.js.map +1 -1
  13. package/lib/routes/acs/encoders/encoders.js +3 -2
  14. package/lib/routes/acs/encoders/encoders.js.map +1 -1
  15. package/lib/routes/acs/entrances/entrances.js +5 -4
  16. package/lib/routes/acs/entrances/entrances.js.map +1 -1
  17. package/lib/routes/acs/users/users.js +1 -0
  18. package/lib/routes/acs/users/users.js.map +1 -1
  19. package/lib/routes/action-attempts/action-attempts.js +3 -2
  20. package/lib/routes/action-attempts/action-attempts.js.map +1 -1
  21. package/lib/routes/connect-webviews/connect-webviews.js +3 -2
  22. package/lib/routes/connect-webviews/connect-webviews.js.map +1 -1
  23. package/lib/routes/connected-accounts/connected-accounts.js +3 -2
  24. package/lib/routes/connected-accounts/connected-accounts.js.map +1 -1
  25. package/lib/routes/customers/customers.js +2 -2
  26. package/lib/routes/customers/customers.js.map +1 -1
  27. package/lib/routes/devices/devices.js +3 -2
  28. package/lib/routes/devices/devices.js.map +1 -1
  29. package/lib/routes/devices/unmanaged/unmanaged.js +3 -2
  30. package/lib/routes/devices/unmanaged/unmanaged.js.map +1 -1
  31. package/lib/routes/events/events.js +2 -2
  32. package/lib/routes/events/events.js.map +1 -1
  33. package/lib/routes/locks/locks.js +2 -2
  34. package/lib/routes/locks/locks.js.map +1 -1
  35. package/lib/routes/noise-sensors/noise-sensors.js +2 -2
  36. package/lib/routes/noise-sensors/noise-sensors.js.map +1 -1
  37. package/lib/routes/spaces/spaces.js +7 -6
  38. package/lib/routes/spaces/spaces.js.map +1 -1
  39. package/lib/routes/thermostats/thermostats.js +2 -2
  40. package/lib/routes/thermostats/thermostats.js.map +1 -1
  41. package/lib/routes/user-identities/unmanaged/unmanaged.js +1 -0
  42. package/lib/routes/user-identities/unmanaged/unmanaged.js.map +1 -1
  43. package/lib/routes/user-identities/user-identities.js +3 -2
  44. package/lib/routes/user-identities/user-identities.js.map +1 -1
  45. package/lib/seam-http-request.d.ts +2 -0
  46. package/lib/seam-http-request.js +6 -1
  47. package/lib/seam-http-request.js.map +1 -1
  48. package/lib/seam-paginator.js +1 -1
  49. package/lib/seam-paginator.js.map +1 -1
  50. package/lib/version.d.ts +1 -1
  51. package/lib/version.js +1 -1
  52. package/package.json +2 -2
  53. package/src/lib/routes/access-codes/access-codes.ts +3 -2
  54. package/src/lib/routes/access-codes/unmanaged/unmanaged.ts +1 -0
  55. package/src/lib/routes/access-grants/access-grants.ts +5 -4
  56. package/src/lib/routes/access-grants/unmanaged/unmanaged.ts +1 -0
  57. package/src/lib/routes/access-methods/access-methods.ts +3 -2
  58. package/src/lib/routes/acs/credentials/credentials.ts +1 -0
  59. package/src/lib/routes/acs/encoders/encoders.ts +3 -2
  60. package/src/lib/routes/acs/entrances/entrances.ts +5 -4
  61. package/src/lib/routes/acs/users/users.ts +1 -0
  62. package/src/lib/routes/action-attempts/action-attempts.ts +3 -2
  63. package/src/lib/routes/connect-webviews/connect-webviews.ts +3 -2
  64. package/src/lib/routes/connected-accounts/connected-accounts.ts +3 -2
  65. package/src/lib/routes/customers/customers.ts +2 -2
  66. package/src/lib/routes/devices/devices.ts +3 -2
  67. package/src/lib/routes/devices/unmanaged/unmanaged.ts +3 -2
  68. package/src/lib/routes/events/events.ts +2 -2
  69. package/src/lib/routes/locks/locks.ts +2 -2
  70. package/src/lib/routes/noise-sensors/noise-sensors.ts +2 -2
  71. package/src/lib/routes/spaces/spaces.ts +7 -6
  72. package/src/lib/routes/thermostats/thermostats.ts +2 -2
  73. package/src/lib/routes/user-identities/unmanaged/unmanaged.ts +1 -0
  74. package/src/lib/routes/user-identities/user-identities.ts +3 -2
  75. package/src/lib/seam-http-request.ts +8 -1
  76. package/src/lib/seam-paginator.ts +1 -1
  77. package/src/lib/version.ts +1 -1
@@ -217,12 +217,13 @@ export class SeamHttpAcsEncoders {
217
217
  ): AcsEncodersListRequest {
218
218
  return new SeamHttpRequest(this, {
219
219
  pathname: '/acs/encoders/list',
220
- method: 'POST',
221
- body: parameters,
220
+ method: 'GET',
221
+ params: parameters,
222
222
  parameters,
223
223
  hasRequiredParameters: false,
224
224
  requiredParameterNames: [],
225
225
  responseKey: 'acs_encoders',
226
+ hasPagination: true,
226
227
  options,
227
228
  })
228
229
  }
@@ -208,12 +208,13 @@ export class SeamHttpAcsEntrances {
208
208
  ): AcsEntrancesListRequest {
209
209
  return new SeamHttpRequest(this, {
210
210
  pathname: '/acs/entrances/list',
211
- method: 'POST',
212
- body: parameters,
211
+ method: 'GET',
212
+ params: parameters,
213
213
  parameters,
214
214
  hasRequiredParameters: false,
215
215
  requiredParameterNames: [],
216
216
  responseKey: 'acs_entrances',
217
+ hasPagination: true,
217
218
  options,
218
219
  })
219
220
  }
@@ -227,8 +228,8 @@ export class SeamHttpAcsEntrances {
227
228
  ): AcsEntrancesListCredentialsWithAccessRequest {
228
229
  return new SeamHttpRequest(this, {
229
230
  pathname: '/acs/entrances/list_credentials_with_access',
230
- method: 'POST',
231
- body: parameters,
231
+ method: 'GET',
232
+ params: parameters,
232
233
  parameters,
233
234
  hasRequiredParameters: true,
234
235
  requiredParameterNames: ['acs_entrance_id'],
@@ -251,6 +251,7 @@ export class SeamHttpAcsUsers {
251
251
  hasRequiredParameters: false,
252
252
  requiredParameterNames: [],
253
253
  responseKey: 'acs_users',
254
+ hasPagination: true,
254
255
  options,
255
256
  })
256
257
  }
@@ -190,12 +190,13 @@ export class SeamHttpActionAttempts {
190
190
  ): ActionAttemptsListRequest {
191
191
  return new SeamHttpRequest(this, {
192
192
  pathname: '/action_attempts/list',
193
- method: 'POST',
194
- body: parameters,
193
+ method: 'GET',
194
+ params: parameters,
195
195
  parameters,
196
196
  hasRequiredParameters: false,
197
197
  requiredParameterNames: [],
198
198
  responseKey: 'action_attempts',
199
+ hasPagination: true,
199
200
  options,
200
201
  })
201
202
  }
@@ -234,12 +234,13 @@ export class SeamHttpConnectWebviews {
234
234
  ): ConnectWebviewsListRequest {
235
235
  return new SeamHttpRequest(this, {
236
236
  pathname: '/connect_webviews/list',
237
- method: 'POST',
238
- body: parameters,
237
+ method: 'GET',
238
+ params: parameters,
239
239
  parameters,
240
240
  hasRequiredParameters: false,
241
241
  requiredParameterNames: [],
242
242
  responseKey: 'connect_webviews',
243
+ hasPagination: true,
243
244
  options,
244
245
  })
245
246
  }
@@ -219,12 +219,13 @@ export class SeamHttpConnectedAccounts {
219
219
  ): ConnectedAccountsListRequest {
220
220
  return new SeamHttpRequest(this, {
221
221
  pathname: '/connected_accounts/list',
222
- method: 'POST',
223
- body: parameters,
222
+ method: 'GET',
223
+ params: parameters,
224
224
  parameters,
225
225
  hasRequiredParameters: false,
226
226
  requiredParameterNames: [],
227
227
  responseKey: 'connected_accounts',
228
+ hasPagination: true,
228
229
  options,
229
230
  })
230
231
  }
@@ -187,8 +187,8 @@ export class SeamHttpCustomers {
187
187
  ): CustomersDeleteDataRequest {
188
188
  return new SeamHttpRequest(this, {
189
189
  pathname: '/customers/delete_data',
190
- method: 'POST',
191
- body: parameters,
190
+ method: 'DELETE',
191
+ params: parameters,
192
192
  parameters,
193
193
  hasRequiredParameters: false,
194
194
  requiredParameterNames: [],
@@ -201,12 +201,13 @@ export class SeamHttpDevices {
201
201
  ): DevicesListRequest {
202
202
  return new SeamHttpRequest(this, {
203
203
  pathname: '/devices/list',
204
- method: 'POST',
205
- body: parameters,
204
+ method: 'GET',
205
+ params: parameters,
206
206
  parameters,
207
207
  hasRequiredParameters: false,
208
208
  requiredParameterNames: [],
209
209
  responseKey: 'devices',
210
+ hasPagination: true,
210
211
  options,
211
212
  })
212
213
  }
@@ -193,12 +193,13 @@ export class SeamHttpDevicesUnmanaged {
193
193
  ): DevicesUnmanagedListRequest {
194
194
  return new SeamHttpRequest(this, {
195
195
  pathname: '/devices/unmanaged/list',
196
- method: 'POST',
197
- body: parameters,
196
+ method: 'GET',
197
+ params: parameters,
198
198
  parameters,
199
199
  hasRequiredParameters: false,
200
200
  requiredParameterNames: [],
201
201
  responseKey: 'devices',
202
+ hasPagination: true,
202
203
  options,
203
204
  })
204
205
  }
@@ -187,8 +187,8 @@ export class SeamHttpEvents {
187
187
  ): EventsListRequest {
188
188
  return new SeamHttpRequest(this, {
189
189
  pathname: '/events/list',
190
- method: 'POST',
191
- body: parameters,
190
+ method: 'GET',
191
+ params: parameters,
192
192
  parameters,
193
193
  hasRequiredParameters: true,
194
194
  requiredParameterNames: [],
@@ -219,8 +219,8 @@ export class SeamHttpLocks {
219
219
  ): LocksListRequest {
220
220
  return new SeamHttpRequest(this, {
221
221
  pathname: '/locks/list',
222
- method: 'POST',
223
- body: parameters,
222
+ method: 'GET',
223
+ params: parameters,
224
224
  parameters,
225
225
  hasRequiredParameters: false,
226
226
  requiredParameterNames: [],
@@ -181,8 +181,8 @@ export class SeamHttpNoiseSensors {
181
181
  ): NoiseSensorsListRequest {
182
182
  return new SeamHttpRequest(this, {
183
183
  pathname: '/noise_sensors/list',
184
- method: 'POST',
185
- body: parameters,
184
+ method: 'GET',
185
+ params: parameters,
186
186
  parameters,
187
187
  hasRequiredParameters: false,
188
188
  requiredParameterNames: [],
@@ -283,8 +283,8 @@ export class SeamHttpSpaces {
283
283
  ): SpacesGetRelatedRequest {
284
284
  return new SeamHttpRequest(this, {
285
285
  pathname: '/spaces/get_related',
286
- method: 'POST',
287
- body: parameters,
286
+ method: 'GET',
287
+ params: parameters,
288
288
  parameters,
289
289
  hasRequiredParameters: true,
290
290
  requiredParameterNames: [],
@@ -308,6 +308,7 @@ export class SeamHttpSpaces {
308
308
  hasRequiredParameters: false,
309
309
  requiredParameterNames: [],
310
310
  responseKey: 'spaces',
311
+ hasPagination: true,
311
312
  options,
312
313
  })
313
314
  }
@@ -321,8 +322,8 @@ export class SeamHttpSpaces {
321
322
  ): SpacesRemoveAcsEntrancesRequest {
322
323
  return new SeamHttpRequest(this, {
323
324
  pathname: '/spaces/remove_acs_entrances',
324
- method: 'POST',
325
- body: parameters,
325
+ method: 'DELETE',
326
+ params: parameters,
326
327
  parameters,
327
328
  hasRequiredParameters: true,
328
329
  requiredParameterNames: ['acs_entrance_ids', 'space_id'],
@@ -359,8 +360,8 @@ export class SeamHttpSpaces {
359
360
  ): SpacesRemoveDevicesRequest {
360
361
  return new SeamHttpRequest(this, {
361
362
  pathname: '/spaces/remove_devices',
362
- method: 'POST',
363
- body: parameters,
363
+ method: 'DELETE',
364
+ params: parameters,
364
365
  parameters,
365
366
  hasRequiredParameters: true,
366
367
  requiredParameterNames: ['device_ids', 'space_id'],
@@ -318,8 +318,8 @@ export class SeamHttpThermostats {
318
318
  ): ThermostatsListRequest {
319
319
  return new SeamHttpRequest(this, {
320
320
  pathname: '/thermostats/list',
321
- method: 'POST',
322
- body: parameters,
321
+ method: 'GET',
322
+ params: parameters,
323
323
  parameters,
324
324
  hasRequiredParameters: false,
325
325
  requiredParameterNames: [],
@@ -195,6 +195,7 @@ export class SeamHttpUserIdentitiesUnmanaged {
195
195
  hasRequiredParameters: false,
196
196
  requiredParameterNames: [],
197
197
  responseKey: 'user_identities',
198
+ hasPagination: true,
198
199
  options,
199
200
  })
200
201
  }
@@ -300,12 +300,13 @@ export class SeamHttpUserIdentities {
300
300
  ): UserIdentitiesListRequest {
301
301
  return new SeamHttpRequest(this, {
302
302
  pathname: '/user_identities/list',
303
- method: 'POST',
304
- body: parameters,
303
+ method: 'GET',
304
+ params: parameters,
305
305
  parameters,
306
306
  hasRequiredParameters: false,
307
307
  requiredParameterNames: [],
308
308
  responseKey: 'user_identities',
309
+ hasPagination: true,
309
310
  options,
310
311
  })
311
312
  }
@@ -21,6 +21,7 @@ interface SeamHttpRequestConfig<TResponseKey> {
21
21
  readonly body?: unknown
22
22
  readonly params?: undefined | Record<string, unknown>
23
23
  readonly responseKey: TResponseKey
24
+ readonly hasPagination?: boolean
24
25
  readonly options?: Pick<SeamHttpRequestOptions, 'waitForActionAttempt'>
25
26
  readonly actionAttempts?: ActionAttemptsClient
26
27
  readonly parameters?: unknown
@@ -51,6 +52,10 @@ export class SeamHttpRequest<
51
52
  return this.#config.responseKey
52
53
  }
53
54
 
55
+ public get hasPagination(): boolean {
56
+ return this.#config.hasPagination ?? false
57
+ }
58
+
54
59
  public get url(): URL {
55
60
  const { client } = this.#parent
56
61
 
@@ -194,7 +199,9 @@ const getUrlPrefix = (input: string): string => {
194
199
  }
195
200
  if (globalThis.location != null) {
196
201
  const pathname = input.startsWith('/') ? input : `/${input}`
197
- return new URL(`${globalThis.location.origin}${pathname}`).toString()
202
+ return new URL(`${globalThis.location.origin}${pathname}`)
203
+ .toString()
204
+ .replace(/\/$/, '')
198
205
  }
199
206
  throw new Error(
200
207
  `Cannot resolve origin from ${input} in a non-browser environment`,
@@ -28,7 +28,7 @@ export class SeamPaginator<
28
28
  parent: SeamPaginatorParent,
29
29
  request: SeamHttpRequest<TResponse, TResponseKey>,
30
30
  ) {
31
- if (request.responseKey == null) {
31
+ if (!request.hasPagination) {
32
32
  throw new Error(
33
33
  `The ${request.pathname} endpoint does not support pagination`,
34
34
  )
@@ -1,3 +1,3 @@
1
- const seamapiJavascriptHttpVersion = '2.14.0'
1
+ const seamapiJavascriptHttpVersion = '2.16.0'
2
2
 
3
3
  export default seamapiJavascriptHttpVersion