@seamapi/types 1.1085.0 → 1.1087.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 (31) hide show
  1. package/lib/seam/connect/model-types.d.ts +1 -1
  2. package/lib/seam/connect/models/events/devices.d.ts +12 -6
  3. package/lib/seam/connect/models/events/devices.js +7 -3
  4. package/lib/seam/connect/models/events/devices.js.map +1 -1
  5. package/lib/seam/connect/models/events/seam-event.d.ts +6 -3
  6. package/lib/seam/connect/models/index.d.ts +1 -0
  7. package/lib/seam/connect/models/index.js +1 -0
  8. package/lib/seam/connect/models/index.js.map +1 -1
  9. package/lib/seam/connect/models/instant-keys/instant-key-preview.d.ts +6 -6
  10. package/lib/seam/connect/models/media/index.d.ts +1 -0
  11. package/lib/seam/connect/models/media/index.js +2 -0
  12. package/lib/seam/connect/models/media/index.js.map +1 -0
  13. package/lib/seam/connect/models/media/media.d.ts +36 -0
  14. package/lib/seam/connect/models/media/media.js +44 -0
  15. package/lib/seam/connect/models/media/media.js.map +1 -0
  16. package/lib/seam/connect/openapi.js +186 -4
  17. package/lib/seam/connect/openapi.js.map +1 -1
  18. package/lib/seam/connect/route-types.d.ts +67 -10
  19. package/lib/seam/connect/schemas.d.ts +1 -1
  20. package/lib/seam/connect/schemas.js +1 -1
  21. package/lib/seam/connect/schemas.js.map +1 -1
  22. package/package.json +1 -1
  23. package/src/lib/seam/connect/internal/schemas.ts +1 -0
  24. package/src/lib/seam/connect/model-types.ts +1 -0
  25. package/src/lib/seam/connect/models/events/devices.ts +9 -3
  26. package/src/lib/seam/connect/models/index.ts +1 -0
  27. package/src/lib/seam/connect/models/media/index.ts +1 -0
  28. package/src/lib/seam/connect/models/media/media.ts +55 -0
  29. package/src/lib/seam/connect/openapi.ts +194 -4
  30. package/src/lib/seam/connect/route-types.ts +71 -17
  31. package/src/lib/seam/connect/schemas.ts +1 -0
@@ -51999,8 +51999,8 @@ export type Routes = {
51999
51999
  image_url?: string | undefined;
52000
52000
  /** URL to a short video clip captured at the time of activation. */
52001
52001
  video_url?: string | undefined;
52002
- /** Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed. */
52003
- media_status?: ('pending' | 'available' | 'unavailable' | 'failed') | undefined;
52002
+ /** IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one. */
52003
+ media_ids?: string[] | undefined;
52004
52004
  } | {
52005
52005
  /** ID of the event. */
52006
52006
  event_id: string;
@@ -52031,6 +52031,8 @@ export type Routes = {
52031
52031
  image_url?: string | undefined;
52032
52032
  /** URL to a short video clip captured at the time the doorbell was pressed. */
52033
52033
  video_url?: string | undefined;
52034
+ /** IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one. */
52035
+ media_ids?: string[] | undefined;
52034
52036
  } | {
52035
52037
  /** ID of the event. */
52036
52038
  event_id: string;
@@ -55632,8 +55634,8 @@ export type Routes = {
55632
55634
  image_url?: string | undefined;
55633
55635
  /** URL to a short video clip captured at the time of activation. */
55634
55636
  video_url?: string | undefined;
55635
- /** Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed. */
55636
- media_status?: ('pending' | 'available' | 'unavailable' | 'failed') | undefined;
55637
+ /** IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one. */
55638
+ media_ids?: string[] | undefined;
55637
55639
  } | {
55638
55640
  /** ID of the event. */
55639
55641
  event_id: string;
@@ -55664,6 +55666,8 @@ export type Routes = {
55664
55666
  image_url?: string | undefined;
55665
55667
  /** URL to a short video clip captured at the time the doorbell was pressed. */
55666
55668
  video_url?: string | undefined;
55669
+ /** IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one. */
55670
+ media_ids?: string[] | undefined;
55667
55671
  } | {
55668
55672
  /** ID of the event. */
55669
55673
  event_id: string;
@@ -71276,6 +71280,45 @@ export type Routes = {
71276
71280
  };
71277
71281
  maxDuration: undefined;
71278
71282
  };
71283
+ '/media/get': {
71284
+ route: '/media/get';
71285
+ method: 'GET' | 'POST';
71286
+ queryParams: {};
71287
+ jsonBody: {};
71288
+ commonParams: {
71289
+ /** ID of the media that you want to get. */
71290
+ media_id: string;
71291
+ /** Response format. `json` returns the media object. `redirect` responds with a `302` redirect to the media's download URL, so you can use this endpoint directly as the source of an image or video. */
71292
+ format?: 'json' | 'redirect';
71293
+ };
71294
+ formData: {};
71295
+ jsonResponse: {
71296
+ /** Represents a piece of media, such as a video clip or a thumbnail image, that a device captured for an event. Media is in beta. */
71297
+ media: {
71298
+ /** ID of the media. */
71299
+ media_id: string;
71300
+ /** ID of the workspace that contains the media. */
71301
+ workspace_id: string;
71302
+ /** ID of the device that captured the media. */
71303
+ device_id: string | null;
71304
+ /** ID of the event that the media belongs to. */
71305
+ event_id: string | null;
71306
+ /** Type of the media: a video clip or a still image. */
71307
+ media_type: 'video' | 'image';
71308
+ /** MIME type of the media, such as `video/mp4` or `image/jpeg`. */
71309
+ content_type: string | null;
71310
+ /** Status of the media. `pending` means that Seam is still retrieving the media. `available` means that `url` can be used to download it. `unavailable` means that no media exists for the event, and `failed` means that Seam could not retrieve it. */
71311
+ status: 'pending' | 'available' | 'unavailable' | 'failed';
71312
+ /** Short-lived URL from which you can download the media. Null unless `status` is `available`. The URL expires after about five minutes. Call `/media/get` again for a new URL. */
71313
+ url: string | null;
71314
+ /** Date and time at which the media stops being available. Null when Seam does not know when the media expires. */
71315
+ expires_at: string | null;
71316
+ /** Date and time at which the media was created. */
71317
+ created_at: string;
71318
+ };
71319
+ };
71320
+ maxDuration: undefined;
71321
+ };
71279
71322
  '/noise_sensors/list': {
71280
71323
  route: '/noise_sensors/list';
71281
71324
  method: 'GET' | 'POST';
@@ -83805,6 +83848,8 @@ export type Routes = {
83805
83848
  instant_key_max_use_count?: number | undefined;
83806
83849
  prefer_guest_phone_last4_as_code?: boolean | undefined;
83807
83850
  allow_shared_email_and_phone_across_user_identities?: boolean | undefined;
83851
+ access_starts_minutes_before_reservation?: number | undefined;
83852
+ access_ends_minutes_after_reservation?: number | undefined;
83808
83853
  };
83809
83854
  } | undefined;
83810
83855
  reservation_time_updated?: {
@@ -83888,6 +83933,8 @@ export type Routes = {
83888
83933
  instant_key_max_use_count?: number | undefined;
83889
83934
  prefer_guest_phone_last4_as_code?: boolean | undefined;
83890
83935
  allow_shared_email_and_phone_across_user_identities?: boolean | undefined;
83936
+ access_starts_minutes_before_reservation?: number | undefined;
83937
+ access_ends_minutes_after_reservation?: number | undefined;
83891
83938
  };
83892
83939
  } | null) | undefined;
83893
83940
  reservation_time_updated?: ({
@@ -84298,6 +84345,8 @@ export type Routes = {
84298
84345
  instant_key_max_use_count?: number | undefined;
84299
84346
  prefer_guest_phone_last4_as_code?: boolean | undefined;
84300
84347
  allow_shared_email_and_phone_across_user_identities?: boolean | undefined;
84348
+ access_starts_minutes_before_reservation?: number | undefined;
84349
+ access_ends_minutes_after_reservation?: number | undefined;
84301
84350
  };
84302
84351
  } | undefined;
84303
84352
  reservation_time_updated?: {
@@ -84380,6 +84429,8 @@ export type Routes = {
84380
84429
  instant_key_max_use_count?: number | undefined;
84381
84430
  prefer_guest_phone_last4_as_code?: boolean | undefined;
84382
84431
  allow_shared_email_and_phone_across_user_identities?: boolean | undefined;
84432
+ access_starts_minutes_before_reservation?: number | undefined;
84433
+ access_ends_minutes_after_reservation?: number | undefined;
84383
84434
  };
84384
84435
  } | null) | undefined;
84385
84436
  reservation_time_updated?: ({
@@ -88008,8 +88059,8 @@ export type Routes = {
88008
88059
  image_url?: string | undefined;
88009
88060
  /** URL to a short video clip captured at the time of activation. */
88010
88061
  video_url?: string | undefined;
88011
- /** Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed. */
88012
- media_status?: ('pending' | 'available' | 'unavailable' | 'failed') | undefined;
88062
+ /** IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one. */
88063
+ media_ids?: string[] | undefined;
88013
88064
  } | {
88014
88065
  /** ID of the event. */
88015
88066
  event_id: string;
@@ -88040,6 +88091,8 @@ export type Routes = {
88040
88091
  image_url?: string | undefined;
88041
88092
  /** URL to a short video clip captured at the time the doorbell was pressed. */
88042
88093
  video_url?: string | undefined;
88094
+ /** IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one. */
88095
+ media_ids?: string[] | undefined;
88043
88096
  } | {
88044
88097
  /** ID of the event. */
88045
88098
  event_id: string;
@@ -93661,8 +93714,8 @@ export type Routes = {
93661
93714
  image_url?: string | undefined;
93662
93715
  /** URL to a short video clip captured at the time of activation. */
93663
93716
  video_url?: string | undefined;
93664
- /** Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed. */
93665
- media_status?: ('pending' | 'available' | 'unavailable' | 'failed') | undefined;
93717
+ /** IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one. */
93718
+ media_ids?: string[] | undefined;
93666
93719
  } | {
93667
93720
  /** ID of the event. */
93668
93721
  event_id: string;
@@ -93693,6 +93746,8 @@ export type Routes = {
93693
93746
  image_url?: string | undefined;
93694
93747
  /** URL to a short video clip captured at the time the doorbell was pressed. */
93695
93748
  video_url?: string | undefined;
93749
+ /** IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one. */
93750
+ media_ids?: string[] | undefined;
93696
93751
  } | {
93697
93752
  /** ID of the event. */
93698
93753
  event_id: string;
@@ -134320,8 +134375,8 @@ export type Routes = {
134320
134375
  image_url?: string | undefined;
134321
134376
  /** URL to a short video clip captured at the time of activation. */
134322
134377
  video_url?: string | undefined;
134323
- /** Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed. */
134324
- media_status?: ('pending' | 'available' | 'unavailable' | 'failed') | undefined;
134378
+ /** IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one. */
134379
+ media_ids?: string[] | undefined;
134325
134380
  } | {
134326
134381
  /** ID of the event. */
134327
134382
  event_id: string;
@@ -134352,6 +134407,8 @@ export type Routes = {
134352
134407
  image_url?: string | undefined;
134353
134408
  /** URL to a short video clip captured at the time the doorbell was pressed. */
134354
134409
  video_url?: string | undefined;
134410
+ /** IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one. */
134411
+ media_ids?: string[] | undefined;
134355
134412
  } | {
134356
134413
  /** ID of the event. */
134357
134414
  event_id: string;
@@ -1 +1 @@
1
- export { access_code, acs_access_group, acs_credential, acs_encoder, acs_entrance, acs_system, acs_user, action_attempt, batch, bridge, bridge_client_session, camera_live_view_answer, camera_live_view_session, client_session, common_failed_action_attempt, common_pending_action_attempt, common_succeeded_action_attempt, connect_webview, connected_account, custom_metadata, customer_portal, customization_profile, device, device_provider, instant_key, magic_link, noise_threshold, pagination, seam_event, staff_member_resource, thermostat_daily_program, thermostat_schedule, thermostat_weekly_program, unmanaged_access_code, unmanaged_acs_access_group, unmanaged_acs_credential, unmanaged_acs_user, unmanaged_device, user_identity, webhook, workspace, } from './models/index.js';
1
+ export { access_code, acs_access_group, acs_credential, acs_encoder, acs_entrance, acs_system, acs_user, action_attempt, batch, bridge, bridge_client_session, camera_live_view_answer, camera_live_view_session, client_session, common_failed_action_attempt, common_pending_action_attempt, common_succeeded_action_attempt, connect_webview, connected_account, custom_metadata, customer_portal, customization_profile, device, device_provider, instant_key, magic_link, media, noise_threshold, pagination, seam_event, staff_member_resource, thermostat_daily_program, thermostat_schedule, thermostat_weekly_program, unmanaged_access_code, unmanaged_acs_access_group, unmanaged_acs_credential, unmanaged_acs_user, unmanaged_device, user_identity, webhook, workspace, } from './models/index.js';
@@ -1,2 +1,2 @@
1
- export { access_code, acs_access_group, acs_credential, acs_encoder, acs_entrance, acs_system, acs_user, action_attempt, batch, bridge, bridge_client_session, camera_live_view_answer, camera_live_view_session, client_session, common_failed_action_attempt, common_pending_action_attempt, common_succeeded_action_attempt, connect_webview, connected_account, custom_metadata, customer_portal, customization_profile, device, device_provider, instant_key, magic_link, noise_threshold, pagination, seam_event, staff_member_resource, thermostat_daily_program, thermostat_schedule, thermostat_weekly_program, unmanaged_access_code, unmanaged_acs_access_group, unmanaged_acs_credential, unmanaged_acs_user, unmanaged_device, user_identity, webhook, workspace, } from './models/index.js';
1
+ export { access_code, acs_access_group, acs_credential, acs_encoder, acs_entrance, acs_system, acs_user, action_attempt, batch, bridge, bridge_client_session, camera_live_view_answer, camera_live_view_session, client_session, common_failed_action_attempt, common_pending_action_attempt, common_succeeded_action_attempt, connect_webview, connected_account, custom_metadata, customer_portal, customization_profile, device, device_provider, instant_key, magic_link, media, noise_threshold, pagination, seam_event, staff_member_resource, thermostat_daily_program, thermostat_schedule, thermostat_weekly_program, unmanaged_access_code, unmanaged_acs_access_group, unmanaged_acs_credential, unmanaged_acs_user, unmanaged_device, user_identity, webhook, workspace, } from './models/index.js';
2
2
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,MAAM,EACN,eAAe,EACf,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,SAAS,GACV,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/lib/seam/connect/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,4BAA4B,EAC5B,6BAA6B,EAC7B,+BAA+B,EAC/B,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,MAAM,EACN,eAAe,EACf,WAAW,EACX,UAAU,EACV,KAAK,EACL,eAAe,EACf,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,SAAS,GACV,MAAM,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/types",
3
- "version": "1.1085.0",
3
+ "version": "1.1087.0",
4
4
  "description": "TypeScript types for the Seam API.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -63,6 +63,7 @@ export {
63
63
  magic_link,
64
64
  access_code as managed_access_code,
65
65
  device as managed_device,
66
+ media,
66
67
  message_overrides,
67
68
  neutral_resource,
68
69
  noise_sensor_device_type,
@@ -29,6 +29,7 @@ export type {
29
29
  DeviceWarning,
30
30
  InstantKey,
31
31
  MagicLink,
32
+ Media,
32
33
  NoiseThreshold,
33
34
  Pagination,
34
35
  SeamEvent,
@@ -852,11 +852,11 @@ export const camera_activated_event = device_event.extend({
852
852
  .url()
853
853
  .optional()
854
854
  .describe('URL to a short video clip captured at the time of activation.'),
855
- media_status: z
856
- .enum(['pending', 'available', 'unavailable', 'failed'])
855
+ media_ids: z
856
+ .array(z.string().uuid())
857
857
  .optional()
858
858
  .describe(
859
- 'Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed.',
859
+ 'IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one.',
860
860
  ),
861
861
  }).describe(`
862
862
  ---
@@ -883,6 +883,12 @@ export const device_doorbell_rang_event = device_event.extend({
883
883
  .describe(
884
884
  'URL to a short video clip captured at the time the doorbell was pressed.',
885
885
  ),
886
+ media_ids: z
887
+ .array(z.string().uuid())
888
+ .optional()
889
+ .describe(
890
+ 'IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one.',
891
+ ),
886
892
  }).describe(`
887
893
  ---
888
894
  route_path: /devices
@@ -20,6 +20,7 @@ export * from './datetime.js'
20
20
  export * from './devices/index.js'
21
21
  export * from './events/index.js'
22
22
  export * from './instant-keys/index.js'
23
+ export * from './media/index.js'
23
24
  export * from './noise-sensors/index.js'
24
25
  export * from './pagination.js'
25
26
  export * from './partner/index.js'
@@ -0,0 +1 @@
1
+ export * from './media.js'
@@ -0,0 +1,55 @@
1
+ import * as z from 'zod/v3'
2
+
3
+ import { datetime } from '../datetime.js'
4
+
5
+ export const media = z.object({
6
+ media_id: z.string().uuid().describe('ID of the media.'),
7
+ workspace_id: z
8
+ .string()
9
+ .uuid()
10
+ .describe('ID of the workspace that contains the media.'),
11
+ device_id: z
12
+ .string()
13
+ .uuid()
14
+ .nullable()
15
+ .describe('ID of the device that captured the media.'),
16
+ event_id: z
17
+ .string()
18
+ .uuid()
19
+ .nullable()
20
+ .describe('ID of the event that the media belongs to.'),
21
+ media_type: z
22
+ .enum(['video', 'image'])
23
+ .describe('Type of the media: a video clip or a still image.'),
24
+ content_type: z
25
+ .string()
26
+ .nullable()
27
+ .describe('MIME type of the media, such as `video/mp4` or `image/jpeg`.'),
28
+ status: z
29
+ .enum(['pending', 'available', 'unavailable', 'failed'])
30
+ .describe(
31
+ 'Status of the media. `pending` means that Seam is still retrieving the media. `available` means that `url` can be used to download it. `unavailable` means that no media exists for the event, and `failed` means that Seam could not retrieve it.',
32
+ ),
33
+ url: z
34
+ .string()
35
+ .url()
36
+ .nullable()
37
+ .describe(
38
+ 'Short-lived URL from which you can download the media. Null unless `status` is `available`. The URL expires after about five minutes. Call `/media/get` again for a new URL.',
39
+ ),
40
+ expires_at: datetime
41
+ .nullable()
42
+ .describe(
43
+ 'Date and time at which the media stops being available. Null when Seam does not know when the media expires.',
44
+ ),
45
+ created_at: datetime.describe(
46
+ 'Date and time at which the media was created.',
47
+ ),
48
+ }).describe(`
49
+ ---
50
+ route_path: /media
51
+ ---
52
+ Represents a piece of media, such as a video clip or a thumbnail image, that a device captured for an event. Media is in beta.
53
+ `)
54
+
55
+ export type Media = z.infer<typeof media>
@@ -29172,11 +29172,11 @@ const openapi: OpenAPISpec = {
29172
29172
  format: 'uri',
29173
29173
  type: 'string',
29174
29174
  },
29175
- media_status: {
29175
+ media_ids: {
29176
29176
  description:
29177
- 'Status of the recorded clip and thumbnail for this activation, when the camera supports event recordings. `pending` while Seam retrieves the recording, `available` once it is stored, `unavailable` if no recording covers the activation, and `failed` if retrieval failed.',
29178
- enum: ['pending', 'available', 'unavailable', 'failed'],
29179
- type: 'string',
29177
+ 'IDs of the media, such as a video clip and a thumbnail image, captured for this activation. Use `/media/get` to retrieve each one.',
29178
+ items: { format: 'uuid', type: 'string' },
29179
+ type: 'array',
29180
29180
  },
29181
29181
  motion_sub_type: {
29182
29182
  description: 'Sub-type of motion detected, if available.',
@@ -29270,6 +29270,12 @@ const openapi: OpenAPISpec = {
29270
29270
  format: 'uri',
29271
29271
  type: 'string',
29272
29272
  },
29273
+ media_ids: {
29274
+ description:
29275
+ 'IDs of the media, such as a video clip and a thumbnail image, captured when the doorbell was pressed. Use `/media/get` to retrieve each one.',
29276
+ items: { format: 'uuid', type: 'string' },
29277
+ type: 'array',
29278
+ },
29273
29279
  occurred_at: {
29274
29280
  description: 'Date and time at which the event occurred.',
29275
29281
  format: 'date-time',
@@ -29732,6 +29738,84 @@ const openapi: OpenAPISpec = {
29732
29738
  'x-route-path': '/unstable_partner/building_blocks',
29733
29739
  'x-undocumented': 'Unreleased.',
29734
29740
  },
29741
+ media: {
29742
+ description:
29743
+ 'Represents a piece of media, such as a video clip or a thumbnail image, that a device captured for an event. Media is in beta.',
29744
+ properties: {
29745
+ content_type: {
29746
+ description:
29747
+ 'MIME type of the media, such as `video/mp4` or `image/jpeg`.',
29748
+ nullable: true,
29749
+ type: 'string',
29750
+ },
29751
+ created_at: {
29752
+ description: 'Date and time at which the media was created.',
29753
+ format: 'date-time',
29754
+ type: 'string',
29755
+ },
29756
+ device_id: {
29757
+ description: 'ID of the device that captured the media.',
29758
+ format: 'uuid',
29759
+ nullable: true,
29760
+ type: 'string',
29761
+ },
29762
+ event_id: {
29763
+ description: 'ID of the event that the media belongs to.',
29764
+ format: 'uuid',
29765
+ nullable: true,
29766
+ type: 'string',
29767
+ },
29768
+ expires_at: {
29769
+ description:
29770
+ 'Date and time at which the media stops being available. Null when Seam does not know when the media expires.',
29771
+ format: 'date-time',
29772
+ nullable: true,
29773
+ type: 'string',
29774
+ },
29775
+ media_id: {
29776
+ description: 'ID of the media.',
29777
+ format: 'uuid',
29778
+ type: 'string',
29779
+ },
29780
+ media_type: {
29781
+ description: 'Type of the media: a video clip or a still image.',
29782
+ enum: ['video', 'image'],
29783
+ type: 'string',
29784
+ },
29785
+ status: {
29786
+ description:
29787
+ 'Status of the media. `pending` means that Seam is still retrieving the media. `available` means that `url` can be used to download it. `unavailable` means that no media exists for the event, and `failed` means that Seam could not retrieve it.',
29788
+ enum: ['pending', 'available', 'unavailable', 'failed'],
29789
+ type: 'string',
29790
+ },
29791
+ url: {
29792
+ description:
29793
+ 'Short-lived URL from which you can download the media. Null unless `status` is `available`. The URL expires after about five minutes. Call `/media/get` again for a new URL.',
29794
+ format: 'uri',
29795
+ nullable: true,
29796
+ type: 'string',
29797
+ },
29798
+ workspace_id: {
29799
+ description: 'ID of the workspace that contains the media.',
29800
+ format: 'uuid',
29801
+ type: 'string',
29802
+ },
29803
+ },
29804
+ required: [
29805
+ 'media_id',
29806
+ 'workspace_id',
29807
+ 'device_id',
29808
+ 'event_id',
29809
+ 'media_type',
29810
+ 'content_type',
29811
+ 'status',
29812
+ 'url',
29813
+ 'expires_at',
29814
+ 'created_at',
29815
+ ],
29816
+ type: 'object',
29817
+ 'x-route-path': '/media',
29818
+ },
29735
29819
  noise_threshold: {
29736
29820
  description:
29737
29821
  'Represents a [noise threshold](https://www.seam.co/docs/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://www.seam.co/docs/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them.',
@@ -55215,6 +55299,72 @@ const openapi: OpenAPISpec = {
55215
55299
  'x-title': 'Unlock a Lock',
55216
55300
  },
55217
55301
  },
55302
+ '/media/get': {
55303
+ get: {
55304
+ description:
55305
+ 'Returns a specified piece of media, such as a video clip or thumbnail image captured for a camera event, with a short-lived URL from which you can download it. Camera events list their media in `media_ids`. This endpoint is in beta.',
55306
+ operationId: 'mediaGetGet',
55307
+ parameters: [
55308
+ {
55309
+ in: 'query',
55310
+ name: 'media_id',
55311
+ required: true,
55312
+ schema: {
55313
+ description: 'ID of the media that you want to get.',
55314
+ format: 'uuid',
55315
+ type: 'string',
55316
+ },
55317
+ },
55318
+ {
55319
+ in: 'query',
55320
+ name: 'format',
55321
+ required: false,
55322
+ schema: {
55323
+ default: 'json',
55324
+ description:
55325
+ "Response format. `json` returns the media object. `redirect` responds with a `302` redirect to the media's download URL, so you can use this endpoint directly as the source of an image or video.",
55326
+ enum: ['json', 'redirect'],
55327
+ type: 'string',
55328
+ },
55329
+ },
55330
+ ],
55331
+ responses: {
55332
+ '200': {
55333
+ content: {
55334
+ 'application/json': {
55335
+ schema: {
55336
+ properties: {
55337
+ media: { $ref: '#/components/schemas/media' },
55338
+ ok: { type: 'boolean' },
55339
+ },
55340
+ required: ['media', 'ok'],
55341
+ type: 'object',
55342
+ },
55343
+ },
55344
+ },
55345
+ description: 'OK',
55346
+ },
55347
+ '400': { description: 'Bad Request' },
55348
+ '401': { description: 'Unauthorized' },
55349
+ },
55350
+ security: [
55351
+ { api_key: [] },
55352
+ { pat_with_workspace: [] },
55353
+ { console_session_with_workspace: [] },
55354
+ { client_session: [] },
55355
+ { client_session_with_customer: [] },
55356
+ { client_session_with_customer_ro: [] },
55357
+ { support_read_only_token: [] },
55358
+ ],
55359
+ summary: '/media/get',
55360
+ tags: [],
55361
+ 'x-fern-sdk-group-name': ['media'],
55362
+ 'x-fern-sdk-method-name': 'get',
55363
+ 'x-fern-sdk-return-value': 'media',
55364
+ 'x-response-key': 'media',
55365
+ 'x-title': 'Get Media',
55366
+ },
55367
+ },
55218
55368
  '/noise_sensors/list': {
55219
55369
  get: {
55220
55370
  description:
@@ -59497,6 +59647,11 @@ const openapi: OpenAPISpec = {
59497
59647
  properties: {
59498
59648
  config: {
59499
59649
  properties: {
59650
+ access_ends_minutes_after_reservation: {
59651
+ maximum: 1440,
59652
+ minimum: 0,
59653
+ type: 'integer',
59654
+ },
59500
59655
  access_methods: {
59501
59656
  items: {
59502
59657
  enum: ['card', 'mobile_key', 'code'],
@@ -59505,6 +59660,11 @@ const openapi: OpenAPISpec = {
59505
59660
  minItems: 1,
59506
59661
  type: 'array',
59507
59662
  },
59663
+ access_starts_minutes_before_reservation: {
59664
+ maximum: 1440,
59665
+ minimum: 0,
59666
+ type: 'integer',
59667
+ },
59508
59668
  allow_shared_email_and_phone_across_user_identities:
59509
59669
  { type: 'boolean' },
59510
59670
  card_count_on_reservation_create: {
@@ -59783,6 +59943,11 @@ const openapi: OpenAPISpec = {
59783
59943
  properties: {
59784
59944
  config: {
59785
59945
  properties: {
59946
+ access_ends_minutes_after_reservation: {
59947
+ maximum: 1440,
59948
+ minimum: 0,
59949
+ type: 'integer',
59950
+ },
59786
59951
  access_methods: {
59787
59952
  items: {
59788
59953
  enum: ['card', 'mobile_key', 'code'],
@@ -59791,6 +59956,11 @@ const openapi: OpenAPISpec = {
59791
59956
  minItems: 1,
59792
59957
  type: 'array',
59793
59958
  },
59959
+ access_starts_minutes_before_reservation: {
59960
+ maximum: 1440,
59961
+ minimum: 0,
59962
+ type: 'integer',
59963
+ },
59794
59964
  allow_shared_email_and_phone_across_user_identities:
59795
59965
  { type: 'boolean' },
59796
59966
  card_count_on_reservation_create: {
@@ -61090,6 +61260,11 @@ const openapi: OpenAPISpec = {
61090
61260
  properties: {
61091
61261
  config: {
61092
61262
  properties: {
61263
+ access_ends_minutes_after_reservation: {
61264
+ maximum: 1440,
61265
+ minimum: 0,
61266
+ type: 'integer',
61267
+ },
61093
61268
  access_methods: {
61094
61269
  items: {
61095
61270
  enum: ['card', 'mobile_key', 'code'],
@@ -61098,6 +61273,11 @@ const openapi: OpenAPISpec = {
61098
61273
  minItems: 1,
61099
61274
  type: 'array',
61100
61275
  },
61276
+ access_starts_minutes_before_reservation: {
61277
+ maximum: 1440,
61278
+ minimum: 0,
61279
+ type: 'integer',
61280
+ },
61101
61281
  allow_shared_email_and_phone_across_user_identities:
61102
61282
  { type: 'boolean' },
61103
61283
  card_count_on_reservation_create: {
@@ -61393,6 +61573,11 @@ const openapi: OpenAPISpec = {
61393
61573
  properties: {
61394
61574
  config: {
61395
61575
  properties: {
61576
+ access_ends_minutes_after_reservation: {
61577
+ maximum: 1440,
61578
+ minimum: 0,
61579
+ type: 'integer',
61580
+ },
61396
61581
  access_methods: {
61397
61582
  items: {
61398
61583
  enum: ['card', 'mobile_key', 'code'],
@@ -61401,6 +61586,11 @@ const openapi: OpenAPISpec = {
61401
61586
  minItems: 1,
61402
61587
  type: 'array',
61403
61588
  },
61589
+ access_starts_minutes_before_reservation: {
61590
+ maximum: 1440,
61591
+ minimum: 0,
61592
+ type: 'integer',
61593
+ },
61404
61594
  allow_shared_email_and_phone_across_user_identities:
61405
61595
  { type: 'boolean' },
61406
61596
  card_count_on_reservation_create: {