diff --git a/docs/api/_report.md b/docs/api/_report.md
index fa4e90ba6..74a3275ca 100644
--- a/docs/api/_report.md
+++ b/docs/api/_report.md
@@ -79,6 +79,7 @@
- `/workspaces/get`
- `/workspaces/list`
- `/workspaces/reset_sandbox`
+- `/workspaces/update`
## Undocumented
@@ -91,28 +92,23 @@ These items are intentionally undocumented.
- `/acs/credential_provisioning_automations`: No undocumented message provided
- `/acs/credentials/unmanaged`: No undocumented message provided
- `/acs/users/unmanaged`: No undocumented message provided
+- `/locks/simulate`: No undocumented message provided
- `/seam/bridge/v1/bridge_client_sessions`: No undocumented message provided
- `/seam/bridge/v1/bridge_connected_systems`: No undocumented message provided
+- `/seam/instant_key/v1/client_sessions`: No undocumented message provided
+- `/thermostats/daily_programs`: No undocumented message provided
- `/unstable_access_grants`: No undocumented message provided
+- `/unstable_access_methods`: No undocumented message provided
- `/unstable_locations`: No undocumented message provided
### Resources
- `instant_key`: Unreleased.
-### Resource properties
-
-- `acs_user.is_latest_desired_state_synced_with_provider`: Only used internally.
-- `acs_user.latest_desired_state_synced_with_provider_at`: Only used internally.
-- `acs_user.pending_mutations`: Experimental.
-- `thermostat_schedule.unstable_is_override_allowed`: Unstable
-- `unmanaged_acs_user.is_latest_desired_state_synced_with_provider`: Only used internally.
-- `unmanaged_acs_user.latest_desired_state_synced_with_provider_at`: Only used internally.
-- `unmanaged_acs_user.pending_mutations`: Experimental.
-
### Namespaces
- `/seam/bridge/v1`: No undocumented message provided
+- `/seam/instant_key/v1`: No undocumented message provided
### Endpoints
@@ -126,24 +122,33 @@ These items are intentionally undocumented.
- `/acs/users/unmanaged/get`: No unmanaged users are currently implemented.
- `/acs/users/unmanaged/list`: No unmanaged users are currently implemented.
- `/devices/delete`: Deleting a device is no longer supported and will be removed.
-- `/devices/simulate/access_code_lock`: Unreleased.
-- `/devices/simulate/access_code_unlock`: Unreleased.
+- `/locks/simulate/keypad_code_entry`: Unreleased.
+- `/locks/simulate/manual_lock_via_keypad`: Unreleased.
- `/seam/bridge/v1/bridge_client_sessions/create`: Seam Bridge Client only.
- `/seam/bridge/v1/bridge_client_sessions/get`: Seam Bridge Client only.
- `/seam/bridge/v1/bridge_client_sessions/refresh_telemetry_token`: Seam Bridge Client only.
- `/seam/bridge/v1/bridge_client_sessions/regenerate_pairing_code`: Seam Bridge Client only.
- `/seam/bridge/v1/bridge_client_sessions/report_status`: Seam Bridge Client only.
- `/seam/bridge/v1/bridge_connected_systems/list`: Seam Bridge Client only.
+- `/seam/instant_key/v1/client_sessions/exchange_short_code`: Seam Instant Key only.
+- `/thermostats/activate_weekly_program`: Unreleased.
+- `/thermostats/clear_weekly_program`: Unreleased.
- `/thermostats/get`: Will be removed.
+- `/thermostats/daily_programs/create`: Unreleased.
+- `/thermostats/daily_programs/delete`: Unreleased.
+- `/thermostats/daily_programs/update`: Unreleased.
- `/unstable_access_grants/create`: Unreleased.
- `/unstable_access_grants/get`: Unreleased.
- `/unstable_access_grants/list`: Unreleased.
-- `/unstable_access_grants/list_access_methods`: Unreleased.
+- `/unstable_access_methods/get`: Unreleased.
+- `/unstable_access_methods/list`: Unreleased.
+- `/unstable_locations/add_acs_entrances`: Experimental locations.
- `/unstable_locations/add_devices`: Experimental locations.
- `/unstable_locations/create`: Experimental locations.
- `/unstable_locations/delete`: Experimental locations.
- `/unstable_locations/get`: Experimental locations.
- `/unstable_locations/list`: Experimental locations.
+- `/unstable_locations/remove_acs_entrances`: Experimental locations.
- `/unstable_locations/remove_devices`: Experimental locations.
- `/unstable_locations/update`: Experimental locations.
@@ -159,6 +164,8 @@ These items are intentionally undocumented.
- `sync`: Only used internally.
- `/access_codes/unmanaged/delete`
- `sync`: Only used internally.
+- `/acs/entrances/list`
+ - `location_id`: Experimental locations.
- `/devices/list`
- `exclude_if`: Only used internally.
- `include_if`: Only used internally.
@@ -235,16 +242,19 @@ Items that are intentionally undocumented are not included in this section.
- `acs_credential_provisioning_automation.workspace_id`
- `acs_system.acs_access_group_count`
- `acs_system.acs_user_count`
+- `acs_system.can_create_user`
+- `acs_system.can_delete_user`
+- `acs_system.can_update_user_group_membership`
+- `acs_system.can_update_user_information`
+- `acs_system.can_update_user_schedule`
+- `acs_system.can_update_user_supension_state`
- `acs_system.location`
- `acs_system.system_type`
- `acs_system.system_type_display_name`
- `acs_system.visionline_metadata`
- `acs_user.email`
- `acs_user.hid_acs_system_id`
-- `acs_user.is_latest_desired_state_synced_with_provider`
- `acs_user.is_managed`
-- `acs_user.latest_desired_state_synced_with_provider_at`
-- `acs_user.pending_mutations`
- `client_session.client_session_id`
- `client_session.connect_webview_ids`
- `client_session.connected_account_ids`
@@ -337,10 +347,7 @@ Items that are intentionally undocumented are not included in this section.
- `unmanaged_acs_credential.is_managed`
- `unmanaged_acs_user.email`
- `unmanaged_acs_user.hid_acs_system_id`
-- `unmanaged_acs_user.is_latest_desired_state_synced_with_provider`
- `unmanaged_acs_user.is_managed`
-- `unmanaged_acs_user.latest_desired_state_synced_with_provider_at`
-- `unmanaged_acs_user.pending_mutations`
- `unmanaged_device.can_hvac_cool`
- `unmanaged_device.can_hvac_heat`
- `unmanaged_device.can_hvac_heat_cool`
@@ -362,6 +369,7 @@ Items that are intentionally undocumented are not included in this section.
- `webhook.webhook_id`
- `workspace.company_name`
- `workspace.connect_partner_name`
+- `workspace.connect_webview_customization`
- `workspace.is_sandbox`
- `workspace.name`
- `workspace.workspace_id`
@@ -397,8 +405,6 @@ Items that are intentionally undocumented are not included in this section.
- `/devices/get`
- `/devices/list_device_providers`
- `/devices/update`
-- `/devices/simulate/access_code_lock`
-- `/devices/simulate/access_code_unlock`
- `/devices/simulate/connect`
- `/devices/simulate/disconnect`
- `/devices/simulate/remove`
@@ -411,6 +417,8 @@ Items that are intentionally undocumented are not included in this section.
- `/locks/list`
- `/locks/lock_door`
- `/locks/unlock_door`
+- `/locks/simulate/keypad_code_entry`
+- `/locks/simulate/manual_lock_via_keypad`
- `/networks/get`
- `/networks/list`
- `/noise_sensors/list`
@@ -430,6 +438,7 @@ Items that are intentionally undocumented are not included in this section.
- `/workspaces/get`
- `/workspaces/list`
- `/workspaces/reset_sandbox`
+- `/workspaces/update`
### Endpoint parameters
@@ -473,6 +482,7 @@ Items that are intentionally undocumented are not included in this section.
- `/acs/entrances/list`
- `acs_credential_id`
- `acs_system_id`
+ - `location_id`
- `/acs/entrances/list_credentials_with_access`
- `acs_entrance_id`
- `include_if`
@@ -570,12 +580,6 @@ Items that are intentionally undocumented are not included in this section.
- `is_managed`
- `name`
- `properties`
-- `/devices/simulate/access_code_lock`
- - `access_code_id`
- - `device_id`
-- `/devices/simulate/access_code_unlock`
- - `access_code_id`
- - `device_id`
- `/devices/simulate/connect`
- `device_id`
- `/devices/simulate/disconnect`
@@ -625,6 +629,11 @@ Items that are intentionally undocumented are not included in this section.
- `/locks/unlock_door`
- `device_id`
- `sync`
+- `/locks/simulate/keypad_code_entry`
+ - `code`
+ - `device_id`
+- `/locks/simulate/manual_lock_via_keypad`
+ - `device_id`
- `/networks/get`
- `network_id`
- `/noise_sensors/list`
@@ -685,11 +694,16 @@ Items that are intentionally undocumented are not included in this section.
- `/thermostats/set_hvac_mode`
- `hvac_mode_setting`
- `/unstable_access_grants/create`
- - `desired_access_methods`
+ - `requested_access_methods`
+- `/unstable_locations/add_acs_entrances`
+ - `acs_entrance_ids`
+ - `location_id`
- `/unstable_locations/add_devices`
- `device_ids`
- `location_id`
- `/unstable_locations/create`
+ - `acs_entrance_ids`
+ - `device_ids`
- `geolocation`
- `name`
- `time_zone`
@@ -697,6 +711,9 @@ Items that are intentionally undocumented are not included in this section.
- `location_id`
- `/unstable_locations/get`
- `location_id`
+- `/unstable_locations/remove_acs_entrances`
+ - `acs_entrance_ids`
+ - `location_id`
- `/unstable_locations/remove_devices`
- `device_ids`
- `location_id`
@@ -724,12 +741,18 @@ Items that are intentionally undocumented are not included in this section.
- `/workspaces/create`
- `company_name`
- `connect_partner_name`
+ - `connect_webview_customization`
- `is_sandbox`
- `name`
- `webview_logo_shape`
- `webview_primary_button_color`
- `webview_primary_button_text_color`
- `webview_success_message`
+- `/workspaces/update`
+ - `connect_partner_name`
+ - `connect_webview_customization`
+ - `is_suspended`
+ - `name`
## Deprecated
@@ -764,17 +787,25 @@ These items are deprecated.
- `manual_override_allowed`: Use 'thermostat_schedule.is_override_allowed'
- `/workspaces/create`
- `connect_partner_name`: use company_name
+ - `webview_logo_shape`: Use `connect_webview_customization.webview_logo_shape` instead.
+ - `webview_primary_button_color`: Use `connect_webview_customization.webview_primary_button_color` instead.
+ - `webview_primary_button_text_color`: Use `connect_webview_customization.webview_primary_button_text_color` instead.
+ - `webview_success_message`: Use `connect_webview_customization.webview_success_message` instead.
### Extra response keys
- `/access_codes/create`
- `action_attempt`
+- `/access_codes/list`
+ - `pagination`
- `/access_codes/pull_backup_access_code`
- `backup_access_code`
- `/acs/users/list`
- `pagination`
- `/connected_accounts/list`
- `pagination`
+- `/devices/list`
+ - `pagination`
- `/events/get`
- `message`
- `/locks/get`
@@ -799,6 +830,7 @@ These items are deprecated.
- `/access_codes/get`
- `/access_codes/list`
- `/access_codes/pull_backup_access_code`
+- `/access_codes/report_device_constraints`
- `/access_codes/update`
- `/access_codes/update_multiple`
- `/access_codes/simulate/create_unmanaged_access_code`
@@ -812,6 +844,7 @@ These items are deprecated.
- `/acs/credentials/create_offline_code`
- `/acs/credentials/unmanaged/get`
- `/acs/credentials/unmanaged/list`
+- `/acs/encoders/encode_access_method`
- `/acs/encoders/encode_credential`
- `/acs/encoders/get`
- `/acs/encoders/list`
@@ -849,8 +882,6 @@ These items are deprecated.
- `/devices/list`
- `/devices/list_device_providers`
- `/devices/update`
-- `/devices/simulate/access_code_lock`
-- `/devices/simulate/access_code_unlock`
- `/devices/simulate/connect`
- `/devices/simulate/disconnect`
- `/devices/simulate/remove`
@@ -863,6 +894,8 @@ These items are deprecated.
- `/locks/list`
- `/locks/lock_door`
- `/locks/unlock_door`
+- `/locks/simulate/keypad_code_entry`
+- `/locks/simulate/manual_lock_via_keypad`
- `/networks/get`
- `/networks/list`
- `/noise_sensors/list`
@@ -882,18 +915,27 @@ These items are deprecated.
- `/seam/bridge/v1/bridge_client_sessions/regenerate_pairing_code`
- `/seam/bridge/v1/bridge_client_sessions/report_status`
- `/seam/bridge/v1/bridge_connected_systems/list`
+- `/seam/instant_key/v1/client_sessions/exchange_short_code`
+- `/thermostats/activate_weekly_program`
+- `/thermostats/clear_weekly_program`
- `/thermostats/get`
+- `/thermostats/daily_programs/create`
+- `/thermostats/daily_programs/delete`
+- `/thermostats/daily_programs/update`
- `/thermostats/simulate/hvac_mode_adjusted`
- `/thermostats/simulate/temperature_reached`
- `/unstable_access_grants/create`
- `/unstable_access_grants/get`
- `/unstable_access_grants/list`
-- `/unstable_access_grants/list_access_methods`
+- `/unstable_access_methods/get`
+- `/unstable_access_methods/list`
+- `/unstable_locations/add_acs_entrances`
- `/unstable_locations/add_devices`
- `/unstable_locations/create`
- `/unstable_locations/delete`
- `/unstable_locations/get`
- `/unstable_locations/list`
+- `/unstable_locations/remove_acs_entrances`
- `/unstable_locations/remove_devices`
- `/unstable_locations/update`
- `/user_identities/generate_instant_key`
@@ -907,3 +949,4 @@ These items are deprecated.
- `/workspaces/get`
- `/workspaces/list`
- `/workspaces/reset_sandbox`
+- `/workspaces/update`
diff --git a/docs/api/acs/credentials/README.md b/docs/api/acs/credentials/README.md
index 2a7367e7e..11fb4e70f 100644
--- a/docs/api/acs/credentials/README.md
+++ b/docs/api/acs/credentials/README.md
@@ -151,6 +151,7 @@ Possible enum values:
- `salto_ks_credential`
- `assa_abloy_vostio_key`
- `salto_space_key`
+- `latch_access`
---
diff --git a/docs/api/acs/encoders/README.md b/docs/api/acs/encoders/README.md
index 395483de6..463e10d73 100644
--- a/docs/api/acs/encoders/README.md
+++ b/docs/api/acs/encoders/README.md
@@ -90,6 +90,9 @@ ID of the [workspace](../../../core-concepts/workspaces/README.md) that contains
## Endpoints
+### [`/acs/encoders/encode_access_method`](./encode_access_method.md)
+
+Encodes an existing access method onto a plastic card placed on the specified [encoder](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/README.md).
### [`/acs/encoders/encode_credential`](./encode_credential.md)
Encodes an existing [credential](../../../capability-guides/access-systems/managing-credentials.md) onto a plastic card placed on the specified [encoder](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/README.md).
diff --git a/docs/api/acs/encoders/encode_access_method.md b/docs/api/acs/encoders/encode_access_method.md
new file mode 100644
index 000000000..510e1d0dd
--- /dev/null
+++ b/docs/api/acs/encoders/encode_access_method.md
@@ -0,0 +1,153 @@
+# Encode an Access Method
+
+```
+POST /acs/encoders/encode_access_method ⇒ { action_attempt }
+```
+
+Encodes an existing access method onto a plastic card placed on the specified [encoder](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/README.md).
+
+## Authentication Methods
+
+- API key
+- Personal access token
+
Must also include the `seam-workspace` header in the request.
+
+## Request Parameters
+
+### `access_method_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the `access_method` to encode onto a card.
+
+***
+
+### `acs_encoder_id`
+
+Format: `UUID`
+Required: Yes
+
+ID of the `acs_encoder` to use to encode the `access_method`.
+
+***
+
+## Return Type
+
+[action\_attempt](./)
+
+### `ENCODE_ACCESS_METHOD`
+
+Action attempt to track encoding credential data from the physical encoder onto a card.
+
+#### `action_attempt_id`
+
+Format: `UUID`
+
+ID of the action attempt.
+
+---
+
+#### `action_type`
+
+Format: `Enum`
+
+Type of action that the action attempt tracks.
+
+Value: `ENCODE_ACCESS_METHOD`
+
+---
+
+#### `error`
+
+Format: `Object`
+
+
+
+message Format: String
+
+
+
+type Format: Enum
+
+Possible enum values:
+- `uncategorized_error`
+- `action_attempt_expired`
+- `no_credential_on_encoder`
+- `incompatible_card_format`
+- `credential_cannot_be_reissued`
+
+---
+
+#### `result`
+
+Format: `Object`
+
+If an encoding attempt was successful, includes the `access_method` data that was encoded onto the card.
+
+
+
+access_method_id Format: UUID
+
+ID of the access method.
+
+
+
+created_at Format: Datetime
+
+Date and time at which the access method was created.
+
+
+
+display_name Format: String
+
+Display name of the access method.
+
+
+
+instant_key_url Format: String
+
+URL of instant key for mobile key access methods.
+
+
+
+is_card_encoding_required Format: Boolean
+
+Whether card encoding is required for plastic card access methods.
+
+
+
+issued_at Format: Datetime
+
+Date and time at which the access method was issued.
+
+
+
+mode Format: Enum
+
+Access method mode. Supported values: `code`, `card`, `mobile_key`.
+
+Possible enum values:
+- `code`
+- `card`
+- `mobile_key`
+
+
+
+workspace_id Format: UUID
+
+Unique identifier for the Seam workspace associated with the access grant.
+
+---
+
+#### `status`
+
+Format: `Enum`
+
+Possible enum values:
+- `success`
+- `pending`
+- `error`
+
+---
+
diff --git a/docs/api/acs/encoders/encode_credential.md b/docs/api/acs/encoders/encode_credential.md
index 4feb7dcb4..24652bd37 100644
--- a/docs/api/acs/encoders/encode_credential.md
+++ b/docs/api/acs/encoders/encode_credential.md
@@ -200,6 +200,7 @@ Possible enum values:
- `salto_ks_credential`
- `assa_abloy_vostio_key`
- `salto_space_key`
+- `latch_access`
diff --git a/docs/api/acs/encoders/scan_credential.md b/docs/api/acs/encoders/scan_credential.md
index d2c63285c..d7649eed2 100644
--- a/docs/api/acs/encoders/scan_credential.md
+++ b/docs/api/acs/encoders/scan_credential.md
@@ -307,6 +307,7 @@ Possible enum values:
- `salto_ks_credential`
- `assa_abloy_vostio_key`
- `salto_space_key`
+- `latch_access`
diff --git a/docs/api/acs/systems/README.md b/docs/api/acs/systems/README.md
index f2b8e47f2..6085c2453 100644
--- a/docs/api/acs/systems/README.md
+++ b/docs/api/acs/systems/README.md
@@ -52,6 +52,18 @@ Indicates whether the [access control system](https://docs.seam.co/latest/capabi
---
+### `can_create_user`
+
+Format: `Boolean`
+
+---
+
+### `can_delete_user`
+
+Format: `Boolean`
+
+---
+
### `can_remove_acs_users_from_acs_access_groups`
Format: `Boolean`
@@ -60,6 +72,30 @@ Indicates whether the [access control system](https://docs.seam.co/latest/capabi
---
+### `can_update_user_group_membership`
+
+Format: `Boolean`
+
+---
+
+### `can_update_user_information`
+
+Format: `Boolean`
+
+---
+
+### `can_update_user_schedule`
+
+Format: `Boolean`
+
+---
+
+### `can_update_user_supension_state`
+
+Format: `Boolean`
+
+---
+
### `connected_account_id`
Format: `UUID`
diff --git a/docs/api/acs/users/README.md b/docs/api/acs/users/README.md
index 1e793af09..c0dceae8d 100644
--- a/docs/api/acs/users/README.md
+++ b/docs/api/acs/users/README.md
@@ -141,6 +141,16 @@ Indicates whether the [ACS user](https://docs.seam.co/latest/capability-guides/a
---
+### `pending_mutations`
+
+Format: `List`
+
+Item format: `Object`
+
+Pending mutations associated with the [ACS user](https://docs.seam.co/latest/capability-guides/access-systems/user-management). Seam is in the process of pushing these mutations to the integrated access system.
+
+---
+
### `phone_number`
Format: `String`
@@ -251,6 +261,12 @@ An unknown issue occurred while syncing the state of this [ACS user](https://doc
---
+### `latch_resident_user`
+
+Indicates that the [ACS user](https://docs.seam.co/latest/capability-guides/access-systems/user-management) was created on Latch Mission Control. Please use the Latch Mission Control to manage this user.
+
+---
+
## Endpoints
### [`/acs/users/add_to_access_group`](./add_to_access_group.md)
diff --git a/docs/api/thermostats/list.md b/docs/api/thermostats/list.md
index 8d95d5dfb..f6abab73b 100644
--- a/docs/api/thermostats/list.md
+++ b/docs/api/thermostats/list.md
@@ -341,6 +341,15 @@ Possible enum values:
***
+### `page_cursor`
+
+Format: `String`
+Required: No
+
+Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`.
+
+***
+
### `user_identifier_key`
Format: `String`
diff --git a/docs/api/thermostats/schedules/README.md b/docs/api/thermostats/schedules/README.md
index 3323b4adf..a82ba776d 100644
--- a/docs/api/thermostats/schedules/README.md
+++ b/docs/api/thermostats/schedules/README.md
@@ -58,6 +58,14 @@ Detailed description of the error. Provides insights into the issue and potentia
---
+### `is_override_allowed`
+
+Format: `Boolean`
+
+Indicates whether a person at the thermostat can change the thermostat's settings after the [thermostat schedule](../../../capability-guides/thermostats/creating-and-managing-thermostat-schedules.md) starts.
+
+---
+
### `max_override_period_minutes`
Format: `Number`
diff --git a/docs/api/user_identities/generate_instant_key.md b/docs/api/user_identities/generate_instant_key.md
index 390b5d284..b6d8c0151 100644
--- a/docs/api/user_identities/generate_instant_key.md
+++ b/docs/api/user_identities/generate_instant_key.md
@@ -23,6 +23,15 @@ ID of the user identity for which you want to generate an instant key.
***
+### `max_use_count`
+
+Format: `Number`
+Required: No
+
+The maximum number of times the instant key can be used. Defaults to 1.
+
+***
+
## Return Type
[instant\_key](./)
diff --git a/package-lock.json b/package-lock.json
index 3a302e388..07f33b642 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,7 @@
"@prettier/plugin-php": "^0.22.2",
"@prettier/plugin-ruby": "^4.0.4",
"@seamapi/blueprint": "^0.40.1",
- "@seamapi/types": "1.384.0",
+ "@seamapi/types": "1.389.0",
"change-case": "^5.4.4",
"command-exists": "^1.2.9",
"del": "^8.0.0",
@@ -781,9 +781,9 @@
}
},
"node_modules/@seamapi/types": {
- "version": "1.384.0",
- "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.384.0.tgz",
- "integrity": "sha512-pFQF4O7LaLu9J2yfNxtiuN/kCYX5WH0Sdccx6BC1rYQqwQSD1m5/yXTq14iCBa6z2R8Fw09WRU5Zp+NjHtleQQ==",
+ "version": "1.389.0",
+ "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.389.0.tgz",
+ "integrity": "sha512-UHLss1wfPnLTHEXz+2Ia24N5SU5/H1TTa6UmASy1ASub0U5LGPnTxsYxbb/2f82isI/IRJhpqCYOJE+VAcBEaA==",
"license": "MIT",
"engines": {
"node": ">=18.12.0",
diff --git a/package.json b/package.json
index 605e5dfe4..82d6ebf0c 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"@prettier/plugin-php": "^0.22.2",
"@prettier/plugin-ruby": "^4.0.4",
"@seamapi/blueprint": "^0.40.1",
- "@seamapi/types": "1.384.0",
+ "@seamapi/types": "1.389.0",
"change-case": "^5.4.4",
"command-exists": "^1.2.9",
"del": "^8.0.0",
diff --git a/src/lib/report.ts b/src/lib/report.ts
index 4dd29a18f..ab414d770 100644
--- a/src/lib/report.ts
+++ b/src/lib/report.ts
@@ -320,17 +320,21 @@ function processResponseKeys(endpoint: Endpoint, report: Report): void {
function getOpenapiResponseProperties(
path: string,
-): Record | undefined {
+): Record | undefined | null {
const openapiEndpointDef = openapi.paths[path as keyof typeof openapi.paths]
if (openapiEndpointDef == null) {
// eslint-disable-next-line no-console
console.warn(`OpenAPI definition not found for endpoint: ${path}`)
- return
+ return null
}
- return openapiEndpointDef.post.responses['200']?.content['application/json']
- ?.schema?.properties
+ const res = openapiEndpointDef.post.responses['200']
+ if ('content' in res) {
+ return res.content['application/json']?.schema?.properties
+ }
+
+ return null
}
function processParameters(