diff --git a/codegen/layouts/partials/route-class-endpoint.hbs b/codegen/layouts/partials/route-class-endpoint.hbs index 61d2ef13..a48c6181 100644 --- a/codegen/layouts/partials/route-class-endpoint.hbs +++ b/codegen/layouts/partials/route-class-endpoint.hbs @@ -2,7 +2,7 @@ {{methodName}} {{> endpont-method-signature }} { - assertValidRequestParameters(parameters, '{{path}}', {{hasRequiredParameters}}) + assertValidRequestParameters(parameters, '{{path}}', {{hasRequiredParameters}}, [{{#each requiredParameterNames}}{{json .}}{{#unless @last}}, {{/unless}}{{/each}}]) return new SeamHttpRequest(this, { pathname: '{{path}}', diff --git a/codegen/lib/layouts/route.ts b/codegen/lib/layouts/route.ts index 5821c737..509617c1 100644 --- a/codegen/lib/layouts/route.ts +++ b/codegen/lib/layouts/route.ts @@ -37,6 +37,7 @@ export interface EndpointLayoutContext { returnsVoid: boolean isOptionalParamsOk: boolean hasRequiredParameters: boolean + requiredParameterNames: string[] requiresAtLeastOneParameter: boolean parameters: Parameter[] responseIsList: boolean @@ -149,6 +150,9 @@ export const getEndpointLayoutContext = ( requestTypeName: `${prefix}Request`, isOptionalParamsOk: !endpoint.request.hasRequiredParameters, hasRequiredParameters: endpoint.request.hasRequiredParameters, + requiredParameterNames: endpoint.request.parameters + .filter(({ isRequired }) => isRequired) + .map(({ name }) => name), requiresAtLeastOneParameter: requiresAtLeastOneParameter(endpoint), parameters: endpoint.request.parameters, responseIsList: endpoint.response.responseType === 'resource_list', diff --git a/src/lib/request-parameters.ts b/src/lib/request-parameters.ts index c414d832..6ee23e5f 100644 --- a/src/lib/request-parameters.ts +++ b/src/lib/request-parameters.ts @@ -9,6 +9,7 @@ export const assertValidRequestParameters = ( parameters: unknown, path: string, hasRequiredParameters: boolean, + requiredParameterNames: string[], ): void => { if (parameters === undefined) { if (hasRequiredParameters) { @@ -25,9 +26,19 @@ export const assertValidRequestParameters = ( throw new TypeError(`Parameters for ${path} must be an object`) } + const parameterValues = parameters as Record + const missingParameterNames = requiredParameterNames.filter( + (name) => parameterValues[name] === undefined, + ) + if (missingParameterNames.length > 0) { + throw new TypeError( + `Required parameters missing for ${path}: ${missingParameterNames.join(', ')}`, + ) + } + if ( hasRequiredParameters && - Object.values(parameters).every((value) => value === undefined) + Object.values(parameterValues).every((value) => value === undefined) ) { throw new TypeError(`At least one parameter is required for ${path}`) } diff --git a/src/lib/routes/access-codes/access-codes.ts b/src/lib/routes/access-codes/access-codes.ts index 27f583a1..744eac8c 100644 --- a/src/lib/routes/access-codes/access-codes.ts +++ b/src/lib/routes/access-codes/access-codes.ts @@ -180,7 +180,9 @@ export class SeamHttpAccessCodes { parameters: AccessCodesCreateParameters, options: AccessCodesCreateOptions = {}, ): AccessCodesCreateRequest { - assertValidRequestParameters(parameters, '/access_codes/create', true) + assertValidRequestParameters(parameters, '/access_codes/create', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_codes/create', @@ -212,6 +214,7 @@ export class SeamHttpAccessCodes { parameters, '/access_codes/create_multiple', true, + ['device_ids'], ) return new SeamHttpRequest(this, { @@ -230,7 +233,9 @@ export class SeamHttpAccessCodes { parameters: AccessCodesDeleteParameters, options: AccessCodesDeleteOptions = {}, ): AccessCodesDeleteRequest { - assertValidRequestParameters(parameters, '/access_codes/delete', true) + assertValidRequestParameters(parameters, '/access_codes/delete', true, [ + 'access_code_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_codes/delete', @@ -252,6 +257,7 @@ export class SeamHttpAccessCodes { parameters, '/access_codes/generate_code', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -272,7 +278,7 @@ export class SeamHttpAccessCodes { parameters: AccessCodesGetParameters, options: AccessCodesGetOptions = {}, ): AccessCodesGetRequest { - assertValidRequestParameters(parameters, '/access_codes/get', true) + assertValidRequestParameters(parameters, '/access_codes/get', true, []) return new SeamHttpRequest(this, { pathname: '/access_codes/get', @@ -292,7 +298,7 @@ export class SeamHttpAccessCodes { parameters: AccessCodesListParameters, options: AccessCodesListOptions = {}, ): AccessCodesListRequest { - assertValidRequestParameters(parameters, '/access_codes/list', true) + assertValidRequestParameters(parameters, '/access_codes/list', true, []) return new SeamHttpRequest(this, { pathname: '/access_codes/list', @@ -322,6 +328,7 @@ export class SeamHttpAccessCodes { parameters, '/access_codes/pull_backup_access_code', true, + ['access_code_id'], ) return new SeamHttpRequest(this, { @@ -346,6 +353,7 @@ export class SeamHttpAccessCodes { parameters, '/access_codes/report_device_constraints', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -366,7 +374,9 @@ export class SeamHttpAccessCodes { parameters: AccessCodesUpdateParameters, options: AccessCodesUpdateOptions = {}, ): AccessCodesUpdateRequest { - assertValidRequestParameters(parameters, '/access_codes/update', true) + assertValidRequestParameters(parameters, '/access_codes/update', true, [ + 'access_code_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_codes/update', @@ -392,6 +402,7 @@ export class SeamHttpAccessCodes { parameters, '/access_codes/update_multiple', true, + ['common_code_key'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/access-codes/simulate/simulate.ts b/src/lib/routes/access-codes/simulate/simulate.ts index e79b7ae6..a2958d79 100644 --- a/src/lib/routes/access-codes/simulate/simulate.ts +++ b/src/lib/routes/access-codes/simulate/simulate.ts @@ -170,6 +170,7 @@ export class SeamHttpAccessCodesSimulate { parameters, '/access_codes/simulate/create_unmanaged_access_code', true, + ['code', 'device_id', 'name'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/access-codes/unmanaged/unmanaged.ts b/src/lib/routes/access-codes/unmanaged/unmanaged.ts index c31795b4..f76b8845 100644 --- a/src/lib/routes/access-codes/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-codes/unmanaged/unmanaged.ts @@ -177,6 +177,7 @@ export class SeamHttpAccessCodesUnmanaged { parameters, '/access_codes/unmanaged/convert_to_managed', true, + ['access_code_id'], ) return new SeamHttpRequest(this, { @@ -199,6 +200,7 @@ export class SeamHttpAccessCodesUnmanaged { parameters, '/access_codes/unmanaged/delete', true, + ['access_code_id'], ) return new SeamHttpRequest(this, { @@ -223,6 +225,7 @@ export class SeamHttpAccessCodesUnmanaged { parameters, '/access_codes/unmanaged/get', true, + [], ) return new SeamHttpRequest(this, { @@ -245,6 +248,7 @@ export class SeamHttpAccessCodesUnmanaged { parameters, '/access_codes/unmanaged/list', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -267,6 +271,7 @@ export class SeamHttpAccessCodesUnmanaged { parameters, '/access_codes/unmanaged/update', true, + ['access_code_id', 'is_managed'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/access-grants/access-grants.ts b/src/lib/routes/access-grants/access-grants.ts index 369cb530..c5cf7ed3 100644 --- a/src/lib/routes/access-grants/access-grants.ts +++ b/src/lib/routes/access-grants/access-grants.ts @@ -176,7 +176,9 @@ export class SeamHttpAccessGrants { parameters: AccessGrantsCreateParameters, options: AccessGrantsCreateOptions = {}, ): AccessGrantsCreateRequest { - assertValidRequestParameters(parameters, '/access_grants/create', true) + assertValidRequestParameters(parameters, '/access_grants/create', true, [ + 'requested_access_methods', + ]) return new SeamHttpRequest(this, { pathname: '/access_grants/create', @@ -194,7 +196,9 @@ export class SeamHttpAccessGrants { parameters: AccessGrantsDeleteParameters, options: AccessGrantsDeleteOptions = {}, ): AccessGrantsDeleteRequest { - assertValidRequestParameters(parameters, '/access_grants/delete', true) + assertValidRequestParameters(parameters, '/access_grants/delete', true, [ + 'access_grant_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_grants/delete', @@ -212,7 +216,7 @@ export class SeamHttpAccessGrants { parameters: AccessGrantsGetParameters, options: AccessGrantsGetOptions = {}, ): AccessGrantsGetRequest { - assertValidRequestParameters(parameters, '/access_grants/get', true) + assertValidRequestParameters(parameters, '/access_grants/get', true, []) return new SeamHttpRequest(this, { pathname: '/access_grants/get', @@ -230,7 +234,12 @@ export class SeamHttpAccessGrants { parameters: AccessGrantsGetRelatedParameters, options: AccessGrantsGetRelatedOptions = {}, ): AccessGrantsGetRelatedRequest { - assertValidRequestParameters(parameters, '/access_grants/get_related', true) + assertValidRequestParameters( + parameters, + '/access_grants/get_related', + true, + [], + ) return new SeamHttpRequest(this, { pathname: '/access_grants/get_related', @@ -248,7 +257,7 @@ export class SeamHttpAccessGrants { parameters?: AccessGrantsListParameters, options: AccessGrantsListOptions = {}, ): AccessGrantsListRequest { - assertValidRequestParameters(parameters, '/access_grants/list', false) + assertValidRequestParameters(parameters, '/access_grants/list', false, []) return new SeamHttpRequest(this, { pathname: '/access_grants/list', @@ -270,6 +279,7 @@ export class SeamHttpAccessGrants { parameters, '/access_grants/request_access_methods', true, + ['access_grant_id', 'requested_access_methods'], ) return new SeamHttpRequest(this, { @@ -288,7 +298,7 @@ export class SeamHttpAccessGrants { parameters: AccessGrantsUpdateParameters, options: AccessGrantsUpdateOptions = {}, ): AccessGrantsUpdateRequest { - assertValidRequestParameters(parameters, '/access_grants/update', true) + assertValidRequestParameters(parameters, '/access_grants/update', true, []) return new SeamHttpRequest(this, { pathname: '/access_grants/update', diff --git a/src/lib/routes/access-grants/unmanaged/unmanaged.ts b/src/lib/routes/access-grants/unmanaged/unmanaged.ts index 4a52381a..e693998a 100644 --- a/src/lib/routes/access-grants/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-grants/unmanaged/unmanaged.ts @@ -170,6 +170,7 @@ export class SeamHttpAccessGrantsUnmanaged { parameters, '/access_grants/unmanaged/get', true, + ['access_grant_id'], ) return new SeamHttpRequest(this, { @@ -192,6 +193,7 @@ export class SeamHttpAccessGrantsUnmanaged { parameters, '/access_grants/unmanaged/list', false, + [], ) return new SeamHttpRequest(this, { @@ -218,6 +220,7 @@ export class SeamHttpAccessGrantsUnmanaged { parameters, '/access_grants/unmanaged/update', true, + ['access_grant_id', 'is_managed'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/access-methods/access-methods.ts b/src/lib/routes/access-methods/access-methods.ts index 30dd043a..6094b550 100644 --- a/src/lib/routes/access-methods/access-methods.ts +++ b/src/lib/routes/access-methods/access-methods.ts @@ -182,6 +182,7 @@ export class SeamHttpAccessMethods { parameters, '/access_methods/assign_card', true, + ['access_method_id', 'card_number'], ) return new SeamHttpRequest(this, { @@ -204,7 +205,7 @@ export class SeamHttpAccessMethods { parameters: AccessMethodsDeleteParameters, options: AccessMethodsDeleteOptions = {}, ): AccessMethodsDeleteRequest { - assertValidRequestParameters(parameters, '/access_methods/delete', true) + assertValidRequestParameters(parameters, '/access_methods/delete', true, []) return new SeamHttpRequest(this, { pathname: '/access_methods/delete', @@ -222,7 +223,10 @@ export class SeamHttpAccessMethods { parameters: AccessMethodsEncodeParameters, options: AccessMethodsEncodeOptions = {}, ): AccessMethodsEncodeRequest { - assertValidRequestParameters(parameters, '/access_methods/encode', true) + assertValidRequestParameters(parameters, '/access_methods/encode', true, [ + 'access_method_id', + 'acs_encoder_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_methods/encode', @@ -244,7 +248,9 @@ export class SeamHttpAccessMethods { parameters: AccessMethodsGetParameters, options: AccessMethodsGetOptions = {}, ): AccessMethodsGetRequest { - assertValidRequestParameters(parameters, '/access_methods/get', true) + assertValidRequestParameters(parameters, '/access_methods/get', true, [ + 'access_method_id', + ]) return new SeamHttpRequest(this, { pathname: '/access_methods/get', @@ -266,6 +272,7 @@ export class SeamHttpAccessMethods { parameters, '/access_methods/get_related', true, + ['access_method_ids'], ) return new SeamHttpRequest(this, { @@ -284,7 +291,7 @@ export class SeamHttpAccessMethods { parameters: AccessMethodsListParameters, options: AccessMethodsListOptions = {}, ): AccessMethodsListRequest { - assertValidRequestParameters(parameters, '/access_methods/list', true) + assertValidRequestParameters(parameters, '/access_methods/list', true, []) return new SeamHttpRequest(this, { pathname: '/access_methods/list', @@ -306,6 +313,7 @@ export class SeamHttpAccessMethods { parameters, '/access_methods/unlock_door', true, + ['access_method_id', 'acs_entrance_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/access-methods/unmanaged/unmanaged.ts b/src/lib/routes/access-methods/unmanaged/unmanaged.ts index c7911261..e6a0d615 100644 --- a/src/lib/routes/access-methods/unmanaged/unmanaged.ts +++ b/src/lib/routes/access-methods/unmanaged/unmanaged.ts @@ -170,6 +170,7 @@ export class SeamHttpAccessMethodsUnmanaged { parameters, '/access_methods/unmanaged/get', true, + ['access_method_id'], ) return new SeamHttpRequest(this, { @@ -192,6 +193,7 @@ export class SeamHttpAccessMethodsUnmanaged { parameters, '/access_methods/unmanaged/list', true, + ['access_grant_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/acs/access-groups/access-groups.ts b/src/lib/routes/acs/access-groups/access-groups.ts index 8c7d8e04..715ca00d 100644 --- a/src/lib/routes/acs/access-groups/access-groups.ts +++ b/src/lib/routes/acs/access-groups/access-groups.ts @@ -172,6 +172,7 @@ export class SeamHttpAcsAccessGroups { parameters, '/acs/access_groups/add_user', true, + ['acs_access_group_id'], ) return new SeamHttpRequest(this, { @@ -190,7 +191,12 @@ export class SeamHttpAcsAccessGroups { parameters: AcsAccessGroupsDeleteParameters, options: AcsAccessGroupsDeleteOptions = {}, ): AcsAccessGroupsDeleteRequest { - assertValidRequestParameters(parameters, '/acs/access_groups/delete', true) + assertValidRequestParameters( + parameters, + '/acs/access_groups/delete', + true, + ['acs_access_group_id'], + ) return new SeamHttpRequest(this, { pathname: '/acs/access_groups/delete', @@ -208,7 +214,9 @@ export class SeamHttpAcsAccessGroups { parameters: AcsAccessGroupsGetParameters, options: AcsAccessGroupsGetOptions = {}, ): AcsAccessGroupsGetRequest { - assertValidRequestParameters(parameters, '/acs/access_groups/get', true) + assertValidRequestParameters(parameters, '/acs/access_groups/get', true, [ + 'acs_access_group_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/access_groups/get', @@ -226,7 +234,12 @@ export class SeamHttpAcsAccessGroups { parameters?: AcsAccessGroupsListParameters, options: AcsAccessGroupsListOptions = {}, ): AcsAccessGroupsListRequest { - assertValidRequestParameters(parameters, '/acs/access_groups/list', false) + assertValidRequestParameters( + parameters, + '/acs/access_groups/list', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/acs/access_groups/list', @@ -248,6 +261,7 @@ export class SeamHttpAcsAccessGroups { parameters, '/acs/access_groups/list_accessible_entrances', true, + ['acs_access_group_id'], ) return new SeamHttpRequest(this, { @@ -270,6 +284,7 @@ export class SeamHttpAcsAccessGroups { parameters, '/acs/access_groups/list_users', true, + ['acs_access_group_id'], ) return new SeamHttpRequest(this, { @@ -292,6 +307,7 @@ export class SeamHttpAcsAccessGroups { parameters, '/acs/access_groups/remove_user', true, + ['acs_access_group_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/acs/credentials/credentials.ts b/src/lib/routes/acs/credentials/credentials.ts index cfd3add1..e2281373 100644 --- a/src/lib/routes/acs/credentials/credentials.ts +++ b/src/lib/routes/acs/credentials/credentials.ts @@ -167,7 +167,9 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsAssignParameters, options: AcsCredentialsAssignOptions = {}, ): AcsCredentialsAssignRequest { - assertValidRequestParameters(parameters, '/acs/credentials/assign', true) + assertValidRequestParameters(parameters, '/acs/credentials/assign', true, [ + 'acs_credential_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/credentials/assign', @@ -185,7 +187,9 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsCreateParameters, options: AcsCredentialsCreateOptions = {}, ): AcsCredentialsCreateRequest { - assertValidRequestParameters(parameters, '/acs/credentials/create', true) + assertValidRequestParameters(parameters, '/acs/credentials/create', true, [ + 'access_method', + ]) return new SeamHttpRequest(this, { pathname: '/acs/credentials/create', @@ -203,7 +207,9 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsDeleteParameters, options: AcsCredentialsDeleteOptions = {}, ): AcsCredentialsDeleteRequest { - assertValidRequestParameters(parameters, '/acs/credentials/delete', true) + assertValidRequestParameters(parameters, '/acs/credentials/delete', true, [ + 'acs_credential_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/credentials/delete', @@ -221,7 +227,9 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsGetParameters, options: AcsCredentialsGetOptions = {}, ): AcsCredentialsGetRequest { - assertValidRequestParameters(parameters, '/acs/credentials/get', true) + assertValidRequestParameters(parameters, '/acs/credentials/get', true, [ + 'acs_credential_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/credentials/get', @@ -239,7 +247,7 @@ export class SeamHttpAcsCredentials { parameters?: AcsCredentialsListParameters, options: AcsCredentialsListOptions = {}, ): AcsCredentialsListRequest { - assertValidRequestParameters(parameters, '/acs/credentials/list', false) + assertValidRequestParameters(parameters, '/acs/credentials/list', false, []) return new SeamHttpRequest(this, { pathname: '/acs/credentials/list', @@ -261,6 +269,7 @@ export class SeamHttpAcsCredentials { parameters, '/acs/credentials/list_accessible_entrances', true, + ['acs_credential_id'], ) return new SeamHttpRequest(this, { @@ -279,7 +288,12 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsUnassignParameters, options: AcsCredentialsUnassignOptions = {}, ): AcsCredentialsUnassignRequest { - assertValidRequestParameters(parameters, '/acs/credentials/unassign', true) + assertValidRequestParameters( + parameters, + '/acs/credentials/unassign', + true, + ['acs_credential_id'], + ) return new SeamHttpRequest(this, { pathname: '/acs/credentials/unassign', @@ -297,7 +311,9 @@ export class SeamHttpAcsCredentials { parameters: AcsCredentialsUpdateParameters, options: AcsCredentialsUpdateOptions = {}, ): AcsCredentialsUpdateRequest { - assertValidRequestParameters(parameters, '/acs/credentials/update', true) + assertValidRequestParameters(parameters, '/acs/credentials/update', true, [ + 'acs_credential_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/credentials/update', diff --git a/src/lib/routes/acs/encoders/encoders.ts b/src/lib/routes/acs/encoders/encoders.ts index 44f39ef0..bcb15ade 100644 --- a/src/lib/routes/acs/encoders/encoders.ts +++ b/src/lib/routes/acs/encoders/encoders.ts @@ -178,6 +178,7 @@ export class SeamHttpAcsEncoders { parameters, '/acs/encoders/encode_credential', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { @@ -200,7 +201,9 @@ export class SeamHttpAcsEncoders { parameters: AcsEncodersGetParameters, options: AcsEncodersGetOptions = {}, ): AcsEncodersGetRequest { - assertValidRequestParameters(parameters, '/acs/encoders/get', true) + assertValidRequestParameters(parameters, '/acs/encoders/get', true, [ + 'acs_encoder_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/encoders/get', @@ -218,7 +221,7 @@ export class SeamHttpAcsEncoders { parameters?: AcsEncodersListParameters, options: AcsEncodersListOptions = {}, ): AcsEncodersListRequest { - assertValidRequestParameters(parameters, '/acs/encoders/list', false) + assertValidRequestParameters(parameters, '/acs/encoders/list', false, []) return new SeamHttpRequest(this, { pathname: '/acs/encoders/list', @@ -240,6 +243,7 @@ export class SeamHttpAcsEncoders { parameters, '/acs/encoders/scan_credential', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { @@ -266,6 +270,7 @@ export class SeamHttpAcsEncoders { parameters, '/acs/encoders/scan_to_assign_credential', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/acs/encoders/simulate/simulate.ts b/src/lib/routes/acs/encoders/simulate/simulate.ts index 7956d433..01d3d2a7 100644 --- a/src/lib/routes/acs/encoders/simulate/simulate.ts +++ b/src/lib/routes/acs/encoders/simulate/simulate.ts @@ -169,6 +169,7 @@ export class SeamHttpAcsEncodersSimulate { parameters, '/acs/encoders/simulate/next_credential_encode_will_fail', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { @@ -191,6 +192,7 @@ export class SeamHttpAcsEncodersSimulate { parameters, '/acs/encoders/simulate/next_credential_encode_will_succeed', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { @@ -213,6 +215,7 @@ export class SeamHttpAcsEncodersSimulate { parameters, '/acs/encoders/simulate/next_credential_scan_will_fail', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { @@ -235,6 +238,7 @@ export class SeamHttpAcsEncodersSimulate { parameters, '/acs/encoders/simulate/next_credential_scan_will_succeed', true, + ['acs_encoder_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/acs/entrances/entrances.ts b/src/lib/routes/acs/entrances/entrances.ts index c0f64e83..1c5d93ef 100644 --- a/src/lib/routes/acs/entrances/entrances.ts +++ b/src/lib/routes/acs/entrances/entrances.ts @@ -169,7 +169,9 @@ export class SeamHttpAcsEntrances { parameters: AcsEntrancesGetParameters, options: AcsEntrancesGetOptions = {}, ): AcsEntrancesGetRequest { - assertValidRequestParameters(parameters, '/acs/entrances/get', true) + assertValidRequestParameters(parameters, '/acs/entrances/get', true, [ + 'acs_entrance_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/entrances/get', @@ -191,6 +193,7 @@ export class SeamHttpAcsEntrances { parameters, '/acs/entrances/grant_access', true, + ['acs_entrance_id'], ) return new SeamHttpRequest(this, { @@ -209,7 +212,7 @@ export class SeamHttpAcsEntrances { parameters?: AcsEntrancesListParameters, options: AcsEntrancesListOptions = {}, ): AcsEntrancesListRequest { - assertValidRequestParameters(parameters, '/acs/entrances/list', false) + assertValidRequestParameters(parameters, '/acs/entrances/list', false, []) return new SeamHttpRequest(this, { pathname: '/acs/entrances/list', @@ -231,6 +234,7 @@ export class SeamHttpAcsEntrances { parameters, '/acs/entrances/list_credentials_with_access', true, + ['acs_entrance_id'], ) return new SeamHttpRequest(this, { @@ -249,7 +253,10 @@ export class SeamHttpAcsEntrances { parameters: AcsEntrancesUnlockParameters, options: AcsEntrancesUnlockOptions = {}, ): AcsEntrancesUnlockRequest { - assertValidRequestParameters(parameters, '/acs/entrances/unlock', true) + assertValidRequestParameters(parameters, '/acs/entrances/unlock', true, [ + 'acs_credential_id', + 'acs_entrance_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/entrances/unlock', diff --git a/src/lib/routes/acs/systems/systems.ts b/src/lib/routes/acs/systems/systems.ts index 8b276a90..d6571f37 100644 --- a/src/lib/routes/acs/systems/systems.ts +++ b/src/lib/routes/acs/systems/systems.ts @@ -166,7 +166,9 @@ export class SeamHttpAcsSystems { parameters: AcsSystemsGetParameters, options: AcsSystemsGetOptions = {}, ): AcsSystemsGetRequest { - assertValidRequestParameters(parameters, '/acs/systems/get', true) + assertValidRequestParameters(parameters, '/acs/systems/get', true, [ + 'acs_system_id', + ]) return new SeamHttpRequest(this, { pathname: '/acs/systems/get', @@ -186,7 +188,7 @@ export class SeamHttpAcsSystems { parameters?: AcsSystemsListParameters, options: AcsSystemsListOptions = {}, ): AcsSystemsListRequest { - assertValidRequestParameters(parameters, '/acs/systems/list', false) + assertValidRequestParameters(parameters, '/acs/systems/list', false, []) return new SeamHttpRequest(this, { pathname: '/acs/systems/list', @@ -210,6 +212,7 @@ export class SeamHttpAcsSystems { parameters, '/acs/systems/list_compatible_credential_manager_acs_systems', true, + ['acs_system_id'], ) return new SeamHttpRequest(this, { @@ -232,6 +235,7 @@ export class SeamHttpAcsSystems { parameters, '/acs/systems/report_devices', true, + ['acs_system_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/acs/users/users.ts b/src/lib/routes/acs/users/users.ts index a773ec7f..72a2bc78 100644 --- a/src/lib/routes/acs/users/users.ts +++ b/src/lib/routes/acs/users/users.ts @@ -174,6 +174,7 @@ export class SeamHttpAcsUsers { parameters, '/acs/users/add_to_access_group', true, + ['acs_access_group_id', 'acs_user_id'], ) return new SeamHttpRequest(this, { @@ -192,7 +193,10 @@ export class SeamHttpAcsUsers { parameters: AcsUsersCreateParameters, options: AcsUsersCreateOptions = {}, ): AcsUsersCreateRequest { - assertValidRequestParameters(parameters, '/acs/users/create', true) + assertValidRequestParameters(parameters, '/acs/users/create', true, [ + 'acs_system_id', + 'full_name', + ]) return new SeamHttpRequest(this, { pathname: '/acs/users/create', @@ -210,7 +214,7 @@ export class SeamHttpAcsUsers { parameters: AcsUsersDeleteParameters, options: AcsUsersDeleteOptions = {}, ): AcsUsersDeleteRequest { - assertValidRequestParameters(parameters, '/acs/users/delete', true) + assertValidRequestParameters(parameters, '/acs/users/delete', true, []) return new SeamHttpRequest(this, { pathname: '/acs/users/delete', @@ -228,7 +232,7 @@ export class SeamHttpAcsUsers { parameters: AcsUsersGetParameters, options: AcsUsersGetOptions = {}, ): AcsUsersGetRequest { - assertValidRequestParameters(parameters, '/acs/users/get', true) + assertValidRequestParameters(parameters, '/acs/users/get', true, []) return new SeamHttpRequest(this, { pathname: '/acs/users/get', @@ -246,7 +250,7 @@ export class SeamHttpAcsUsers { parameters?: AcsUsersListParameters, options: AcsUsersListOptions = {}, ): AcsUsersListRequest { - assertValidRequestParameters(parameters, '/acs/users/list', false) + assertValidRequestParameters(parameters, '/acs/users/list', false, []) return new SeamHttpRequest(this, { pathname: '/acs/users/list', @@ -268,6 +272,7 @@ export class SeamHttpAcsUsers { parameters, '/acs/users/list_accessible_entrances', true, + [], ) return new SeamHttpRequest(this, { @@ -290,6 +295,7 @@ export class SeamHttpAcsUsers { parameters, '/acs/users/remove_from_access_group', true, + ['acs_access_group_id'], ) return new SeamHttpRequest(this, { @@ -312,6 +318,7 @@ export class SeamHttpAcsUsers { parameters, '/acs/users/revoke_access_to_all_entrances', true, + [], ) return new SeamHttpRequest(this, { @@ -330,7 +337,7 @@ export class SeamHttpAcsUsers { parameters: AcsUsersSuspendParameters, options: AcsUsersSuspendOptions = {}, ): AcsUsersSuspendRequest { - assertValidRequestParameters(parameters, '/acs/users/suspend', true) + assertValidRequestParameters(parameters, '/acs/users/suspend', true, []) return new SeamHttpRequest(this, { pathname: '/acs/users/suspend', @@ -348,7 +355,7 @@ export class SeamHttpAcsUsers { parameters: AcsUsersUnsuspendParameters, options: AcsUsersUnsuspendOptions = {}, ): AcsUsersUnsuspendRequest { - assertValidRequestParameters(parameters, '/acs/users/unsuspend', true) + assertValidRequestParameters(parameters, '/acs/users/unsuspend', true, []) return new SeamHttpRequest(this, { pathname: '/acs/users/unsuspend', @@ -366,7 +373,7 @@ export class SeamHttpAcsUsers { parameters: AcsUsersUpdateParameters, options: AcsUsersUpdateOptions = {}, ): AcsUsersUpdateRequest { - assertValidRequestParameters(parameters, '/acs/users/update', true) + assertValidRequestParameters(parameters, '/acs/users/update', true, []) return new SeamHttpRequest(this, { pathname: '/acs/users/update', diff --git a/src/lib/routes/action-attempts/action-attempts.ts b/src/lib/routes/action-attempts/action-attempts.ts index 19678edc..d38d6852 100644 --- a/src/lib/routes/action-attempts/action-attempts.ts +++ b/src/lib/routes/action-attempts/action-attempts.ts @@ -166,7 +166,9 @@ export class SeamHttpActionAttempts { parameters: ActionAttemptsGetParameters, options: ActionAttemptsGetOptions = {}, ): ActionAttemptsGetRequest { - assertValidRequestParameters(parameters, '/action_attempts/get', true) + assertValidRequestParameters(parameters, '/action_attempts/get', true, [ + 'action_attempt_id', + ]) return new SeamHttpRequest(this, { pathname: '/action_attempts/get', @@ -188,7 +190,7 @@ export class SeamHttpActionAttempts { parameters?: ActionAttemptsListParameters, options: ActionAttemptsListOptions = {}, ): ActionAttemptsListRequest { - assertValidRequestParameters(parameters, '/action_attempts/list', false) + assertValidRequestParameters(parameters, '/action_attempts/list', false, []) return new SeamHttpRequest(this, { pathname: '/action_attempts/list', diff --git a/src/lib/routes/client-sessions/client-sessions.ts b/src/lib/routes/client-sessions/client-sessions.ts index 6444ea9c..287e4356 100644 --- a/src/lib/routes/client-sessions/client-sessions.ts +++ b/src/lib/routes/client-sessions/client-sessions.ts @@ -168,7 +168,12 @@ export class SeamHttpClientSessions { parameters?: ClientSessionsCreateParameters, options: ClientSessionsCreateOptions = {}, ): ClientSessionsCreateRequest { - assertValidRequestParameters(parameters, '/client_sessions/create', false) + assertValidRequestParameters( + parameters, + '/client_sessions/create', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/client_sessions/create', @@ -186,7 +191,9 @@ export class SeamHttpClientSessions { parameters: ClientSessionsDeleteParameters, options: ClientSessionsDeleteOptions = {}, ): ClientSessionsDeleteRequest { - assertValidRequestParameters(parameters, '/client_sessions/delete', true) + assertValidRequestParameters(parameters, '/client_sessions/delete', true, [ + 'client_session_id', + ]) return new SeamHttpRequest(this, { pathname: '/client_sessions/delete', @@ -204,7 +211,7 @@ export class SeamHttpClientSessions { parameters?: ClientSessionsGetParameters, options: ClientSessionsGetOptions = {}, ): ClientSessionsGetRequest { - assertValidRequestParameters(parameters, '/client_sessions/get', false) + assertValidRequestParameters(parameters, '/client_sessions/get', false, []) return new SeamHttpRequest(this, { pathname: '/client_sessions/get', @@ -226,6 +233,7 @@ export class SeamHttpClientSessions { parameters, '/client_sessions/get_or_create', false, + [], ) return new SeamHttpRequest(this, { @@ -248,6 +256,7 @@ export class SeamHttpClientSessions { parameters, '/client_sessions/grant_access', true, + [], ) return new SeamHttpRequest(this, { @@ -266,7 +275,7 @@ export class SeamHttpClientSessions { parameters?: ClientSessionsListParameters, options: ClientSessionsListOptions = {}, ): ClientSessionsListRequest { - assertValidRequestParameters(parameters, '/client_sessions/list', false) + assertValidRequestParameters(parameters, '/client_sessions/list', false, []) return new SeamHttpRequest(this, { pathname: '/client_sessions/list', @@ -286,7 +295,9 @@ export class SeamHttpClientSessions { parameters: ClientSessionsRevokeParameters, options: ClientSessionsRevokeOptions = {}, ): ClientSessionsRevokeRequest { - assertValidRequestParameters(parameters, '/client_sessions/revoke', true) + assertValidRequestParameters(parameters, '/client_sessions/revoke', true, [ + 'client_session_id', + ]) return new SeamHttpRequest(this, { pathname: '/client_sessions/revoke', diff --git a/src/lib/routes/connect-webviews/connect-webviews.ts b/src/lib/routes/connect-webviews/connect-webviews.ts index 79249092..f5469d0b 100644 --- a/src/lib/routes/connect-webviews/connect-webviews.ts +++ b/src/lib/routes/connect-webviews/connect-webviews.ts @@ -172,7 +172,12 @@ export class SeamHttpConnectWebviews { parameters?: ConnectWebviewsCreateParameters, options: ConnectWebviewsCreateOptions = {}, ): ConnectWebviewsCreateRequest { - assertValidRequestParameters(parameters, '/connect_webviews/create', false) + assertValidRequestParameters( + parameters, + '/connect_webviews/create', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/connect_webviews/create', @@ -192,7 +197,9 @@ export class SeamHttpConnectWebviews { parameters: ConnectWebviewsDeleteParameters, options: ConnectWebviewsDeleteOptions = {}, ): ConnectWebviewsDeleteRequest { - assertValidRequestParameters(parameters, '/connect_webviews/delete', true) + assertValidRequestParameters(parameters, '/connect_webviews/delete', true, [ + 'connect_webview_id', + ]) return new SeamHttpRequest(this, { pathname: '/connect_webviews/delete', @@ -212,7 +219,9 @@ export class SeamHttpConnectWebviews { parameters: ConnectWebviewsGetParameters, options: ConnectWebviewsGetOptions = {}, ): ConnectWebviewsGetRequest { - assertValidRequestParameters(parameters, '/connect_webviews/get', true) + assertValidRequestParameters(parameters, '/connect_webviews/get', true, [ + 'connect_webview_id', + ]) return new SeamHttpRequest(this, { pathname: '/connect_webviews/get', @@ -230,7 +239,12 @@ export class SeamHttpConnectWebviews { parameters?: ConnectWebviewsListParameters, options: ConnectWebviewsListOptions = {}, ): ConnectWebviewsListRequest { - assertValidRequestParameters(parameters, '/connect_webviews/list', false) + assertValidRequestParameters( + parameters, + '/connect_webviews/list', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/connect_webviews/list', diff --git a/src/lib/routes/connected-accounts/connected-accounts.ts b/src/lib/routes/connected-accounts/connected-accounts.ts index 0a127b49..2c27c6ef 100644 --- a/src/lib/routes/connected-accounts/connected-accounts.ts +++ b/src/lib/routes/connected-accounts/connected-accounts.ts @@ -182,7 +182,12 @@ export class SeamHttpConnectedAccounts { parameters: ConnectedAccountsDeleteParameters, options: ConnectedAccountsDeleteOptions = {}, ): ConnectedAccountsDeleteRequest { - assertValidRequestParameters(parameters, '/connected_accounts/delete', true) + assertValidRequestParameters( + parameters, + '/connected_accounts/delete', + true, + ['connected_account_id'], + ) return new SeamHttpRequest(this, { pathname: '/connected_accounts/delete', @@ -200,7 +205,12 @@ export class SeamHttpConnectedAccounts { parameters: ConnectedAccountsGetParameters, options: ConnectedAccountsGetOptions = {}, ): ConnectedAccountsGetRequest { - assertValidRequestParameters(parameters, '/connected_accounts/get', true) + assertValidRequestParameters( + parameters, + '/connected_accounts/get', + true, + [], + ) return new SeamHttpRequest(this, { pathname: '/connected_accounts/get', @@ -218,7 +228,12 @@ export class SeamHttpConnectedAccounts { parameters?: ConnectedAccountsListParameters, options: ConnectedAccountsListOptions = {}, ): ConnectedAccountsListRequest { - assertValidRequestParameters(parameters, '/connected_accounts/list', false) + assertValidRequestParameters( + parameters, + '/connected_accounts/list', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/connected_accounts/list', @@ -236,7 +251,9 @@ export class SeamHttpConnectedAccounts { parameters: ConnectedAccountsSyncParameters, options: ConnectedAccountsSyncOptions = {}, ): ConnectedAccountsSyncRequest { - assertValidRequestParameters(parameters, '/connected_accounts/sync', true) + assertValidRequestParameters(parameters, '/connected_accounts/sync', true, [ + 'connected_account_id', + ]) return new SeamHttpRequest(this, { pathname: '/connected_accounts/sync', @@ -254,7 +271,12 @@ export class SeamHttpConnectedAccounts { parameters: ConnectedAccountsUpdateParameters, options: ConnectedAccountsUpdateOptions = {}, ): ConnectedAccountsUpdateRequest { - assertValidRequestParameters(parameters, '/connected_accounts/update', true) + assertValidRequestParameters( + parameters, + '/connected_accounts/update', + true, + ['connected_account_id'], + ) return new SeamHttpRequest(this, { pathname: '/connected_accounts/update', diff --git a/src/lib/routes/connected-accounts/simulate/simulate.ts b/src/lib/routes/connected-accounts/simulate/simulate.ts index ffafeb59..c2e9abdd 100644 --- a/src/lib/routes/connected-accounts/simulate/simulate.ts +++ b/src/lib/routes/connected-accounts/simulate/simulate.ts @@ -172,6 +172,7 @@ export class SeamHttpConnectedAccountsSimulate { parameters, '/connected_accounts/simulate/disconnect', true, + ['connected_account_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/customers/customers.ts b/src/lib/routes/customers/customers.ts index 132d0fda..fff611eb 100644 --- a/src/lib/routes/customers/customers.ts +++ b/src/lib/routes/customers/customers.ts @@ -166,7 +166,12 @@ export class SeamHttpCustomers { parameters?: CustomersCreatePortalParameters, options: CustomersCreatePortalOptions = {}, ): CustomersCreatePortalRequest { - assertValidRequestParameters(parameters, '/customers/create_portal', false) + assertValidRequestParameters( + parameters, + '/customers/create_portal', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/customers/create_portal', @@ -185,7 +190,12 @@ export class SeamHttpCustomers { parameters?: CustomersDeleteDataParameters, options: CustomersDeleteDataOptions = {}, ): CustomersDeleteDataRequest { - assertValidRequestParameters(parameters, '/customers/delete_data', false) + assertValidRequestParameters( + parameters, + '/customers/delete_data', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/customers/delete_data', @@ -203,7 +213,9 @@ export class SeamHttpCustomers { parameters: CustomersPushDataParameters, options: CustomersPushDataOptions = {}, ): CustomersPushDataRequest { - assertValidRequestParameters(parameters, '/customers/push_data', true) + assertValidRequestParameters(parameters, '/customers/push_data', true, [ + 'customer_key', + ]) return new SeamHttpRequest(this, { pathname: '/customers/push_data', diff --git a/src/lib/routes/devices/devices.ts b/src/lib/routes/devices/devices.ts index 4df90aee..e00550cd 100644 --- a/src/lib/routes/devices/devices.ts +++ b/src/lib/routes/devices/devices.ts @@ -183,7 +183,7 @@ export class SeamHttpDevices { parameters: DevicesGetParameters, options: DevicesGetOptions = {}, ): DevicesGetRequest { - assertValidRequestParameters(parameters, '/devices/get', true) + assertValidRequestParameters(parameters, '/devices/get', true, []) return new SeamHttpRequest(this, { pathname: '/devices/get', @@ -201,7 +201,7 @@ export class SeamHttpDevices { parameters?: DevicesListParameters, options: DevicesListOptions = {}, ): DevicesListRequest { - assertValidRequestParameters(parameters, '/devices/list', false) + assertValidRequestParameters(parameters, '/devices/list', false, []) return new SeamHttpRequest(this, { pathname: '/devices/list', @@ -227,6 +227,7 @@ export class SeamHttpDevices { parameters, '/devices/list_device_providers', false, + [], ) return new SeamHttpRequest(this, { @@ -249,6 +250,7 @@ export class SeamHttpDevices { parameters, '/devices/report_provider_metadata', true, + ['devices'], ) return new SeamHttpRequest(this, { @@ -269,7 +271,9 @@ export class SeamHttpDevices { parameters: DevicesUpdateParameters, options: DevicesUpdateOptions = {}, ): DevicesUpdateRequest { - assertValidRequestParameters(parameters, '/devices/update', true) + assertValidRequestParameters(parameters, '/devices/update', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/devices/update', diff --git a/src/lib/routes/devices/simulate/simulate.ts b/src/lib/routes/devices/simulate/simulate.ts index 6e328cc2..d8e07aab 100644 --- a/src/lib/routes/devices/simulate/simulate.ts +++ b/src/lib/routes/devices/simulate/simulate.ts @@ -165,7 +165,12 @@ export class SeamHttpDevicesSimulate { parameters: DevicesSimulateConnectParameters, options: DevicesSimulateConnectOptions = {}, ): DevicesSimulateConnectRequest { - assertValidRequestParameters(parameters, '/devices/simulate/connect', true) + assertValidRequestParameters( + parameters, + '/devices/simulate/connect', + true, + ['device_id'], + ) return new SeamHttpRequest(this, { pathname: '/devices/simulate/connect', @@ -190,6 +195,7 @@ export class SeamHttpDevicesSimulate { parameters, '/devices/simulate/connect_to_hub', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -212,6 +218,7 @@ export class SeamHttpDevicesSimulate { parameters, '/devices/simulate/disconnect', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -238,6 +245,7 @@ export class SeamHttpDevicesSimulate { parameters, '/devices/simulate/disconnect_from_hub', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -262,6 +270,7 @@ export class SeamHttpDevicesSimulate { parameters, '/devices/simulate/paid_subscription', true, + ['device_id', 'is_expired'], ) return new SeamHttpRequest(this, { @@ -280,7 +289,9 @@ export class SeamHttpDevicesSimulate { parameters: DevicesSimulateRemoveParameters, options: DevicesSimulateRemoveOptions = {}, ): DevicesSimulateRemoveRequest { - assertValidRequestParameters(parameters, '/devices/simulate/remove', true) + assertValidRequestParameters(parameters, '/devices/simulate/remove', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/devices/simulate/remove', diff --git a/src/lib/routes/devices/unmanaged/unmanaged.ts b/src/lib/routes/devices/unmanaged/unmanaged.ts index ee0b303c..3a9df460 100644 --- a/src/lib/routes/devices/unmanaged/unmanaged.ts +++ b/src/lib/routes/devices/unmanaged/unmanaged.ts @@ -173,7 +173,7 @@ export class SeamHttpDevicesUnmanaged { parameters: DevicesUnmanagedGetParameters, options: DevicesUnmanagedGetOptions = {}, ): DevicesUnmanagedGetRequest { - assertValidRequestParameters(parameters, '/devices/unmanaged/get', true) + assertValidRequestParameters(parameters, '/devices/unmanaged/get', true, []) return new SeamHttpRequest(this, { pathname: '/devices/unmanaged/get', @@ -193,7 +193,12 @@ export class SeamHttpDevicesUnmanaged { parameters?: DevicesUnmanagedListParameters, options: DevicesUnmanagedListOptions = {}, ): DevicesUnmanagedListRequest { - assertValidRequestParameters(parameters, '/devices/unmanaged/list', false) + assertValidRequestParameters( + parameters, + '/devices/unmanaged/list', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/devices/unmanaged/list', @@ -213,7 +218,12 @@ export class SeamHttpDevicesUnmanaged { parameters: DevicesUnmanagedUpdateParameters, options: DevicesUnmanagedUpdateOptions = {}, ): DevicesUnmanagedUpdateRequest { - assertValidRequestParameters(parameters, '/devices/unmanaged/update', true) + assertValidRequestParameters( + parameters, + '/devices/unmanaged/update', + true, + ['device_id'], + ) return new SeamHttpRequest(this, { pathname: '/devices/unmanaged/update', diff --git a/src/lib/routes/events/events.ts b/src/lib/routes/events/events.ts index 551ffc88..653cf2e7 100644 --- a/src/lib/routes/events/events.ts +++ b/src/lib/routes/events/events.ts @@ -169,7 +169,7 @@ export class SeamHttpEvents { parameters: EventsGetParameters, options: EventsGetOptions = {}, ): EventsGetRequest { - assertValidRequestParameters(parameters, '/events/get', true) + assertValidRequestParameters(parameters, '/events/get', true, []) return new SeamHttpRequest(this, { pathname: '/events/get', @@ -187,7 +187,7 @@ export class SeamHttpEvents { parameters: EventsListParameters, options: EventsListOptions = {}, ): EventsListRequest { - assertValidRequestParameters(parameters, '/events/list', true) + assertValidRequestParameters(parameters, '/events/list', true, []) return new SeamHttpRequest(this, { pathname: '/events/list', diff --git a/src/lib/routes/instant-keys/instant-keys.ts b/src/lib/routes/instant-keys/instant-keys.ts index 83202768..e58985da 100644 --- a/src/lib/routes/instant-keys/instant-keys.ts +++ b/src/lib/routes/instant-keys/instant-keys.ts @@ -169,7 +169,9 @@ export class SeamHttpInstantKeys { parameters: InstantKeysDeleteParameters, options: InstantKeysDeleteOptions = {}, ): InstantKeysDeleteRequest { - assertValidRequestParameters(parameters, '/instant_keys/delete', true) + assertValidRequestParameters(parameters, '/instant_keys/delete', true, [ + 'instant_key_id', + ]) return new SeamHttpRequest(this, { pathname: '/instant_keys/delete', @@ -187,7 +189,7 @@ export class SeamHttpInstantKeys { parameters: InstantKeysGetParameters, options: InstantKeysGetOptions = {}, ): InstantKeysGetRequest { - assertValidRequestParameters(parameters, '/instant_keys/get', true) + assertValidRequestParameters(parameters, '/instant_keys/get', true, []) return new SeamHttpRequest(this, { pathname: '/instant_keys/get', @@ -205,7 +207,7 @@ export class SeamHttpInstantKeys { parameters?: InstantKeysListParameters, options: InstantKeysListOptions = {}, ): InstantKeysListRequest { - assertValidRequestParameters(parameters, '/instant_keys/list', false) + assertValidRequestParameters(parameters, '/instant_keys/list', false, []) return new SeamHttpRequest(this, { pathname: '/instant_keys/list', diff --git a/src/lib/routes/locks/locks.ts b/src/lib/routes/locks/locks.ts index e27e2a94..2b49c47d 100644 --- a/src/lib/routes/locks/locks.ts +++ b/src/lib/routes/locks/locks.ts @@ -177,7 +177,12 @@ export class SeamHttpLocks { parameters: LocksConfigureAutoLockParameters, options: LocksConfigureAutoLockOptions = {}, ): LocksConfigureAutoLockRequest { - assertValidRequestParameters(parameters, '/locks/configure_auto_lock', true) + assertValidRequestParameters( + parameters, + '/locks/configure_auto_lock', + true, + ['auto_lock_enabled', 'device_id'], + ) return new SeamHttpRequest(this, { pathname: '/locks/configure_auto_lock', @@ -200,7 +205,7 @@ export class SeamHttpLocks { parameters: LocksGetParameters, options: LocksGetOptions = {}, ): LocksGetRequest { - assertValidRequestParameters(parameters, '/locks/get', true) + assertValidRequestParameters(parameters, '/locks/get', true, []) return new SeamHttpRequest(this, { pathname: '/locks/get', @@ -218,7 +223,7 @@ export class SeamHttpLocks { parameters?: LocksListParameters, options: LocksListOptions = {}, ): LocksListRequest { - assertValidRequestParameters(parameters, '/locks/list', false) + assertValidRequestParameters(parameters, '/locks/list', false, []) return new SeamHttpRequest(this, { pathname: '/locks/list', @@ -236,7 +241,9 @@ export class SeamHttpLocks { parameters: LocksLockDoorParameters, options: LocksLockDoorOptions = {}, ): LocksLockDoorRequest { - assertValidRequestParameters(parameters, '/locks/lock_door', true) + assertValidRequestParameters(parameters, '/locks/lock_door', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/locks/lock_door', @@ -258,7 +265,9 @@ export class SeamHttpLocks { parameters: LocksUnlockDoorParameters, options: LocksUnlockDoorOptions = {}, ): LocksUnlockDoorRequest { - assertValidRequestParameters(parameters, '/locks/unlock_door', true) + assertValidRequestParameters(parameters, '/locks/unlock_door', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/locks/unlock_door', diff --git a/src/lib/routes/locks/simulate/simulate.ts b/src/lib/routes/locks/simulate/simulate.ts index 78e874c9..109a9dfa 100644 --- a/src/lib/routes/locks/simulate/simulate.ts +++ b/src/lib/routes/locks/simulate/simulate.ts @@ -171,6 +171,7 @@ export class SeamHttpLocksSimulate { parameters, '/locks/simulate/keypad_code_entry', true, + ['code', 'device_id'], ) return new SeamHttpRequest(this, { @@ -197,6 +198,7 @@ export class SeamHttpLocksSimulate { parameters, '/locks/simulate/manual_lock_via_keypad', true, + ['device_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/noise-sensors/noise-sensors.ts b/src/lib/routes/noise-sensors/noise-sensors.ts index 7ad61463..1ebf8f1a 100644 --- a/src/lib/routes/noise-sensors/noise-sensors.ts +++ b/src/lib/routes/noise-sensors/noise-sensors.ts @@ -180,7 +180,7 @@ export class SeamHttpNoiseSensors { parameters?: NoiseSensorsListParameters, options: NoiseSensorsListOptions = {}, ): NoiseSensorsListRequest { - assertValidRequestParameters(parameters, '/noise_sensors/list', false) + assertValidRequestParameters(parameters, '/noise_sensors/list', false, []) return new SeamHttpRequest(this, { pathname: '/noise_sensors/list', diff --git a/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts b/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts index 4392a287..2c0a37f1 100644 --- a/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts +++ b/src/lib/routes/noise-sensors/noise-thresholds/noise-thresholds.ts @@ -173,6 +173,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { parameters, '/noise_sensors/noise_thresholds/create', true, + ['device_id', 'ends_daily_at', 'starts_daily_at'], ) return new SeamHttpRequest(this, { @@ -195,6 +196,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { parameters, '/noise_sensors/noise_thresholds/delete', true, + ['device_id', 'noise_threshold_id'], ) return new SeamHttpRequest(this, { @@ -217,6 +219,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { parameters, '/noise_sensors/noise_thresholds/get', true, + ['noise_threshold_id'], ) return new SeamHttpRequest(this, { @@ -239,6 +242,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { parameters, '/noise_sensors/noise_thresholds/list', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -261,6 +265,7 @@ export class SeamHttpNoiseSensorsNoiseThresholds { parameters, '/noise_sensors/noise_thresholds/update', true, + ['device_id', 'noise_threshold_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/noise-sensors/simulate/simulate.ts b/src/lib/routes/noise-sensors/simulate/simulate.ts index cb303a1b..f2666bc3 100644 --- a/src/lib/routes/noise-sensors/simulate/simulate.ts +++ b/src/lib/routes/noise-sensors/simulate/simulate.ts @@ -169,6 +169,7 @@ export class SeamHttpNoiseSensorsSimulate { parameters, '/noise_sensors/simulate/trigger_noise_threshold', true, + ['device_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/phones/phones.ts b/src/lib/routes/phones/phones.ts index e472b266..4400ed5b 100644 --- a/src/lib/routes/phones/phones.ts +++ b/src/lib/routes/phones/phones.ts @@ -172,7 +172,9 @@ export class SeamHttpPhones { parameters: PhonesDeactivateParameters, options: PhonesDeactivateOptions = {}, ): PhonesDeactivateRequest { - assertValidRequestParameters(parameters, '/phones/deactivate', true) + assertValidRequestParameters(parameters, '/phones/deactivate', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/phones/deactivate', @@ -190,7 +192,7 @@ export class SeamHttpPhones { parameters: PhonesGetParameters, options: PhonesGetOptions = {}, ): PhonesGetRequest { - assertValidRequestParameters(parameters, '/phones/get', true) + assertValidRequestParameters(parameters, '/phones/get', true, ['device_id']) return new SeamHttpRequest(this, { pathname: '/phones/get', @@ -208,7 +210,7 @@ export class SeamHttpPhones { parameters?: PhonesListParameters, options: PhonesListOptions = {}, ): PhonesListRequest { - assertValidRequestParameters(parameters, '/phones/list', false) + assertValidRequestParameters(parameters, '/phones/list', false, []) return new SeamHttpRequest(this, { pathname: '/phones/list', diff --git a/src/lib/routes/phones/simulate/simulate.ts b/src/lib/routes/phones/simulate/simulate.ts index 56240298..05965c07 100644 --- a/src/lib/routes/phones/simulate/simulate.ts +++ b/src/lib/routes/phones/simulate/simulate.ts @@ -170,6 +170,7 @@ export class SeamHttpPhonesSimulate { parameters, '/phones/simulate/create_sandbox_phone', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/spaces/spaces.ts b/src/lib/routes/spaces/spaces.ts index 7e0431fc..507d8190 100644 --- a/src/lib/routes/spaces/spaces.ts +++ b/src/lib/routes/spaces/spaces.ts @@ -170,7 +170,12 @@ export class SeamHttpSpaces { parameters: SpacesAddAcsEntrancesParameters, options: SpacesAddAcsEntrancesOptions = {}, ): SpacesAddAcsEntrancesRequest { - assertValidRequestParameters(parameters, '/spaces/add_acs_entrances', true) + assertValidRequestParameters( + parameters, + '/spaces/add_acs_entrances', + true, + ['acs_entrance_ids', 'space_id'], + ) return new SeamHttpRequest(this, { pathname: '/spaces/add_acs_entrances', @@ -192,6 +197,7 @@ export class SeamHttpSpaces { parameters, '/spaces/add_connected_account', true, + ['connected_account_id', 'space_id'], ) return new SeamHttpRequest(this, { @@ -210,7 +216,10 @@ export class SeamHttpSpaces { parameters: SpacesAddDevicesParameters, options: SpacesAddDevicesOptions = {}, ): SpacesAddDevicesRequest { - assertValidRequestParameters(parameters, '/spaces/add_devices', true) + assertValidRequestParameters(parameters, '/spaces/add_devices', true, [ + 'device_ids', + 'space_id', + ]) return new SeamHttpRequest(this, { pathname: '/spaces/add_devices', @@ -228,7 +237,7 @@ export class SeamHttpSpaces { parameters: SpacesCreateParameters, options: SpacesCreateOptions = {}, ): SpacesCreateRequest { - assertValidRequestParameters(parameters, '/spaces/create', true) + assertValidRequestParameters(parameters, '/spaces/create', true, ['name']) return new SeamHttpRequest(this, { pathname: '/spaces/create', @@ -246,7 +255,9 @@ export class SeamHttpSpaces { parameters: SpacesDeleteParameters, options: SpacesDeleteOptions = {}, ): SpacesDeleteRequest { - assertValidRequestParameters(parameters, '/spaces/delete', true) + assertValidRequestParameters(parameters, '/spaces/delete', true, [ + 'space_id', + ]) return new SeamHttpRequest(this, { pathname: '/spaces/delete', @@ -264,7 +275,7 @@ export class SeamHttpSpaces { parameters: SpacesGetParameters, options: SpacesGetOptions = {}, ): SpacesGetRequest { - assertValidRequestParameters(parameters, '/spaces/get', true) + assertValidRequestParameters(parameters, '/spaces/get', true, []) return new SeamHttpRequest(this, { pathname: '/spaces/get', @@ -282,7 +293,7 @@ export class SeamHttpSpaces { parameters: SpacesGetRelatedParameters, options: SpacesGetRelatedOptions = {}, ): SpacesGetRelatedRequest { - assertValidRequestParameters(parameters, '/spaces/get_related', true) + assertValidRequestParameters(parameters, '/spaces/get_related', true, []) return new SeamHttpRequest(this, { pathname: '/spaces/get_related', @@ -300,7 +311,7 @@ export class SeamHttpSpaces { parameters?: SpacesListParameters, options: SpacesListOptions = {}, ): SpacesListRequest { - assertValidRequestParameters(parameters, '/spaces/list', false) + assertValidRequestParameters(parameters, '/spaces/list', false, []) return new SeamHttpRequest(this, { pathname: '/spaces/list', @@ -322,6 +333,7 @@ export class SeamHttpSpaces { parameters, '/spaces/remove_acs_entrances', true, + ['acs_entrance_ids', 'space_id'], ) return new SeamHttpRequest(this, { @@ -344,6 +356,7 @@ export class SeamHttpSpaces { parameters, '/spaces/remove_connected_account', true, + ['connected_account_id', 'space_id'], ) return new SeamHttpRequest(this, { @@ -362,7 +375,10 @@ export class SeamHttpSpaces { parameters: SpacesRemoveDevicesParameters, options: SpacesRemoveDevicesOptions = {}, ): SpacesRemoveDevicesRequest { - assertValidRequestParameters(parameters, '/spaces/remove_devices', true) + assertValidRequestParameters(parameters, '/spaces/remove_devices', true, [ + 'device_ids', + 'space_id', + ]) return new SeamHttpRequest(this, { pathname: '/spaces/remove_devices', @@ -380,7 +396,7 @@ export class SeamHttpSpaces { parameters?: SpacesUpdateParameters, options: SpacesUpdateOptions = {}, ): SpacesUpdateRequest { - assertValidRequestParameters(parameters, '/spaces/update', false) + assertValidRequestParameters(parameters, '/spaces/update', false, []) return new SeamHttpRequest(this, { pathname: '/spaces/update', diff --git a/src/lib/routes/thermostats/daily-programs/daily-programs.ts b/src/lib/routes/thermostats/daily-programs/daily-programs.ts index e7755886..6cbab61e 100644 --- a/src/lib/routes/thermostats/daily-programs/daily-programs.ts +++ b/src/lib/routes/thermostats/daily-programs/daily-programs.ts @@ -175,6 +175,7 @@ export class SeamHttpThermostatsDailyPrograms { parameters, '/thermostats/daily_programs/create', true, + ['device_id', 'name', 'periods'], ) return new SeamHttpRequest(this, { @@ -197,6 +198,7 @@ export class SeamHttpThermostatsDailyPrograms { parameters, '/thermostats/daily_programs/delete', true, + ['thermostat_daily_program_id'], ) return new SeamHttpRequest(this, { @@ -219,6 +221,7 @@ export class SeamHttpThermostatsDailyPrograms { parameters, '/thermostats/daily_programs/update', true, + ['name', 'periods', 'thermostat_daily_program_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/thermostats/schedules/schedules.ts b/src/lib/routes/thermostats/schedules/schedules.ts index 202eede1..bea1ced5 100644 --- a/src/lib/routes/thermostats/schedules/schedules.ts +++ b/src/lib/routes/thermostats/schedules/schedules.ts @@ -170,6 +170,7 @@ export class SeamHttpThermostatsSchedules { parameters, '/thermostats/schedules/create', true, + ['climate_preset_key', 'device_id', 'ends_at', 'starts_at'], ) return new SeamHttpRequest(this, { @@ -192,6 +193,7 @@ export class SeamHttpThermostatsSchedules { parameters, '/thermostats/schedules/delete', true, + ['thermostat_schedule_id'], ) return new SeamHttpRequest(this, { @@ -210,7 +212,12 @@ export class SeamHttpThermostatsSchedules { parameters: ThermostatsSchedulesGetParameters, options: ThermostatsSchedulesGetOptions = {}, ): ThermostatsSchedulesGetRequest { - assertValidRequestParameters(parameters, '/thermostats/schedules/get', true) + assertValidRequestParameters( + parameters, + '/thermostats/schedules/get', + true, + ['thermostat_schedule_id'], + ) return new SeamHttpRequest(this, { pathname: '/thermostats/schedules/get', @@ -232,6 +239,7 @@ export class SeamHttpThermostatsSchedules { parameters, '/thermostats/schedules/list', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -254,6 +262,7 @@ export class SeamHttpThermostatsSchedules { parameters, '/thermostats/schedules/update', true, + ['thermostat_schedule_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/thermostats/simulate/simulate.ts b/src/lib/routes/thermostats/simulate/simulate.ts index e21c4d25..3bcad89a 100644 --- a/src/lib/routes/thermostats/simulate/simulate.ts +++ b/src/lib/routes/thermostats/simulate/simulate.ts @@ -169,6 +169,7 @@ export class SeamHttpThermostatsSimulate { parameters, '/thermostats/simulate/hvac_mode_adjusted', true, + ['device_id', 'hvac_mode'], ) return new SeamHttpRequest(this, { @@ -191,6 +192,7 @@ export class SeamHttpThermostatsSimulate { parameters, '/thermostats/simulate/temperature_reached', true, + ['device_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/thermostats/thermostats.ts b/src/lib/routes/thermostats/thermostats.ts index 9c7db633..d0be628d 100644 --- a/src/lib/routes/thermostats/thermostats.ts +++ b/src/lib/routes/thermostats/thermostats.ts @@ -191,6 +191,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/activate_climate_preset', true, + ['climate_preset_key', 'device_id'], ) return new SeamHttpRequest(this, { @@ -213,7 +214,9 @@ export class SeamHttpThermostats { parameters: ThermostatsCoolParameters, options: ThermostatsCoolOptions = {}, ): ThermostatsCoolRequest { - assertValidRequestParameters(parameters, '/thermostats/cool', true) + assertValidRequestParameters(parameters, '/thermostats/cool', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/thermostats/cool', @@ -239,6 +242,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/create_climate_preset', true, + ['climate_preset_key', 'device_id'], ) return new SeamHttpRequest(this, { @@ -261,6 +265,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/delete_climate_preset', true, + ['climate_preset_key', 'device_id'], ) return new SeamHttpRequest(this, { @@ -279,7 +284,9 @@ export class SeamHttpThermostats { parameters: ThermostatsHeatParameters, options: ThermostatsHeatOptions = {}, ): ThermostatsHeatRequest { - assertValidRequestParameters(parameters, '/thermostats/heat', true) + assertValidRequestParameters(parameters, '/thermostats/heat', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/thermostats/heat', @@ -301,7 +308,9 @@ export class SeamHttpThermostats { parameters: ThermostatsHeatCoolParameters, options: ThermostatsHeatCoolOptions = {}, ): ThermostatsHeatCoolRequest { - assertValidRequestParameters(parameters, '/thermostats/heat_cool', true) + assertValidRequestParameters(parameters, '/thermostats/heat_cool', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/thermostats/heat_cool', @@ -323,7 +332,7 @@ export class SeamHttpThermostats { parameters?: ThermostatsListParameters, options: ThermostatsListOptions = {}, ): ThermostatsListRequest { - assertValidRequestParameters(parameters, '/thermostats/list', false) + assertValidRequestParameters(parameters, '/thermostats/list', false, []) return new SeamHttpRequest(this, { pathname: '/thermostats/list', @@ -341,7 +350,9 @@ export class SeamHttpThermostats { parameters: ThermostatsOffParameters, options: ThermostatsOffOptions = {}, ): ThermostatsOffRequest { - assertValidRequestParameters(parameters, '/thermostats/off', true) + assertValidRequestParameters(parameters, '/thermostats/off', true, [ + 'device_id', + ]) return new SeamHttpRequest(this, { pathname: '/thermostats/off', @@ -367,6 +378,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/set_fallback_climate_preset', true, + ['climate_preset_key', 'device_id'], ) return new SeamHttpRequest(this, { @@ -385,7 +397,12 @@ export class SeamHttpThermostats { parameters: ThermostatsSetFanModeParameters, options: ThermostatsSetFanModeOptions = {}, ): ThermostatsSetFanModeRequest { - assertValidRequestParameters(parameters, '/thermostats/set_fan_mode', true) + assertValidRequestParameters( + parameters, + '/thermostats/set_fan_mode', + true, + ['device_id'], + ) return new SeamHttpRequest(this, { pathname: '/thermostats/set_fan_mode', @@ -407,7 +424,12 @@ export class SeamHttpThermostats { parameters: ThermostatsSetHvacModeParameters, options: ThermostatsSetHvacModeOptions = {}, ): ThermostatsSetHvacModeRequest { - assertValidRequestParameters(parameters, '/thermostats/set_hvac_mode', true) + assertValidRequestParameters( + parameters, + '/thermostats/set_hvac_mode', + true, + ['device_id', 'hvac_mode_setting'], + ) return new SeamHttpRequest(this, { pathname: '/thermostats/set_hvac_mode', @@ -433,6 +455,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/set_temperature_threshold', true, + ['device_id'], ) return new SeamHttpRequest(this, { @@ -455,6 +478,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/update_climate_preset', true, + ['climate_preset_key', 'device_id'], ) return new SeamHttpRequest(this, { @@ -477,6 +501,7 @@ export class SeamHttpThermostats { parameters, '/thermostats/update_weekly_program', true, + ['device_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/user-identities/unmanaged/unmanaged.ts b/src/lib/routes/user-identities/unmanaged/unmanaged.ts index b2d0cf7d..9bbc6522 100644 --- a/src/lib/routes/user-identities/unmanaged/unmanaged.ts +++ b/src/lib/routes/user-identities/unmanaged/unmanaged.ts @@ -173,6 +173,7 @@ export class SeamHttpUserIdentitiesUnmanaged { parameters, '/user_identities/unmanaged/get', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -195,6 +196,7 @@ export class SeamHttpUserIdentitiesUnmanaged { parameters, '/user_identities/unmanaged/list', false, + [], ) return new SeamHttpRequest(this, { @@ -219,6 +221,7 @@ export class SeamHttpUserIdentitiesUnmanaged { parameters, '/user_identities/unmanaged/update', true, + ['is_managed', 'user_identity_id'], ) return new SeamHttpRequest(this, { diff --git a/src/lib/routes/user-identities/user-identities.ts b/src/lib/routes/user-identities/user-identities.ts index 360b5a55..8af4bb64 100644 --- a/src/lib/routes/user-identities/user-identities.ts +++ b/src/lib/routes/user-identities/user-identities.ts @@ -191,6 +191,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/add_acs_user', true, + ['acs_user_id'], ) return new SeamHttpRequest(this, { @@ -209,7 +210,12 @@ export class SeamHttpUserIdentities { parameters?: UserIdentitiesCreateParameters, options: UserIdentitiesCreateOptions = {}, ): UserIdentitiesCreateRequest { - assertValidRequestParameters(parameters, '/user_identities/create', false) + assertValidRequestParameters( + parameters, + '/user_identities/create', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/user_identities/create', @@ -227,7 +233,9 @@ export class SeamHttpUserIdentities { parameters: UserIdentitiesDeleteParameters, options: UserIdentitiesDeleteOptions = {}, ): UserIdentitiesDeleteRequest { - assertValidRequestParameters(parameters, '/user_identities/delete', true) + assertValidRequestParameters(parameters, '/user_identities/delete', true, [ + 'user_identity_id', + ]) return new SeamHttpRequest(this, { pathname: '/user_identities/delete', @@ -249,6 +257,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/generate_instant_key', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -267,7 +276,7 @@ export class SeamHttpUserIdentities { parameters: UserIdentitiesGetParameters, options: UserIdentitiesGetOptions = {}, ): UserIdentitiesGetRequest { - assertValidRequestParameters(parameters, '/user_identities/get', true) + assertValidRequestParameters(parameters, '/user_identities/get', true, []) return new SeamHttpRequest(this, { pathname: '/user_identities/get', @@ -289,6 +298,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/grant_access_to_device', true, + ['device_id', 'user_identity_id'], ) return new SeamHttpRequest(this, { @@ -307,7 +317,7 @@ export class SeamHttpUserIdentities { parameters?: UserIdentitiesListParameters, options: UserIdentitiesListOptions = {}, ): UserIdentitiesListRequest { - assertValidRequestParameters(parameters, '/user_identities/list', false) + assertValidRequestParameters(parameters, '/user_identities/list', false, []) return new SeamHttpRequest(this, { pathname: '/user_identities/list', @@ -329,6 +339,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/list_accessible_devices', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -351,6 +362,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/list_accessible_entrances', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -373,6 +385,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/list_acs_systems', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -395,6 +408,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/list_acs_users', true, + ['user_identity_id'], ) return new SeamHttpRequest(this, { @@ -417,6 +431,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/remove_acs_user', true, + ['acs_user_id', 'user_identity_id'], ) return new SeamHttpRequest(this, { @@ -439,6 +454,7 @@ export class SeamHttpUserIdentities { parameters, '/user_identities/revoke_access_to_device', true, + ['device_id', 'user_identity_id'], ) return new SeamHttpRequest(this, { @@ -457,7 +473,9 @@ export class SeamHttpUserIdentities { parameters: UserIdentitiesUpdateParameters, options: UserIdentitiesUpdateOptions = {}, ): UserIdentitiesUpdateRequest { - assertValidRequestParameters(parameters, '/user_identities/update', true) + assertValidRequestParameters(parameters, '/user_identities/update', true, [ + 'user_identity_id', + ]) return new SeamHttpRequest(this, { pathname: '/user_identities/update', diff --git a/src/lib/routes/webhooks/webhooks.ts b/src/lib/routes/webhooks/webhooks.ts index c8676c0e..afa9c7d5 100644 --- a/src/lib/routes/webhooks/webhooks.ts +++ b/src/lib/routes/webhooks/webhooks.ts @@ -166,7 +166,7 @@ export class SeamHttpWebhooks { parameters: WebhooksCreateParameters, options: WebhooksCreateOptions = {}, ): WebhooksCreateRequest { - assertValidRequestParameters(parameters, '/webhooks/create', true) + assertValidRequestParameters(parameters, '/webhooks/create', true, ['url']) return new SeamHttpRequest(this, { pathname: '/webhooks/create', @@ -184,7 +184,9 @@ export class SeamHttpWebhooks { parameters: WebhooksDeleteParameters, options: WebhooksDeleteOptions = {}, ): WebhooksDeleteRequest { - assertValidRequestParameters(parameters, '/webhooks/delete', true) + assertValidRequestParameters(parameters, '/webhooks/delete', true, [ + 'webhook_id', + ]) return new SeamHttpRequest(this, { pathname: '/webhooks/delete', @@ -202,7 +204,9 @@ export class SeamHttpWebhooks { parameters: WebhooksGetParameters, options: WebhooksGetOptions = {}, ): WebhooksGetRequest { - assertValidRequestParameters(parameters, '/webhooks/get', true) + assertValidRequestParameters(parameters, '/webhooks/get', true, [ + 'webhook_id', + ]) return new SeamHttpRequest(this, { pathname: '/webhooks/get', @@ -220,7 +224,7 @@ export class SeamHttpWebhooks { parameters?: WebhooksListParameters, options: WebhooksListOptions = {}, ): WebhooksListRequest { - assertValidRequestParameters(parameters, '/webhooks/list', false) + assertValidRequestParameters(parameters, '/webhooks/list', false, []) return new SeamHttpRequest(this, { pathname: '/webhooks/list', @@ -238,7 +242,10 @@ export class SeamHttpWebhooks { parameters: WebhooksUpdateParameters, options: WebhooksUpdateOptions = {}, ): WebhooksUpdateRequest { - assertValidRequestParameters(parameters, '/webhooks/update', true) + assertValidRequestParameters(parameters, '/webhooks/update', true, [ + 'event_types', + 'webhook_id', + ]) return new SeamHttpRequest(this, { pathname: '/webhooks/update', diff --git a/src/lib/routes/workspaces/workspaces.ts b/src/lib/routes/workspaces/workspaces.ts index eabff583..7f9db951 100644 --- a/src/lib/routes/workspaces/workspaces.ts +++ b/src/lib/routes/workspaces/workspaces.ts @@ -168,7 +168,9 @@ export class SeamHttpWorkspaces { parameters: WorkspacesCreateParameters, options: WorkspacesCreateOptions = {}, ): WorkspacesCreateRequest { - assertValidRequestParameters(parameters, '/workspaces/create', true) + assertValidRequestParameters(parameters, '/workspaces/create', true, [ + 'name', + ]) return new SeamHttpRequest(this, { pathname: '/workspaces/create', @@ -186,7 +188,7 @@ export class SeamHttpWorkspaces { parameters?: WorkspacesGetParameters, options: WorkspacesGetOptions = {}, ): WorkspacesGetRequest { - assertValidRequestParameters(parameters, '/workspaces/get', false) + assertValidRequestParameters(parameters, '/workspaces/get', false, []) return new SeamHttpRequest(this, { pathname: '/workspaces/get', @@ -204,7 +206,7 @@ export class SeamHttpWorkspaces { parameters?: WorkspacesListParameters, options: WorkspacesListOptions = {}, ): WorkspacesListRequest { - assertValidRequestParameters(parameters, '/workspaces/list', false) + assertValidRequestParameters(parameters, '/workspaces/list', false, []) return new SeamHttpRequest(this, { pathname: '/workspaces/list', @@ -222,7 +224,12 @@ export class SeamHttpWorkspaces { parameters?: WorkspacesResetSandboxParameters, options: WorkspacesResetSandboxOptions = {}, ): WorkspacesResetSandboxRequest { - assertValidRequestParameters(parameters, '/workspaces/reset_sandbox', false) + assertValidRequestParameters( + parameters, + '/workspaces/reset_sandbox', + false, + [], + ) return new SeamHttpRequest(this, { pathname: '/workspaces/reset_sandbox', @@ -244,7 +251,7 @@ export class SeamHttpWorkspaces { parameters?: WorkspacesUpdateParameters, options: WorkspacesUpdateOptions = {}, ): WorkspacesUpdateRequest { - assertValidRequestParameters(parameters, '/workspaces/update', false) + assertValidRequestParameters(parameters, '/workspaces/update', false, []) return new SeamHttpRequest(this, { pathname: '/workspaces/update', diff --git a/test/seam/connect/request-parameters.test.ts b/test/seam/connect/request-parameters.test.ts index 8e9551e1..7a48ca24 100644 --- a/test/seam/connect/request-parameters.test.ts +++ b/test/seam/connect/request-parameters.test.ts @@ -28,6 +28,44 @@ test('endpoint rejects missing required parameters', (t) => { ) }) +test('endpoint rejects missing individually required parameters', (t) => { + t.throws( + () => { + // @ts-expect-error Verify required schema properties at runtime. + seam.devices.reportProviderMetadata({}) + }, + { + instanceOf: TypeError, + message: + 'Required parameters missing for /devices/report_provider_metadata: devices', + }, + ) + + t.throws( + () => { + // @ts-expect-error Verify required schema properties cannot be undefined. + seam.devices.reportProviderMetadata({ devices: undefined }) + }, + { + instanceOf: TypeError, + message: + 'Required parameters missing for /devices/report_provider_metadata: devices', + }, + ) + + t.throws( + () => { + // @ts-expect-error Verify all missing required parameters are reported. + seam.accessCodes.simulate.createUnmanagedAccessCode({ code: '1234' }) + }, + { + instanceOf: TypeError, + message: + 'Required parameters missing for /access_codes/simulate/create_unmanaged_access_code: device_id, name', + }, + ) +}) + test('endpoint rejects an empty required parameters object', (t) => { t.throws( () => {