From 4bdf96d07dfc26262c12e06a58bb22d06dfed652 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 10:38:58 -0500 Subject: [PATCH 1/8] Add API docstrings to generated Python code --- .../layouts/partials/abstract-route-class.hbs | 4 + .../layouts/partials/resource-dataclass.hbs | 1 + codegen/layouts/partials/route-method.hbs | 1 + codegen/layouts/route.hbs | 3 + codegen/lib/class-model.ts | 8 + codegen/lib/layouts/resources.ts | 89 ++- codegen/lib/layouts/route.ts | 65 +- codegen/lib/routes.ts | 14 +- seam/resources/access_code.py | 82 +++ seam/resources/access_grant.py | 62 ++ seam/resources/access_method.py | 56 ++ seam/resources/acs_access_group.py | 54 ++ seam/resources/acs_credential.py | 92 +++ seam/resources/acs_encoder.py | 36 ++ seam/resources/acs_entrance.py | 79 +++ seam/resources/acs_system.py | 66 ++ seam/resources/acs_user.py | 81 +++ seam/resources/action_attempt.py | 17 + seam/resources/batch.py | 151 +++++ seam/resources/client_session.py | 46 ++ seam/resources/connect_webview.py | 69 ++ seam/resources/connected_account.py | 56 ++ seam/resources/customer_portal.py | 21 + seam/resources/device.py | 113 ++++ seam/resources/device_provider.py | 73 +++ seam/resources/instant_key.py | 31 + seam/resources/noise_threshold.py | 23 + seam/resources/pagination.py | 11 + seam/resources/phone.py | 32 + seam/resources/seam_event.py | 276 ++++++++ seam/resources/space.py | 35 + seam/resources/thermostat_daily_program.py | 20 + seam/resources/thermostat_schedule.py | 35 + seam/resources/unmanaged_access_code.py | 60 ++ seam/resources/unmanaged_device.py | 98 +++ seam/resources/user_identity.py | 35 + seam/resources/webhook.py | 14 + seam/resources/workspace.py | 32 + seam/routes/access_codes.py | 590 +++++++++++++++++ seam/routes/access_codes_simulate.py | 26 + seam/routes/access_codes_unmanaged.py | 142 ++++ seam/routes/access_grants.py | 296 +++++++++ seam/routes/access_grants_unmanaged.py | 74 +++ seam/routes/access_methods.py | 182 ++++++ seam/routes/access_methods_unmanaged.py | 34 + seam/routes/acs_access_groups.py | 122 ++++ seam/routes/acs_credentials.py | 238 +++++++ seam/routes/acs_encoders.py | 148 +++++ seam/routes/acs_encoders_simulate.py | 74 +++ seam/routes/acs_entrances.py | 148 +++++ seam/routes/acs_systems.py | 82 +++ seam/routes/acs_users.py | 334 ++++++++++ seam/routes/action_attempts.py | 52 ++ seam/routes/client_sessions.py | 216 +++++++ seam/routes/connect_webviews.py | 154 +++++ seam/routes/connected_accounts.py | 132 ++++ seam/routes/connected_accounts_simulate.py | 8 + seam/routes/customers.py | 314 +++++++++ seam/routes/devices.py | 200 ++++++ seam/routes/devices_simulate.py | 72 +++ seam/routes/devices_unmanaged.py | 160 +++++ seam/routes/events.py | 202 ++++++ seam/routes/instant_keys.py | 42 ++ seam/routes/locks.py | 202 ++++++ seam/routes/locks_simulate.py | 46 ++ seam/routes/noise_sensors.py | 104 +++ seam/routes/noise_sensors_noise_thresholds.py | 130 ++++ seam/routes/noise_sensors_simulate.py | 8 + seam/routes/phones.py | 42 ++ seam/routes/phones_simulate.py | 32 + seam/routes/spaces.py | 276 ++++++++ seam/routes/thermostats.py | 610 ++++++++++++++++++ seam/routes/thermostats_daily_programs.py | 66 ++ seam/routes/thermostats_schedules.py | 136 ++++ seam/routes/thermostats_simulate.py | 58 ++ seam/routes/user_identities.py | 294 +++++++++ seam/routes/user_identities_unmanaged.py | 58 ++ seam/routes/webhooks.py | 64 ++ seam/routes/workspaces.py | 136 ++++ 79 files changed, 8333 insertions(+), 12 deletions(-) diff --git a/codegen/layouts/partials/abstract-route-class.hbs b/codegen/layouts/partials/abstract-route-class.hbs index 7fd5ab5..25e7513 100644 --- a/codegen/layouts/partials/abstract-route-class.hbs +++ b/codegen/layouts/partials/abstract-route-class.hbs @@ -1,4 +1,7 @@ class {{className}}(abc.ABC): +{{#if docstring}} + """{{{docstring}}}""" +{{/if}} {{#if showPass}} pass {{/if}} @@ -13,5 +16,6 @@ class {{className}}(abc.ABC): @abc.abstractmethod def {{name}}(self,{{#if hasParams}} *,{{/if}} {{signatureParams}}) -> {{returnType}}: + """{{{docstring}}}""" raise NotImplementedError() {{/each}} diff --git a/codegen/layouts/partials/resource-dataclass.hbs b/codegen/layouts/partials/resource-dataclass.hbs index cae5fdc..f856b1e 100644 --- a/codegen/layouts/partials/resource-dataclass.hbs +++ b/codegen/layouts/partials/resource-dataclass.hbs @@ -1,5 +1,6 @@ @dataclass class {{className}}: + """{{{docstring}}}""" {{#each properties}} {{safeName}}: {{type}} {{/each}} diff --git a/codegen/layouts/partials/route-method.hbs b/codegen/layouts/partials/route-method.hbs index 80b78dd..746c824 100644 --- a/codegen/layouts/partials/route-method.hbs +++ b/codegen/layouts/partials/route-method.hbs @@ -1,4 +1,5 @@ def {{name}}(self,{{#if hasParams}} *,{{/if}} {{signatureParams}}) -> {{returnType}}: + """{{{docstring}}}""" json_payload = {} {{#each params}} diff --git a/codegen/layouts/route.hbs b/codegen/layouts/route.hbs index 8ab8b8d..79e4150 100644 --- a/codegen/layouts/route.hbs +++ b/codegen/layouts/route.hbs @@ -16,6 +16,9 @@ from ..modules.action_attempts import resolve_action_attempt class {{className}}({{abstractClassName}}): +{{#if docstring}} + """{{{docstring}}}""" +{{/if}} def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.client = client self.defaults = defaults diff --git a/codegen/lib/class-model.ts b/codegen/lib/class-model.ts index 2b7832a..464803d 100644 --- a/codegen/lib/class-model.ts +++ b/codegen/lib/class-model.ts @@ -4,6 +4,9 @@ export interface ClassMethodParameter { name: string type: string + description: string + isDeprecated: boolean + deprecationMessage: string position?: number | undefined required?: boolean | undefined } @@ -11,6 +14,10 @@ export interface ClassMethodParameter { export interface ClassMethod { methodName: string path: string + description: string + responseDescription: string + isDeprecated: boolean + deprecationMessage: string parameters: ClassMethodParameter[] returnPath: string[] returnResource: string @@ -24,6 +31,7 @@ export interface ChildClassIdentifier { export interface ClassModel { name: string namespace: string + isDeprecated: boolean methods: ClassMethod[] childClassIdentifiers: ChildClassIdentifier[] } diff --git a/codegen/lib/layouts/resources.ts b/codegen/lib/layouts/resources.ts index 0a07b6b..70bc515 100644 --- a/codegen/lib/layouts/resources.ts +++ b/codegen/lib/layouts/resources.ts @@ -56,6 +56,7 @@ const toSafeIdentifier = (name: string): string => export interface ResourceLayoutContext { className: string moduleName: string + docstring: string properties: Array<{ name: string safeName: string @@ -64,6 +65,44 @@ export interface ResourceLayoutContext { }> } +const cleanDoc = (value: string): string => + value.trim().replaceAll('"""', '\\"\\"\\"') + +const createResourceDocstring = ( + description: string, + isDeprecated: boolean, + deprecationMessage: string, + properties: Property[], +): string => { + const lines = [cleanDoc(description)] + for (const property of properties) { + const deprecated = property.isDeprecated + ? `Deprecated${property.deprecationMessage === '' ? '.' : `: ${cleanDoc(property.deprecationMessage)}`}` + : '' + lines.push( + '', + `:ivar ${toSafeIdentifier(property.name)}: ${[ + deprecated, + cleanDoc(property.description), + ] + .filter(Boolean) + .join(' ')}`, + `:vartype ${toSafeIdentifier(property.name)}: ${mapPropertyToPythonType(property)}`, + ) + } + if (isDeprecated) { + lines.push( + '', + '.. deprecated::', + ` ${cleanDoc(deprecationMessage) || 'This resource is deprecated.'}`, + ) + } + return lines + .filter((line, index) => line !== '' || index !== 0) + .join('\n') + .replaceAll('\n', '\n ') +} + export interface ResourcesIndexLayoutContext { resources: Array<{ className: string; moduleName: string }> } @@ -84,29 +123,61 @@ const mergeResourceProperties = (resources: Resource[]): Property[] => { export const getResourceLayoutContexts = ( blueprint: Blueprint, ): ResourceLayoutContext[] => { - const models = new Map() + const models = new Map< + string, + { + properties: Property[] + description: string + isDeprecated: boolean + deprecationMessage: string + } + >() for (const resource of blueprint.resources) { - models.set(resource.resourceType, resource.properties) + models.set(resource.resourceType, resource) } // The event and action attempt variants merge into a single dataclass with // the union of the variant properties, overriding the base resource schema. - models.set( - 'action_attempt', - mergeResourceProperties(blueprint.actionAttempts), - ) - models.set('event', mergeResourceProperties(blueprint.events)) + const actionAttemptModel = models.get('action_attempt') + models.set('action_attempt', { + properties: mergeResourceProperties(blueprint.actionAttempts), + description: + actionAttemptModel?.description ?? + 'An attempt to perform an action in the Seam API.', + isDeprecated: actionAttemptModel?.isDeprecated ?? false, + deprecationMessage: actionAttemptModel?.deprecationMessage ?? '', + }) + const eventModel = models.get('event') + models.set('event', { + properties: mergeResourceProperties(blueprint.events), + description: eventModel?.description ?? 'An event emitted by the Seam API.', + isDeprecated: eventModel?.isDeprecated ?? false, + deprecationMessage: eventModel?.deprecationMessage ?? '', + }) if (blueprint.pagination != null) { - models.set('pagination', blueprint.pagination.properties) + models.set('pagination', { + properties: blueprint.pagination.properties, + description: blueprint.pagination.description, + isDeprecated: false, + deprecationMessage: '', + }) } return [...models.entries()] - .map(([name, properties]) => { + .map(([name, model]) => { + const { properties, description, isDeprecated, deprecationMessage } = + model const className = pascalCase(convertCustomResourceName(name)) return { className, + docstring: createResourceDocstring( + description, + isDeprecated, + deprecationMessage, + properties, + ), // Derived from the class name rather than the resource type so the // module always matches the dataclass it exports (e.g. the "event" // resource becomes SeamEvent in seam_event.py). diff --git a/codegen/lib/layouts/route.ts b/codegen/lib/layouts/route.ts index 34c971f..3b9afdc 100644 --- a/codegen/lib/layouts/route.ts +++ b/codegen/lib/layouts/route.ts @@ -12,6 +12,7 @@ import { export interface MethodLayoutContext { name: string path: string + docstring: string hasParams: boolean signatureParams: string params: Array<{ name: string }> @@ -25,6 +26,7 @@ export interface MethodLayoutContext { export interface AbstractClassLayoutContext { className: string + docstring: string showPass: boolean childProperties: Array<{ namespace: string; abstractClassName: string }> methods: Array<{ @@ -32,12 +34,14 @@ export interface AbstractClassLayoutContext { hasParams: boolean signatureParams: string returnType: string + docstring: string }> } export interface RouteLayoutContext { className: string abstractClassName: string + docstring: string abstractClass: AbstractClassLayoutContext resourceImportList: string childClasses: Array<{ @@ -53,6 +57,57 @@ export interface RouteLayoutContext { const waitForActionAttemptParameter = 'wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None' +const cleanDoc = (value: string): string => + value.trim().replaceAll('"""', '\\"\\"\\"') + +const indentDoc = (value: string, spaces: number): string => + value.replaceAll('\n', `\n${' '.repeat(spaces)}`) + +const methodDocstring = ( + method: ClassMethod, + sortedParameters: ClassMethod['parameters'], +): string => { + const lines = [cleanDoc(method.description)] + + for (const parameter of sortedParameters) { + const deprecated = parameter.isDeprecated + ? `Deprecated${parameter.deprecationMessage === '' ? '.' : `: ${cleanDoc(parameter.deprecationMessage)}`}` + : '' + const description = cleanDoc(parameter.description) + lines.push( + '', + `:param ${parameter.name}: ${[deprecated, description].filter(Boolean).join(' ')}`, + `:type ${parameter.name}: ${parameter.type}`, + ) + } + + if (method.returnResource === 'ActionAttempt') { + lines.push( + '', + ':param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish.', + ':type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]]', + ) + } + + if (method.returnResource !== 'None') { + lines.push( + '', + `:returns: ${cleanDoc(method.responseDescription)}`, + `:rtype: ${method.returnResource}`, + ) + } + + if (method.isDeprecated) { + lines.push( + '', + '.. deprecated::', + ` ${cleanDoc(method.deprecationMessage) || 'This method is deprecated.'}`, + ) + } + + return lines.filter((line, index) => line !== '' || index !== 0).join('\n') +} + export const getMethodLayoutContext = ( method: ClassMethod, ): MethodLayoutContext => { @@ -83,6 +138,7 @@ export const getMethodLayoutContext = ( return { name: methodName, path, + docstring: indentDoc(methodDocstring(method, sortedParameters), 8), hasParams, signatureParams, params: sortedParameters.map(({ name }) => ({ name })), @@ -110,12 +166,17 @@ export const setRouteLayoutContext = (cls: ClassModel): RouteLayoutContext => { ) const abstractClassName = `Abstract${cls.name}` + const classDocstring = cls.isDeprecated + ? indentDoc('.. deprecated::\n This route is deprecated.', 4) + : '' return { className: cls.name, abstractClassName, + docstring: classDocstring, abstractClass: { className: abstractClassName, + docstring: classDocstring, showPass: cls.methods.length === 0 && cls.childClassIdentifiers.length === 0, childProperties: cls.childClassIdentifiers.map((i) => ({ @@ -123,9 +184,9 @@ export const setRouteLayoutContext = (cls: ClassModel): RouteLayoutContext => { abstractClassName: `Abstract${i.className}`, })), methods: cls.methods.map((method) => { - const { name, hasParams, signatureParams, returnType } = + const { name, hasParams, signatureParams, returnType, docstring } = getMethodLayoutContext(method) - return { name, hasParams, signatureParams, returnType } + return { name, hasParams, signatureParams, returnType, docstring } }), }, resourceImportList: resourceClasses.join(','), diff --git a/codegen/lib/routes.ts b/codegen/lib/routes.ts index 4b82eff..0cd065d 100644 --- a/codegen/lib/routes.ts +++ b/codegen/lib/routes.ts @@ -42,7 +42,11 @@ export const routes = ( // Namespaces group routes without endpoints of their own (e.g. /acs) but // still produce a route class so their child classes are reachable. const classEntries = [...blueprint.namespaces, ...blueprint.routes] - .map(({ path, parentPath }) => ({ path, parentPath })) + .map(({ path, parentPath, isDeprecated }) => ({ + path, + parentPath, + isDeprecated, + })) .sort((a, b) => (a.path < b.path ? -1 : 1)) const classMap = new Map() @@ -55,6 +59,7 @@ export const routes = ( classMap.set(className, { name: className, namespace, + isDeprecated: entry.isDeprecated, methods: [], childClassIdentifiers: classEntries .filter((child) => child.parentPath === entry.path) @@ -84,9 +89,16 @@ export const routes = ( cls.methods.push({ methodName: endpoint.name, path: endpoint.path, + description: endpoint.description, + responseDescription: endpoint.response.description, + isDeprecated: endpoint.isDeprecated, + deprecationMessage: endpoint.deprecationMessage, parameters: endpoint.request.parameters.map((parameter) => ({ name: parameter.name, type: mapParameterToPythonType(parameter), + description: parameter.description, + isDeprecated: parameter.isDeprecated, + deprecationMessage: parameter.deprecationMessage, position: parameter.name === idParameterName ? 0 : undefined, required: parameter.isRequired, })), diff --git a/seam/resources/access_code.py b/seam/resources/access_code.py index 549d246..8740695 100644 --- a/seam/resources/access_code.py +++ b/seam/resources/access_code.py @@ -5,6 +5,88 @@ @dataclass class AccessCode: + """Represents a smart lock [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate. + + Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/low-level-apis/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/low-level-apis/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the `type` property of the access code. Ongoing codes display as `ongoing`, whereas time-bound codes are labeled `time_bound`. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both `starts_at` and `ends_at` empty. A time-bound access code will be programmed at the `starts_at` time and removed at the `ends_at` time. + + In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + + :ivar access_code_id: Unique identifier for the access code. + :vartype access_code_id: str + + :ivar code: Code used for access. Typically, a numeric or alphanumeric string. + :vartype code: str + + :ivar common_code_key: Unique identifier for a group of access codes that share the same code. + :vartype common_code_key: str + + :ivar created_at: Date and time at which the access code was created. + :vartype created_at: str + + :ivar device_id: Unique identifier for the device associated with the access code. + :vartype device_id: str + + :ivar dormakaba_oracode_metadata: Metadata for a dormakaba Oracode managed access code. Only present for access codes from dormakaba Oracode devices. + :vartype dormakaba_oracode_metadata: Dict[str, Any] + + :ivar ends_at: Date and time after which the time-bound access code becomes inactive. + :vartype ends_at: str + + :ivar errors: Errors associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :vartype errors: List[Dict[str, Any]] + + :ivar is_backup: Indicates whether the access code is a backup code. + :vartype is_backup: bool + + :ivar is_backup_access_code_available: Indicates whether a backup access code is available for use if the primary access code is lost or compromised. + :vartype is_backup_access_code_available: bool + + :ivar is_external_modification_allowed: Indicates whether changes to the access code from external sources are permitted. + :vartype is_external_modification_allowed: bool + + :ivar is_managed: Indicates whether Seam manages the access code. + :vartype is_managed: bool + + :ivar is_offline_access_code: Indicates whether the access code is intended for use in offline scenarios. If `true`, this code can be created on a device without a network connection. + :vartype is_offline_access_code: bool + + :ivar is_one_time_use: Indicates whether the access code can only be used once. If `true`, the code becomes invalid after the first use. + :vartype is_one_time_use: bool + + :ivar is_scheduled_on_device: Indicates whether the code is set on the device according to a preconfigured schedule. + :vartype is_scheduled_on_device: bool + + :ivar is_waiting_for_code_assignment: Indicates whether the access code is waiting for a code assignment. + :vartype is_waiting_for_code_assignment: bool + + :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :vartype name: str + + :ivar pending_mutations: Collection of pending mutations for the access code. Indicates changes that Seam is in the process of pushing to the device. + :vartype pending_mutations: List[Dict[str, Any]] + + :ivar pulled_backup_access_code_id: Identifier of the pulled backup access code. Used to associate the pulled backup access code with the original access code. + :vartype pulled_backup_access_code_id: str + + :ivar starts_at: Date and time at which the time-bound access code becomes active. + :vartype starts_at: str + + :ivar status: Current status of the access code within the operational lifecycle. Values are `setting`, a transitional phase that indicates that the code is being configured or activated; `set`, which indicates that the code is active and operational; `unset`, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; `removing`, which indicates a transitional period in which the code is being deleted or made inactive; and `unknown`, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting. See also [Lifecycle of Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/lifecycle-of-access-codes). + :vartype status: str + + :ivar type: Type of the access code. `ongoing` access codes are active continuously until deactivated manually. `time_bound` access codes have a specific duration. + :vartype type: str + + :ivar warnings: Warnings associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. + :vartype workspace_id: str""" + access_code_id: str code: str common_code_key: str diff --git a/seam/resources/access_grant.py b/seam/resources/access_grant.py index 5b0977f..5143a00 100644 --- a/seam/resources/access_grant.py +++ b/seam/resources/access_grant.py @@ -5,6 +5,68 @@ @dataclass class AccessGrant: + """Represents an Access Grant. Access Grants enable you to grant a user identity access to spaces, entrances, and devices through one or more access methods, such as mobile keys, plastic cards, and PIN codes. You can create an Access Grant for an existing user identity, or you can create a new user identity *while* creating the new Access Grant. + + :ivar access_grant_id: ID of the Access Grant. + :vartype access_grant_id: str + + :ivar access_grant_key: Unique key for the access grant within the workspace. + :vartype access_grant_key: str + + :ivar access_method_ids: IDs of the access methods created for the Access Grant. + :vartype access_method_ids: List[str] + + :ivar client_session_token: Client Session Token. Only returned if the Access Grant has a mobile_key access method. + :vartype client_session_token: str + + :ivar created_at: Date and time at which the Access Grant was created. + :vartype created_at: str + + :ivar customization_profile_id: ID of the customization profile associated with the Access Grant. + :vartype customization_profile_id: str + + :ivar display_name: Display name of the Access Grant. + :vartype display_name: str + + :ivar ends_at: Date and time at which the Access Grant ends. + :vartype ends_at: str + + :ivar errors: Errors associated with the [access grant](https://docs.seam.co/use-cases/granting-access). + :vartype errors: List[Dict[str, Any]] + + :ivar instant_key_url: Instant Key URL. Only returned if the Access Grant has a single mobile_key access_method. + :vartype instant_key_url: str + + :ivar location_ids: Deprecated: Use `space_ids`. + :vartype location_ids: List[str] + + :ivar name: Name of the Access Grant. If not provided, the display name will be computed. + :vartype name: str + + :ivar pending_mutations: List of pending mutations for the access grant. This shows updates that are in progress. + :vartype pending_mutations: List[Dict[str, Any]] + + :ivar requested_access_methods: Access methods that the user requested for the Access Grant. + :vartype requested_access_methods: List[Dict[str, Any]] + + :ivar reservation_key: Reservation key for the access grant. + :vartype reservation_key: str + + :ivar space_ids: IDs of the spaces to which the Access Grant gives access. + :vartype space_ids: List[str] + + :ivar starts_at: Date and time at which the Access Grant starts. + :vartype starts_at: str + + :ivar user_identity_id: ID of user identity to which the Access Grant gives access. + :vartype user_identity_id: str + + :ivar warnings: Warnings associated with the [access grant](https://docs.seam.co/use-cases/granting-access). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the Seam workspace associated with the Access Grant. + :vartype workspace_id: str""" + access_grant_id: str access_grant_key: str access_method_ids: List[str] diff --git a/seam/resources/access_method.py b/seam/resources/access_method.py index 8347e77..01dfa74 100644 --- a/seam/resources/access_method.py +++ b/seam/resources/access_method.py @@ -5,6 +5,62 @@ @dataclass class AccessMethod: + """Represents an access method for an Access Grant. Access methods describe the modes of access, such as PIN codes, plastic cards, and mobile keys. For a mobile key, the access method also stores the URL for the associated Instant Key. + + :ivar access_method_id: ID of the access method. + :vartype access_method_id: str + + :ivar client_session_token: Token of the client session associated with the access method. + :vartype client_session_token: str + + :ivar code: The actual PIN code for code access methods. + :vartype code: str + + :ivar created_at: Date and time at which the access method was created. + :vartype created_at: str + + :ivar customization_profile_id: ID of the customization profile associated with the access method. + :vartype customization_profile_id: str + + :ivar display_name: Display name of the access method. + :vartype display_name: str + + :ivar errors: Errors associated with the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). + :vartype errors: List[Dict[str, Any]] + + :ivar instant_key_url: URL of the Instant Key for mobile key access methods. + :vartype instant_key_url: str + + :ivar is_assignment_required: Indicates whether an existing card credential must be assigned to this access method before it can be issued. Only applies to card-mode access methods on systems that support credential assignment. + :vartype is_assignment_required: bool + + :ivar is_encoding_required: Indicates whether encoding with an card encoder is required to issue or reissue the plastic card associated with the access method. + :vartype is_encoding_required: bool + + :ivar is_issued: Indicates whether the access method has been issued. + :vartype is_issued: bool + + :ivar is_ready_for_assignment: Indicates whether the access method is ready for card assignment. This is true when the access method is in card mode, has not yet been issued, and the system supports credential assignment. + :vartype is_ready_for_assignment: bool + + :ivar is_ready_for_encoding: Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. + :vartype is_ready_for_encoding: bool + + :ivar issued_at: Date and time at which the access method was issued. + :vartype issued_at: str + + :ivar mode: Access method mode. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :vartype mode: str + + :ivar pending_mutations: Pending mutations for the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). Indicates operations that are in progress. + :vartype pending_mutations: List[Dict[str, Any]] + + :ivar warnings: Warnings associated with the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the Seam workspace associated with the access method. + :vartype workspace_id: str""" + access_method_id: str client_session_token: str code: str diff --git a/seam/resources/acs_access_group.py b/seam/resources/acs_access_group.py index 099a8fd..3b9383b 100644 --- a/seam/resources/acs_access_group.py +++ b/seam/resources/acs_access_group.py @@ -5,6 +5,60 @@ @dataclass class AcsAccessGroup: + """Group that defines the entrances to which a set of users has access and, in some cases, the access schedule for these entrances and users. + + Some access control systems use [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups), which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. + + To learn whether your access control system supports access groups, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + + :ivar access_group_type: Deprecated: Use `external_type`. + :vartype access_group_type: str + + :ivar access_group_type_display_name: Deprecated: Use `external_type_display_name`. + :vartype access_group_type_display_name: str + + :ivar access_schedule: `starts_at` and `ends_at` timestamps for the access group's access. + :vartype access_schedule: Dict[str, Any] + + :ivar acs_access_group_id: ID of the access group. + :vartype acs_access_group_id: str + + :ivar acs_system_id: ID of the access control system that contains the access group. + :vartype acs_system_id: str + + :ivar connected_account_id: ID of the connected account that contains the access group. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the access group was created. + :vartype created_at: str + + :ivar display_name: Display name for the access group. + :vartype display_name: str + + :ivar errors: Errors associated with the `acs_access_group`. + :vartype errors: List[Dict[str, Any]] + + :ivar external_type: Brand-specific terminology for the access group type. + :vartype external_type: str + + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the access group type. + :vartype external_type_display_name: str + + :ivar is_managed: Indicates whether Seam manages the access group. + :vartype is_managed: bool + + :ivar name: Name of the access group. + :vartype name: str + + :ivar pending_mutations: Collection of pending mutations for the access group. Represents operations that have been requested but not yet completed on the integrated access system. + :vartype pending_mutations: List[Dict[str, Any]] + + :ivar warnings: Warnings associated with the `acs_access_group`. + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the access group. + :vartype workspace_id: str""" + access_group_type: str access_group_type_display_name: str access_schedule: Dict[str, Any] diff --git a/seam/resources/acs_credential.py b/seam/resources/acs_credential.py index 0e9e463..5c918e4 100644 --- a/seam/resources/acs_credential.py +++ b/seam/resources/acs_credential.py @@ -5,6 +5,98 @@ @dataclass class AcsCredential: + """Means by which an [access control system user](https://docs.seam.co/low-level-apis/access-systems/user-management) gains access at an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). The `acs_credential` object represents a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) that provides an ACS user access within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + An access control system generally uses digital means of access to authorize a user trying to get through a specific entrance. Examples of credentials include plastic key cards, mobile keys, biometric identifiers, and PIN codes. The electronic nature of these credentials, as well as the fact that access is centralized, enables both the rapid provisioning and rescinding of access and the ability to compile access audit logs. + + For each `acs_credential`, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. + + :ivar access_method: Access method for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :vartype access_method: str + + :ivar acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype acs_credential_id: str + + :ivar acs_credential_pool_id: ID of the credential pool to which the credential belongs. + :vartype acs_credential_pool_id: str + + :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype acs_system_id: str + + :ivar acs_user_id: ID of the [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management) to whom the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :vartype acs_user_id: str + + :ivar assa_abloy_vostio_metadata: Vostio-specific metadata for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype assa_abloy_vostio_metadata: Dict[str, Any] + + :ivar card_number: Number of the card associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype card_number: str + + :ivar code: Access (PIN) code for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype code: str + + :ivar connected_account_id: ID of the [connected account](https://docs.seam.co/core-concepts/connected-accounts) to which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was created. + :vartype created_at: str + + :ivar display_name: Display name that corresponds to the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. + :vartype display_name: str + + :ivar ends_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) validity ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :vartype ends_at: str + + :ivar errors: Errors associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype errors: List[Dict[str, Any]] + + :ivar external_type: Brand-specific terminology for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. Supported values: `pti_card`, `brivo_credential`, `hid_credential`, `visionline_card`. + :vartype external_type: str + + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. + :vartype external_type_display_name: str + + :ivar is_issued: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) has been encoded onto a card. + :vartype is_issued: bool + + :ivar is_latest_desired_state_synced_with_provider: Indicates whether the latest state of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) has been synced from Seam to the provider. + :vartype is_latest_desired_state_synced_with_provider: bool + + :ivar is_managed: Indicates whether Seam manages the credential. + :vartype is_managed: bool + + :ivar is_multi_phone_sync_credential: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :vartype is_multi_phone_sync_credential: bool + + :ivar is_one_time_use: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) can only be used once. If `true`, the code becomes invalid after the first use. + :vartype is_one_time_use: bool + + :ivar issued_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was encoded onto a card. + :vartype issued_at: str + + :ivar latest_desired_state_synced_with_provider_at: Date and time at which the state of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was most recently synced from Seam to the provider. + :vartype latest_desired_state_synced_with_provider_at: str + + :ivar parent_acs_credential_id: ID of the parent [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype parent_acs_credential_id: str + + :ivar starts_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) validity starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :vartype starts_at: str + + :ivar user_identity_id: ID of the [user identity](https://docs.seam.co/api/user_identities) to whom the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :vartype user_identity_id: str + + :ivar visionline_metadata: Visionline-specific metadata for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype visionline_metadata: Dict[str, Any] + + :ivar warnings: Warnings associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :vartype workspace_id: str""" + access_method: str acs_credential_id: str acs_credential_pool_id: str diff --git a/seam/resources/acs_encoder.py b/seam/resources/acs_encoder.py index a5d3df0..4707e3b 100644 --- a/seam/resources/acs_encoder.py +++ b/seam/resources/acs_encoder.py @@ -5,6 +5,42 @@ @dataclass class AcsEncoder: + """Represents a hardware device that encodes [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) data onto physical cards within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + Some access control systems require credentials to be encoded onto plastic key cards using a card encoder. This process involves the following two key steps: + + 1. Credential creation + Configure the access parameters for the credential. + 2. Card encoding + Write the credential data onto the card using a compatible card encoder. + + Separately, the Seam API also supports card scanning, which enables you to scan and read the encoded data on a card. You can use this action to confirm consistency with access control system records or diagnose discrepancies if needed. + + See [Working with Card Encoders and Scanners](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + To verify if your access control system requires a card encoder, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + + :ivar acs_encoder_id: ID of the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype acs_encoder_id: str + + :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype acs_system_id: str + + :ivar connected_account_id: ID of the connected account that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) was created. + :vartype created_at: str + + :ivar display_name: Display name for the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype display_name: str + + :ivar errors: Errors associated with the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype errors: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :vartype workspace_id: str""" + acs_encoder_id: str acs_system_id: str connected_account_id: str diff --git a/seam/resources/acs_entrance.py b/seam/resources/acs_entrance.py index 99c712b..88954a3 100644 --- a/seam/resources/acs_entrance.py +++ b/seam/resources/acs_entrance.py @@ -5,6 +5,85 @@ @dataclass class AcsEntrance: + """Represents an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the `acs_entrance` resources in your workspace or get these details for a specific `acs_entrance`. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. + + :ivar acs_entrance_id: ID of the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype acs_entrance_id: str + + :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype acs_system_id: str + + :ivar akiles_metadata: Akiles-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype akiles_metadata: Dict[str, Any] + + :ivar assa_abloy_vostio_metadata: ASSA ABLOY Vostio-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype assa_abloy_vostio_metadata: Dict[str, Any] + + :ivar avigilon_alta_metadata: Avigilon Alta-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype avigilon_alta_metadata: Dict[str, Any] + + :ivar brivo_metadata: Brivo-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype brivo_metadata: Dict[str, Any] + + :ivar can_belong_to_reservation: Indicates whether the ACS entrance can belong to a reservation via an access_grant.reservation_key. + :vartype can_belong_to_reservation: bool + + :ivar can_unlock_with_card: Indicates whether the ACS entrance can be unlocked with card credentials. + :vartype can_unlock_with_card: bool + + :ivar can_unlock_with_cloud_key: Indicates whether the ACS entrance can be unlocked with cloud key credentials. + :vartype can_unlock_with_cloud_key: bool + + :ivar can_unlock_with_code: Indicates whether the ACS entrance can be unlocked with pin codes. + :vartype can_unlock_with_code: bool + + :ivar can_unlock_with_mobile_key: Indicates whether the ACS entrance can be unlocked with mobile key credentials. + :vartype can_unlock_with_mobile_key: bool + + :ivar connected_account_id: ID of the [connected account](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) was created. + :vartype created_at: str + + :ivar display_name: Display name for the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype display_name: str + + :ivar dormakaba_ambiance_metadata: dormakaba Ambiance-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype dormakaba_ambiance_metadata: Dict[str, Any] + + :ivar dormakaba_community_metadata: dormakaba Community-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype dormakaba_community_metadata: Dict[str, Any] + + :ivar errors: Errors associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype errors: List[Dict[str, Any]] + + :ivar hotek_metadata: Hotek-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype hotek_metadata: Dict[str, Any] + + :ivar is_locked: Indicates whether the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) is currently locked. + :vartype is_locked: bool + + :ivar latch_metadata: Latch-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype latch_metadata: Dict[str, Any] + + :ivar salto_ks_metadata: Salto KS-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype salto_ks_metadata: Dict[str, Any] + + :ivar salto_space_metadata: Salto Space-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype salto_space_metadata: Dict[str, Any] + + :ivar space_ids: IDs of the spaces that the entrance is in. + :vartype space_ids: List[str] + + :ivar visionline_metadata: Visionline-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype visionline_metadata: Dict[str, Any] + + :ivar warnings: Warnings associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype warnings: List[Dict[str, Any]]""" + acs_entrance_id: str acs_system_id: str akiles_metadata: Dict[str, Any] diff --git a/seam/resources/acs_system.py b/seam/resources/acs_system.py index 4051ff2..71ca75a 100644 --- a/seam/resources/acs_system.py +++ b/seam/resources/acs_system.py @@ -5,6 +5,72 @@ @dataclass class AcsSystem: + """Represents an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + Within an `acs_system`, create [`acs_user`s](https://docs.seam.co/api/acs/users/object) and [`acs_credential`s](https://docs.seam.co/api/acs/credentials/object) to grant access to the `acs_user`s. + + For details about the resources associated with an access control system, see the [access control systems namespace](https://docs.seam.co/api/acs). + + :ivar acs_access_group_count: Number of access groups in the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype acs_access_group_count: float + + :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype acs_system_id: str + + :ivar acs_user_count: Number of users in the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype acs_user_count: float + + :ivar connected_account_id: ID of the connected account associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype connected_account_id: str + + :ivar connected_account_ids: Deprecated: Use `connected_account_id`. IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype connected_account_ids: List[str] + + :ivar created_at: Date and time at which the [access control system](https://docs.seam.co/low-level-apis/access-systems) was created. + :vartype created_at: str + + :ivar default_credential_manager_acs_system_id: ID of the default credential manager `acs_system` for this [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype default_credential_manager_acs_system_id: str + + :ivar errors: Errors associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype errors: List[Dict[str, Any]] + + :ivar external_type: Brand-specific terminology for the [access control system](https://docs.seam.co/low-level-apis/access-systems) type. + :vartype external_type: str + + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [access control system](https://docs.seam.co/low-level-apis/access-systems) type. + :vartype external_type_display_name: str + + :ivar image_alt_text: Alternative text for the [access control system](https://docs.seam.co/low-level-apis/access-systems) image. + :vartype image_alt_text: str + + :ivar image_url: URL for the image that represents the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype image_url: str + + :ivar is_credential_manager: Indicates whether the `acs_system` is a credential manager. + :vartype is_credential_manager: bool + + :ivar location: Location information for the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype location: Dict[str, Any] + + :ivar name: Name of the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype name: str + + :ivar system_type: Deprecated: Use `external_type`. + :vartype system_type: str + + :ivar system_type_display_name: Deprecated: Use `external_type_display_name`. + :vartype system_type_display_name: str + + :ivar visionline_metadata: Visionline-specific metadata for the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype visionline_metadata: Dict[str, Any] + + :ivar warnings: Warnings associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :vartype workspace_id: str""" + acs_access_group_count: float acs_system_id: str acs_user_count: float diff --git a/seam/resources/acs_user.py b/seam/resources/acs_user.py index c0b43b0..2635a7f 100644 --- a/seam/resources/acs_user.py +++ b/seam/resources/acs_user.py @@ -5,6 +5,87 @@ @dataclass class AcsUser: + """Represents a [user](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access system](https://docs.seam.co/low-level-apis/access-systems). + + An access system user typically refers to an individual who requires access, like an employee or resident. Each user can possess multiple credentials that serve as their keys or identifiers for access. The type of credential can vary widely. For example, in the Salto system, a user can have a PIN code, a mobile app account, and a fob. In other platforms, it is not uncommon for a user to have more than one of the same credential type, such as multiple key cards. Additionally, these credentials can have a schedule or validity period. + + For details about how to configure users in your access system, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + + :ivar access_schedule: `starts_at` and `ends_at` timestamps for the [access system user's](https://docs.seam.co/low-level-apis/access-systems/user-management) access. + :vartype access_schedule: Dict[str, Any] + + :ivar acs_system_id: ID of the [access system](https://docs.seam.co/low-level-apis/access-systems) that contains the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype acs_system_id: str + + :ivar acs_user_id: ID of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype acs_user_id: str + + :ivar connected_account_id: The ID of the connected account that is associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) was created. + :vartype created_at: str + + :ivar display_name: Display name for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype display_name: str + + :ivar email: Deprecated: use email_address. + :vartype email: str + + :ivar email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype email_address: str + + :ivar errors: Errors associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype errors: List[Dict[str, Any]] + + :ivar external_type: Brand-specific terminology for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) type. + :vartype external_type: str + + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) type. + :vartype external_type_display_name: str + + :ivar full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype full_name: str + + :ivar hid_acs_system_id: ID of the HID access control system associated with the user. + :vartype hid_acs_system_id: str + + :ivar is_managed: Indicates whether Seam manages the access system user. + :vartype is_managed: bool + + :ivar is_suspended: Indicates whether the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) is currently [suspended](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users). + :vartype is_suspended: bool + + :ivar pending_mutations: Pending mutations associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Seam is in the process of pushing these mutations to the integrated access system. + :vartype pending_mutations: List[Dict[str, Any]] + + :ivar phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :vartype phone_number: str + + :ivar salto_ks_metadata: Salto KS-specific metadata associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype salto_ks_metadata: Dict[str, Any] + + :ivar salto_space_metadata: Salto Space-specific metadata associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype salto_space_metadata: Dict[str, Any] + + :ivar user_identity_email_address: Email address of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype user_identity_email_address: str + + :ivar user_identity_full_name: Full name of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype user_identity_full_name: str + + :ivar user_identity_id: ID of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype user_identity_id: str + + :ivar user_identity_phone_number: Phone number of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :vartype user_identity_phone_number: str + + :ivar warnings: Warnings associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :vartype workspace_id: str""" + access_schedule: Dict[str, Any] acs_system_id: str acs_user_id: str diff --git a/seam/resources/action_attempt.py b/seam/resources/action_attempt.py index 59025c6..2980db5 100644 --- a/seam/resources/action_attempt.py +++ b/seam/resources/action_attempt.py @@ -5,6 +5,23 @@ @dataclass class ActionAttempt: + """An attempt to perform an action in the Seam API. + + :ivar action_attempt_id: ID of the action attempt. + :vartype action_attempt_id: str + + :ivar action_type: Action attempt to track the status of locking a door. + :vartype action_type: str + + :ivar error: Error associated with the action. + :vartype error: Dict[str, Any] + + :ivar result: Result of the action. + :vartype result: Dict[str, Any] + + :ivar status: + :vartype status: str""" + action_attempt_id: str action_type: str error: Dict[str, Any] diff --git a/seam/resources/batch.py b/seam/resources/batch.py index 0318672..8c06b8f 100644 --- a/seam/resources/batch.py +++ b/seam/resources/batch.py @@ -5,6 +5,157 @@ @dataclass class Batch: + """A batch of workspace resources. + + :ivar access_codes: Represents a smart lock [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate. + + Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/low-level-apis/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/low-level-apis/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the `type` property of the access code. Ongoing codes display as `ongoing`, whereas time-bound codes are labeled `time_bound`. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both `starts_at` and `ends_at` empty. A time-bound access code will be programmed at the `starts_at` time and removed at the `ends_at` time. + + In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + :vartype access_codes: List[Dict[str, Any]] + + :ivar access_grants: Represents an Access Grant. Access Grants enable you to grant a user identity access to spaces, entrances, and devices through one or more access methods, such as mobile keys, plastic cards, and PIN codes. You can create an Access Grant for an existing user identity, or you can create a new user identity *while* creating the new Access Grant. + :vartype access_grants: List[Dict[str, Any]] + + :ivar access_methods: Represents an access method for an Access Grant. Access methods describe the modes of access, such as PIN codes, plastic cards, and mobile keys. For a mobile key, the access method also stores the URL for the associated Instant Key. + :vartype access_methods: List[Dict[str, Any]] + + :ivar acs_access_groups: Group that defines the entrances to which a set of users has access and, in some cases, the access schedule for these entrances and users. + + Some access control systems use [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups), which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. + + To learn whether your access control system supports access groups, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + :vartype acs_access_groups: List[Dict[str, Any]] + + :ivar acs_credentials: Means by which an [access control system user](https://docs.seam.co/low-level-apis/access-systems/user-management) gains access at an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). The `acs_credential` object represents a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) that provides an ACS user access within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + An access control system generally uses digital means of access to authorize a user trying to get through a specific entrance. Examples of credentials include plastic key cards, mobile keys, biometric identifiers, and PIN codes. The electronic nature of these credentials, as well as the fact that access is centralized, enables both the rapid provisioning and rescinding of access and the ability to compile access audit logs. + + For each `acs_credential`, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. + :vartype acs_credentials: List[Dict[str, Any]] + + :ivar acs_encoders: Represents a hardware device that encodes [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) data onto physical cards within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + Some access control systems require credentials to be encoded onto plastic key cards using a card encoder. This process involves the following two key steps: + + 1. Credential creation + Configure the access parameters for the credential. + 2. Card encoding + Write the credential data onto the card using a compatible card encoder. + + Separately, the Seam API also supports card scanning, which enables you to scan and read the encoded data on a card. You can use this action to confirm consistency with access control system records or diagnose discrepancies if needed. + + See [Working with Card Encoders and Scanners](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + To verify if your access control system requires a card encoder, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + :vartype acs_encoders: List[Dict[str, Any]] + + :ivar acs_entrances: Represents an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the `acs_entrance` resources in your workspace or get these details for a specific `acs_entrance`. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. + :vartype acs_entrances: List[Dict[str, Any]] + + :ivar acs_systems: Represents an [access control system](https://docs.seam.co/low-level-apis/access-systems). + + Within an `acs_system`, create [`acs_user`s](https://docs.seam.co/api/acs/users/object) and [`acs_credential`s](https://docs.seam.co/api/acs/credentials/object) to grant access to the `acs_user`s. + + For details about the resources associated with an access control system, see the [access control systems namespace](https://docs.seam.co/api/acs). + :vartype acs_systems: List[Dict[str, Any]] + + :ivar acs_users: Represents a [user](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access system](https://docs.seam.co/low-level-apis/access-systems). + + An access system user typically refers to an individual who requires access, like an employee or resident. Each user can possess multiple credentials that serve as their keys or identifiers for access. The type of credential can vary widely. For example, in the Salto system, a user can have a PIN code, a mobile app account, and a fob. In other platforms, it is not uncommon for a user to have more than one of the same credential type, such as multiple key cards. Additionally, these credentials can have a schedule or validity period. + + For details about how to configure users in your access system, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + :vartype acs_users: List[Dict[str, Any]] + + :ivar action_attempts: Represents an action attempt that enables you to keep track of the progress of your action that affects a physical device or system.actions against a device. Action attempts are useful because the physical world is intrinsically asynchronous. + + When you request for a device to perform an action, the Seam API immediately returns an action attempt object. In the background, the Seam API performs the action. + + See also [Action Attempts](https://docs.seam.co/core-concepts/action-attempts). + :vartype action_attempts: List[Dict[str, Any]] + + :ivar client_sessions: Represents a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). If you want to restrict your users' access to their own devices, use client sessions. + + You create each client session with a custom `user_identifier_key`. Normally, the `user_identifier_key` is a user ID that your application provides. + + When calling the Seam API from your backend using an API key, you can pass the `user_identifier_key` as a parameter to limit results to the associated client session. For example, `/devices/list?user_identifier_key=123` only returns devices associated with the client session created with the `user_identifier_key` `123`. + + A client session has a token that you can use with the Seam JavaScript SDK to make requests from the client (browser) directly to the Seam API. The token restricts the user's access to only the devices that they own. + + See also [Get Started with React](https://docs.seam.co/ui-components/overview/getting-started-with-seam-components/get-started-with-react-components-and-client-session-tokens). + :vartype client_sessions: List[Dict[str, Any]] + + :ivar connect_webviews: Represents a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + Connect Webviews are fully-embedded client-side components that you add to your app. Your users interact with your embedded Connect Webviews to link their IoT device or system accounts to Seam. That is, Connect Webviews walk your users through the process of logging in to their device or system accounts. Seam handles all the authentication steps, and—once your user has completed the authorization through your app—you can access and control their devices or systems using the Seam API. + + Connect Webviews perform credential validation, multifactor authentication (when applicable), and error handling for each brand that Seam supports. Further, Connect Webviews work across all modern browsers and platforms, including Chrome, Safari, and Firefox. + + To enable a user to connect their device or system account to Seam through your app, first create a `connect_webview`. Once created, this `connect_webview` includes a URL that you can use to open an [iframe](https://www.w3schools.com/html/html_iframe.asp) or new window containing the Connect Webview for your user. + + When you create a Connect Webview, specify the desired provider category key in the `provider_category` parameter. Alternately, to specify a list of providers explicitly, use the `accepted_providers` parameter with a list of device provider keys. + + To list all providers within a category, use `/devices/list_device_providers` with the desired `provider_category` filter. To list all provider keys, use `/devices/list_device_providers` with no filters. + :vartype connect_webviews: List[Dict[str, Any]] + + :ivar connected_accounts: Represents a [connected account](https://docs.seam.co/core-concepts/connected-accounts). A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. + :vartype connected_accounts: List[Dict[str, Any]] + + :ivar devices: Represents a [device](https://docs.seam.co/core-concepts/devices) that has been connected to Seam. + :vartype devices: List[Dict[str, Any]] + + :ivar events: Represents an event. Events let you know when something interesting happens in your workspace. For example, when a lock is unlocked, Seam creates a `lock.unlocked` event. When a device's battery level is low, Seam creates a `device.battery_low` event. + + As with other API resources, you can retrieve an individual event or a list of events. Seam also provides a separate webhook system for sending the event objects directly to an endpoint on your sever. Manage webhooks through [Seam Console](https://console.seam.co). You can also use the webhooks sandbox in Seam Console to see the different payloads for each event and test them against your own endpoints. + :vartype events: List[Dict[str, Any]] + + :ivar instant_keys: Represents a Seam Instant Key. For issuing Bluetooth mobile keys, Instant Keys are the fastest way to share access. With a single API call, you can create a mobile key and send it through text or email or embed it in your own app. + + There’s no app to install, nor account to create. Your user just taps a link and gets a lightweight, native-feeling experience using iOS App Clip or Instant Apps on Android. Further, Instant Keys work offline, so even in areas with poor cellular or Wi-Fi, like elevator banks or concrete-walled hallways, the Instant Keys still work. + :vartype instant_keys: List[Dict[str, Any]] + + :ivar noise_thresholds: Represents a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + :vartype noise_thresholds: List[Dict[str, Any]] + + :ivar spaces: Represents a space that is a logical grouping of devices and entrances. You can assign access to an entire space, thereby making granting access more efficient. + :vartype spaces: List[Dict[str, Any]] + + :ivar thermostat_daily_programs: Represents a thermostat daily program, consisting of a set of periods, each of which has a starting time and the key that identifies the climate preset to apply at the starting time. + :vartype thermostat_daily_programs: List[Dict[str, Any]] + + :ivar thermostat_schedules: Represents a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) that activates a configured [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) on a [thermostat](https://docs.seam.co/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time. + :vartype thermostat_schedules: List[Dict[str, Any]] + + :ivar unmanaged_access_codes: Represents an [unmanaged smart lock access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. + + When you create an access code on a device in Seam, it is created as a managed access code. Access codes that exist on a device that were not created through Seam are considered unmanaged codes. We strictly limit the operations that can be performed on unmanaged codes. + + Prior to using Seam to manage your devices, you may have used another lock management system to manage the access codes on your devices. Where possible, we help you keep any existing access codes on devices and transition those codes to ones managed by your Seam workspace. + + Not all providers support unmanaged access codes. The following providers do not support unmanaged access codes: + + - [Kwikset](https://docs.seam.co/device-and-system-integration-guides/kwikset-locks) + :vartype unmanaged_access_codes: List[Dict[str, Any]] + + :ivar unmanaged_devices: Represents an [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + :vartype unmanaged_devices: List[Dict[str, Any]] + + :ivar user_identities: Represents a [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with an application user account. + :vartype user_identities: List[Dict[str, Any]] + + :ivar workspaces: Represents a Seam [workspace](https://docs.seam.co/core-concepts/workspaces). A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a [production workspace](https://docs.seam.co/core-concepts/workspaces#production-workspaces). + :vartype workspaces: List[Dict[str, Any]]""" + access_codes: List[Dict[str, Any]] access_grants: List[Dict[str, Any]] access_methods: List[Dict[str, Any]] diff --git a/seam/resources/client_session.py b/seam/resources/client_session.py index 7756936..9769a76 100644 --- a/seam/resources/client_session.py +++ b/seam/resources/client_session.py @@ -5,6 +5,52 @@ @dataclass class ClientSession: + """Represents a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). If you want to restrict your users' access to their own devices, use client sessions. + + You create each client session with a custom `user_identifier_key`. Normally, the `user_identifier_key` is a user ID that your application provides. + + When calling the Seam API from your backend using an API key, you can pass the `user_identifier_key` as a parameter to limit results to the associated client session. For example, `/devices/list?user_identifier_key=123` only returns devices associated with the client session created with the `user_identifier_key` `123`. + + A client session has a token that you can use with the Seam JavaScript SDK to make requests from the client (browser) directly to the Seam API. The token restricts the user's access to only the devices that they own. + + See also [Get Started with React](https://docs.seam.co/ui-components/overview/getting-started-with-seam-components/get-started-with-react-components-and-client-session-tokens). + + :ivar client_session_id: ID of the client session. + :vartype client_session_id: str + + :ivar connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype connect_webview_ids: List[str] + + :ivar connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype connected_account_ids: List[str] + + :ivar created_at: Date and time at which the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) was created. + :vartype created_at: str + + :ivar customer_key: Customer key associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype customer_key: str + + :ivar device_count: Number of devices associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype device_count: float + + :ivar expires_at: Date and time at which the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) expires. + :vartype expires_at: str + + :ivar token: Client session token associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype token: str + + :ivar user_identifier_key: Your user ID for the user associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :vartype user_identifier_key: str + + :ivar user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with the client session. + :vartype user_identity_id: str + + :ivar user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with the client session. + :vartype user_identity_ids: List[str] + + :ivar workspace_id: ID of the workspace associated with the client session. + :vartype workspace_id: str""" + client_session_id: str connect_webview_ids: List[str] connected_account_ids: List[str] diff --git a/seam/resources/connect_webview.py b/seam/resources/connect_webview.py index 7de83e0..661d071 100644 --- a/seam/resources/connect_webview.py +++ b/seam/resources/connect_webview.py @@ -5,6 +5,75 @@ @dataclass class ConnectWebview: + """Represents a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + Connect Webviews are fully-embedded client-side components that you add to your app. Your users interact with your embedded Connect Webviews to link their IoT device or system accounts to Seam. That is, Connect Webviews walk your users through the process of logging in to their device or system accounts. Seam handles all the authentication steps, and—once your user has completed the authorization through your app—you can access and control their devices or systems using the Seam API. + + Connect Webviews perform credential validation, multifactor authentication (when applicable), and error handling for each brand that Seam supports. Further, Connect Webviews work across all modern browsers and platforms, including Chrome, Safari, and Firefox. + + To enable a user to connect their device or system account to Seam through your app, first create a `connect_webview`. Once created, this `connect_webview` includes a URL that you can use to open an [iframe](https://www.w3schools.com/html/html_iframe.asp) or new window containing the Connect Webview for your user. + + When you create a Connect Webview, specify the desired provider category key in the `provider_category` parameter. Alternately, to specify a list of providers explicitly, use the `accepted_providers` parameter with a list of device provider keys. + + To list all providers within a category, use `/devices/list_device_providers` with the desired `provider_category` filter. To list all provider keys, use `/devices/list_device_providers` with no filters. + + :ivar accepted_capabilities: High-level device capabilities that the Connect Webview can accept. When creating a Connect Webview, you can specify the types of devices that it can connect to Seam. If you do not set custom `accepted_capabilities`, Seam uses a default set of `accepted_capabilities` for each provider. For example, if you create a Connect Webview that accepts SmartThing devices, without specifying `accepted_capabilities`, Seam accepts only SmartThings locks. To connect SmartThings thermostats and locks to Seam, create a Connect Webview and include both `thermostat` and `lock` in the `accepted_capabilities`. + :vartype accepted_capabilities: List[str] + + :ivar accepted_providers: List of accepted [provider keys](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + :vartype accepted_providers: List[str] + + :ivar any_provider_allowed: Indicates whether any provider is allowed. + :vartype any_provider_allowed: bool + + :ivar authorized_at: Date and time at which the user authorized (through the Connect Webview) the management of their devices. + :vartype authorized_at: str + + :ivar automatically_manage_new_devices: Indicates whether Seam should [import all new devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#automatically_manage_new_devices) for the connected account to make these devices available for use and management by the Seam API. + :vartype automatically_manage_new_devices: bool + + :ivar connect_webview_id: ID of the Connect Webview. + :vartype connect_webview_id: str + + :ivar connected_account_id: ID of the connected account associated with the Connect Webview. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the Connect Webview was created. + :vartype created_at: str + + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :vartype custom_metadata: Dict[str, Any] + + :ivar custom_redirect_failure_url: URL to which the Connect Webview should redirect when an unexpected error occurs. + :vartype custom_redirect_failure_url: str + + :ivar custom_redirect_url: URL to which the Connect Webview should redirect when the user successfully pairs a device or system. If you do not set the `custom_redirect_failure_url`, the Connect Webview redirects to the `custom_redirect_url` when an unexpected error occurs. + :vartype custom_redirect_url: str + + :ivar customer_key: The customer key associated with this webview, if any. + :vartype customer_key: str + + :ivar device_selection_mode: Device selection mode of the Connect Webview. Supported values: `none`, `single`, `multiple`. + :vartype device_selection_mode: str + + :ivar login_successful: Indicates whether the user logged in successfully using the Connect Webview. + :vartype login_successful: bool + + :ivar selected_provider: Selected provider of the Connect Webview, one of the [provider keys](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + :vartype selected_provider: str + + :ivar status: Status of the Connect Webview. `authorized` indicates that the user has successfully logged into their device or system account, thereby completing the Connect Webview. + :vartype status: str + + :ivar url: URL for the Connect Webview. You use the URL to display the Connect Webview flow to your user. + :vartype url: str + + :ivar wait_for_device_creation: Indicates whether Seam should [finish syncing all devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#wait_for_device_creation) in a newly-connected account before completing the associated Connect Webview. + :vartype wait_for_device_creation: bool + + :ivar workspace_id: ID of the workspace that contains the Connect Webview. + :vartype workspace_id: str""" + accepted_capabilities: List[str] accepted_providers: List[str] any_provider_allowed: bool diff --git a/seam/resources/connected_account.py b/seam/resources/connected_account.py index b6904ca..94c4a56 100644 --- a/seam/resources/connected_account.py +++ b/seam/resources/connected_account.py @@ -5,6 +5,62 @@ @dataclass class ConnectedAccount: + """Represents a [connected account](https://docs.seam.co/core-concepts/connected-accounts). A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. + + :ivar accepted_capabilities: List of capabilities that were accepted during the account connection process. + :vartype accepted_capabilities: List[str] + + :ivar account_type: Type of connected account. + :vartype account_type: str + + :ivar account_type_display_name: Display name for the connected account type. + :vartype account_type_display_name: str + + :ivar automatically_manage_new_devices: Indicates whether Seam should [import all new devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#automatically_manage_new_devices) for the connected account to make these devices available for management by the Seam API. + :vartype automatically_manage_new_devices: bool + + :ivar connected_account_id: ID of the connected account. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the connected account was created. + :vartype created_at: str + + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :vartype custom_metadata: Dict[str, Any] + + :ivar customer_key: Your unique key for the customer associated with this connected account. + :vartype customer_key: str + + :ivar default_checkin_time: Default reservation check-in time for this connected account, as `HH:mm` (24-hour). Sourced from the connector configuration — set during the connect_webview for providers like Lodgify whose API does not expose check-in times. + :vartype default_checkin_time: str + + :ivar default_checkout_time: Default reservation check-out time for this connected account, as `HH:mm` (24-hour). Sourced from the connector configuration. + :vartype default_checkout_time: str + + :ivar display_name: Display name for the connected account. + :vartype display_name: str + + :ivar errors: Errors associated with the connected account. + :vartype errors: List[Dict[str, Any]] + + :ivar ical_feed_origin: For iCal connected accounts, the platform that produced the feed (for example, `airbnb`, `vrbo`, or `booking`), or `unknown` when it could not be determined. Intended for rendering the source platform's logo. + :vartype ical_feed_origin: str + + :ivar ical_url: For iCal connected accounts, the feed URL for the connection. Sourced from the connector configuration. + :vartype ical_url: str + + :ivar image_url: Logo URL for the connected account provider. + :vartype image_url: str + + :ivar time_zone: IANA time zone (e.g. America/Los_Angeles) for this connected account. Sourced from the connector configuration. + :vartype time_zone: str + + :ivar user_identifier: Deprecated: Use `display_name` instead. User identifier associated with the connected account. + :vartype user_identifier: Dict[str, Any] + + :ivar warnings: Warnings associated with the connected account. + :vartype warnings: List[Dict[str, Any]]""" + accepted_capabilities: List[str] account_type: str account_type_display_name: str diff --git a/seam/resources/customer_portal.py b/seam/resources/customer_portal.py index eafd6ac..305bfe2 100644 --- a/seam/resources/customer_portal.py +++ b/seam/resources/customer_portal.py @@ -5,6 +5,27 @@ @dataclass class CustomerPortal: + """Represents a Customer Portal. Customer Portal is a hosted, customizable interface for managing device access. It enables you to embed secure, pre-authenticated access flows into your product—either by sharing a link with users or embedding a view in an iframe. + + With Customer Portal, you no longer need to build out frontend experiences for physical access, thermostats, and sensors. Instead, you can ship enterprise-grade access control experiences in a fraction of the time, while maintaining your product's branding and user experience. + + Seam hosts these flows, handling everything from account connection and device mapping to full-featured device control. + + :ivar created_at: Date and time at which the customer portal link was created. + :vartype created_at: str + + :ivar customer_key: Customer key for the customer portal. + :vartype customer_key: str + + :ivar expires_at: Date and time at which the customer portal link expires. + :vartype expires_at: str + + :ivar url: URL for the customer portal. + :vartype url: str + + :ivar workspace_id: ID of the workspace associated with the customer portal. + :vartype workspace_id: str""" + created_at: str customer_key: str expires_at: str diff --git a/seam/resources/device.py b/seam/resources/device.py index e55bd6c..8ff7ebc 100644 --- a/seam/resources/device.py +++ b/seam/resources/device.py @@ -5,6 +5,119 @@ @dataclass class Device: + """Represents a [device](https://docs.seam.co/core-concepts/devices) that has been connected to Seam. + + :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. + :vartype can_configure_auto_lock: bool + + :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. + :vartype can_hvac_cool: bool + + :ivar can_hvac_heat: Indicates whether the thermostat supports heating. + :vartype can_hvac_heat: bool + + :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. + :vartype can_hvac_heat_cool: bool + + :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. + :vartype can_program_offline_access_codes: bool + + :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. + :vartype can_program_online_access_codes: bool + + :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. + :vartype can_program_thermostat_programs_as_different_each_day: bool + + :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. + :vartype can_program_thermostat_programs_as_same_each_day: bool + + :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. + :vartype can_program_thermostat_programs_as_weekday_weekend: bool + + :ivar can_remotely_lock: Indicates whether the device supports remote locking. + :vartype can_remotely_lock: bool + + :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. + :vartype can_remotely_unlock: bool + + :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. + :vartype can_run_thermostat_programs: bool + + :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. + :vartype can_simulate_connection: bool + + :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. + :vartype can_simulate_disconnection: bool + + :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. + :vartype can_simulate_hub_connection: bool + + :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. + :vartype can_simulate_hub_disconnection: bool + + :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. + :vartype can_simulate_paid_subscription: bool + + :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. + :vartype can_simulate_removal: bool + + :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. + :vartype can_turn_off_hvac: bool + + :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. + :vartype can_unlock_with_code: bool + + :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are `access_code`, which indicates that the device can manage and utilize digital PIN codes for secure access; `lock`, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; `noise_detection`, which indicates that the device supports monitoring and responding to ambient noise levels; `thermostat`, which indicates that the device can regulate and adjust indoor temperatures; `battery`, which indicates that the device can manage battery life and health; and `phone`, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags). + :vartype capabilities_supported: List[str] + + :ivar connected_account_id: Unique identifier for the account associated with the device. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the device object was created. + :vartype created_at: str + + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :vartype custom_metadata: Dict[str, Any] + + :ivar device_id: ID of the device. + :vartype device_id: str + + :ivar device_manufacturer: Manufacturer of the device. Represents the hardware brand, which may differ from the provider. + :vartype device_manufacturer: Dict[str, Any] + + :ivar device_provider: Provider of the device. Represents the third-party service through which the device is controlled. + :vartype device_provider: Dict[str, Any] + + :ivar device_type: Type of the device. + :vartype device_type: str + + :ivar display_name: Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. + :vartype display_name: str + + :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + :vartype errors: List[Dict[str, Any]] + + :ivar is_managed: Indicates whether Seam manages the device. See also [Managed and Unmanaged Devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :vartype is_managed: bool + + :ivar location: Location information for the device. + :vartype location: Dict[str, Any] + + :ivar nickname: Optional nickname to describe the device, settable through Seam. + :vartype nickname: str + + :ivar properties: Properties of the device. + :vartype properties: Dict[str, Any] + + :ivar space_ids: IDs of the spaces the device is in. + :vartype space_ids: List[str] + + :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. + :vartype workspace_id: str""" + can_configure_auto_lock: bool can_hvac_cool: bool can_hvac_heat: bool diff --git a/seam/resources/device_provider.py b/seam/resources/device_provider.py index 29ea7c9..09af188 100644 --- a/seam/resources/device_provider.py +++ b/seam/resources/device_provider.py @@ -5,6 +5,79 @@ @dataclass class DeviceProvider: + """ + :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. + :vartype can_configure_auto_lock: bool + + :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. + :vartype can_hvac_cool: bool + + :ivar can_hvac_heat: Indicates whether the thermostat supports heating. + :vartype can_hvac_heat: bool + + :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. + :vartype can_hvac_heat_cool: bool + + :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. + :vartype can_program_offline_access_codes: bool + + :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. + :vartype can_program_online_access_codes: bool + + :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. + :vartype can_program_thermostat_programs_as_different_each_day: bool + + :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. + :vartype can_program_thermostat_programs_as_same_each_day: bool + + :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. + :vartype can_program_thermostat_programs_as_weekday_weekend: bool + + :ivar can_remotely_lock: Indicates whether the device supports remote locking. + :vartype can_remotely_lock: bool + + :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. + :vartype can_remotely_unlock: bool + + :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. + :vartype can_run_thermostat_programs: bool + + :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. + :vartype can_simulate_connection: bool + + :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. + :vartype can_simulate_disconnection: bool + + :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. + :vartype can_simulate_hub_connection: bool + + :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. + :vartype can_simulate_hub_disconnection: bool + + :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. + :vartype can_simulate_paid_subscription: bool + + :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. + :vartype can_simulate_removal: bool + + :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. + :vartype can_turn_off_hvac: bool + + :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. + :vartype can_unlock_with_code: bool + + :ivar device_provider_name: Name of the device provider. + :vartype device_provider_name: str + + :ivar display_name: Display name for the device provider. + :vartype display_name: str + + :ivar image_url: Image URL for the device provider. + :vartype image_url: str + + :ivar provider_categories: List of provider categories to which the device provider belongs, such as `stable`, `consumer_smartlocks`, `thermostats`, and so on. + :vartype provider_categories: List[str]""" + can_configure_auto_lock: bool can_hvac_cool: bool can_hvac_heat: bool diff --git a/seam/resources/instant_key.py b/seam/resources/instant_key.py index 8ee16b2..53aebcc 100644 --- a/seam/resources/instant_key.py +++ b/seam/resources/instant_key.py @@ -5,6 +5,37 @@ @dataclass class InstantKey: + """Represents a Seam Instant Key. For issuing Bluetooth mobile keys, Instant Keys are the fastest way to share access. With a single API call, you can create a mobile key and send it through text or email or embed it in your own app. + + There’s no app to install, nor account to create. Your user just taps a link and gets a lightweight, native-feeling experience using iOS App Clip or Instant Apps on Android. Further, Instant Keys work offline, so even in areas with poor cellular or Wi-Fi, like elevator banks or concrete-walled hallways, the Instant Keys still work. + + :ivar client_session_id: ID of the client session associated with the Instant Key. + :vartype client_session_id: str + + :ivar created_at: Date and time at which the Instant Key was created. + :vartype created_at: str + + :ivar customization: Customization applied to the Instant Key UI. + :vartype customization: Dict[str, Any] + + :ivar customization_profile_id: ID of the customization profile associated with the Instant Key. + :vartype customization_profile_id: str + + :ivar expires_at: Date and time at which the Instant Key expires. + :vartype expires_at: str + + :ivar instant_key_id: ID of the Instant Key. + :vartype instant_key_id: str + + :ivar instant_key_url: Shareable URL for the Instant Key. Use the URL to deliver the Instant Key to your user through a link in a text message or email or by embedding it in your web app. + :vartype instant_key_url: str + + :ivar user_identity_id: ID of the user identity associated with the Instant Key. + :vartype user_identity_id: str + + :ivar workspace_id: ID of the workspace that contains the Instant Key. + :vartype workspace_id: str""" + client_session_id: str created_at: str customization: Dict[str, Any] diff --git a/seam/resources/noise_threshold.py b/seam/resources/noise_threshold.py index 19f4a47..b149a00 100644 --- a/seam/resources/noise_threshold.py +++ b/seam/resources/noise_threshold.py @@ -5,6 +5,29 @@ @dataclass class NoiseThreshold: + """Represents a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + + :ivar device_id: Unique identifier for the device that contains the noise threshold. + :vartype device_id: str + + :ivar ends_daily_at: Time at which the noise threshold should become inactive daily. + :vartype ends_daily_at: str + + :ivar name: Name of the noise threshold. + :vartype name: str + + :ivar noise_threshold_decibels: Noise level in decibels for the noise threshold. + :vartype noise_threshold_decibels: float + + :ivar noise_threshold_id: Unique identifier for the noise threshold. + :vartype noise_threshold_id: str + + :ivar noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :vartype noise_threshold_nrs: float + + :ivar starts_daily_at: Time at which the noise threshold should become active daily. + :vartype starts_daily_at: str""" + device_id: str ends_daily_at: str name: str diff --git a/seam/resources/pagination.py b/seam/resources/pagination.py index 4e5fda0..31cd269 100644 --- a/seam/resources/pagination.py +++ b/seam/resources/pagination.py @@ -5,6 +5,17 @@ @dataclass class Pagination: + """Information about the current page of results. + + :ivar has_next_page: Indicates whether there is another page of results after this one. + :vartype has_next_page: bool + + :ivar next_page_cursor: Opaque value that can be used to select the next page of results via the `page_cursor` parameter. + :vartype next_page_cursor: str + + :ivar next_page_url: URL to get the next page of results. + :vartype next_page_url: str""" + has_next_page: bool next_page_cursor: str next_page_url: str diff --git a/seam/resources/phone.py b/seam/resources/phone.py index d80239b..d74b949 100644 --- a/seam/resources/phone.py +++ b/seam/resources/phone.py @@ -5,6 +5,38 @@ @dataclass class Phone: + """Represents an app user's mobile phone. + + :ivar created_at: Date and time at which the phone was created. + :vartype created_at: str + + :ivar custom_metadata: Optional [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for the phone. + :vartype custom_metadata: Dict[str, Any] + + :ivar device_id: ID of the phone. + :vartype device_id: str + + :ivar device_type: Type of the phone device, such as `ios_phone` or `android_phone`. + :vartype device_type: str + + :ivar display_name: Display name of the phone. Defaults to `nickname` (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the phone easily, especially when there are numerous phones. + :vartype display_name: str + + :ivar errors: Errors associated with the phone. + :vartype errors: List[Dict[str, Any]] + + :ivar nickname: Optional nickname to describe the phone, settable through Seam. + :vartype nickname: str + + :ivar properties: Properties of the phone. + :vartype properties: Dict[str, Any] + + :ivar warnings: Warnings associated with the phone. + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the phone. + :vartype workspace_id: str""" + created_at: str custom_metadata: Dict[str, Any] device_id: str diff --git a/seam/resources/seam_event.py b/seam/resources/seam_event.py index 614fdbf..45620c7 100644 --- a/seam/resources/seam_event.py +++ b/seam/resources/seam_event.py @@ -5,6 +5,282 @@ @dataclass class SeamEvent: + """ + :ivar access_code_id: ID of the affected access code. + :vartype access_code_id: str + + :ivar connected_account_custom_metadata: Custom metadata of the connected account, present when connected_account_id is provided. + :vartype connected_account_custom_metadata: Dict[str, Any] + + :ivar connected_account_id: ID of the connected account associated with the affected access code. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the event was created. + :vartype created_at: str + + :ivar device_custom_metadata: Custom metadata of the device, present when device_id is provided. + :vartype device_custom_metadata: Dict[str, Any] + + :ivar device_id: ID of the device associated with the affected access code. + :vartype device_id: str + + :ivar event_description: Human-readable description of the event. Persisted when the event is created (so the creating code, including a provider, can supply a tailored description) and otherwise derived from the event. + :vartype event_description: str + + :ivar event_id: ID of the event. + :vartype event_id: str + + :ivar event_type: + :vartype event_type: str + + :ivar occurred_at: Date and time at which the event occurred. + :vartype occurred_at: str + + :ivar workspace_id: ID of the workspace associated with the event. + :vartype workspace_id: str + + :ivar change_reason: Human-readable reason for the change (e.g. `ongoing code auto-renewed`). + :vartype change_reason: str + + :ivar changed_properties: List of properties that changed on the access code. + :vartype changed_properties: List[Dict[str, Any]] + + :ivar description: Human-readable description of the change and its source. + :vartype description: str + + :ivar from_: Previous access code name configuration. + :vartype from_: Dict[str, Any] + + :ivar to: New access code name configuration. + :vartype to: Dict[str, Any] + + :ivar requested_mutations: Array of mutations requested on the access code, each containing the mutation type and from/to values. + :vartype requested_mutations: List[Dict[str, Any]] + + :ivar code: Code for the affected access code. + :vartype code: str + + :ivar access_code_errors: Errors associated with the access code. + :vartype access_code_errors: List[Dict[str, Any]] + + :ivar access_code_warnings: Warnings associated with the access code. + :vartype access_code_warnings: List[Dict[str, Any]] + + :ivar connected_account_errors: Errors associated with the connected account. + :vartype connected_account_errors: List[Dict[str, Any]] + + :ivar connected_account_warnings: Warnings associated with the connected account. + :vartype connected_account_warnings: List[Dict[str, Any]] + + :ivar device_errors: Errors associated with the device. + :vartype device_errors: List[Dict[str, Any]] + + :ivar device_warnings: Warnings associated with the device. + :vartype device_warnings: List[Dict[str, Any]] + + :ivar backup_access_code_id: ID of the backup access code that was pulled from the pool. + :vartype backup_access_code_id: str + + :ivar access_grant_id: ID of the affected Access Grant. + :vartype access_grant_id: str + + :ivar acs_entrance_id: ID of the affected [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :vartype acs_entrance_id: str + + :ivar access_grant_key: Key of the affected Access Grant (if present). + :vartype access_grant_key: str + + :ivar ends_at: The new end time for the access grant. + :vartype ends_at: str + + :ivar starts_at: The new start time for the access grant. + :vartype starts_at: str + + :ivar error_message: Description of why the access methods could not be created. + :vartype error_message: str + + :ivar missing_device_ids: IDs of the devices that did not receive a requested access method. Use these to identify which specific devices failed without having to fetch the Access Grant. + :vartype missing_device_ids: List[str] + + :ivar access_grant_ids: IDs of the access grants associated with this access method. + :vartype access_grant_ids: List[str] + + :ivar access_grant_keys: Keys of the access grants associated with this access method (if present). + :vartype access_grant_keys: List[str] + + :ivar access_method_id: ID of the affected access method. + :vartype access_method_id: str + + :ivar is_backup_code: Indicates whether the code is a backup code (only present when mode is 'code' and a backup code was used). + :vartype is_backup_code: bool + + :ivar acs_system_id: ID of the access system. + :vartype acs_system_id: str + + :ivar acs_system_errors: Errors associated with the access control system. + :vartype acs_system_errors: List[Dict[str, Any]] + + :ivar acs_system_warnings: Warnings associated with the access control system. + :vartype acs_system_warnings: List[Dict[str, Any]] + + :ivar acs_credential_id: ID of the affected credential. + :vartype acs_credential_id: str + + :ivar acs_user_id: ID of the affected access system user. + :vartype acs_user_id: str + + :ivar acs_encoder_id: ID of the affected encoder. + :vartype acs_encoder_id: str + + :ivar acs_access_group_id: ID of the affected access group. + :vartype acs_access_group_id: str + + :ivar client_session_id: ID of the affected client session. + :vartype client_session_id: str + + :ivar connect_webview_id: ID of the Connect Webview associated with the event. + :vartype connect_webview_id: str + + :ivar customer_key: The customer key associated with this connected account, if any. + :vartype customer_key: str + + :ivar connected_account_type: undocumented: Unreleased. + :vartype connected_account_type: str + + :ivar action_attempt_id: ID of the affected action attempt. + :vartype action_attempt_id: str + + :ivar action_type: Type of the action. + :vartype action_type: str + + :ivar status: Status of the action. + :vartype status: str + + :ivar error_code: Error code associated with the disconnection event, if any. + :vartype error_code: str + + :ivar battery_level: Number in the range 0 to 1.0 indicating the amount of battery in the affected device, as reported by the device. + :vartype battery_level: float + + :ivar battery_status: Battery status of the affected device, calculated from the numeric `battery_level` value. + :vartype battery_status: str + + :ivar device_name: Name of the deleted device, captured at deletion time. The device record no longer exists when this event fires, so the name is preserved here. Null when the device had no resolvable name. + :vartype device_name: str + + :ivar minut_metadata: Metadata from Minut. + :vartype minut_metadata: Dict[str, Any] + + :ivar noise_level_decibels: Detected noise level in decibels. + :vartype noise_level_decibels: float + + :ivar noise_level_nrs: Detected noise level in Noiseaware Noise Risk Score (NRS). + :vartype noise_level_nrs: float + + :ivar noise_threshold_id: ID of the noise threshold that was triggered. + :vartype noise_threshold_id: str + + :ivar noise_threshold_name: Name of the noise threshold that was triggered. + :vartype noise_threshold_name: str + + :ivar noiseaware_metadata: Metadata from Noiseaware. + :vartype noiseaware_metadata: Dict[str, Any] + + :ivar access_code_is_managed: Whether the access code is managed by Seam (true) or unmanaged (false). Only present when access_code_id is set. + :vartype access_code_is_managed: bool + + :ivar is_via_bluetooth: Whether the lock action was performed over Bluetooth by a remote client (such as the provider's mobile app), rather than a direct physical interaction or a Seam-initiated remote action. + :vartype is_via_bluetooth: bool + + :ivar is_via_nfc: Whether the lock action was performed by an NFC credential tap (such as an Apple Home Key or an NFC key fob) presented to the lock, rather than a direct physical interaction or a Seam-initiated remote action. + :vartype is_via_nfc: bool + + :ivar method: Method by which the lock was locked. `keycode`: an access code was used (see `access_code_id`). `manual`: a physical action such as a thumbturn or button press. `remote`: a remote action via an app, Bluetooth, or the Seam API (see `action_attempt_id` if Seam-initiated; see `is_via_bluetooth` or `is_via_nfc` for the transport). `automatic`: triggered automatically, for example by an auto-relock timer. `unknown`: could not be determined. + :vartype method: str + + :ivar user_identity_id: undocumented: Unreleased. + --- + ID of the user identity associated with the lock event. + :vartype user_identity_id: str + + :ivar reason: Why access was denied, when the provider reports a determinable cause. Omitted when unknown. + :vartype reason: Dict[str, Any] + + :ivar climate_preset_key: Key of the climate preset that was activated. + :vartype climate_preset_key: str + + :ivar is_fallback_climate_preset: Indicates whether the climate preset that was activated is the fallback climate preset for the thermostat. + :vartype is_fallback_climate_preset: bool + + :ivar thermostat_schedule_id: ID of the thermostat schedule that prompted the affected climate preset to be activated. + :vartype thermostat_schedule_id: str + + :ivar cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :vartype cooling_set_point_celsius: float + + :ivar cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :vartype cooling_set_point_fahrenheit: float + + :ivar fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :vartype fan_mode_setting: str + + :ivar heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :vartype heating_set_point_celsius: float + + :ivar heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :vartype heating_set_point_fahrenheit: float + + :ivar hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :vartype hvac_mode_setting: str + + :ivar lower_limit_celsius: Lower temperature limit, in °C, defined by the set threshold. + :vartype lower_limit_celsius: float + + :ivar lower_limit_fahrenheit: Lower temperature limit, in °F, defined by the set threshold. + :vartype lower_limit_fahrenheit: float + + :ivar temperature_celsius: Temperature, in °C, reported by the affected thermostat. + :vartype temperature_celsius: float + + :ivar temperature_fahrenheit: Temperature, in °F, reported by the affected thermostat. + :vartype temperature_fahrenheit: float + + :ivar upper_limit_celsius: Upper temperature limit, in °C, defined by the set threshold. + :vartype upper_limit_celsius: float + + :ivar upper_limit_fahrenheit: Upper temperature limit, in °F, defined by the set threshold. + :vartype upper_limit_fahrenheit: float + + :ivar desired_temperature_celsius: Desired temperature, in °C, defined by the affected thermostat's cooling or heating set point. + :vartype desired_temperature_celsius: float + + :ivar desired_temperature_fahrenheit: Desired temperature, in °F, defined by the affected thermostat's cooling or heating set point. + :vartype desired_temperature_fahrenheit: float + + :ivar activation_reason: The reason the camera was activated. + :vartype activation_reason: str + + :ivar image_url: URL to a thumbnail image captured at the time of activation. + :vartype image_url: str + + :ivar motion_sub_type: Sub-type of motion detected, if available. + :vartype motion_sub_type: str + + :ivar video_url: URL to a short video clip captured at the time of activation. + :vartype video_url: str + + :ivar acs_entrance_ids: IDs of all ACS entrances currently attached to the space. + :vartype acs_entrance_ids: List[str] + + :ivar device_ids: IDs of all devices currently attached to the space. + :vartype device_ids: List[str] + + :ivar space_id: ID of the affected space. + :vartype space_id: str + + :ivar space_key: Unique key for the space within the workspace. + :vartype space_key: str""" + access_code_id: str connected_account_custom_metadata: Dict[str, Any] connected_account_id: str diff --git a/seam/resources/space.py b/seam/resources/space.py index 16222ee..f0f546b 100644 --- a/seam/resources/space.py +++ b/seam/resources/space.py @@ -5,6 +5,41 @@ @dataclass class Space: + """Represents a space that is a logical grouping of devices and entrances. You can assign access to an entire space, thereby making granting access more efficient. + + :ivar acs_entrance_count: Number of entrances in the space. + :vartype acs_entrance_count: float + + :ivar created_at: Date and time at which the space was created. + :vartype created_at: str + + :ivar customer_data: Reservation/stay-related defaults for the space. Also carries the provider/PMS-supplied name under a `_name` key (e.g. `guesty_name`), which Seam preserves when you rename the space (read-only — managed by Seam). + :vartype customer_data: Dict[str, Any] + + :ivar customer_key: Customer key associated with the space. + :vartype customer_key: str + + :ivar device_count: Number of devices in the space. + :vartype device_count: float + + :ivar display_name: Display name for the space. + :vartype display_name: str + + :ivar geolocation: Geographic coordinates (latitude and longitude) of the space. + :vartype geolocation: Dict[str, Any] + + :ivar name: Name of the space. + :vartype name: str + + :ivar space_id: ID of the space. + :vartype space_id: str + + :ivar space_key: Unique key for the space within the workspace. + :vartype space_key: str + + :ivar workspace_id: ID of the workspace associated with the space. + :vartype workspace_id: str""" + acs_entrance_count: float created_at: str customer_data: Dict[str, Any] diff --git a/seam/resources/thermostat_daily_program.py b/seam/resources/thermostat_daily_program.py index 2476fec..e3bf2de 100644 --- a/seam/resources/thermostat_daily_program.py +++ b/seam/resources/thermostat_daily_program.py @@ -5,6 +5,26 @@ @dataclass class ThermostatDailyProgram: + """Represents a thermostat daily program, consisting of a set of periods, each of which has a starting time and the key that identifies the climate preset to apply at the starting time. + + :ivar created_at: Date and time at which the thermostat daily program was created. + :vartype created_at: str + + :ivar device_id: ID of the thermostat device on which the thermostat daily program is configured. + :vartype device_id: str + + :ivar name: User-friendly name to identify the thermostat daily program. + :vartype name: str + + :ivar periods: Array of thermostat daily program periods. + :vartype periods: List[Dict[str, Any]] + + :ivar thermostat_daily_program_id: ID of the thermostat daily program. + :vartype thermostat_daily_program_id: str + + :ivar workspace_id: ID of the workspace that contains the thermostat daily program. + :vartype workspace_id: str""" + created_at: str device_id: str name: str diff --git a/seam/resources/thermostat_schedule.py b/seam/resources/thermostat_schedule.py index 8c48bfa..5740e2f 100644 --- a/seam/resources/thermostat_schedule.py +++ b/seam/resources/thermostat_schedule.py @@ -5,6 +5,41 @@ @dataclass class ThermostatSchedule: + """Represents a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) that activates a configured [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) on a [thermostat](https://docs.seam.co/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time. + + :ivar climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :vartype climate_preset_key: str + + :ivar created_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) was created. + :vartype created_at: str + + :ivar device_id: ID of the desired [thermostat](https://docs.seam.co/capability-guides/thermostats) device. + :vartype device_id: str + + :ivar ends_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :vartype ends_at: str + + :ivar errors: Errors associated with the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :vartype errors: List[Dict[str, Any]] + + :ivar is_override_allowed: Indicates whether a person at the thermostat can change the thermostat's settings after the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts. + :vartype is_override_allowed: bool + + :ivar max_override_period_minutes: Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :vartype max_override_period_minutes: int + + :ivar name: User-friendly name to identify the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :vartype name: str + + :ivar starts_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :vartype starts_at: str + + :ivar thermostat_schedule_id: ID of the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :vartype thermostat_schedule_id: str + + :ivar workspace_id: ID of the workspace that contains the thermostat schedule. + :vartype workspace_id: str""" + climate_preset_key: str created_at: str device_id: str diff --git a/seam/resources/unmanaged_access_code.py b/seam/resources/unmanaged_access_code.py index 60dce01..2091be0 100644 --- a/seam/resources/unmanaged_access_code.py +++ b/seam/resources/unmanaged_access_code.py @@ -5,6 +5,66 @@ @dataclass class UnmanagedAccessCode: + """Represents an [unmanaged smart lock access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. + + When you create an access code on a device in Seam, it is created as a managed access code. Access codes that exist on a device that were not created through Seam are considered unmanaged codes. We strictly limit the operations that can be performed on unmanaged codes. + + Prior to using Seam to manage your devices, you may have used another lock management system to manage the access codes on your devices. Where possible, we help you keep any existing access codes on devices and transition those codes to ones managed by your Seam workspace. + + Not all providers support unmanaged access codes. The following providers do not support unmanaged access codes: + + - [Kwikset](https://docs.seam.co/device-and-system-integration-guides/kwikset-locks) + + :ivar access_code_id: Unique identifier for the access code. + :vartype access_code_id: str + + :ivar cannot_be_managed: Indicates that Seam cannot convert this unmanaged access code to a managed access code. Some providers do not support management of unmanaged access codes through API integrations. + :vartype cannot_be_managed: bool + + :ivar cannot_delete_unmanaged_access_code: Indicates that Seam cannot delete this unmanaged access code through the provider. If this access code needs to be deleted, it will only be possible from the manufacturer app. + :vartype cannot_delete_unmanaged_access_code: bool + + :ivar code: Code used for access. Typically, a numeric or alphanumeric string. + :vartype code: str + + :ivar created_at: Date and time at which the access code was created. + :vartype created_at: str + + :ivar device_id: Unique identifier for the device associated with the access code. + :vartype device_id: str + + :ivar dormakaba_oracode_metadata: Metadata for a dormakaba Oracode unmanaged access code. Only present for unmanaged access codes from dormakaba Oracode devices. + :vartype dormakaba_oracode_metadata: Dict[str, Any] + + :ivar ends_at: Date and time after which the time-bound access code becomes inactive. + :vartype ends_at: str + + :ivar errors: Errors associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :vartype errors: List[Dict[str, Any]] + + :ivar is_managed: Indicates that Seam does not manage the access code. + :vartype is_managed: bool + + :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :vartype name: str + + :ivar starts_at: Date and time at which the time-bound access code becomes active. + :vartype starts_at: str + + :ivar status: Current status of the access code within the operational lifecycle. `set` indicates that the code is active and operational. `unset` indicates that the code exists on the provider but is not usable on the device. + :vartype status: str + + :ivar type: Type of the access code. `ongoing` access codes are active continuously until deactivated manually. `time_bound` access codes have a specific duration. + :vartype type: str + + :ivar warnings: Warnings associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. + :vartype workspace_id: str""" + access_code_id: str cannot_be_managed: bool cannot_delete_unmanaged_access_code: bool diff --git a/seam/resources/unmanaged_device.py b/seam/resources/unmanaged_device.py index 85ca4b6..5d58602 100644 --- a/seam/resources/unmanaged_device.py +++ b/seam/resources/unmanaged_device.py @@ -5,6 +5,104 @@ @dataclass class UnmanagedDevice: + """Represents an [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. + :vartype can_configure_auto_lock: bool + + :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. + :vartype can_hvac_cool: bool + + :ivar can_hvac_heat: Indicates whether the thermostat supports heating. + :vartype can_hvac_heat: bool + + :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. + :vartype can_hvac_heat_cool: bool + + :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. + :vartype can_program_offline_access_codes: bool + + :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. + :vartype can_program_online_access_codes: bool + + :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. + :vartype can_program_thermostat_programs_as_different_each_day: bool + + :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. + :vartype can_program_thermostat_programs_as_same_each_day: bool + + :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. + :vartype can_program_thermostat_programs_as_weekday_weekend: bool + + :ivar can_remotely_lock: Indicates whether the device supports remote locking. + :vartype can_remotely_lock: bool + + :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. + :vartype can_remotely_unlock: bool + + :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. + :vartype can_run_thermostat_programs: bool + + :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. + :vartype can_simulate_connection: bool + + :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. + :vartype can_simulate_disconnection: bool + + :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. + :vartype can_simulate_hub_connection: bool + + :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. + :vartype can_simulate_hub_disconnection: bool + + :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. + :vartype can_simulate_paid_subscription: bool + + :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. + :vartype can_simulate_removal: bool + + :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. + :vartype can_turn_off_hvac: bool + + :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. + :vartype can_unlock_with_code: bool + + :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are `access_code`, which indicates that the device can manage and utilize digital PIN codes for secure access; `lock`, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; `noise_detection`, which indicates that the device supports monitoring and responding to ambient noise levels; `thermostat`, which indicates that the device can regulate and adjust indoor temperatures; `battery`, which indicates that the device can manage battery life and health; and `phone`, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags). + :vartype capabilities_supported: List[str] + + :ivar connected_account_id: Unique identifier for the account associated with the device. + :vartype connected_account_id: str + + :ivar created_at: Date and time at which the device object was created. + :vartype created_at: str + + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :vartype custom_metadata: Dict[str, Any] + + :ivar device_id: ID of the device. + :vartype device_id: str + + :ivar device_type: Type of the device. + :vartype device_type: str + + :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + :vartype errors: List[Dict[str, Any]] + + :ivar is_managed: Indicates that Seam does not manage the device. + :vartype is_managed: bool + + :ivar location: Location information for the device. + :vartype location: Dict[str, Any] + + :ivar properties: properties of the device. + :vartype properties: Dict[str, Any] + + :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. + :vartype workspace_id: str""" + can_configure_auto_lock: bool can_hvac_cool: bool can_hvac_heat: bool diff --git a/seam/resources/user_identity.py b/seam/resources/user_identity.py index 36c3da7..334fee7 100644 --- a/seam/resources/user_identity.py +++ b/seam/resources/user_identity.py @@ -5,6 +5,41 @@ @dataclass class UserIdentity: + """Represents a [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with an application user account. + + :ivar acs_user_ids: Array of access system user IDs associated with the user identity. + :vartype acs_user_ids: List[str] + + :ivar created_at: Date and time at which the user identity was created. + :vartype created_at: str + + :ivar display_name: Display name for the user identity. + :vartype display_name: str + + :ivar email_address: Unique email address for the user identity. + :vartype email_address: str + + :ivar errors: Array of errors associated with the user identity. Each error object within the array contains fields like "error_code" and "message." "error_code" is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + :vartype errors: List[Dict[str, Any]] + + :ivar full_name: Full name of the user associated with the user identity. + :vartype full_name: str + + :ivar phone_number: Unique phone number for the user identity in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, +15555550100). + :vartype phone_number: str + + :ivar user_identity_id: ID of the user identity. + :vartype user_identity_id: str + + :ivar user_identity_key: Unique key for the user identity. + :vartype user_identity_key: str + + :ivar warnings: Array of warnings associated with the user identity. Each warning object within the array contains two fields: "warning_code" and "message." "warning_code" is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + :vartype warnings: List[Dict[str, Any]] + + :ivar workspace_id: ID of the workspace that contains the user identity. + :vartype workspace_id: str""" + acs_user_ids: List[str] created_at: str display_name: str diff --git a/seam/resources/webhook.py b/seam/resources/webhook.py index 13adf82..d4d7ca2 100644 --- a/seam/resources/webhook.py +++ b/seam/resources/webhook.py @@ -5,6 +5,20 @@ @dataclass class Webhook: + """Represents a [webhook](https://docs.seam.co/developer-tools/webhooks) that enables you to receive notifications of events. When you create a webhook, specify the endpoint URL at which you want to receive events and the set of event types that you want to receive. + + :ivar event_types: Types of events that the [webhook](https://docs.seam.co/developer-tools/webhooks) should receive. + :vartype event_types: List[str] + + :ivar secret: Secret associated with the [webhook](https://docs.seam.co/developer-tools/webhooks). + :vartype secret: str + + :ivar url: URL for the [webhook](https://docs.seam.co/developer-tools/webhooks). + :vartype url: str + + :ivar webhook_id: ID of the webhook. + :vartype webhook_id: str""" + event_types: List[str] secret: str url: str diff --git a/seam/resources/workspace.py b/seam/resources/workspace.py index 497e095..b2ec1ca 100644 --- a/seam/resources/workspace.py +++ b/seam/resources/workspace.py @@ -5,6 +5,38 @@ @dataclass class Workspace: + """Represents a Seam [workspace](https://docs.seam.co/core-concepts/workspaces). A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a [production workspace](https://docs.seam.co/core-concepts/workspaces#production-workspaces). + + :ivar company_name: Company name associated with the [workspace](https://docs.seam.co/core-concepts/workspaces). + :vartype company_name: str + + :ivar connect_partner_name: Deprecated: Use `company_name` instead. + :vartype connect_partner_name: str + + :ivar connect_webview_customization: + :vartype connect_webview_customization: Dict[str, Any] + + :ivar is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. + :vartype is_publishable_key_auth_enabled: bool + + :ivar is_sandbox: Indicates whether the workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :vartype is_sandbox: bool + + :ivar is_suspended: Indicates whether the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is suspended. Seam suspends sandbox workspaces that have not been accessed in 14 days. + :vartype is_suspended: bool + + :ivar name: Name of the [workspace](https://docs.seam.co/core-concepts/workspaces). + :vartype name: str + + :ivar organization_id: ID of the organization to which the workspace belongs, or `null` if the workspace is not assigned to an organization. + :vartype organization_id: str + + :ivar publishable_key: Publishable key for the [workspace](https://docs.seam.co/core-concepts/workspaces). This key is used to identify the workspace in client-side applications. + :vartype publishable_key: str + + :ivar workspace_id: ID of the workspace. + :vartype workspace_id: str""" + company_name: str connect_partner_name: str connect_webview_customization: Dict[str, Any] diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index cdfb8d1..26f5139 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -39,6 +39,64 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: + """Creates a new [access code](https://docs.seam.co/low-level-apis/access-codes). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + + :param device_id: ID of the device for which you want to create the new access code. + :type device_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param code: Code to be used for access. + :type code: str + + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same `common_code_key` are guaranteed to have the same `code`. See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + :type common_code_key: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :type is_offline_access_code: bool + + :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :type is_one_time_use: bool + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :type max_time_rounding: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :type use_offline_access_code: bool + + :returns: OK + :rtype: AccessCode""" raise NotImplementedError() @abc.abstractmethod @@ -58,14 +116,84 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: + """Creates new [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + + Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. + + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a `common_code_key`. That is, `common_code_key` remains null for these access codes. + + If you want to change these access codes that are not linked by a `common_code_key`, you cannot use `/access_codes/update_multiple`. However, you can update each of these access codes individually, using `/access_codes/update`. + + See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + + :param device_ids: IDs of the devices for which you want to create the new access codes. + :type device_ids: List[str] + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If `throw` (default), no access codes will be created if any device cannot share a code. If `create_random_code`, a random code will be created on devices that cannot share a code. + :type behavior_when_code_cannot_be_shared: str + + :param code: Code to be used for access. + :type code: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :returns: OK + :rtype: List[AccessCode]""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: + """Deletes an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + :param access_code_id: ID of the access code that you want to delete. + :type access_code_id: str + + :param device_id: ID of the device for which you want to delete the access code. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def generate_code(self, *, device_id: str) -> AccessCode: + """Generates a code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes), given a device ID. + + :param device_id: ID of the device for which you want to generate a code. + :type device_id: str + + :returns: OK + :rtype: AccessCode""" raise NotImplementedError() @abc.abstractmethod @@ -76,6 +204,21 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: + """Returns a specified [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + You must specify either `access_code_id` or both `device_id` and `code`. + + :param access_code_id: ID of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type access_code_id: str + + :param code: Code of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type code: str + + :param device_id: ID of the device containing the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type device_id: str + + :returns: OK + :rtype: AccessCode""" raise NotImplementedError() @abc.abstractmethod @@ -93,10 +236,61 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: + """Returns a list of all [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_code_ids: List[str] + + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_grant_id: str + + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_grant_key: str + + :param access_method_id: ID of the access method for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_method_id: str + + :param customer_key: Customer key for which you want to list access codes. + :type customer_key: str + + :param device_id: ID of the device for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type device_id: str + + :param limit: Numerical limit on the number of access codes to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which to filter access codes. + :type user_identifier_key: str + + :returns: OK + :rtype: List[AccessCode]""" raise NotImplementedError() @abc.abstractmethod def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: + """Retrieves a backup access code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes). + + A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. + + You can pull a backup access code from the pool at any time. These backup codes are guaranteed to work immediately and automatically programmed to be removed from the device after the access code ends. + + You can only pull backup access codes for time-bound access codes. + + Before pulling a backup access code, make sure that the device's `properties.supports_backup_access_code_pool` is `true`. Then, to activate the backup pool, set `use_backup_access_code_pool` to `true` when creating an access code. + + :param access_code_id: ID of the access code for which you want to pull a backup access code. + :type access_code_id: str + + :returns: OK + :rtype: AccessCode""" raise NotImplementedError() @abc.abstractmethod @@ -108,6 +302,21 @@ def report_device_constraints( min_code_length: Optional[int] = None, supported_code_lengths: Optional[List[float]] = None ) -> None: + """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. + + Specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + + :param device_id: ID of the device for which you want to report constraints. + :type device_id: str + + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :type max_code_length: int + + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :type min_code_length: int + + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + :type supported_code_lengths: List[float]""" raise NotImplementedError() @abc.abstractmethod @@ -133,6 +342,69 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: + """Updates a specified active or upcoming [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + See also [Modifying Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes). + + :param access_code_id: ID of the access code that you want to update. + :type access_code_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param code: Code to be used for access. + :type code: str + + :param device_id: ID of the device containing the access code that you want to update. + :type device_id: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use `/access_codes/unmanaged/convert_to_managed`. + :type is_managed: bool + + :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :type is_offline_access_code: bool + + :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :type is_one_time_use: bool + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :type max_time_rounding: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access). + :type type: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :type use_offline_access_code: bool""" raise NotImplementedError() @abc.abstractmethod @@ -144,6 +416,29 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + + Specify the `common_code_key` to identify the set of access codes that you want to update. + + See also [Update Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes#update-linked-access-codes). + + :param common_code_key: Key that links the group of access codes, assigned on creation by `/access_codes/create_multiple`. + :type common_code_key: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" raise NotImplementedError() @@ -182,6 +477,64 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: + """Creates a new [access code](https://docs.seam.co/low-level-apis/access-codes). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + + :param device_id: ID of the device for which you want to create the new access code. + :type device_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param code: Code to be used for access. + :type code: str + + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same `common_code_key` are guaranteed to have the same `code`. See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + :type common_code_key: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :type is_offline_access_code: bool + + :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :type is_one_time_use: bool + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :type max_time_rounding: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :type use_offline_access_code: bool + + :returns: OK + :rtype: AccessCode""" json_payload = {} if device_id is not None: @@ -239,6 +592,62 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: + """Creates new [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + + Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. + + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a `common_code_key`. That is, `common_code_key` remains null for these access codes. + + If you want to change these access codes that are not linked by a `common_code_key`, you cannot use `/access_codes/update_multiple`. However, you can update each of these access codes individually, using `/access_codes/update`. + + See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + + For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + + :param device_ids: IDs of the devices for which you want to create the new access codes. + :type device_ids: List[str] + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If `throw` (default), no access codes will be created if any device cannot share a code. If `create_random_code`, a random code will be created on devices that cannot share a code. + :type behavior_when_code_cannot_be_shared: str + + :param code: Code to be used for access. + :type code: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :returns: OK + :rtype: List[AccessCode]""" json_payload = {} if device_ids is not None: @@ -275,6 +684,13 @@ def create_multiple( return [AccessCode.from_dict(item) for item in res["access_codes"]] def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: + """Deletes an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + :param access_code_id: ID of the access code that you want to delete. + :type access_code_id: str + + :param device_id: ID of the device for which you want to delete the access code. + :type device_id: str""" json_payload = {} if access_code_id is not None: @@ -287,6 +703,13 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non return None def generate_code(self, *, device_id: str) -> AccessCode: + """Generates a code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes), given a device ID. + + :param device_id: ID of the device for which you want to generate a code. + :type device_id: str + + :returns: OK + :rtype: AccessCode""" json_payload = {} if device_id is not None: @@ -303,6 +726,21 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: + """Returns a specified [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + You must specify either `access_code_id` or both `device_id` and `code`. + + :param access_code_id: ID of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type access_code_id: str + + :param code: Code of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type code: str + + :param device_id: ID of the device containing the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type device_id: str + + :returns: OK + :rtype: AccessCode""" json_payload = {} if access_code_id is not None: @@ -330,6 +768,42 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: + """Returns a list of all [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_code_ids: List[str] + + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_grant_id: str + + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_grant_key: str + + :param access_method_id: ID of the access method for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type access_method_id: str + + :param customer_key: Customer key for which you want to list access codes. + :type customer_key: str + + :param device_id: ID of the device for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :type device_id: str + + :param limit: Numerical limit on the number of access codes to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which to filter access codes. + :type user_identifier_key: str + + :returns: OK + :rtype: List[AccessCode]""" json_payload = {} if access_code_ids is not None: @@ -358,6 +832,21 @@ def list( return [AccessCode.from_dict(item) for item in res["access_codes"]] def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: + """Retrieves a backup access code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes). + + A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. + + You can pull a backup access code from the pool at any time. These backup codes are guaranteed to work immediately and automatically programmed to be removed from the device after the access code ends. + + You can only pull backup access codes for time-bound access codes. + + Before pulling a backup access code, make sure that the device's `properties.supports_backup_access_code_pool` is `true`. Then, to activate the backup pool, set `use_backup_access_code_pool` to `true` when creating an access code. + + :param access_code_id: ID of the access code for which you want to pull a backup access code. + :type access_code_id: str + + :returns: OK + :rtype: AccessCode""" json_payload = {} if access_code_id is not None: @@ -377,6 +866,21 @@ def report_device_constraints( min_code_length: Optional[int] = None, supported_code_lengths: Optional[List[float]] = None ) -> None: + """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. + + Specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + + :param device_id: ID of the device for which you want to report constraints. + :type device_id: str + + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :type max_code_length: int + + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :type min_code_length: int + + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + :type supported_code_lengths: List[float]""" json_payload = {} if device_id is not None: @@ -414,6 +918,69 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: + """Updates a specified active or upcoming [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + See also [Modifying Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes). + + :param access_code_id: ID of the access code that you want to update. + :type access_code_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type allow_external_modification: bool + + :param attempt_for_offline_device: + :type attempt_for_offline_device: bool + + :param code: Code to be used for access. + :type code: str + + :param device_id: ID of the device containing the access code that you want to update. + :type device_id: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :type is_external_modification_allowed: bool + + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use `/access_codes/unmanaged/convert_to_managed`. + :type is_managed: bool + + :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :type is_offline_access_code: bool + + :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :type is_one_time_use: bool + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :type max_time_rounding: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :type prefer_native_scheduling: bool + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :type preferred_code_length: float + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access). + :type type: str + + :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :type use_backup_access_code_pool: bool + + :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :type use_offline_access_code: bool""" json_payload = {} if access_code_id is not None: @@ -467,6 +1034,29 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + + Specify the `common_code_key` to identify the set of access codes that you want to update. + + See also [Update Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes#update-linked-access-codes). + + :param common_code_key: Key that links the group of access codes, assigned on creation by `/access_codes/create_multiple`. + :type common_code_key: str + + :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :type name: str + + :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" json_payload = {} if common_code_key is not None: diff --git a/seam/routes/access_codes_simulate.py b/seam/routes/access_codes_simulate.py index 303c347..c1b76ae 100644 --- a/seam/routes/access_codes_simulate.py +++ b/seam/routes/access_codes_simulate.py @@ -10,6 +10,19 @@ class AbstractAccessCodesSimulate(abc.ABC): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: + """Simulates the creation of an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param code: Code of the simulated unmanaged access code. + :type code: str + + :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. + :type device_id: str + + :param name: Name of the simulated unmanaged access code. + :type name: str + + :returns: OK + :rtype: UnmanagedAccessCode""" raise NotImplementedError() @@ -21,6 +34,19 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: + """Simulates the creation of an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param code: Code of the simulated unmanaged access code. + :type code: str + + :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. + :type device_id: str + + :param name: Name of the simulated unmanaged access code. + :type name: str + + :returns: OK + :rtype: UnmanagedAccessCode""" json_payload = {} if code is not None: diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index 3528666..a74f304 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -15,10 +15,31 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Converts an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. + + Note that not all device providers support converting an unmanaged access code to a managed access code. + + :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. + :type access_code_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :type allow_external_modification: bool + + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set `force` to `true`. + :type force: bool + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :type is_external_modification_allowed: bool""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_code_id: str) -> None: + """Deletes an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param access_code_id: ID of the unmanaged access code that you want to delete. + :type access_code_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -29,6 +50,21 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: + """Returns a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + You must specify either `access_code_id` or both `device_id` and `code`. + + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type access_code_id: str + + :param code: Code of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type code: str + + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type device_id: str + + :returns: OK + :rtype: UnmanagedAccessCode""" raise NotImplementedError() @abc.abstractmethod @@ -41,6 +77,25 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: + """Returns a list of all [unmanaged access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param device_id: ID of the device for which you want to list unmanaged access codes. + :type device_id: str + + :param limit: Numerical limit on the number of unmanaged access codes to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. + :type user_identifier_key: str + + :returns: OK + :rtype: List[UnmanagedAccessCode]""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +108,22 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Updates a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param access_code_id: ID of the unmanaged access code that you want to update. + :type access_code_id: str + + :param is_managed: + :type is_managed: bool + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :type allow_external_modification: bool + + :param force: Indicates whether to force the unmanaged access code update. + :type force: bool + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :type is_external_modification_allowed: bool""" raise NotImplementedError() @@ -69,6 +140,23 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Converts an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + + An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. + + Note that not all device providers support converting an unmanaged access code to a managed access code. + + :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. + :type access_code_id: str + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :type allow_external_modification: bool + + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set `force` to `true`. + :type force: bool + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :type is_external_modification_allowed: bool""" json_payload = {} if access_code_id is not None: @@ -89,6 +177,10 @@ def convert_to_managed( return None def delete(self, *, access_code_id: str) -> None: + """Deletes an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param access_code_id: ID of the unmanaged access code that you want to delete. + :type access_code_id: str""" json_payload = {} if access_code_id is not None: @@ -105,6 +197,21 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: + """Returns a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + You must specify either `access_code_id` or both `device_id` and `code`. + + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type access_code_id: str + + :param code: Code of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type code: str + + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :type device_id: str + + :returns: OK + :rtype: UnmanagedAccessCode""" json_payload = {} if access_code_id is not None: @@ -127,6 +234,25 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: + """Returns a list of all [unmanaged access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param device_id: ID of the device for which you want to list unmanaged access codes. + :type device_id: str + + :param limit: Numerical limit on the number of unmanaged access codes to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. + :type user_identifier_key: str + + :returns: OK + :rtype: List[UnmanagedAccessCode]""" json_payload = {} if device_id is not None: @@ -153,6 +279,22 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Updates a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + + :param access_code_id: ID of the unmanaged access code that you want to update. + :type access_code_id: str + + :param is_managed: + :type is_managed: bool + + :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :type allow_external_modification: bool + + :param force: Indicates whether to force the unmanaged access code update. + :type force: bool + + :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :type is_external_modification_allowed: bool""" json_payload = {} if access_code_id is not None: diff --git a/seam/routes/access_grants.py b/seam/routes/access_grants.py index 722f733..268512b 100644 --- a/seam/routes/access_grants.py +++ b/seam/routes/access_grants.py @@ -35,10 +35,63 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: + """Creates a new [Access Grant](https://docs.seam.co/use-cases/granting-access/access-grants). Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using `device_ids`) and access control systems (using `acs_entrance_ids` or `space_ids`), and can issue PIN codes, key cards, and mobile keys through a single request. + + :param requested_access_methods: + :type requested_access_methods: List[Dict[str, Any]] + + :param user_identity_id: ID of user identity for whom access is being granted. + :type user_identity_id: str + + :param user_identity: When used, creates a new user identity with the given details, and grants them access. + :type user_identity: Dict[str, Any] + + :param access_grant_key: Unique key for the access grant within the workspace. + :type access_grant_key: str + + :param acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/api/acs/systems/list) to which access is being granted. + :type acs_entrance_ids: List[str] + + :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. + :type customization_profile_id: str + + :param device_ids: Set of IDs of the [devices](https://docs.seam.co/api/devices/list) to which access is being granted. + :type device_ids: List[str] + + :param ends_at: Date and time at which the validity of the new grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param location: Deprecated: Create a space first, then reference it using `space_ids`. + :type location: Dict[str, Any] + + :param location_ids: Deprecated: Use `space_ids`. + :type location_ids: List[str] + + :param name: Name for the access grant. + :type name: str + + :param reservation_key: Reservation key for the access grant. + :type reservation_key: str + + :param space_ids: Set of IDs of existing spaces to which access is being granted. + :type space_ids: List[str] + + :param space_keys: Set of keys of existing spaces to which access is being granted. + :type space_keys: List[str] + + :param starts_at: Date and time at which the validity of the new grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :returns: OK + :rtype: AccessGrant""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_grant_id: str) -> None: + """Delete an Access Grant. + + :param access_grant_id: ID of Access Grant to delete. + :type access_grant_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +101,16 @@ def get( access_grant_id: Optional[str] = None, access_grant_key: Optional[str] = None ) -> AccessGrant: + """Get an Access Grant. + + :param access_grant_id: ID of Access Grant to get. + :type access_grant_id: str + + :param access_grant_key: Unique key of Access Grant to get. + :type access_grant_key: str + + :returns: OK + :rtype: AccessGrant""" raise NotImplementedError() @abc.abstractmethod @@ -59,6 +122,22 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Grants. + + :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. + :type access_grant_ids: List[str] + + :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. + :type access_grant_keys: List[str] + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :returns: OK + :rtype: Batch""" raise NotImplementedError() @abc.abstractmethod @@ -79,12 +158,65 @@ def list( space_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AccessGrant]: + """Gets an Access Grant. + + :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. + :type access_code_id: str + + :param access_grant_ids: IDs of the access grants to retrieve. + :type access_grant_ids: List[str] + + :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. + :type access_grant_key: str + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. + :type acs_system_id: str + + :param customer_key: Customer key for which you want to list access grants. + :type customer_key: str + + :param device_id: ID of the device by which you want to filter the list of Access Grants. + :type device_id: str + + :param limit: Numerical limit on the number of access grants to return. + :type limit: float + + :param location_id: Deprecated: Use `space_id`. + :type location_id: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param reservation_key: Filter Access Grants by reservation_key. + :type reservation_key: str + + :param space_id: ID of the space by which you want to filter the list of Access Grants. + :type space_id: str + + :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. + :type user_identity_id: str + + :returns: OK + :rtype: List[AccessGrant]""" raise NotImplementedError() @abc.abstractmethod def request_access_methods( self, *, access_grant_id: str, requested_access_methods: List[Dict[str, Any]] ) -> AccessGrant: + """Adds additional requested access methods to an existing Access Grant. + + :param access_grant_id: ID of the Access Grant to add access methods to. + :type access_grant_id: str + + :param requested_access_methods: Array of requested access methods to add to the access grant. + :type requested_access_methods: List[Dict[str, Any]] + + :returns: OK + :rtype: AccessGrant""" raise NotImplementedError() @abc.abstractmethod @@ -97,6 +229,22 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates an existing Access Grant's time window. + + :param access_grant_id: ID of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :type access_grant_id: str + + :param access_grant_key: Key of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :type access_grant_key: str + + :param ends_at: Date and time at which the validity of the grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param name: Display name for the access grant. + :type name: str + + :param starts_at: Date and time at which the validity of the grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" raise NotImplementedError() @@ -129,6 +277,55 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: + """Creates a new [Access Grant](https://docs.seam.co/use-cases/granting-access/access-grants). Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using `device_ids`) and access control systems (using `acs_entrance_ids` or `space_ids`), and can issue PIN codes, key cards, and mobile keys through a single request. + + :param requested_access_methods: + :type requested_access_methods: List[Dict[str, Any]] + + :param user_identity_id: ID of user identity for whom access is being granted. + :type user_identity_id: str + + :param user_identity: When used, creates a new user identity with the given details, and grants them access. + :type user_identity: Dict[str, Any] + + :param access_grant_key: Unique key for the access grant within the workspace. + :type access_grant_key: str + + :param acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/api/acs/systems/list) to which access is being granted. + :type acs_entrance_ids: List[str] + + :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. + :type customization_profile_id: str + + :param device_ids: Set of IDs of the [devices](https://docs.seam.co/api/devices/list) to which access is being granted. + :type device_ids: List[str] + + :param ends_at: Date and time at which the validity of the new grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param location: Deprecated: Create a space first, then reference it using `space_ids`. + :type location: Dict[str, Any] + + :param location_ids: Deprecated: Use `space_ids`. + :type location_ids: List[str] + + :param name: Name for the access grant. + :type name: str + + :param reservation_key: Reservation key for the access grant. + :type reservation_key: str + + :param space_ids: Set of IDs of existing spaces to which access is being granted. + :type space_ids: List[str] + + :param space_keys: Set of keys of existing spaces to which access is being granted. + :type space_keys: List[str] + + :param starts_at: Date and time at which the validity of the new grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :returns: OK + :rtype: AccessGrant""" json_payload = {} if requested_access_methods is not None: @@ -167,6 +364,10 @@ def create( return AccessGrant.from_dict(res["access_grant"]) def delete(self, *, access_grant_id: str) -> None: + """Delete an Access Grant. + + :param access_grant_id: ID of Access Grant to delete. + :type access_grant_id: str""" json_payload = {} if access_grant_id is not None: @@ -182,6 +383,16 @@ def get( access_grant_id: Optional[str] = None, access_grant_key: Optional[str] = None ) -> AccessGrant: + """Get an Access Grant. + + :param access_grant_id: ID of Access Grant to get. + :type access_grant_id: str + + :param access_grant_key: Unique key of Access Grant to get. + :type access_grant_key: str + + :returns: OK + :rtype: AccessGrant""" json_payload = {} if access_grant_id is not None: @@ -201,6 +412,22 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Grants. + + :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. + :type access_grant_ids: List[str] + + :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. + :type access_grant_keys: List[str] + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :returns: OK + :rtype: Batch""" json_payload = {} if access_grant_ids is not None: @@ -233,6 +460,49 @@ def list( space_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AccessGrant]: + """Gets an Access Grant. + + :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. + :type access_code_id: str + + :param access_grant_ids: IDs of the access grants to retrieve. + :type access_grant_ids: List[str] + + :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. + :type access_grant_key: str + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. + :type acs_system_id: str + + :param customer_key: Customer key for which you want to list access grants. + :type customer_key: str + + :param device_id: ID of the device by which you want to filter the list of Access Grants. + :type device_id: str + + :param limit: Numerical limit on the number of access grants to return. + :type limit: float + + :param location_id: Deprecated: Use `space_id`. + :type location_id: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param reservation_key: Filter Access Grants by reservation_key. + :type reservation_key: str + + :param space_id: ID of the space by which you want to filter the list of Access Grants. + :type space_id: str + + :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. + :type user_identity_id: str + + :returns: OK + :rtype: List[AccessGrant]""" json_payload = {} if access_code_id is not None: @@ -269,6 +539,16 @@ def list( def request_access_methods( self, *, access_grant_id: str, requested_access_methods: List[Dict[str, Any]] ) -> AccessGrant: + """Adds additional requested access methods to an existing Access Grant. + + :param access_grant_id: ID of the Access Grant to add access methods to. + :type access_grant_id: str + + :param requested_access_methods: Array of requested access methods to add to the access grant. + :type requested_access_methods: List[Dict[str, Any]] + + :returns: OK + :rtype: AccessGrant""" json_payload = {} if access_grant_id is not None: @@ -291,6 +571,22 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates an existing Access Grant's time window. + + :param access_grant_id: ID of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :type access_grant_id: str + + :param access_grant_key: Key of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :type access_grant_key: str + + :param ends_at: Date and time at which the validity of the grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param name: Display name for the access grant. + :type name: str + + :param starts_at: Date and time at which the validity of the grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_grants_unmanaged.py b/seam/routes/access_grants_unmanaged.py index c80ca66..8b2aca7 100644 --- a/seam/routes/access_grants_unmanaged.py +++ b/seam/routes/access_grants_unmanaged.py @@ -7,6 +7,10 @@ class AbstractAccessGrantsUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, access_grant_id: str) -> None: + """Get an unmanaged Access Grant (where is_managed = false). + + :param access_grant_id: ID of unmanaged Access Grant to get. + :type access_grant_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -20,6 +24,25 @@ def list( reservation_key: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Gets unmanaged Access Grants (where is_managed = false). + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. + :type acs_system_id: str + + :param limit: Numerical limit on the number of unmanaged access grants to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param reservation_key: Filter unmanaged Access Grants by reservation_key. + :type reservation_key: str + + :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -30,6 +53,20 @@ def update( is_managed: bool, access_grant_key: Optional[str] = None ) -> None: + """Updates an unmanaged Access Grant to make it managed. + + This endpoint can only be used to convert unmanaged access grants to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed access grants back to unmanaged. + + When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. + + :param access_grant_id: ID of the unmanaged Access Grant to update. + :type access_grant_id: str + + :param is_managed: Must be set to true to convert the unmanaged access grant to managed. + :type is_managed: bool + + :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. + :type access_grant_key: str""" raise NotImplementedError() @@ -39,6 +76,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, access_grant_id: str) -> None: + """Get an unmanaged Access Grant (where is_managed = false). + + :param access_grant_id: ID of unmanaged Access Grant to get. + :type access_grant_id: str""" json_payload = {} if access_grant_id is not None: @@ -58,6 +99,25 @@ def list( reservation_key: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Gets unmanaged Access Grants (where is_managed = false). + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. + :type acs_system_id: str + + :param limit: Numerical limit on the number of unmanaged access grants to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param reservation_key: Filter unmanaged Access Grants by reservation_key. + :type reservation_key: str + + :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. + :type user_identity_id: str""" json_payload = {} if acs_entrance_id is not None: @@ -84,6 +144,20 @@ def update( is_managed: bool, access_grant_key: Optional[str] = None ) -> None: + """Updates an unmanaged Access Grant to make it managed. + + This endpoint can only be used to convert unmanaged access grants to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed access grants back to unmanaged. + + When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. + + :param access_grant_id: ID of the unmanaged Access Grant to update. + :type access_grant_id: str + + :param is_managed: Must be set to true to convert the unmanaged access grant to managed. + :type is_managed: bool + + :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. + :type access_grant_key: str""" json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_methods.py b/seam/routes/access_methods.py index 83a03a7..36247c8 100644 --- a/seam/routes/access_methods.py +++ b/seam/routes/access_methods.py @@ -24,6 +24,19 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Assigns a pre-registered card credential, identified by `card_number`, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + + :param access_method_id: ID of the `access_method` to assign the credential to. + :type access_method_id: str + + :param card_number: Card number of the credential to assign. + :type card_number: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -34,6 +47,16 @@ def delete( access_grant_id: Optional[str] = None, reservation_key: Optional[str] = None ) -> None: + """Deletes an access method. + + :param access_method_id: ID of access method to delete. + :type access_method_id: str + + :param access_grant_id: ID of access grant whose access methods should be deleted. + :type access_grant_id: str + + :param reservation_key: Reservation key of the access grant whose access methods should be deleted. + :type reservation_key: str""" raise NotImplementedError() @abc.abstractmethod @@ -44,10 +67,30 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing access method onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param access_method_id: ID of the `access_method` to encode onto a card. + :type access_method_id: str + + :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `access_method`. + :type acs_encoder_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod def get(self, *, access_method_id: str) -> AccessMethod: + """Gets an access method. + + :param access_method_id: ID of access method to get. + :type access_method_id: str + + :returns: OK + :rtype: AccessMethod""" raise NotImplementedError() @abc.abstractmethod @@ -58,6 +101,19 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Methods. + + :param access_method_ids: IDs of the access methods that you want to get along with their related resources. + :type access_method_ids: List[str] + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :returns: OK + :rtype: Batch""" raise NotImplementedError() @abc.abstractmethod @@ -71,6 +127,28 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> List[AccessMethod]: + """Lists all access methods, usually filtered by Access Grant. + + :param access_code_id: ID of the access code for which you want to retrieve all access methods. + :type access_code_id: str + + :param access_grant_id: ID of Access Grant to list access methods for. + :type access_grant_id: str + + :param access_grant_key: Key of Access Grant to list access methods for. + :type access_grant_key: str + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods. + :type acs_entrance_id: str + + :param device_id: ID of the device for which you want to retrieve all access methods. + :type device_id: str + + :param space_id: ID of the space for which you want to retrieve all access methods. + :type space_id: str + + :returns: OK + :rtype: List[AccessMethod]""" raise NotImplementedError() @abc.abstractmethod @@ -81,6 +159,19 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + + :param access_method_id: ID of the cloud_key `access_method` to use for the unlock operation. + :type access_method_id: str + + :param acs_entrance_id: ID of the entrance to unlock. + :type acs_entrance_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -101,6 +192,19 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Assigns a pre-registered card credential, identified by `card_number`, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + + :param access_method_id: ID of the `access_method` to assign the credential to. + :type access_method_id: str + + :param card_number: Card number of the credential to assign. + :type card_number: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if access_method_id is not None: @@ -129,6 +233,16 @@ def delete( access_grant_id: Optional[str] = None, reservation_key: Optional[str] = None ) -> None: + """Deletes an access method. + + :param access_method_id: ID of access method to delete. + :type access_method_id: str + + :param access_grant_id: ID of access grant whose access methods should be deleted. + :type access_grant_id: str + + :param reservation_key: Reservation key of the access grant whose access methods should be deleted. + :type reservation_key: str""" json_payload = {} if access_method_id is not None: @@ -149,6 +263,19 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing access method onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param access_method_id: ID of the `access_method` to encode onto a card. + :type access_method_id: str + + :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `access_method`. + :type acs_encoder_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if access_method_id is not None: @@ -171,6 +298,13 @@ def encode( ) def get(self, *, access_method_id: str) -> AccessMethod: + """Gets an access method. + + :param access_method_id: ID of access method to get. + :type access_method_id: str + + :returns: OK + :rtype: AccessMethod""" json_payload = {} if access_method_id is not None: @@ -187,6 +321,19 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Methods. + + :param access_method_ids: IDs of the access methods that you want to get along with their related resources. + :type access_method_ids: List[str] + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :returns: OK + :rtype: Batch""" json_payload = {} if access_method_ids is not None: @@ -210,6 +357,28 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> List[AccessMethod]: + """Lists all access methods, usually filtered by Access Grant. + + :param access_code_id: ID of the access code for which you want to retrieve all access methods. + :type access_code_id: str + + :param access_grant_id: ID of Access Grant to list access methods for. + :type access_grant_id: str + + :param access_grant_key: Key of Access Grant to list access methods for. + :type access_grant_key: str + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods. + :type acs_entrance_id: str + + :param device_id: ID of the device for which you want to retrieve all access methods. + :type device_id: str + + :param space_id: ID of the space for which you want to retrieve all access methods. + :type space_id: str + + :returns: OK + :rtype: List[AccessMethod]""" json_payload = {} if access_code_id is not None: @@ -236,6 +405,19 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + + :param access_method_id: ID of the cloud_key `access_method` to use for the unlock operation. + :type access_method_id: str + + :param acs_entrance_id: ID of the entrance to unlock. + :type acs_entrance_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if access_method_id is not None: diff --git a/seam/routes/access_methods_unmanaged.py b/seam/routes/access_methods_unmanaged.py index 60dbe0d..0a3c45e 100644 --- a/seam/routes/access_methods_unmanaged.py +++ b/seam/routes/access_methods_unmanaged.py @@ -7,6 +7,10 @@ class AbstractAccessMethodsUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, access_method_id: str) -> None: + """Gets an unmanaged access method (where is_managed = false). + + :param access_method_id: ID of unmanaged access method to get. + :type access_method_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -18,6 +22,19 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> None: + """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. + + :param access_grant_id: ID of Access Grant to list unmanaged access methods for. + :type access_grant_id: str + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. + :type acs_entrance_id: str + + :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. + :type device_id: str + + :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. + :type space_id: str""" raise NotImplementedError() @@ -27,6 +44,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, access_method_id: str) -> None: + """Gets an unmanaged access method (where is_managed = false). + + :param access_method_id: ID of unmanaged access method to get. + :type access_method_id: str""" json_payload = {} if access_method_id is not None: @@ -44,6 +65,19 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> None: + """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. + + :param access_grant_id: ID of Access Grant to list unmanaged access methods for. + :type access_grant_id: str + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. + :type acs_entrance_id: str + + :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. + :type device_id: str + + :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. + :type space_id: str""" json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 35c0cbd..8bc93ea 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -14,14 +14,35 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_access_group_id: str) -> None: + """Deletes a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group that you want to delete. + :type acs_access_group_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: + """Returns a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group that you want to get. + :type acs_access_group_id: str + + :returns: OK + :rtype: AcsAccessGroup""" raise NotImplementedError() @abc.abstractmethod @@ -33,16 +54,46 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: + """Returns a list of all [access groups](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_system_id: ID of the access system for which you want to retrieve all access groups. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. + :type acs_user_id: str + + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using `name` or `acs_access_group_id`. + :type search: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsAccessGroup]""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: + """Returns a list of all accessible entrances for a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. + :type acs_access_group_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" raise NotImplementedError() @abc.abstractmethod def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. + :type acs_access_group_id: str + + :returns: OK + :rtype: List[AcsUser]""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +104,16 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to remove from an access group. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. + :type user_identity_id: str""" raise NotImplementedError() @@ -68,6 +129,16 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" json_payload = {} if acs_access_group_id is not None: @@ -82,6 +153,10 @@ def add_user( return None def delete(self, *, acs_access_group_id: str) -> None: + """Deletes a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group that you want to delete. + :type acs_access_group_id: str""" json_payload = {} if acs_access_group_id is not None: @@ -92,6 +167,13 @@ def delete(self, *, acs_access_group_id: str) -> None: return None def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: + """Returns a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group that you want to get. + :type acs_access_group_id: str + + :returns: OK + :rtype: AcsAccessGroup""" json_payload = {} if acs_access_group_id is not None: @@ -109,6 +191,22 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: + """Returns a list of all [access groups](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_system_id: ID of the access system for which you want to retrieve all access groups. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. + :type acs_user_id: str + + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using `name` or `acs_access_group_id`. + :type search: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsAccessGroup]""" json_payload = {} if acs_system_id is not None: @@ -127,6 +225,13 @@ def list( def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: + """Returns a list of all accessible entrances for a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. + :type acs_access_group_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" json_payload = {} if acs_access_group_id is not None: @@ -139,6 +244,13 @@ def list_accessible_entrances( return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. + :type acs_access_group_id: str + + :returns: OK + :rtype: List[AcsUser]""" json_payload = {} if acs_access_group_id is not None: @@ -155,6 +267,16 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to remove from an access group. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. + :type user_identity_id: str""" json_payload = {} if acs_access_group_id is not None: diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index 7946fed..dc89105 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -14,6 +14,16 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Assigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) to a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_credential_id: ID of the credential that you want to assign to an access system user. + :type acs_credential_id: str + + :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -34,14 +44,68 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: + """Creates a new [credential](https://docs.seam.co/low-level-apis/managing-credentials) for a specified [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + + :param access_method: Access method for the new credential. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :type access_method: str + + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :type acs_user_id: str + + :param allowed_acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) for which the new credential grants access. + :type allowed_acs_entrance_ids: List[str] + + :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. + :type assa_abloy_vostio_metadata: Dict[str, Any] + + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable [device or system integration guide](https://docs.seam.co/device-and-system-integration-guides). + :type code: str + + :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. + :type credential_manager_acs_system_id: str + + :param ends_at: Date and time at which the validity of the new credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_multi_phone_sync_credential: Indicates whether the new credential is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :type is_multi_phone_sync_credential: bool + + :param salto_space_metadata: Salto Space-specific metadata for the new credential. + :type salto_space_metadata: Dict[str, Any] + + :param starts_at: Date and time at which the validity of the new credential starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. If the access system contains a user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + :type user_identity_id: str + + :param visionline_metadata: Visionline-specific metadata for the new credential. + :type visionline_metadata: Dict[str, Any] + + :returns: OK + :rtype: AcsCredential""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_credential_id: str) -> None: + """Deletes a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to delete. + :type acs_credential_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_credential_id: str) -> AcsCredential: + """Returns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to get. + :type acs_credential_id: str + + :returns: OK + :rtype: AcsCredential""" raise NotImplementedError() @abc.abstractmethod @@ -57,10 +121,45 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: + """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. + :type acs_user_id: str + + :param acs_system_id: ID of the access system for which you want to retrieve all credentials. + :type acs_system_id: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. + :type user_identity_id: str + + :param created_before: Date and time, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format, before which events to return were created. + :type created_before: str + + :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. + :type is_multi_phone_sync_credential: bool + + :param limit: Number of credentials to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using `display_name`, `code`, `card_number`, `acs_user_id` or `acs_credential_id`. + :type search: str + + :returns: OK + :rtype: List[AcsCredential]""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + """Returns a list of all [entrances](https://docs.seam.co/api/acs/entrances) to which a [credential](https://docs.seam.co/api/acs/credentials) grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. + :type acs_credential_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" raise NotImplementedError() @abc.abstractmethod @@ -71,6 +170,16 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Unassigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_credential_id: ID of the credential that you want to unassign from an access system user. + :type acs_credential_id: str + + :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -81,6 +190,16 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: + """Updates the code and ends at date and time for a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to update. + :type acs_credential_id: str + + :param code: Replacement access (PIN) code for the credential that you want to update. + :type code: str + + :param ends_at: Replacement date and time at which the validity of the credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after the `starts_at` value that you set when creating the credential. + :type ends_at: str""" raise NotImplementedError() @@ -96,6 +215,16 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Assigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) to a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_credential_id: ID of the credential that you want to assign to an access system user. + :type acs_credential_id: str + + :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" json_payload = {} if acs_credential_id is not None: @@ -126,6 +255,49 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: + """Creates a new [credential](https://docs.seam.co/low-level-apis/managing-credentials) for a specified [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + + :param access_method: Access method for the new credential. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :type access_method: str + + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :type acs_user_id: str + + :param allowed_acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) for which the new credential grants access. + :type allowed_acs_entrance_ids: List[str] + + :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. + :type assa_abloy_vostio_metadata: Dict[str, Any] + + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable [device or system integration guide](https://docs.seam.co/device-and-system-integration-guides). + :type code: str + + :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. + :type credential_manager_acs_system_id: str + + :param ends_at: Date and time at which the validity of the new credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :type ends_at: str + + :param is_multi_phone_sync_credential: Indicates whether the new credential is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :type is_multi_phone_sync_credential: bool + + :param salto_space_metadata: Salto Space-specific metadata for the new credential. + :type salto_space_metadata: Dict[str, Any] + + :param starts_at: Date and time at which the validity of the new credential starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. If the access system contains a user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + :type user_identity_id: str + + :param visionline_metadata: Visionline-specific metadata for the new credential. + :type visionline_metadata: Dict[str, Any] + + :returns: OK + :rtype: AcsCredential""" json_payload = {} if access_method is not None: @@ -164,6 +336,10 @@ def create( return AcsCredential.from_dict(res["acs_credential"]) def delete(self, *, acs_credential_id: str) -> None: + """Deletes a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to delete. + :type acs_credential_id: str""" json_payload = {} if acs_credential_id is not None: @@ -174,6 +350,13 @@ def delete(self, *, acs_credential_id: str) -> None: return None def get(self, *, acs_credential_id: str) -> AcsCredential: + """Returns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to get. + :type acs_credential_id: str + + :returns: OK + :rtype: AcsCredential""" json_payload = {} if acs_credential_id is not None: @@ -195,6 +378,34 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: + """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. + :type acs_user_id: str + + :param acs_system_id: ID of the access system for which you want to retrieve all credentials. + :type acs_system_id: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. + :type user_identity_id: str + + :param created_before: Date and time, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format, before which events to return were created. + :type created_before: str + + :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. + :type is_multi_phone_sync_credential: bool + + :param limit: Number of credentials to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using `display_name`, `code`, `card_number`, `acs_user_id` or `acs_credential_id`. + :type search: str + + :returns: OK + :rtype: List[AcsCredential]""" json_payload = {} if acs_user_id is not None: @@ -221,6 +432,13 @@ def list( return [AcsCredential.from_dict(item) for item in res["acs_credentials"]] def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + """Returns a list of all [entrances](https://docs.seam.co/api/acs/entrances) to which a [credential](https://docs.seam.co/api/acs/credentials) grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. + :type acs_credential_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" json_payload = {} if acs_credential_id is not None: @@ -239,6 +457,16 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Unassigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_credential_id: ID of the credential that you want to unassign from an access system user. + :type acs_credential_id: str + + :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + :type user_identity_id: str""" json_payload = {} if acs_credential_id is not None: @@ -259,6 +487,16 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: + """Updates the code and ends at date and time for a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_credential_id: ID of the credential that you want to update. + :type acs_credential_id: str + + :param code: Replacement access (PIN) code for the credential that you want to update. + :type code: str + + :param ends_at: Replacement date and time at which the validity of the credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after the `starts_at` value that you set when creating the credential. + :type ends_at: str""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_encoders.py b/seam/routes/acs_encoders.py index f14315c..aba1e95 100644 --- a/seam/routes/acs_encoders.py +++ b/seam/routes/acs_encoders.py @@ -22,10 +22,33 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). Either provide an `acs_credential_id` or an `access_method_id` + + :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `acs_credential`. + :type acs_encoder_id: str + + :param access_method_id: ID of the `access_method` to encode onto a card. + :type access_method_id: str + + :param acs_credential_id: ID of the `acs_credential` to encode onto a card. + :type acs_credential_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_encoder_id: str) -> AcsEncoder: + """Returns a specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_encoder_id: ID of the encoder that you want to get. + :type acs_encoder_id: str + + :returns: OK + :rtype: AcsEncoder""" raise NotImplementedError() @abc.abstractmethod @@ -38,6 +61,25 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: + """Returns a list of all [encoders](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_system_id: ID of the access system for which you want to retrieve all encoders. + :type acs_system_id: str + + :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. + :type acs_system_ids: List[str] + + :param acs_encoder_ids: IDs of the encoders that you want to retrieve. + :type acs_encoder_ids: List[str] + + :param limit: Number of encoders to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :returns: OK + :rtype: List[AcsEncoder]""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +90,19 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans an encoded [acs_credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_encoder_id: ID of the encoder to use for the scan. + :type acs_encoder_id: str + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + :type salto_ks_metadata: Dict[str, Any] + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +115,25 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans a physical card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) and assigns the scanned credential to an ACS user. Provide either an `acs_user_id` or a `user_identity_id`. + + :param acs_encoder_id: ID of the `acs_encoder` to use to scan the credential. + :type acs_encoder_id: str + + :param acs_user_id: ID of the `acs_user` to assign the scanned credential to. + :type acs_user_id: str + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + :type salto_ks_metadata: Dict[str, Any] + + :param user_identity_id: ID of the `user_identity` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + :type user_identity_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -81,6 +155,22 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). Either provide an `acs_credential_id` or an `access_method_id` + + :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `acs_credential`. + :type acs_encoder_id: str + + :param access_method_id: ID of the `access_method` to encode onto a card. + :type access_method_id: str + + :param acs_credential_id: ID of the `acs_credential` to encode onto a card. + :type acs_credential_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if acs_encoder_id is not None: @@ -105,6 +195,13 @@ def encode_credential( ) def get(self, *, acs_encoder_id: str) -> AcsEncoder: + """Returns a specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_encoder_id: ID of the encoder that you want to get. + :type acs_encoder_id: str + + :returns: OK + :rtype: AcsEncoder""" json_payload = {} if acs_encoder_id is not None: @@ -123,6 +220,25 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: + """Returns a list of all [encoders](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_system_id: ID of the access system for which you want to retrieve all encoders. + :type acs_system_id: str + + :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. + :type acs_system_ids: List[str] + + :param acs_encoder_ids: IDs of the encoders that you want to retrieve. + :type acs_encoder_ids: List[str] + + :param limit: Number of encoders to return. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :returns: OK + :rtype: List[AcsEncoder]""" json_payload = {} if acs_system_id is not None: @@ -147,6 +263,19 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans an encoded [acs_credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + + :param acs_encoder_id: ID of the encoder to use for the scan. + :type acs_encoder_id: str + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + :type salto_ks_metadata: Dict[str, Any] + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if acs_encoder_id is not None: @@ -177,6 +306,25 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans a physical card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) and assigns the scanned credential to an ACS user. Provide either an `acs_user_id` or a `user_identity_id`. + + :param acs_encoder_id: ID of the `acs_encoder` to use to scan the credential. + :type acs_encoder_id: str + + :param acs_user_id: ID of the `acs_user` to assign the scanned credential to. + :type acs_user_id: str + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + :type salto_ks_metadata: Dict[str, Any] + + :param user_identity_id: ID of the `user_identity` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + :type user_identity_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_encoders_simulate.py b/seam/routes/acs_encoders_simulate.py index ea00fab..b1e55bf 100644 --- a/seam/routes/acs_encoders_simulate.py +++ b/seam/routes/acs_encoders_simulate.py @@ -13,12 +13,29 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :type acs_encoder_id: str + + :param error_code: Code of the error to simulate. + :type error_code: str + + :param acs_credential_id: ID of the `acs_credential` that will fail to be encoded onto a card in the next request. + :type acs_credential_id: str""" raise NotImplementedError() @abc.abstractmethod def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :type acs_encoder_id: str + + :param scenario: Scenario to simulate. + :type scenario: str""" raise NotImplementedError() @abc.abstractmethod @@ -29,6 +46,16 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will fail to scan the `acs_credential` in the next request. + :type acs_encoder_id: str + + :param error_code: + :type error_code: str + + :param acs_credential_id_on_seam: + :type acs_credential_id_on_seam: str""" raise NotImplementedError() @abc.abstractmethod @@ -39,6 +66,16 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to scan the `acs_credential`. + :type acs_encoder_id: str + + :param acs_credential_id_on_seam: ID of the Seam `acs_credential` that matches the `acs_credential` on the encoder in this simulation. + :type acs_credential_id_on_seam: str + + :param scenario: Scenario to simulate. + :type scenario: str""" raise NotImplementedError() @@ -54,6 +91,16 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :type acs_encoder_id: str + + :param error_code: Code of the error to simulate. + :type error_code: str + + :param acs_credential_id: ID of the `acs_credential` that will fail to be encoded onto a card in the next request. + :type acs_credential_id: str""" json_payload = {} if acs_encoder_id is not None: @@ -72,6 +119,13 @@ def next_credential_encode_will_fail( def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :type acs_encoder_id: str + + :param scenario: Scenario to simulate. + :type scenario: str""" json_payload = {} if acs_encoder_id is not None: @@ -93,6 +147,16 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will fail to scan the `acs_credential` in the next request. + :type acs_encoder_id: str + + :param error_code: + :type error_code: str + + :param acs_credential_id_on_seam: + :type acs_credential_id_on_seam: str""" json_payload = {} if acs_encoder_id is not None: @@ -115,6 +179,16 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to scan the `acs_credential`. + :type acs_encoder_id: str + + :param acs_credential_id_on_seam: ID of the Seam `acs_credential` that matches the `acs_credential` on the encoder in this simulation. + :type acs_credential_id_on_seam: str + + :param scenario: Scenario to simulate. + :type scenario: str""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_entrances.py b/seam/routes/acs_entrances.py index a2de339..4d9772c 100644 --- a/seam/routes/acs_entrances.py +++ b/seam/routes/acs_entrances.py @@ -9,6 +9,13 @@ class AbstractAcsEntrances(abc.ABC): @abc.abstractmethod def get(self, *, acs_entrance_id: str) -> AcsEntrance: + """Returns a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance that you want to get. + :type acs_entrance_id: str + + :returns: OK + :rtype: AcsEntrance""" raise NotImplementedError() @abc.abstractmethod @@ -19,6 +26,16 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Grants a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) access to a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. + :type acs_entrance_id: str + + :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -36,12 +53,56 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: + """Returns a list of all [access system entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. + :type acs_credential_id: str + + :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. + :type acs_entrance_ids: List[str] + + :param acs_system_id: ID of the access system for which you want to retrieve all entrances. + :type acs_system_id: str + + :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list entrances. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param location_id: Deprecated: Use `space_id`. + :type location_id: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using `display_name`. + :type search: str + + :param space_id: ID of the space for which you want to list entrances. + :type space_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" raise NotImplementedError() @abc.abstractmethod def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: + """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) with access to a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. + :type acs_entrance_id: str + + :param include_if: Conditions that credentials must meet to be included in the returned list. + :type include_if: List[str] + + :returns: OK + :rtype: List[AcsCredential]""" raise NotImplementedError() @abc.abstractmethod @@ -52,6 +113,19 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + + :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. + :type acs_credential_id: str + + :param acs_entrance_id: ID of the entrance to unlock. + :type acs_entrance_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -61,6 +135,13 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_entrance_id: str) -> AcsEntrance: + """Returns a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance that you want to get. + :type acs_entrance_id: str + + :returns: OK + :rtype: AcsEntrance""" json_payload = {} if acs_entrance_id is not None: @@ -77,6 +158,16 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Grants a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) access to a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. + :type acs_entrance_id: str + + :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :type user_identity_id: str""" json_payload = {} if acs_entrance_id is not None: @@ -104,6 +195,40 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: + """Returns a list of all [access system entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. + :type acs_credential_id: str + + :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. + :type acs_entrance_ids: List[str] + + :param acs_system_id: ID of the access system for which you want to retrieve all entrances. + :type acs_system_id: str + + :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list entrances. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param location_id: Deprecated: Use `space_id`. + :type location_id: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using `display_name`. + :type search: str + + :param space_id: ID of the space for which you want to list entrances. + :type space_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" json_payload = {} if acs_credential_id is not None: @@ -134,6 +259,16 @@ def list( def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: + """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) with access to a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + + :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. + :type acs_entrance_id: str + + :param include_if: Conditions that credentials must meet to be included in the returned list. + :type include_if: List[str] + + :returns: OK + :rtype: List[AcsCredential]""" json_payload = {} if acs_entrance_id is not None: @@ -154,6 +289,19 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + + :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. + :type acs_credential_id: str + + :param acs_entrance_id: ID of the entrance to unlock. + :type acs_entrance_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index 6e33bdd..ed43327 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -8,6 +8,13 @@ class AbstractAcsSystems(abc.ABC): @abc.abstractmethod def get(self, *, acs_system_id: str) -> AcsSystem: + """Returns a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + + :param acs_system_id: ID of the access system that you want to get. + :type acs_system_id: str + + :returns: OK + :rtype: AcsSystem""" raise NotImplementedError() @abc.abstractmethod @@ -18,12 +25,36 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: + """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems). + + To filter the list of returned access systems by a specific connected account ID, include the `connected_account_id` in the request body. If you omit the `connected_account_id` parameter, the response includes all access systems connected to your workspace. + + :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list access systems. + :type customer_key: str + + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using `name` or `acs_system_id`. + :type search: str + + :returns: OK + :rtype: List[AcsSystem]""" raise NotImplementedError() @abc.abstractmethod def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: + """Returns a list of all credential manager systems that are compatible with a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding `acs_system_id` in the request body. + + :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. + :type acs_system_id: str + + :returns: OK + :rtype: List[AcsSystem]""" raise NotImplementedError() @abc.abstractmethod @@ -34,6 +65,16 @@ def report_devices( acs_encoders: Optional[List[Dict[str, Any]]] = None, acs_entrances: Optional[List[Dict[str, Any]]] = None ) -> None: + """Reports ACS system device status including encoders and entrances. + + :param acs_system_id: ID of the ACS system to report resources for + :type acs_system_id: str + + :param acs_encoders: Array of ACS encoders to report + :type acs_encoders: List[Dict[str, Any]] + + :param acs_entrances: Array of ACS entrances to report + :type acs_entrances: List[Dict[str, Any]]""" raise NotImplementedError() @@ -43,6 +84,13 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_system_id: str) -> AcsSystem: + """Returns a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + + :param acs_system_id: ID of the access system that you want to get. + :type acs_system_id: str + + :returns: OK + :rtype: AcsSystem""" json_payload = {} if acs_system_id is not None: @@ -59,6 +107,21 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: + """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems). + + To filter the list of returned access systems by a specific connected account ID, include the `connected_account_id` in the request body. If you omit the `connected_account_id` parameter, the response includes all access systems connected to your workspace. + + :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list access systems. + :type customer_key: str + + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using `name` or `acs_system_id`. + :type search: str + + :returns: OK + :rtype: List[AcsSystem]""" json_payload = {} if connected_account_id is not None: @@ -75,6 +138,15 @@ def list( def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: + """Returns a list of all credential manager systems that are compatible with a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding `acs_system_id` in the request body. + + :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. + :type acs_system_id: str + + :returns: OK + :rtype: List[AcsSystem]""" json_payload = {} if acs_system_id is not None: @@ -94,6 +166,16 @@ def report_devices( acs_encoders: Optional[List[Dict[str, Any]]] = None, acs_entrances: Optional[List[Dict[str, Any]]] = None ) -> None: + """Reports ACS system device status including encoders and entrances. + + :param acs_system_id: ID of the ACS system to report resources for + :type acs_system_id: str + + :param acs_encoders: Array of ACS encoders to report + :type acs_encoders: List[Dict[str, Any]] + + :param acs_entrances: Array of ACS entrances to report + :type acs_entrances: List[Dict[str, Any]]""" json_payload = {} if acs_system_id is not None: diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index 082c08e..084de01 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -10,6 +10,13 @@ class AbstractAcsUsers(abc.ABC): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to add to an access group. + :type acs_user_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -25,6 +32,34 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Creates a new [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the access system to which you want to add the new access system user. + :type acs_system_id: str + + :param full_name: Full name of the new access system user. + :type full_name: str + + :param access_schedule: `starts_at` and `ends_at` timestamps for the new access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :type access_schedule: Dict[str, Any] + + :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. + :type acs_access_group_ids: List[str] + + :param email: Deprecated: use email_address. + :type email: str + + :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type email_address: str + + :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :type phone_number: str + + :param user_identity_id: ID of the user identity with which you want to associate the new access system user. + :type user_identity_id: str + + :returns: OK + :rtype: AcsUser""" raise NotImplementedError() @abc.abstractmethod @@ -35,6 +70,16 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Deletes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) and invalidates the access system user's [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -45,6 +90,19 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Returns a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. + :type acs_system_id: str + + :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str + + :returns: OK + :rtype: AcsUser""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +118,34 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the `acs_system` for which you want to retrieve all access system users. + :type acs_system_id: str + + :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. + :type created_before: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `acs_user_id`, `user_identity_id`, `user_identity_full_name` or `user_identity_phone_number`. + :type search: str + + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :type user_identity_email_address: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + :type user_identity_id: str + + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, `+15555550100`). + :type user_identity_phone_number: str + + :returns: OK + :rtype: List[AcsUser]""" raise NotImplementedError() @abc.abstractmethod @@ -70,6 +156,19 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: + """Lists the [entrances](https://docs.seam.co/api/acs/entrances) to which a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) has access. + + :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" raise NotImplementedError() @abc.abstractmethod @@ -80,6 +179,16 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -90,6 +199,16 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Revokes access to all [entrances](https://docs.seam.co/api/acs/entrances) for a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -100,6 +219,16 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """[Suspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#suspend-an-acs-user) a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can [unsuspend](https://docs.seam.co/api/acs/users/unsuspend) them. + + :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -110,6 +239,16 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """[Unsuspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#unsuspend-an-acs-user) a specified suspended [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). While [suspending an access system user](https://docs.seam.co/api/acs/users/suspend) revokes their access temporarily, unsuspending the access system user restores their access. + + :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -126,6 +265,34 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Updates the properties of a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param access_schedule: `starts_at` and `ends_at` timestamps for the access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :type access_schedule: Dict[str, Any] + + :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param email: Deprecated: use email_address. + :type email: str + + :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type email_address: str + + :param full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type full_name: str + + :param hid_acs_system_id: ID of the HID access control system associated with the user. + :type hid_acs_system_id: str + + :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :type phone_number: str + + :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + :type user_identity_id: str""" raise NotImplementedError() @@ -137,6 +304,13 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to add to an access group. + :type acs_user_id: str""" json_payload = {} if acs_access_group_id is not None: @@ -160,6 +334,34 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Creates a new [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the access system to which you want to add the new access system user. + :type acs_system_id: str + + :param full_name: Full name of the new access system user. + :type full_name: str + + :param access_schedule: `starts_at` and `ends_at` timestamps for the new access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :type access_schedule: Dict[str, Any] + + :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. + :type acs_access_group_ids: List[str] + + :param email: Deprecated: use email_address. + :type email: str + + :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type email_address: str + + :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :type phone_number: str + + :param user_identity_id: ID of the user identity with which you want to associate the new access system user. + :type user_identity_id: str + + :returns: OK + :rtype: AcsUser""" json_payload = {} if acs_system_id is not None: @@ -190,6 +392,16 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Deletes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) and invalidates the access system user's [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + + :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + :type user_identity_id: str""" json_payload = {} if acs_system_id is not None: @@ -210,6 +422,19 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Returns a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. + :type acs_system_id: str + + :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str + + :returns: OK + :rtype: AcsUser""" json_payload = {} if acs_user_id is not None: @@ -235,6 +460,34 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the `acs_system` for which you want to retrieve all access system users. + :type acs_system_id: str + + :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. + :type created_before: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `acs_user_id`, `user_identity_id`, `user_identity_full_name` or `user_identity_phone_number`. + :type search: str + + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + :type user_identity_email_address: str + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + :type user_identity_id: str + + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, `+15555550100`). + :type user_identity_phone_number: str + + :returns: OK + :rtype: List[AcsUser]""" json_payload = {} if acs_system_id is not None: @@ -265,6 +518,19 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: + """Lists the [entrances](https://docs.seam.co/api/acs/entrances) to which a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) has access. + + :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" json_payload = {} if acs_system_id is not None: @@ -287,6 +553,16 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + :type acs_access_group_id: str + + :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str""" json_payload = {} if acs_access_group_id is not None: @@ -307,6 +583,16 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Revokes access to all [entrances](https://docs.seam.co/api/acs/entrances) for a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + :type user_identity_id: str""" json_payload = {} if acs_system_id is not None: @@ -327,6 +613,16 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """[Suspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#suspend-an-acs-user) a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can [unsuspend](https://docs.seam.co/api/acs/users/unsuspend) them. + + :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type user_identity_id: str""" json_payload = {} if acs_system_id is not None: @@ -347,6 +643,16 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """[Unsuspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#unsuspend-an-acs-user) a specified suspended [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). While [suspending an access system user](https://docs.seam.co/api/acs/users/suspend) revokes their access temporarily, unsuspending the access system user restores their access. + + :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + :type user_identity_id: str""" json_payload = {} if acs_system_id is not None: @@ -373,6 +679,34 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Updates the properties of a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + + :param access_schedule: `starts_at` and `ends_at` timestamps for the access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :type access_schedule: Dict[str, Any] + + :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. + :type acs_system_id: str + + :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. + :type acs_user_id: str + + :param email: Deprecated: use email_address. + :type email: str + + :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type email_address: str + + :param full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :type full_name: str + + :param hid_acs_system_id: ID of the HID access control system associated with the user. + :type hid_acs_system_id: str + + :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :type phone_number: str + + :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + :type user_identity_id: str""" json_payload = {} if access_schedule is not None: diff --git a/seam/routes/action_attempts.py b/seam/routes/action_attempts.py index 4b09607..b64f23f 100644 --- a/seam/routes/action_attempts.py +++ b/seam/routes/action_attempts.py @@ -14,6 +14,16 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Returns a specified [action attempt](https://docs.seam.co/core-concepts/action-attempts). + + :param action_attempt_id: ID of the action attempt that you want to get. + :type action_attempt_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -25,6 +35,22 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: + """Returns a list of the [action attempts](https://docs.seam.co/core-concepts/action-attempts) that you specify as an array of `action_attempt_id`s. + + :param action_attempt_ids: IDs of the action attempts that you want to retrieve. + :type action_attempt_ids: List[str] + + :param device_id: ID of the device to filter action attempts by. + :type device_id: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :returns: OK + :rtype: List[ActionAttempt]""" raise NotImplementedError() @@ -39,6 +65,16 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Returns a specified [action attempt](https://docs.seam.co/core-concepts/action-attempts). + + :param action_attempt_id: ID of the action attempt that you want to get. + :type action_attempt_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if action_attempt_id is not None: @@ -66,6 +102,22 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: + """Returns a list of the [action attempts](https://docs.seam.co/core-concepts/action-attempts) that you specify as an array of `action_attempt_id`s. + + :param action_attempt_ids: IDs of the action attempts that you want to retrieve. + :type action_attempt_ids: List[str] + + :param device_id: ID of the device to filter action attempts by. + :type device_id: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :returns: OK + :rtype: List[ActionAttempt]""" json_payload = {} if action_attempt_ids is not None: diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index d3ff209..4563c55 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -19,10 +19,42 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Creates a new [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) for which you want to create a client session. + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) for which you want to create a client session. + :type connected_account_ids: List[str] + + :param customer_id: Customer ID that you want to associate with the new client session. + :type customer_id: str + + :param customer_key: Customer key that you want to associate with the new client session. + :type customer_key: str + + :param expires_at: Date and time at which the client session should expire, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type expires_at: str + + :param user_identifier_key: Your user ID for the user for whom you want to create a client session. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to create a client session. + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: ClientSession""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, client_session_id: str) -> None: + """Deletes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to delete. + :type client_session_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -32,6 +64,16 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: + """Returns a specified [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to get. + :type client_session_id: str + + :param user_identifier_key: User identifier key associated with the client session that you want to get. + :type user_identifier_key: str + + :returns: OK + :rtype: ClientSession""" raise NotImplementedError() @abc.abstractmethod @@ -45,6 +87,28 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Returns a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session (or that are already associated with the existing client session). + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/api/connected_accounts) that you want to associate with the client session (or that are already associated with the existing client session). + :type connected_account_ids: List[str] + + :param expires_at: Date and time at which the client session should expire in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. If the client session already exists, this will update the expiration before returning it. + :type expires_at: str + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session (or that are already associated with the existing client session). + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: ClientSession""" raise NotImplementedError() @abc.abstractmethod @@ -58,6 +122,25 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: + """Grants a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) access to one or more resources, such as [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews), [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity), and so on. + + :param client_session_id: ID of the client session to which you want to grant access to resources. + :type client_session_id: str + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session. + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that you want to associate with the client session. + :type connected_account_ids: List[str] + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str]""" raise NotImplementedError() @abc.abstractmethod @@ -70,10 +153,35 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: + """Returns a list of all [client sessions](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to retrieve. + :type client_session_id: str + + :param connect_webview_id: ID of the [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) for which you want to retrieve client sessions. + :type connect_webview_id: str + + :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to retrieve client sessions. + :type user_identity_id: str + + :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. + :type without_user_identifier_key: bool + + :returns: OK + :rtype: List[ClientSession]""" raise NotImplementedError() @abc.abstractmethod def revoke(self, *, client_session_id: str) -> None: + """Revokes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + Note that [deleting a client session](https://docs.seam.co/api/client_sessions/delete) is a separate action. + + :param client_session_id: ID of the client session that you want to revoke. + :type client_session_id: str""" raise NotImplementedError() @@ -94,6 +202,34 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Creates a new [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) for which you want to create a client session. + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) for which you want to create a client session. + :type connected_account_ids: List[str] + + :param customer_id: Customer ID that you want to associate with the new client session. + :type customer_id: str + + :param customer_key: Customer key that you want to associate with the new client session. + :type customer_key: str + + :param expires_at: Date and time at which the client session should expire, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type expires_at: str + + :param user_identifier_key: Your user ID for the user for whom you want to create a client session. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to create a client session. + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: ClientSession""" json_payload = {} if connect_webview_ids is not None: @@ -118,6 +254,10 @@ def create( return ClientSession.from_dict(res["client_session"]) def delete(self, *, client_session_id: str) -> None: + """Deletes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to delete. + :type client_session_id: str""" json_payload = {} if client_session_id is not None: @@ -133,6 +273,16 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: + """Returns a specified [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to get. + :type client_session_id: str + + :param user_identifier_key: User identifier key associated with the client session that you want to get. + :type user_identifier_key: str + + :returns: OK + :rtype: ClientSession""" json_payload = {} if client_session_id is not None: @@ -154,6 +304,28 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Returns a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session (or that are already associated with the existing client session). + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/api/connected_accounts) that you want to associate with the client session (or that are already associated with the existing client session). + :type connected_account_ids: List[str] + + :param expires_at: Date and time at which the client session should expire in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. If the client session already exists, this will update the expiration before returning it. + :type expires_at: str + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session (or that are already associated with the existing client session). + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: ClientSession""" json_payload = {} if connect_webview_ids is not None: @@ -183,6 +355,25 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: + """Grants a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) access to one or more resources, such as [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews), [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity), and so on. + + :param client_session_id: ID of the client session to which you want to grant access to resources. + :type client_session_id: str + + :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session. + :type connect_webview_ids: List[str] + + :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that you want to associate with the client session. + :type connected_account_ids: List[str] + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_id: str + + :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :type user_identity_ids: List[str]""" json_payload = {} if client_session_id is not None: @@ -211,6 +402,25 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: + """Returns a list of all [client sessions](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + :param client_session_id: ID of the client session that you want to retrieve. + :type client_session_id: str + + :param connect_webview_id: ID of the [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) for which you want to retrieve client sessions. + :type connect_webview_id: str + + :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. + :type user_identifier_key: str + + :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to retrieve client sessions. + :type user_identity_id: str + + :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. + :type without_user_identifier_key: bool + + :returns: OK + :rtype: List[ClientSession]""" json_payload = {} if client_session_id is not None: @@ -229,6 +439,12 @@ def list( return [ClientSession.from_dict(item) for item in res["client_sessions"]] def revoke(self, *, client_session_id: str) -> None: + """Revokes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + + Note that [deleting a client session](https://docs.seam.co/api/client_sessions/delete) is a separate action. + + :param client_session_id: ID of the client session that you want to revoke. + :type client_session_id: str""" json_payload = {} if client_session_id is not None: diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index ff0db12..8cd64bb 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -21,14 +21,69 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: + """Creates a new [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a `connect_webview`. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + + You should make a new `connect_webview` for each unique login request. Each `connect_webview` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + + See also: [Connect Webview Process](https://docs.seam.co/core-concepts/connect-webviews/connect-webview-process). + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. + :type accepted_capabilities: List[str] + + :param accepted_providers: Accepted device provider keys as an alternative to `provider_category`. Use this parameter to specify accepted providers explicitly. See [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). To list all provider keys, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with no filters. + :type accepted_providers: List[str] + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :type automatically_manage_new_devices: bool + + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview) enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that were connected using the Connect Webview, making it easy to find and filter these resources in your [workspace](https://docs.seam.co/core-concepts/workspaces). You can also [filter Connect Webviews by custom metadata](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the `custom_redirect_url`. + :type custom_redirect_failure_url: str + + :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. + :type custom_redirect_url: str + + :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. + :type customer_key: str + + :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. + :type excluded_providers: List[str] + + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with the desired `provider_category` filter. + :type provider_category: str + + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :type wait_for_device_creation: bool + + :returns: OK + :rtype: ConnectWebview""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, connect_webview_id: str) -> None: + """Deletes a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. + + :param connect_webview_id: ID of the Connect Webview that you want to delete. + :type connect_webview_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, connect_webview_id: str) -> ConnectWebview: + """Returns a specified [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + Unless you're using a `custom_redirect_url`, you should poll a newly-created `connect_webview` to find out if the user has signed in or to get details about what devices they've connected. + + :param connect_webview_id: ID of the Connect Webview that you want to get. + :type connect_webview_id: str + + :returns: OK + :rtype: ConnectWebview""" raise NotImplementedError() @abc.abstractmethod @@ -42,6 +97,28 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: + """Returns a list of all [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews). + + :param custom_metadata_has: Custom metadata pairs by which you want to [filter Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). Returns Connect Webviews with `custom_metadata` that contains all of the provided key:value pairs. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list connect webviews. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using `connect_webview_id`, `accepted_providers`, `custom_metadata`, or `customer_key`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ConnectWebview]""" raise NotImplementedError() @@ -64,6 +141,46 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: + """Creates a new [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a `connect_webview`. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + + You should make a new `connect_webview` for each unique login request. Each `connect_webview` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + + See also: [Connect Webview Process](https://docs.seam.co/core-concepts/connect-webviews/connect-webview-process). + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. + :type accepted_capabilities: List[str] + + :param accepted_providers: Accepted device provider keys as an alternative to `provider_category`. Use this parameter to specify accepted providers explicitly. See [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). To list all provider keys, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with no filters. + :type accepted_providers: List[str] + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :type automatically_manage_new_devices: bool + + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview) enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that were connected using the Connect Webview, making it easy to find and filter these resources in your [workspace](https://docs.seam.co/core-concepts/workspaces). You can also [filter Connect Webviews by custom metadata](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the `custom_redirect_url`. + :type custom_redirect_failure_url: str + + :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. + :type custom_redirect_url: str + + :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. + :type customer_key: str + + :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. + :type excluded_providers: List[str] + + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with the desired `provider_category` filter. + :type provider_category: str + + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :type wait_for_device_creation: bool + + :returns: OK + :rtype: ConnectWebview""" json_payload = {} if accepted_capabilities is not None: @@ -94,6 +211,12 @@ def create( return ConnectWebview.from_dict(res["connect_webview"]) def delete(self, *, connect_webview_id: str) -> None: + """Deletes a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. + + :param connect_webview_id: ID of the Connect Webview that you want to delete. + :type connect_webview_id: str""" json_payload = {} if connect_webview_id is not None: @@ -104,6 +227,15 @@ def delete(self, *, connect_webview_id: str) -> None: return None def get(self, *, connect_webview_id: str) -> ConnectWebview: + """Returns a specified [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + + Unless you're using a `custom_redirect_url`, you should poll a newly-created `connect_webview` to find out if the user has signed in or to get details about what devices they've connected. + + :param connect_webview_id: ID of the Connect Webview that you want to get. + :type connect_webview_id: str + + :returns: OK + :rtype: ConnectWebview""" json_payload = {} if connect_webview_id is not None: @@ -123,6 +255,28 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: + """Returns a list of all [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews). + + :param custom_metadata_has: Custom metadata pairs by which you want to [filter Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). Returns Connect Webviews with `custom_metadata` that contains all of the provided key:value pairs. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list connect webviews. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using `connect_webview_id`, `accepted_providers`, `custom_metadata`, or `customer_key`. + :type search: str + + :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ConnectWebview]""" json_payload = {} if custom_metadata_has is not None: diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 902cdfb..205d248 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -17,12 +17,30 @@ def simulate(self) -> AbstractConnectedAccountsSimulate: @abc.abstractmethod def delete(self, *, connected_account_id: str) -> None: + """Deletes a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + Deleting a connected account triggers a `connected_account.deleted` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + + For example, if you delete a connected account with a device that has an access code, Seam sends a `connected_account.deleted` event, a `device.deleted` event, and an `access_code.deleted` event, but Seam does not remove the access code from the device. + + :param connected_account_id: ID of the connected account that you want to delete. + :type connected_account_id: str""" raise NotImplementedError() @abc.abstractmethod def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: + """Returns a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + :param connected_account_id: ID of the connected account that you want to get. + :type connected_account_id: str + + :param email: Email address associated with the connected account that you want to get. + :type email: str + + :returns: OK + :rtype: ConnectedAccount""" raise NotImplementedError() @abc.abstractmethod @@ -37,10 +55,39 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: + """Returns a list of all [connected accounts](https://docs.seam.co/core-concepts/connected-accounts). + + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with `custom_metadata` that contains all of the provided key:value pairs. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key by which you want to filter connected accounts. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using `connected_account_id`, `account_type`, `customer_key`, `custom_metadata`, `user_identifier.username`, `user_identifier.email` or `user_identifier.phone`. + :type search: str + + :param space_id: ID of the space by which you want to filter connected accounts. + :type space_id: str + + :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ConnectedAccount]""" raise NotImplementedError() @abc.abstractmethod def sync(self, *, connected_account_id: str) -> None: + """Request a [connected account](https://docs.seam.co/core-concepts/connected-accounts) sync attempt for the specified `connected_account_id`. + + :param connected_account_id: ID of the connected account that you want to sync. + :type connected_account_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -54,6 +101,25 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: + """Updates a [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + :param connected_account_id: ID of the connected account that you want to update. + :type connected_account_id: str + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are `lock`, `thermostat`, `noise_sensor`, and `access_control`. + :type accepted_capabilities: List[str] + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :type automatically_manage_new_devices: bool + + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter connected accounts by the desired metadata](https://docs.seam.co/core-concepts/connected-accounts/filtering-connected-accounts-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. + :type customer_key: str + + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, `Booking from Airbnb House 1`. + :type display_name: str""" raise NotImplementedError() @@ -68,6 +134,14 @@ def simulate(self) -> ConnectedAccountsSimulate: return self._simulate def delete(self, *, connected_account_id: str) -> None: + """Deletes a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + Deleting a connected account triggers a `connected_account.deleted` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + + For example, if you delete a connected account with a device that has an access code, Seam sends a `connected_account.deleted` event, a `device.deleted` event, and an `access_code.deleted` event, but Seam does not remove the access code from the device. + + :param connected_account_id: ID of the connected account that you want to delete. + :type connected_account_id: str""" json_payload = {} if connected_account_id is not None: @@ -80,6 +154,16 @@ def delete(self, *, connected_account_id: str) -> None: def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: + """Returns a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + :param connected_account_id: ID of the connected account that you want to get. + :type connected_account_id: str + + :param email: Email address associated with the connected account that you want to get. + :type email: str + + :returns: OK + :rtype: ConnectedAccount""" json_payload = {} if connected_account_id is not None: @@ -102,6 +186,31 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: + """Returns a list of all [connected accounts](https://docs.seam.co/core-concepts/connected-accounts). + + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with `custom_metadata` that contains all of the provided key:value pairs. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key by which you want to filter connected accounts. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using `connected_account_id`, `account_type`, `customer_key`, `custom_metadata`, `user_identifier.username`, `user_identifier.email` or `user_identifier.phone`. + :type search: str + + :param space_id: ID of the space by which you want to filter connected accounts. + :type space_id: str + + :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ConnectedAccount]""" json_payload = {} if custom_metadata_has is not None: @@ -124,6 +233,10 @@ def list( return [ConnectedAccount.from_dict(item) for item in res["connected_accounts"]] def sync(self, *, connected_account_id: str) -> None: + """Request a [connected account](https://docs.seam.co/core-concepts/connected-accounts) sync attempt for the specified `connected_account_id`. + + :param connected_account_id: ID of the connected account that you want to sync. + :type connected_account_id: str""" json_payload = {} if connected_account_id is not None: @@ -143,6 +256,25 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: + """Updates a [connected account](https://docs.seam.co/core-concepts/connected-accounts). + + :param connected_account_id: ID of the connected account that you want to update. + :type connected_account_id: str + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are `lock`, `thermostat`, `noise_sensor`, and `access_control`. + :type accepted_capabilities: List[str] + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :type automatically_manage_new_devices: bool + + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter connected accounts by the desired metadata](https://docs.seam.co/core-concepts/connected-accounts/filtering-connected-accounts-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. + :type customer_key: str + + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, `Booking from Airbnb House 1`. + :type display_name: str""" json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/connected_accounts_simulate.py b/seam/routes/connected_accounts_simulate.py index 9b797da..a4a0266 100644 --- a/seam/routes/connected_accounts_simulate.py +++ b/seam/routes/connected_accounts_simulate.py @@ -7,6 +7,10 @@ class AbstractConnectedAccountsSimulate(abc.ABC): @abc.abstractmethod def disconnect(self, *, connected_account_id: str) -> None: + """Simulates a connected account becoming disconnected from Seam. Only applicable for [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param connected_account_id: ID of the connected account you want to simulate as disconnected. + :type connected_account_id: str""" raise NotImplementedError() @@ -16,6 +20,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def disconnect(self, *, connected_account_id: str) -> None: + """Simulates a connected account becoming disconnected from Seam. Only applicable for [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param connected_account_id: ID of the connected account you want to simulate as disconnected. + :type connected_account_id: str""" json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/customers.py b/seam/routes/customers.py index 2b9d0c0..4260ece 100644 --- a/seam/routes/customers.py +++ b/seam/routes/customers.py @@ -22,6 +22,43 @@ def create_portal( read_only: Optional[bool] = None, customer_data: Optional[Dict[str, Any]] = None ) -> CustomerPortal: + """Creates a new customer portal magic link with configurable features. + + :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. + :type customer_resources_filters: List[Dict[str, Any]] + + :param customization_profile_id: The ID of the customization profile to use for the portal. + :type customization_profile_id: str + + :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. + :type deep_link: Dict[str, Any] + + :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. + :type exclude_locale_picker: bool + + :param features: + :type features: Dict[str, Any] + + :param is_embedded: Whether the portal is embedded in another application. + :type is_embedded: bool + + :param landing_page: Configuration for the landing page when the portal loads. + :type landing_page: Dict[str, Any] + + :param locale: The locale to use for the portal. + :type locale: str + + :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. + :type navigation_mode: str + + :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. + :type read_only: bool + + :param customer_data: + :type customer_data: Dict[str, Any] + + :returns: OK + :rtype: CustomerPortal""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +85,65 @@ def delete_data( user_identity_keys: Optional[List[str]] = None, user_keys: Optional[List[str]] = None ) -> None: + """Deletes customer data including resources like spaces, properties, rooms, users, etc. + This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + + :param access_grant_keys: List of access grant keys to delete. + :type access_grant_keys: List[str] + + :param booking_keys: List of booking keys to delete. + :type booking_keys: List[str] + + :param building_keys: List of building keys to delete. + :type building_keys: List[str] + + :param common_area_keys: List of common area keys to delete. + :type common_area_keys: List[str] + + :param customer_keys: List of customer keys to delete all data for. + :type customer_keys: List[str] + + :param facility_keys: List of facility keys to delete. + :type facility_keys: List[str] + + :param guest_keys: List of guest keys to delete. + :type guest_keys: List[str] + + :param listing_keys: List of listing keys to delete. + :type listing_keys: List[str] + + :param property_keys: List of property keys to delete. + :type property_keys: List[str] + + :param property_listing_keys: List of property listing keys to delete. + :type property_listing_keys: List[str] + + :param reservation_keys: List of reservation keys to delete. + :type reservation_keys: List[str] + + :param resident_keys: List of resident keys to delete. + :type resident_keys: List[str] + + :param room_keys: List of room keys to delete. + :type room_keys: List[str] + + :param space_keys: List of space keys to delete. + :type space_keys: List[str] + + :param staff_member_keys: List of staff member keys to delete. + :type staff_member_keys: List[str] + + :param tenant_keys: List of tenant keys to delete. + :type tenant_keys: List[str] + + :param unit_keys: List of unit keys to delete. + :type unit_keys: List[str] + + :param user_identity_keys: List of user identity keys to delete. + :type user_identity_keys: List[str] + + :param user_keys: List of user keys to delete. + :type user_keys: List[str]""" raise NotImplementedError() @abc.abstractmethod @@ -75,6 +171,67 @@ def push_data( user_identities: Optional[List[Dict[str, Any]]] = None, users: Optional[List[Dict[str, Any]]] = None ) -> None: + """Pushes customer data including resources like spaces, properties, rooms, users, etc. + + :param customer_key: Your unique identifier for the customer. + :type customer_key: str + + :param access_grants: List of access grants. + :type access_grants: List[Dict[str, Any]] + + :param bookings: List of bookings. + :type bookings: List[Dict[str, Any]] + + :param buildings: List of buildings. + :type buildings: List[Dict[str, Any]] + + :param common_areas: List of shared common areas. + :type common_areas: List[Dict[str, Any]] + + :param facilities: List of gym or fitness facilities. + :type facilities: List[Dict[str, Any]] + + :param guests: List of guests. + :type guests: List[Dict[str, Any]] + + :param listings: List of property listings. + :type listings: List[Dict[str, Any]] + + :param properties: List of short-term rental properties. + :type properties: List[Dict[str, Any]] + + :param property_listings: List of property listings. + :type property_listings: List[Dict[str, Any]] + + :param reservations: List of reservations. + :type reservations: List[Dict[str, Any]] + + :param residents: List of residents. + :type residents: List[Dict[str, Any]] + + :param rooms: List of hotel or hospitality rooms. + :type rooms: List[Dict[str, Any]] + + :param sites: List of general sites or areas. + :type sites: List[Dict[str, Any]] + + :param spaces: List of general spaces or areas. + :type spaces: List[Dict[str, Any]] + + :param staff_members: List of staff members. + :type staff_members: List[Dict[str, Any]] + + :param tenants: List of tenants. + :type tenants: List[Dict[str, Any]] + + :param units: List of multi-family residential units. + :type units: List[Dict[str, Any]] + + :param user_identities: List of user identities. + :type user_identities: List[Dict[str, Any]] + + :param users: List of users. + :type users: List[Dict[str, Any]]""" raise NotImplementedError() @@ -98,6 +255,43 @@ def create_portal( read_only: Optional[bool] = None, customer_data: Optional[Dict[str, Any]] = None ) -> CustomerPortal: + """Creates a new customer portal magic link with configurable features. + + :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. + :type customer_resources_filters: List[Dict[str, Any]] + + :param customization_profile_id: The ID of the customization profile to use for the portal. + :type customization_profile_id: str + + :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. + :type deep_link: Dict[str, Any] + + :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. + :type exclude_locale_picker: bool + + :param features: + :type features: Dict[str, Any] + + :param is_embedded: Whether the portal is embedded in another application. + :type is_embedded: bool + + :param landing_page: Configuration for the landing page when the portal loads. + :type landing_page: Dict[str, Any] + + :param locale: The locale to use for the portal. + :type locale: str + + :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. + :type navigation_mode: str + + :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. + :type read_only: bool + + :param customer_data: + :type customer_data: Dict[str, Any] + + :returns: OK + :rtype: CustomerPortal""" json_payload = {} if customer_resources_filters is not None: @@ -150,6 +344,65 @@ def delete_data( user_identity_keys: Optional[List[str]] = None, user_keys: Optional[List[str]] = None ) -> None: + """Deletes customer data including resources like spaces, properties, rooms, users, etc. + This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + + :param access_grant_keys: List of access grant keys to delete. + :type access_grant_keys: List[str] + + :param booking_keys: List of booking keys to delete. + :type booking_keys: List[str] + + :param building_keys: List of building keys to delete. + :type building_keys: List[str] + + :param common_area_keys: List of common area keys to delete. + :type common_area_keys: List[str] + + :param customer_keys: List of customer keys to delete all data for. + :type customer_keys: List[str] + + :param facility_keys: List of facility keys to delete. + :type facility_keys: List[str] + + :param guest_keys: List of guest keys to delete. + :type guest_keys: List[str] + + :param listing_keys: List of listing keys to delete. + :type listing_keys: List[str] + + :param property_keys: List of property keys to delete. + :type property_keys: List[str] + + :param property_listing_keys: List of property listing keys to delete. + :type property_listing_keys: List[str] + + :param reservation_keys: List of reservation keys to delete. + :type reservation_keys: List[str] + + :param resident_keys: List of resident keys to delete. + :type resident_keys: List[str] + + :param room_keys: List of room keys to delete. + :type room_keys: List[str] + + :param space_keys: List of space keys to delete. + :type space_keys: List[str] + + :param staff_member_keys: List of staff member keys to delete. + :type staff_member_keys: List[str] + + :param tenant_keys: List of tenant keys to delete. + :type tenant_keys: List[str] + + :param unit_keys: List of unit keys to delete. + :type unit_keys: List[str] + + :param user_identity_keys: List of user identity keys to delete. + :type user_identity_keys: List[str] + + :param user_keys: List of user keys to delete. + :type user_keys: List[str]""" json_payload = {} if access_grant_keys is not None: @@ -219,6 +472,67 @@ def push_data( user_identities: Optional[List[Dict[str, Any]]] = None, users: Optional[List[Dict[str, Any]]] = None ) -> None: + """Pushes customer data including resources like spaces, properties, rooms, users, etc. + + :param customer_key: Your unique identifier for the customer. + :type customer_key: str + + :param access_grants: List of access grants. + :type access_grants: List[Dict[str, Any]] + + :param bookings: List of bookings. + :type bookings: List[Dict[str, Any]] + + :param buildings: List of buildings. + :type buildings: List[Dict[str, Any]] + + :param common_areas: List of shared common areas. + :type common_areas: List[Dict[str, Any]] + + :param facilities: List of gym or fitness facilities. + :type facilities: List[Dict[str, Any]] + + :param guests: List of guests. + :type guests: List[Dict[str, Any]] + + :param listings: List of property listings. + :type listings: List[Dict[str, Any]] + + :param properties: List of short-term rental properties. + :type properties: List[Dict[str, Any]] + + :param property_listings: List of property listings. + :type property_listings: List[Dict[str, Any]] + + :param reservations: List of reservations. + :type reservations: List[Dict[str, Any]] + + :param residents: List of residents. + :type residents: List[Dict[str, Any]] + + :param rooms: List of hotel or hospitality rooms. + :type rooms: List[Dict[str, Any]] + + :param sites: List of general sites or areas. + :type sites: List[Dict[str, Any]] + + :param spaces: List of general spaces or areas. + :type spaces: List[Dict[str, Any]] + + :param staff_members: List of staff members. + :type staff_members: List[Dict[str, Any]] + + :param tenants: List of tenants. + :type tenants: List[Dict[str, Any]] + + :param units: List of multi-family residential units. + :type units: List[Dict[str, Any]] + + :param user_identities: List of user identities. + :type user_identities: List[Dict[str, Any]] + + :param users: List of users. + :type users: List[Dict[str, Any]]""" json_payload = {} if customer_key is not None: diff --git a/seam/routes/devices.py b/seam/routes/devices.py index 4d93a11..89eace4 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -22,6 +22,18 @@ def unmanaged(self) -> AbstractDevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified [device](https://docs.seam.co/core-concepts/devices). + + You must specify either `device_id` or `name`. + + :param device_id: ID of the device that you want to get. + :type device_id: str + + :param name: Name of the device that you want to get. + :type name: str + + :returns: OK + :rtype: Device""" raise NotImplementedError() @abc.abstractmethod @@ -45,16 +57,83 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type for which you want to list devices. + :type device_type: str + + :param device_types: Array of device types for which you want to list devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer for which you want to list devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" raise NotImplementedError() @abc.abstractmethod def list_device_providers( self, *, provider_category: Optional[str] = None ) -> List[DeviceProvider]: + """Returns a list of all device providers. + + The information that this endpoint returns for each provider includes a set of [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags), such as `device_provider.can_remotely_unlock`. If at least one supported device from a provider has a specific capability, the corresponding capability flag is `true`. + + When you create a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews), you can customize the providers—that is, the brands—that it displays. In the `/connect_webviews/create` request, include the desired set of device provider keys in the `accepted_providers` parameter. See also [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + + :param provider_category: Category for which you want to list providers. + :type provider_category: str + + :returns: OK + :rtype: List[DeviceProvider]""" raise NotImplementedError() @abc.abstractmethod def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: + """Updates provider-specific metadata for devices. + + :param devices: Array of devices with provider metadata to update + :type devices: List[Dict[str, Any]]""" raise NotImplementedError() @abc.abstractmethod @@ -68,6 +147,27 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: + """Updates a specified [device](https://docs.seam.co/core-concepts/devices). + + You can add or change [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for a device, change the device's name, or [convert a managed device to unmanaged](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + :param device_id: ID of the device that you want to update. + :type device_id: str + + :param backup_access_code_pool_enabled: Indicates whether the device's [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) is enabled. Set to `false` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + :type backup_access_code_pool_enabled: bool + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter devices by the desired metadata](https://docs.seam.co/core-concepts/devices/filtering-devices-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param is_managed: Indicates whether the device is managed. To unmanage a device, set `is_managed` to `false`. + :type is_managed: bool + + :param name: Name for the device. + :type name: str + + :param properties: + :type properties: Dict[str, Any]""" raise NotImplementedError() @@ -89,6 +189,18 @@ def unmanaged(self) -> DevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified [device](https://docs.seam.co/core-concepts/devices). + + You must specify either `device_id` or `name`. + + :param device_id: ID of the device that you want to get. + :type device_id: str + + :param name: Name of the device that you want to get. + :type name: str + + :returns: OK + :rtype: Device""" json_payload = {} if device_id is not None: @@ -120,6 +232,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type for which you want to list devices. + :type device_type: str + + :param device_types: Array of device types for which you want to list devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer for which you want to list devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" json_payload = {} if connect_webview_id is not None: @@ -162,6 +326,17 @@ def list( def list_device_providers( self, *, provider_category: Optional[str] = None ) -> List[DeviceProvider]: + """Returns a list of all device providers. + + The information that this endpoint returns for each provider includes a set of [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags), such as `device_provider.can_remotely_unlock`. If at least one supported device from a provider has a specific capability, the corresponding capability flag is `true`. + + When you create a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews), you can customize the providers—that is, the brands—that it displays. In the `/connect_webviews/create` request, include the desired set of device provider keys in the `accepted_providers` parameter. See also [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + + :param provider_category: Category for which you want to list providers. + :type provider_category: str + + :returns: OK + :rtype: List[DeviceProvider]""" json_payload = {} if provider_category is not None: @@ -172,6 +347,10 @@ def list_device_providers( return [DeviceProvider.from_dict(item) for item in res["device_providers"]] def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: + """Updates provider-specific metadata for devices. + + :param devices: Array of devices with provider metadata to update + :type devices: List[Dict[str, Any]]""" json_payload = {} if devices is not None: @@ -191,6 +370,27 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: + """Updates a specified [device](https://docs.seam.co/core-concepts/devices). + + You can add or change [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for a device, change the device's name, or [convert a managed device to unmanaged](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + :param device_id: ID of the device that you want to update. + :type device_id: str + + :param backup_access_code_pool_enabled: Indicates whether the device's [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) is enabled. Set to `false` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + :type backup_access_code_pool_enabled: bool + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter devices by the desired metadata](https://docs.seam.co/core-concepts/devices/filtering-devices-by-custom-metadata). + :type custom_metadata: Dict[str, Any] + + :param is_managed: Indicates whether the device is managed. To unmanage a device, set `is_managed` to `false`. + :type is_managed: bool + + :param name: Name for the device. + :type name: str + + :param properties: + :type properties: Dict[str, Any]""" json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_simulate.py b/seam/routes/devices_simulate.py index ca95994..c34232c 100644 --- a/seam/routes/devices_simulate.py +++ b/seam/routes/devices_simulate.py @@ -7,26 +7,62 @@ class AbstractDevicesSimulate(abc.ABC): @abc.abstractmethod def connect(self, *, device_id: str) -> None: + """Simulates connecting a device to Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate connecting to Seam. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def connect_to_hub(self, *, device_id: str) -> None: + """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. + Only applicable for sandbox workspaces and currently + implemented for August and TTLock locks. + This will clear the `hub_disconnected` error on the device. + + :param device_id: ID of the device whose hub you want to reconnect. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def disconnect(self, *, device_id: str) -> None: + """Simulates disconnecting a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate disconnecting from Seam. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def disconnect_from_hub(self, *, device_id: str) -> None: + """Simulates taking the Wi‑Fi hub (bridge) offline for a device. + Only applicable for sandbox workspaces and currently + implemented for August, TTLock, and IglooHome devices. + This will set the `hub_disconnected` error on the device, or mark the + IglooHome bridge offline in sandbox. + + :param device_id: ID of the device whose hub you want to disconnect. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: + """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). + Send `is_expired: true` to simulate an expired subscription, or `false` to simulate an active subscription. + The actual device error is created/cleared by the poller after this state change. + + :param device_id: + :type device_id: str + + :param is_expired: + :type is_expired: bool""" raise NotImplementedError() @abc.abstractmethod def remove(self, *, device_id: str) -> None: + """Simulates removing a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate removing from Seam. + :type device_id: str""" raise NotImplementedError() @@ -36,6 +72,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def connect(self, *, device_id: str) -> None: + """Simulates connecting a device to Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate connecting to Seam. + :type device_id: str""" json_payload = {} if device_id is not None: @@ -46,6 +86,13 @@ def connect(self, *, device_id: str) -> None: return None def connect_to_hub(self, *, device_id: str) -> None: + """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. + Only applicable for sandbox workspaces and currently + implemented for August and TTLock locks. + This will clear the `hub_disconnected` error on the device. + + :param device_id: ID of the device whose hub you want to reconnect. + :type device_id: str""" json_payload = {} if device_id is not None: @@ -56,6 +103,10 @@ def connect_to_hub(self, *, device_id: str) -> None: return None def disconnect(self, *, device_id: str) -> None: + """Simulates disconnecting a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate disconnecting from Seam. + :type device_id: str""" json_payload = {} if device_id is not None: @@ -66,6 +117,14 @@ def disconnect(self, *, device_id: str) -> None: return None def disconnect_from_hub(self, *, device_id: str) -> None: + """Simulates taking the Wi‑Fi hub (bridge) offline for a device. + Only applicable for sandbox workspaces and currently + implemented for August, TTLock, and IglooHome devices. + This will set the `hub_disconnected` error on the device, or mark the + IglooHome bridge offline in sandbox. + + :param device_id: ID of the device whose hub you want to disconnect. + :type device_id: str""" json_payload = {} if device_id is not None: @@ -76,6 +135,15 @@ def disconnect_from_hub(self, *, device_id: str) -> None: return None def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: + """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). + Send `is_expired: true` to simulate an expired subscription, or `false` to simulate an active subscription. + The actual device error is created/cleared by the poller after this state change. + + :param device_id: + :type device_id: str + + :param is_expired: + :type is_expired: bool""" json_payload = {} if device_id is not None: @@ -88,6 +156,10 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: return None def remove(self, *, device_id: str) -> None: + """Simulates removing a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + + :param device_id: ID of the device that you want to simulate removing from Seam. + :type device_id: str""" json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index efee558..ec64262 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -10,6 +10,20 @@ class AbstractDevicesUnmanaged(abc.ABC): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: + """Returns a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + You must specify either `device_id` or `name`. + + :param device_id: ID of the unmanaged device that you want to get. + :type device_id: str + + :param name: Name of the unmanaged device that you want to get. + :type name: str + + :returns: OK + :rtype: UnmanagedDevice""" raise NotImplementedError() @abc.abstractmethod @@ -33,6 +47,60 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: + """Returns a list of all [unmanaged devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type for which you want to list devices. + :type device_type: str + + :param device_types: Array of device types for which you want to list devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer for which you want to list devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[UnmanagedDevice]""" raise NotImplementedError() @abc.abstractmethod @@ -43,6 +111,18 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: + """Updates a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). To convert an unmanaged device to managed, set `is_managed` to `true`. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + :param device_id: ID of the unmanaged device that you want to update. + :type device_id: str + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. + :type custom_metadata: Dict[str, Any] + + :param is_managed: Indicates whether the device is managed. Set this parameter to `true` to convert an unmanaged device to managed. + :type is_managed: bool""" raise NotImplementedError() @@ -54,6 +134,20 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: + """Returns a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + You must specify either `device_id` or `name`. + + :param device_id: ID of the unmanaged device that you want to get. + :type device_id: str + + :param name: Name of the unmanaged device that you want to get. + :type name: str + + :returns: OK + :rtype: UnmanagedDevice""" json_payload = {} if device_id is not None: @@ -85,6 +179,60 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: + """Returns a list of all [unmanaged devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type for which you want to list devices. + :type device_type: str + + :param device_types: Array of device types for which you want to list devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer for which you want to list devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[UnmanagedDevice]""" json_payload = {} if connect_webview_id is not None: @@ -131,6 +279,18 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: + """Updates a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). To convert an unmanaged device to managed, set `is_managed` to `true`. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + + :param device_id: ID of the unmanaged device that you want to update. + :type device_id: str + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. + :type custom_metadata: Dict[str, Any] + + :param is_managed: Indicates whether the device is managed. Set this parameter to `true` to convert an unmanaged device to managed. + :type is_managed: bool""" json_payload = {} if device_id is not None: diff --git a/seam/routes/events.py b/seam/routes/events.py index cb35257..41ab941 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -14,6 +14,19 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: + """Returns a specified event. This endpoint returns the same event that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to retrieve an event that already took place. + + :param event_id: Unique identifier for the event that you want to get. + :type event_id: str + + :param device_id: Unique identifier for the device that triggered the event that you want to get. + :type device_id: str + + :param event_type: Type of the event that you want to get. + :type event_type: str + + :returns: OK + :rtype: SeamEvent""" raise NotImplementedError() @abc.abstractmethod @@ -49,6 +62,94 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: + """Returns a list of all events. This endpoint returns the same events that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to filter or see events that already took place. + + :param access_code_id: ID of the access code for which you want to list events. + :type access_code_id: str + + :param access_code_ids: IDs of the access codes for which you want to list events. + :type access_code_ids: List[str] + + :param access_grant_id: ID of the access grant for which you want to list events. + :type access_grant_id: str + + :param access_grant_ids: IDs of the access grants for which you want to list events. + :type access_grant_ids: List[str] + + :param access_method_id: ID of the access method for which you want to list events. + :type access_method_id: str + + :param access_method_ids: IDs of the access methods for which you want to list events. + :type access_method_ids: List[str] + + :param acs_access_group_id: ID of the ACS access group for which you want to list events. + :type acs_access_group_id: str + + :param acs_credential_id: ID of the ACS credential for which you want to list events. + :type acs_credential_id: str + + :param acs_encoder_id: ID of the ACS encoder for which you want to list events. + :type acs_encoder_id: str + + :param acs_entrance_id: ID of the ACS entrance for which you want to list events. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system for which you want to list events. + :type acs_system_id: str + + :param acs_system_ids: IDs of the access systems for which you want to list events. + :type acs_system_ids: List[str] + + :param acs_user_id: ID of the ACS user for which you want to list events. + :type acs_user_id: str + + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include `since` or `between`. + :type between: List[Dict[str, Any]] + + :param connect_webview_id: ID of the Connect Webview for which you want to list events. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list events. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list events. + :type customer_key: str + + :param device_id: ID of the device for which you want to list events. + :type device_id: str + + :param device_ids: IDs of the devices for which you want to list events. + :type device_ids: List[str] + + :param event_ids: IDs of the events that you want to list. + :type event_ids: List[str] + + :param event_type: Type of the events that you want to list. + :type event_type: str + + :param event_types: Types of the events that you want to list. + :type event_types: List[str] + + :param limit: Numerical limit on the number of events to return. + :type limit: float + + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include `since` or `between`. + :type since: str + + :param space_id: ID of the space for which you want to list events. + :type space_id: str + + :param space_ids: IDs of the spaces for which you want to list events. + :type space_ids: List[str] + + :param unstable_offset: Offset for the events that you want to list. + :type unstable_offset: float + + :param user_identity_id: ID of the user identity for which you want to list events. + :type user_identity_id: str + + :returns: OK + :rtype: List[SeamEvent]""" raise NotImplementedError() @@ -64,6 +165,19 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: + """Returns a specified event. This endpoint returns the same event that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to retrieve an event that already took place. + + :param event_id: Unique identifier for the event that you want to get. + :type event_id: str + + :param device_id: Unique identifier for the device that triggered the event that you want to get. + :type device_id: str + + :param event_type: Type of the event that you want to get. + :type event_type: str + + :returns: OK + :rtype: SeamEvent""" json_payload = {} if event_id is not None: @@ -109,6 +223,94 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: + """Returns a list of all events. This endpoint returns the same events that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to filter or see events that already took place. + + :param access_code_id: ID of the access code for which you want to list events. + :type access_code_id: str + + :param access_code_ids: IDs of the access codes for which you want to list events. + :type access_code_ids: List[str] + + :param access_grant_id: ID of the access grant for which you want to list events. + :type access_grant_id: str + + :param access_grant_ids: IDs of the access grants for which you want to list events. + :type access_grant_ids: List[str] + + :param access_method_id: ID of the access method for which you want to list events. + :type access_method_id: str + + :param access_method_ids: IDs of the access methods for which you want to list events. + :type access_method_ids: List[str] + + :param acs_access_group_id: ID of the ACS access group for which you want to list events. + :type acs_access_group_id: str + + :param acs_credential_id: ID of the ACS credential for which you want to list events. + :type acs_credential_id: str + + :param acs_encoder_id: ID of the ACS encoder for which you want to list events. + :type acs_encoder_id: str + + :param acs_entrance_id: ID of the ACS entrance for which you want to list events. + :type acs_entrance_id: str + + :param acs_system_id: ID of the access system for which you want to list events. + :type acs_system_id: str + + :param acs_system_ids: IDs of the access systems for which you want to list events. + :type acs_system_ids: List[str] + + :param acs_user_id: ID of the ACS user for which you want to list events. + :type acs_user_id: str + + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include `since` or `between`. + :type between: List[Dict[str, Any]] + + :param connect_webview_id: ID of the Connect Webview for which you want to list events. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list events. + :type connected_account_id: str + + :param customer_key: Customer key for which you want to list events. + :type customer_key: str + + :param device_id: ID of the device for which you want to list events. + :type device_id: str + + :param device_ids: IDs of the devices for which you want to list events. + :type device_ids: List[str] + + :param event_ids: IDs of the events that you want to list. + :type event_ids: List[str] + + :param event_type: Type of the events that you want to list. + :type event_type: str + + :param event_types: Types of the events that you want to list. + :type event_types: List[str] + + :param limit: Numerical limit on the number of events to return. + :type limit: float + + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include `since` or `between`. + :type since: str + + :param space_id: ID of the space for which you want to list events. + :type space_id: str + + :param space_ids: IDs of the spaces for which you want to list events. + :type space_ids: List[str] + + :param unstable_offset: Offset for the events that you want to list. + :type unstable_offset: float + + :param user_identity_id: ID of the user identity for which you want to list events. + :type user_identity_id: str + + :returns: OK + :rtype: List[SeamEvent]""" json_payload = {} if access_code_id is not None: diff --git a/seam/routes/instant_keys.py b/seam/routes/instant_keys.py index e5ecaa8..7b7311f 100644 --- a/seam/routes/instant_keys.py +++ b/seam/routes/instant_keys.py @@ -8,6 +8,10 @@ class AbstractInstantKeys(abc.ABC): @abc.abstractmethod def delete(self, *, instant_key_id: str) -> None: + """Deletes a specified [Instant Key](https://docs.seam.co/capability-guides/instant-keys). + + :param instant_key_id: ID of the Instant Key that you want to delete. + :type instant_key_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -17,10 +21,27 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: + """Gets an [instant key](https://docs.seam.co/capability-guides/instant-keys). + + :param instant_key_id: ID of the instant key to get. + :type instant_key_id: str + + :param instant_key_url: URL of the instant key to get. + :type instant_key_url: str + + :returns: OK + :rtype: InstantKey""" raise NotImplementedError() @abc.abstractmethod def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: + """Returns a list of all [instant keys](https://docs.seam.co/capability-guides/instant-keys). + + :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. + :type user_identity_id: str + + :returns: OK + :rtype: List[InstantKey]""" raise NotImplementedError() @@ -30,6 +51,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def delete(self, *, instant_key_id: str) -> None: + """Deletes a specified [Instant Key](https://docs.seam.co/capability-guides/instant-keys). + + :param instant_key_id: ID of the Instant Key that you want to delete. + :type instant_key_id: str""" json_payload = {} if instant_key_id is not None: @@ -45,6 +70,16 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: + """Gets an [instant key](https://docs.seam.co/capability-guides/instant-keys). + + :param instant_key_id: ID of the instant key to get. + :type instant_key_id: str + + :param instant_key_url: URL of the instant key to get. + :type instant_key_url: str + + :returns: OK + :rtype: InstantKey""" json_payload = {} if instant_key_id is not None: @@ -57,6 +92,13 @@ def get( return InstantKey.from_dict(res["instant_key"]) def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: + """Returns a list of all [instant keys](https://docs.seam.co/capability-guides/instant-keys). + + :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. + :type user_identity_id: str + + :returns: OK + :rtype: List[InstantKey]""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/locks.py b/seam/routes/locks.py index c8ba40c..2674d8f 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -22,12 +22,41 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Configures the auto-lock setting for a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + + :param auto_lock_enabled: Whether to enable or disable auto-lock. + :type auto_lock_enabled: bool + + :param device_id: ID of the lock for which you want to configure the auto-lock. + :type device_id: str + + :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. + :type auto_lock_delay_seconds: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + + :param device_id: ID of the lock that you want to get. + :type device_id: str + + :param name: Name of the lock that you want to get. + :type name: str + + :returns: OK + :rtype: Device + + .. deprecated:: + Use `/devices/get` instead.""" raise NotImplementedError() @abc.abstractmethod @@ -51,6 +80,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [locks](https://docs.seam.co/low-level-apis/smart-locks). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type of the locks that you want to list. + :type device_type: str + + :param device_types: Device types of the locks that you want to list. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer of the locks that you want to list. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +141,16 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Locks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + + :param device_id: ID of the lock that you want to lock. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -69,6 +160,16 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Unlocks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + + :param device_id: ID of the lock that you want to unlock. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -90,6 +191,22 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Configures the auto-lock setting for a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + + :param auto_lock_enabled: Whether to enable or disable auto-lock. + :type auto_lock_enabled: bool + + :param device_id: ID of the lock for which you want to configure the auto-lock. + :type device_id: str + + :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. + :type auto_lock_delay_seconds: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if auto_lock_enabled is not None: @@ -116,6 +233,19 @@ def configure_auto_lock( def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + + :param device_id: ID of the lock that you want to get. + :type device_id: str + + :param name: Name of the lock that you want to get. + :type name: str + + :returns: OK + :rtype: Device + + .. deprecated:: + Use `/devices/get` instead.""" json_payload = {} if device_id is not None: @@ -147,6 +277,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [locks](https://docs.seam.co/low-level-apis/smart-locks). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type of the locks that you want to list. + :type device_type: str + + :param device_types: Device types of the locks that you want to list. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer of the locks that you want to list. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" json_payload = {} if connect_webview_id is not None: @@ -192,6 +374,16 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Locks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + + :param device_id: ID of the lock that you want to lock. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -217,6 +409,16 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Unlocks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + + :param device_id: ID of the lock that you want to unlock. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: diff --git a/seam/routes/locks_simulate.py b/seam/routes/locks_simulate.py index 6eeb24b..2250978 100644 --- a/seam/routes/locks_simulate.py +++ b/seam/routes/locks_simulate.py @@ -15,6 +15,19 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates the entry of a code on a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param code: Code that you want to simulate entering on a keypad. + :type code: str + + :param device_id: ID of the device for which you want to simulate a keypad code entry. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -24,6 +37,16 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates a manual lock action using a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -39,6 +62,19 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates the entry of a code on a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param code: Code that you want to simulate entering on a keypad. + :type code: str + + :param device_id: ID of the device for which you want to simulate a keypad code entry. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if code is not None: @@ -66,6 +102,16 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates a manual lock action using a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index ef307b9..de66a1e 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -42,6 +42,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [noise sensors](https://docs.seam.co/capability-guides/noise-sensors). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type of the noise sensors that you want to list. + :type device_type: str + + :param device_types: Device types of the noise sensors that you want to list. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturers of the noise sensors that you want to list. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" raise NotImplementedError() @@ -82,6 +134,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [noise sensors](https://docs.seam.co/capability-guides/noise-sensors). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type of the noise sensors that you want to list. + :type device_type: str + + :param device_types: Device types of the noise sensors that you want to list. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturers of the noise sensors that you want to list. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" json_payload = {} if connect_webview_id is not None: diff --git a/seam/routes/noise_sensors_noise_thresholds.py b/seam/routes/noise_sensors_noise_thresholds.py index 034300a..c345a00 100644 --- a/seam/routes/noise_sensors_noise_thresholds.py +++ b/seam/routes/noise_sensors_noise_thresholds.py @@ -17,18 +17,61 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: + """Creates a new [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + + :param device_id: ID of the device for which you want to create a noise threshold. + :type device_id: str + + :param ends_daily_at: Time at which the new noise threshold should become inactive daily. + :type ends_daily_at: str + + :param starts_daily_at: Time at which the new noise threshold should become active daily. + :type starts_daily_at: str + + :param name: Name of the new noise threshold. + :type name: str + + :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. + :type noise_threshold_decibels: float + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :type noise_threshold_nrs: float + + :returns: OK + :rtype: NoiseThreshold""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, device_id: str, noise_threshold_id: str) -> None: + """Deletes a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) from a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device that contains the noise threshold that you want to delete. + :type device_id: str + + :param noise_threshold_id: ID of the noise threshold that you want to delete. + :type noise_threshold_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, noise_threshold_id: str) -> NoiseThreshold: + """Returns a specified [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param noise_threshold_id: ID of the noise threshold that you want to get. + :type noise_threshold_id: str + + :returns: OK + :rtype: NoiseThreshold""" raise NotImplementedError() @abc.abstractmethod def list(self, *, device_id: str) -> List[NoiseThreshold]: + """Returns a list of all [noise thresholds](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device for which you want to list noise thresholds. + :type device_id: str + + :returns: OK + :rtype: List[NoiseThreshold]""" raise NotImplementedError() @abc.abstractmethod @@ -43,6 +86,28 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: + """Updates a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device that contains the noise threshold that you want to update. + :type device_id: str + + :param noise_threshold_id: ID of the noise threshold that you want to update. + :type noise_threshold_id: str + + :param ends_daily_at: Time at which the noise threshold should become inactive daily. + :type ends_daily_at: str + + :param name: Name of the noise threshold that you want to update. + :type name: str + + :param noise_threshold_decibels: Noise level in decibels for the noise threshold. + :type noise_threshold_decibels: float + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :type noise_threshold_nrs: float + + :param starts_daily_at: Time at which the noise threshold should become active daily. + :type starts_daily_at: str""" raise NotImplementedError() @@ -61,6 +126,28 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: + """Creates a new [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + + :param device_id: ID of the device for which you want to create a noise threshold. + :type device_id: str + + :param ends_daily_at: Time at which the new noise threshold should become inactive daily. + :type ends_daily_at: str + + :param starts_daily_at: Time at which the new noise threshold should become active daily. + :type starts_daily_at: str + + :param name: Name of the new noise threshold. + :type name: str + + :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. + :type noise_threshold_decibels: float + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :type noise_threshold_nrs: float + + :returns: OK + :rtype: NoiseThreshold""" json_payload = {} if device_id is not None: @@ -83,6 +170,13 @@ def create( return NoiseThreshold.from_dict(res["noise_threshold"]) def delete(self, *, device_id: str, noise_threshold_id: str) -> None: + """Deletes a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) from a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device that contains the noise threshold that you want to delete. + :type device_id: str + + :param noise_threshold_id: ID of the noise threshold that you want to delete. + :type noise_threshold_id: str""" json_payload = {} if device_id is not None: @@ -95,6 +189,13 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: return None def get(self, *, noise_threshold_id: str) -> NoiseThreshold: + """Returns a specified [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param noise_threshold_id: ID of the noise threshold that you want to get. + :type noise_threshold_id: str + + :returns: OK + :rtype: NoiseThreshold""" json_payload = {} if noise_threshold_id is not None: @@ -105,6 +206,13 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: return NoiseThreshold.from_dict(res["noise_threshold"]) def list(self, *, device_id: str) -> List[NoiseThreshold]: + """Returns a list of all [noise thresholds](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device for which you want to list noise thresholds. + :type device_id: str + + :returns: OK + :rtype: List[NoiseThreshold]""" json_payload = {} if device_id is not None: @@ -127,6 +235,28 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: + """Updates a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + + :param device_id: ID of the device that contains the noise threshold that you want to update. + :type device_id: str + + :param noise_threshold_id: ID of the noise threshold that you want to update. + :type noise_threshold_id: str + + :param ends_daily_at: Time at which the noise threshold should become inactive daily. + :type ends_daily_at: str + + :param name: Name of the noise threshold that you want to update. + :type name: str + + :param noise_threshold_decibels: Noise level in decibels for the noise threshold. + :type noise_threshold_decibels: float + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :type noise_threshold_nrs: float + + :param starts_daily_at: Time at which the noise threshold should become active daily. + :type starts_daily_at: str""" json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors_simulate.py b/seam/routes/noise_sensors_simulate.py index 2c1a2cf..52361e0 100644 --- a/seam/routes/noise_sensors_simulate.py +++ b/seam/routes/noise_sensors_simulate.py @@ -7,6 +7,10 @@ class AbstractNoiseSensorsSimulate(abc.ABC): @abc.abstractmethod def trigger_noise_threshold(self, *, device_id: str) -> None: + """Simulates the triggering of a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. + :type device_id: str""" raise NotImplementedError() @@ -16,6 +20,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def trigger_noise_threshold(self, *, device_id: str) -> None: + """Simulates the triggering of a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + + :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. + :type device_id: str""" json_payload = {} if device_id is not None: diff --git a/seam/routes/phones.py b/seam/routes/phones.py index 6b1896a..e1925cd 100644 --- a/seam/routes/phones.py +++ b/seam/routes/phones.py @@ -14,10 +14,21 @@ def simulate(self) -> AbstractPhonesSimulate: @abc.abstractmethod def deactivate(self, *, device_id: str) -> None: + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see [App User Lost Phone Process](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity#app-user-lost-phone-process). + + :param device_id: Device ID of the phone that you want to deactivate. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, device_id: str) -> Phone: + """Returns a specified [phone](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). + + :param device_id: Device ID of the phone that you want to get. + :type device_id: str + + :returns: OK + :rtype: Phone""" raise NotImplementedError() @abc.abstractmethod @@ -27,6 +38,16 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: + """Returns a list of all [phones](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). To filter the list of returned phones by a specific owner user identity or credential, include the `owner_user_identity_id` or `acs_credential_id`, respectively, in the request body. + + :param acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) by which you want to filter the list of returned phones. + :type acs_credential_id: str + + :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. + :type owner_user_identity_id: str + + :returns: OK + :rtype: List[Phone]""" raise NotImplementedError() @@ -41,6 +62,10 @@ def simulate(self) -> PhonesSimulate: return self._simulate def deactivate(self, *, device_id: str) -> None: + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see [App User Lost Phone Process](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity#app-user-lost-phone-process). + + :param device_id: Device ID of the phone that you want to deactivate. + :type device_id: str""" json_payload = {} if device_id is not None: @@ -51,6 +76,13 @@ def deactivate(self, *, device_id: str) -> None: return None def get(self, *, device_id: str) -> Phone: + """Returns a specified [phone](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). + + :param device_id: Device ID of the phone that you want to get. + :type device_id: str + + :returns: OK + :rtype: Phone""" json_payload = {} if device_id is not None: @@ -66,6 +98,16 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: + """Returns a list of all [phones](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). To filter the list of returned phones by a specific owner user identity or credential, include the `owner_user_identity_id` or `acs_credential_id`, respectively, in the request body. + + :param acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) by which you want to filter the list of returned phones. + :type acs_credential_id: str + + :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. + :type owner_user_identity_id: str + + :returns: OK + :rtype: List[Phone]""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/phones_simulate.py b/seam/routes/phones_simulate.py index e5b3871..7ce2814 100644 --- a/seam/routes/phones_simulate.py +++ b/seam/routes/phones_simulate.py @@ -15,6 +15,22 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: + """Creates a new simulated phone in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Creating a Simulated Phone for a User Identity](https://docs.seam.co/capability-guides/mobile-access/developing-in-a-sandbox-workspace#creating-a-simulated-phone-for-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. + :type user_identity_id: str + + :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. + :type assa_abloy_metadata: Dict[str, Any] + + :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. + :type custom_sdk_installation_id: str + + :param phone_metadata: Metadata that you want to associate with the simulated phone. + :type phone_metadata: Dict[str, Any] + + :returns: OK + :rtype: Phone""" raise NotImplementedError() @@ -31,6 +47,22 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: + """Creates a new simulated phone in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Creating a Simulated Phone for a User Identity](https://docs.seam.co/capability-guides/mobile-access/developing-in-a-sandbox-workspace#creating-a-simulated-phone-for-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. + :type user_identity_id: str + + :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. + :type assa_abloy_metadata: Dict[str, Any] + + :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. + :type custom_sdk_installation_id: str + + :param phone_metadata: Metadata that you want to associate with the simulated phone. + :type phone_metadata: Dict[str, Any] + + :returns: OK + :rtype: Phone""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/spaces.py b/seam/routes/spaces.py index 238f4ac..145f00e 100644 --- a/seam/routes/spaces.py +++ b/seam/routes/spaces.py @@ -8,16 +8,37 @@ class AbstractSpaces(abc.ABC): @abc.abstractmethod def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: + """Adds [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) to a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the space. + :type acs_entrance_ids: List[str] + + :param space_id: ID of the space to which you want to add entrances. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Adds a [connected account](https://docs.seam.co/core-concepts/connected-accounts) to a specific space. + + :param connected_account_id: ID of the connected account that you want to add to the space. + :type connected_account_id: str + + :param space_id: ID of the space to which you want to add the connected account. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod def add_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Adds devices to a specific space. + + :param device_ids: IDs of the devices that you want to add to the space. + :type device_ids: List[str] + + :param space_id: ID of the space to which you want to add devices. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -32,16 +53,55 @@ def create( device_ids: Optional[List[str]] = None, space_key: Optional[str] = None ) -> Space: + """Creates a new space. + + :param name: Name of the space that you want to create. + :type name: str + + :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. + :type acs_entrance_ids: List[str] + + :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. + :type connected_account_ids: List[str] + + :param customer_data: Reservation/stay-related defaults for the space. + :type customer_data: Dict[str, Any] + + :param customer_key: Customer key for which you want to create the space. + :type customer_key: str + + :param device_ids: IDs of the devices that you want to add to the new space. + :type device_ids: List[str] + + :param space_key: Unique key for the space within the workspace. + :type space_key: str + + :returns: OK + :rtype: Space""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, space_id: str) -> None: + """Deletes a space. + + :param space_id: ID of the space that you want to delete. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod def get( self, *, space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Gets a space. + + :param space_id: ID of the space that you want to get. + :type space_id: str + + :param space_key: Unique key of the space that you want to get. + :type space_key: str + + :returns: OK + :rtype: Space""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +113,22 @@ def get_related( space_ids: Optional[List[str]] = None, space_keys: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Spaces. + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :param space_ids: IDs of the spaces that you want to get along with their related resources. + :type space_ids: List[str] + + :param space_keys: Keys of the spaces that you want to get along with their related resources. + :type space_keys: List[str] + + :returns: OK + :rtype: Batch""" raise NotImplementedError() @abc.abstractmethod @@ -65,22 +141,62 @@ def list( search: Optional[str] = None, space_key: Optional[str] = None ) -> List[Space]: + """Returns a list of all spaces. + + :param customer_key: Customer key for which you want to list spaces. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using `name`, `space_key`, or `customer_key`. + :type search: str + + :param space_key: Filter spaces by space_key. + :type space_key: str + + :returns: OK + :rtype: List[Space]""" raise NotImplementedError() @abc.abstractmethod def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: + """Removes [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) from a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. + :type acs_entrance_ids: List[str] + + :param space_id: ID of the space from which you want to remove entrances. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Removes a [connected account](https://docs.seam.co/core-concepts/connected-accounts) from a specific space. + + :param connected_account_id: ID of the connected account that you want to remove from the space. + :type connected_account_id: str + + :param space_id: ID of the space from which you want to remove the connected account. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Removes devices from a specific space. + + :param device_ids: IDs of the devices that you want to remove from the space. + :type device_ids: List[str] + + :param space_id: ID of the space from which you want to remove devices. + :type space_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -94,6 +210,28 @@ def update( space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Updates an existing space. + + :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. + :type acs_entrance_ids: List[str] + + :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. + :type customer_data: Dict[str, Any] + + :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. + :type device_ids: List[str] + + :param name: Name of the space. + :type name: str + + :param space_id: ID of the space that you want to update. + :type space_id: str + + :param space_key: Unique key of the space that you want to update. + :type space_key: str + + :returns: OK + :rtype: Space""" raise NotImplementedError() @@ -103,6 +241,13 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: + """Adds [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) to a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the space. + :type acs_entrance_ids: List[str] + + :param space_id: ID of the space to which you want to add entrances. + :type space_id: str""" json_payload = {} if acs_entrance_ids is not None: @@ -117,6 +262,13 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Adds a [connected account](https://docs.seam.co/core-concepts/connected-accounts) to a specific space. + + :param connected_account_id: ID of the connected account that you want to add to the space. + :type connected_account_id: str + + :param space_id: ID of the space to which you want to add the connected account. + :type space_id: str""" json_payload = {} if connected_account_id is not None: @@ -129,6 +281,13 @@ def add_connected_account( return None def add_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Adds devices to a specific space. + + :param device_ids: IDs of the devices that you want to add to the space. + :type device_ids: List[str] + + :param space_id: ID of the space to which you want to add devices. + :type space_id: str""" json_payload = {} if device_ids is not None: @@ -151,6 +310,31 @@ def create( device_ids: Optional[List[str]] = None, space_key: Optional[str] = None ) -> Space: + """Creates a new space. + + :param name: Name of the space that you want to create. + :type name: str + + :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. + :type acs_entrance_ids: List[str] + + :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. + :type connected_account_ids: List[str] + + :param customer_data: Reservation/stay-related defaults for the space. + :type customer_data: Dict[str, Any] + + :param customer_key: Customer key for which you want to create the space. + :type customer_key: str + + :param device_ids: IDs of the devices that you want to add to the new space. + :type device_ids: List[str] + + :param space_key: Unique key for the space within the workspace. + :type space_key: str + + :returns: OK + :rtype: Space""" json_payload = {} if name is not None: @@ -173,6 +357,10 @@ def create( return Space.from_dict(res["space"]) def delete(self, *, space_id: str) -> None: + """Deletes a space. + + :param space_id: ID of the space that you want to delete. + :type space_id: str""" json_payload = {} if space_id is not None: @@ -185,6 +373,16 @@ def delete(self, *, space_id: str) -> None: def get( self, *, space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Gets a space. + + :param space_id: ID of the space that you want to get. + :type space_id: str + + :param space_key: Unique key of the space that you want to get. + :type space_key: str + + :returns: OK + :rtype: Space""" json_payload = {} if space_id is not None: @@ -204,6 +402,22 @@ def get_related( space_ids: Optional[List[str]] = None, space_keys: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Spaces. + + :param exclude: + :type exclude: List[str] + + :param include: + :type include: List[str] + + :param space_ids: IDs of the spaces that you want to get along with their related resources. + :type space_ids: List[str] + + :param space_keys: Keys of the spaces that you want to get along with their related resources. + :type space_keys: List[str] + + :returns: OK + :rtype: Batch""" json_payload = {} if exclude is not None: @@ -228,6 +442,25 @@ def list( search: Optional[str] = None, space_key: Optional[str] = None ) -> List[Space]: + """Returns a list of all spaces. + + :param customer_key: Customer key for which you want to list spaces. + :type customer_key: str + + :param limit: Maximum number of records to return per page. + :type limit: float + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using `name`, `space_key`, or `customer_key`. + :type search: str + + :param space_key: Filter spaces by space_key. + :type space_key: str + + :returns: OK + :rtype: List[Space]""" json_payload = {} if customer_key is not None: @@ -248,6 +481,13 @@ def list( def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: + """Removes [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) from a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. + :type acs_entrance_ids: List[str] + + :param space_id: ID of the space from which you want to remove entrances. + :type space_id: str""" json_payload = {} if acs_entrance_ids is not None: @@ -262,6 +502,13 @@ def remove_acs_entrances( def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Removes a [connected account](https://docs.seam.co/core-concepts/connected-accounts) from a specific space. + + :param connected_account_id: ID of the connected account that you want to remove from the space. + :type connected_account_id: str + + :param space_id: ID of the space from which you want to remove the connected account. + :type space_id: str""" json_payload = {} if connected_account_id is not None: @@ -274,6 +521,13 @@ def remove_connected_account( return None def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Removes devices from a specific space. + + :param device_ids: IDs of the devices that you want to remove from the space. + :type device_ids: List[str] + + :param space_id: ID of the space from which you want to remove devices. + :type space_id: str""" json_payload = {} if device_ids is not None: @@ -295,6 +549,28 @@ def update( space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Updates an existing space. + + :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. + :type acs_entrance_ids: List[str] + + :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. + :type customer_data: Dict[str, Any] + + :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. + :type device_ids: List[str] + + :param name: Name of the space. + :type name: str + + :param space_id: ID of the space that you want to update. + :type space_id: str + + :param space_key: Unique key of the space that you want to update. + :type space_key: str + + :returns: OK + :rtype: Space""" json_payload = {} if acs_entrance_ids is not None: diff --git a/seam/routes/thermostats.py b/seam/routes/thermostats.py index d1eb2d1..1cb3feb 100644 --- a/seam/routes/thermostats.py +++ b/seam/routes/thermostats.py @@ -36,6 +36,19 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Activates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to activate. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to activate a climate preset. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -47,6 +60,22 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [cool mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to cool mode. + :type device_id: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -66,10 +95,54 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Creates a [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want create a climate preset. + :type device_id: str + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + :type climate_preset_mode: str + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_fahrenheit: float + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + :type ecobee_metadata: Dict[str, Any] + + :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :type fan_mode_setting: str + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_fahrenheit: float + + :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :type hvac_mode_setting: str + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. + :type manual_override_allowed: bool + + :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type name: str""" raise NotImplementedError() @abc.abstractmethod def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: + """Deletes a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to delete. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to delete a climate preset. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -81,6 +154,22 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to heat mode. + :type device_id: str + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -94,6 +183,28 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat-cool ("auto") mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to heat-cool mode. + :type device_id: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -117,6 +228,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [thermostats](https://docs.seam.co/capability-guides/thermostats). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type by which you want to filter thermostat devices. + :type device_type: str + + :param device_types: Array of device types by which you want to filter thermostat devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer by which you want to filter thermostat devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" raise NotImplementedError() @abc.abstractmethod @@ -126,12 +289,29 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to ["off" mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to off mode. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: + """Sets a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) as the ["fallback"](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) preset for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. + :type device_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -143,6 +323,22 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to set the fan mode. + :type device_id: str + + :param fan_mode: Deprecated: Use `fan_mode_setting` instead. Fan mode setting for the thermostat, such as `auto`, `on`, or `circulate`. + :type fan_mode: str + + :param fan_mode_setting: [Fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) that you want to set for the thermostat. + :type fan_mode_setting: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -157,6 +353,31 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to set the HVAC mode. + :type device_id: str + + :param hvac_mode_setting: + :type hvac_mode_setting: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -169,6 +390,22 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: + """Sets a [temperature threshold](https://docs.seam.co/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) for a specified thermostat. Seam emits a `thermostat.temperature_threshold_exceeded` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + + :param device_id: ID of the thermostat device for which you want to set a temperature threshold. + :type device_id: str + + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :type lower_limit_celsius: float + + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :type lower_limit_fahrenheit: float + + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :type upper_limit_celsius: float + + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :type upper_limit_fahrenheit: float""" raise NotImplementedError() @abc.abstractmethod @@ -188,6 +425,43 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Updates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to update a climate preset. + :type device_id: str + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + :type climate_preset_mode: str + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_fahrenheit: float + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + :type ecobee_metadata: Dict[str, Any] + + :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :type fan_mode_setting: str + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_fahrenheit: float + + :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :type hvac_mode_setting: str + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type manual_override_allowed: bool + + :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type name: str""" raise NotImplementedError() @abc.abstractmethod @@ -204,6 +478,37 @@ def update_weekly_program( wednesday_program_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. + + :param device_id: ID of the thermostat device for which you want to update the weekly program. + :type device_id: str + + :param friday_program_id: ID of the thermostat daily program to run on Fridays. + :type friday_program_id: str + + :param monday_program_id: ID of the thermostat daily program to run on Mondays. + :type monday_program_id: str + + :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. + :type saturday_program_id: str + + :param sunday_program_id: ID of the thermostat daily program to run on Sundays. + :type sunday_program_id: str + + :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. + :type thursday_program_id: str + + :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. + :type tuesday_program_id: str + + :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. + :type wednesday_program_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -236,6 +541,19 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Activates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to activate. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to activate a climate preset. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if climate_preset_key is not None: @@ -267,6 +585,22 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [cool mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to cool mode. + :type device_id: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -306,6 +640,43 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Creates a [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want create a climate preset. + :type device_id: str + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + :type climate_preset_mode: str + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_fahrenheit: float + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + :type ecobee_metadata: Dict[str, Any] + + :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :type fan_mode_setting: str + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_fahrenheit: float + + :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :type hvac_mode_setting: str + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. + :type manual_override_allowed: bool + + :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type name: str""" json_payload = {} if climate_preset_key is not None: @@ -338,6 +709,13 @@ def create_climate_preset( return None def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: + """Deletes a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to delete. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to delete a climate preset. + :type device_id: str""" json_payload = {} if climate_preset_key is not None: @@ -357,6 +735,22 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to heat mode. + :type device_id: str + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -390,6 +784,28 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat-cool ("auto") mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to heat-cool mode. + :type device_id: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -437,6 +853,58 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all [thermostats](https://docs.seam.co/capability-guides/thermostats). + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + :type connect_webview_id: str + + :param connected_account_id: ID of the connected account for which you want to list devices. + :type connected_account_id: str + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + :type connected_account_ids: List[str] + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + :type created_before: str + + :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :type custom_metadata_has: Dict[str, Any] + + :param customer_key: Customer key for which you want to list devices. + :type customer_key: str + + :param device_ids: Array of device IDs for which you want to list devices. + :type device_ids: List[str] + + :param device_type: Device type by which you want to filter thermostat devices. + :type device_type: str + + :param device_types: Array of device types by which you want to filter thermostat devices. + :type device_types: List[str] + + :param limit: Numerical limit on the number of devices to return. + :type limit: float + + :param manufacturer: Manufacturer by which you want to filter thermostat devices. + :type manufacturer: str + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :type search: str + + :param space_id: ID of the space for which you want to list devices. + :type space_id: str + + :param unstable_location_id: Deprecated: Use `space_id`. + :type unstable_location_id: str + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + :type user_identifier_key: str + + :returns: OK + :rtype: List[Device]""" json_payload = {} if connect_webview_id is not None: @@ -482,6 +950,16 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to ["off" mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + + :param device_id: ID of the thermostat device that you want to set to off mode. + :type device_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -504,6 +982,13 @@ def off( def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: + """Sets a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) as the ["fallback"](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) preset for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. + :type device_id: str""" json_payload = {} if climate_preset_key is not None: @@ -523,6 +1008,22 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to set the fan mode. + :type device_id: str + + :param fan_mode: Deprecated: Use `fan_mode_setting` instead. Fan mode setting for the thermostat, such as `auto`, `on`, or `circulate`. + :type fan_mode: str + + :param fan_mode_setting: [Fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) that you want to set for the thermostat. + :type fan_mode_setting: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -557,6 +1058,31 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to set the HVAC mode. + :type device_id: str + + :param hvac_mode_setting: + :type hvac_mode_setting: str + + :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :type heating_set_point_fahrenheit: float + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: @@ -595,6 +1121,22 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: + """Sets a [temperature threshold](https://docs.seam.co/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) for a specified thermostat. Seam emits a `thermostat.temperature_threshold_exceeded` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + + :param device_id: ID of the thermostat device for which you want to set a temperature threshold. + :type device_id: str + + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :type lower_limit_celsius: float + + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :type lower_limit_fahrenheit: float + + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :type upper_limit_celsius: float + + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :type upper_limit_fahrenheit: float""" json_payload = {} if device_id is not None: @@ -628,6 +1170,43 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Updates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to update a climate preset. + :type device_id: str + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + :type climate_preset_mode: str + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type cooling_set_point_fahrenheit: float + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + :type ecobee_metadata: Dict[str, Any] + + :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :type fan_mode_setting: str + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :type heating_set_point_fahrenheit: float + + :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :type hvac_mode_setting: str + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type manual_override_allowed: bool + + :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :type name: str""" json_payload = {} if climate_preset_key is not None: @@ -672,6 +1251,37 @@ def update_weekly_program( wednesday_program_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. + + :param device_id: ID of the thermostat device for which you want to update the weekly program. + :type device_id: str + + :param friday_program_id: ID of the thermostat daily program to run on Fridays. + :type friday_program_id: str + + :param monday_program_id: ID of the thermostat daily program to run on Mondays. + :type monday_program_id: str + + :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. + :type saturday_program_id: str + + :param sunday_program_id: ID of the thermostat daily program to run on Sundays. + :type sunday_program_id: str + + :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. + :type thursday_program_id: str + + :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. + :type tuesday_program_id: str + + :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. + :type wednesday_program_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if device_id is not None: diff --git a/seam/routes/thermostats_daily_programs.py b/seam/routes/thermostats_daily_programs.py index dbe80dd..c9f478c 100644 --- a/seam/routes/thermostats_daily_programs.py +++ b/seam/routes/thermostats_daily_programs.py @@ -11,10 +11,27 @@ class AbstractThermostatsDailyPrograms(abc.ABC): def create( self, *, device_id: str, name: str, periods: List[Dict[str, Any]] ) -> ThermostatDailyProgram: + """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. + + :param device_id: ID of the thermostat device for which you want to create a daily program. + :type device_id: str + + :param name: Name of the thermostat daily program. + :type name: str + + :param periods: Array of thermostat daily program periods. + :type periods: List[Dict[str, Any]] + + :returns: OK + :rtype: ThermostatDailyProgram""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, thermostat_daily_program_id: str) -> None: + """Deletes a thermostat daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. + :type thermostat_daily_program_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -26,6 +43,22 @@ def update( thermostat_daily_program_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. + + :param name: Name of the thermostat daily program that you want to update. + :type name: str + + :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. + :type periods: List[Dict[str, Any]] + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. + :type thermostat_daily_program_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @@ -37,6 +70,19 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def create( self, *, device_id: str, name: str, periods: List[Dict[str, Any]] ) -> ThermostatDailyProgram: + """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. + + :param device_id: ID of the thermostat device for which you want to create a daily program. + :type device_id: str + + :param name: Name of the thermostat daily program. + :type name: str + + :param periods: Array of thermostat daily program periods. + :type periods: List[Dict[str, Any]] + + :returns: OK + :rtype: ThermostatDailyProgram""" json_payload = {} if device_id is not None: @@ -51,6 +97,10 @@ def create( return ThermostatDailyProgram.from_dict(res["thermostat_daily_program"]) def delete(self, *, thermostat_daily_program_id: str) -> None: + """Deletes a thermostat daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. + :type thermostat_daily_program_id: str""" json_payload = {} if thermostat_daily_program_id is not None: @@ -68,6 +118,22 @@ def update( thermostat_daily_program_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. + + :param name: Name of the thermostat daily program that you want to update. + :type name: str + + :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. + :type periods: List[Dict[str, Any]] + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. + :type thermostat_daily_program_id: str + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} if name is not None: diff --git a/seam/routes/thermostats_schedules.py b/seam/routes/thermostats_schedules.py index e6fcb8a..ec793fb 100644 --- a/seam/routes/thermostats_schedules.py +++ b/seam/routes/thermostats_schedules.py @@ -18,20 +18,66 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: + """Creates a new [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the new thermostat schedule. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to create a schedule. + :type device_id: str + + :param ends_at: Date and time at which the new thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type ends_at: str + + :param starts_at: Date and time at which the new thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type is_override_allowed: bool + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type max_override_period_minutes: int + + :param name: Name of the thermostat schedule. + :type name: str + + :returns: OK + :rtype: ThermostatSchedule""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, thermostat_schedule_id: str) -> None: + """Deletes a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. + :type thermostat_schedule_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: + """Returns a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. + :type thermostat_schedule_id: str + + :returns: OK + :rtype: ThermostatSchedule""" raise NotImplementedError() @abc.abstractmethod def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: + """Returns a list of all [thermostat schedules](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to list schedules. + :type device_id: str + + :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ThermostatSchedule]""" raise NotImplementedError() @abc.abstractmethod @@ -46,6 +92,28 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. + :type thermostat_schedule_id: str + + :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the thermostat schedule. + :type climate_preset_key: str + + :param ends_at: Date and time at which the thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type ends_at: str + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type is_override_allowed: bool + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type max_override_period_minutes: int + + :param name: Name of the thermostat schedule. + :type name: str + + :param starts_at: Date and time at which the thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" raise NotImplementedError() @@ -65,6 +133,31 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: + """Creates a new [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the new thermostat schedule. + :type climate_preset_key: str + + :param device_id: ID of the thermostat device for which you want to create a schedule. + :type device_id: str + + :param ends_at: Date and time at which the new thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type ends_at: str + + :param starts_at: Date and time at which the new thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type is_override_allowed: bool + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type max_override_period_minutes: int + + :param name: Name of the thermostat schedule. + :type name: str + + :returns: OK + :rtype: ThermostatSchedule""" json_payload = {} if climate_preset_key is not None: @@ -87,6 +180,10 @@ def create( return ThermostatSchedule.from_dict(res["thermostat_schedule"]) def delete(self, *, thermostat_schedule_id: str) -> None: + """Deletes a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. + :type thermostat_schedule_id: str""" json_payload = {} if thermostat_schedule_id is not None: @@ -97,6 +194,13 @@ def delete(self, *, thermostat_schedule_id: str) -> None: return None def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: + """Returns a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. + :type thermostat_schedule_id: str + + :returns: OK + :rtype: ThermostatSchedule""" json_payload = {} if thermostat_schedule_id is not None: @@ -109,6 +213,16 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: + """Returns a list of all [thermostat schedules](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + + :param device_id: ID of the thermostat device for which you want to list schedules. + :type device_id: str + + :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. + :type user_identifier_key: str + + :returns: OK + :rtype: List[ThermostatSchedule]""" json_payload = {} if device_id is not None: @@ -133,6 +247,28 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. + :type thermostat_schedule_id: str + + :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the thermostat schedule. + :type climate_preset_key: str + + :param ends_at: Date and time at which the thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type ends_at: str + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type is_override_allowed: bool + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :type max_override_period_minutes: int + + :param name: Name of the thermostat schedule. + :type name: str + + :param starts_at: Date and time at which the thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :type starts_at: str""" json_payload = {} if thermostat_schedule_id is not None: diff --git a/seam/routes/thermostats_simulate.py b/seam/routes/thermostats_simulate.py index b1155f9..ab04cf5 100644 --- a/seam/routes/thermostats_simulate.py +++ b/seam/routes/thermostats_simulate.py @@ -16,6 +16,25 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: + """Simulates having adjusted the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) for a [thermostat](https://docs.seam.co/capability-guides/thermostats). Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + + :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. + :type device_id: str + + :param hvac_mode: HVAC mode that you want to simulate. + :type hvac_mode: str + + :param cooling_set_point_celsius: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `cooling_set_point_celsius` or `cooling_set_point_fahrenheit`. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `cooling_set_point_fahrenheit` or `cooling_set_point_celsius`. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `heating_set_point_celsius` or `heating_set_point_fahrenheit`. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `heating_set_point_fahrenheit` or `heating_set_point_celsius`. + :type heating_set_point_fahrenheit: float""" raise NotImplementedError() @abc.abstractmethod @@ -26,6 +45,16 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: + """Simulates a [thermostat](https://docs.seam.co/capability-guides/thermostats) reaching a specified temperature. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + + :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. + :type device_id: str + + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set `temperature_celsius` or `temperature_fahrenheit`. + :type temperature_celsius: float + + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set `temperature_fahrenheit` or `temperature_celsius`. + :type temperature_fahrenheit: float""" raise NotImplementedError() @@ -44,6 +73,25 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: + """Simulates having adjusted the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) for a [thermostat](https://docs.seam.co/capability-guides/thermostats). Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + + :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. + :type device_id: str + + :param hvac_mode: HVAC mode that you want to simulate. + :type hvac_mode: str + + :param cooling_set_point_celsius: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `cooling_set_point_celsius` or `cooling_set_point_fahrenheit`. + :type cooling_set_point_celsius: float + + :param cooling_set_point_fahrenheit: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `cooling_set_point_fahrenheit` or `cooling_set_point_celsius`. + :type cooling_set_point_fahrenheit: float + + :param heating_set_point_celsius: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `heating_set_point_celsius` or `heating_set_point_fahrenheit`. + :type heating_set_point_celsius: float + + :param heating_set_point_fahrenheit: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `heating_set_point_fahrenheit` or `heating_set_point_celsius`. + :type heating_set_point_fahrenheit: float""" json_payload = {} if device_id is not None: @@ -70,6 +118,16 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: + """Simulates a [thermostat](https://docs.seam.co/capability-guides/thermostats) reaching a specified temperature. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + + :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. + :type device_id: str + + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set `temperature_celsius` or `temperature_fahrenheit`. + :type temperature_celsius: float + + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set `temperature_fahrenheit` or `temperature_celsius`. + :type temperature_fahrenheit: float""" json_payload = {} if device_id is not None: diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index d906c60..455dee2 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -30,6 +30,20 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + You must specify either `user_identity_id` or `user_identity_key` to identify the user identity. + + If `user_identity_key` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + + :param acs_user_id: ID of the access system user that you want to add to the user identity. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to which you want to add an access system user. + :type user_identity_id: str + + :param user_identity_key: Key of the user identity to which you want to add an access system user. + :type user_identity_key: str""" raise NotImplementedError() @abc.abstractmethod @@ -42,10 +56,33 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Creates a new [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. + :type acs_system_ids: List[str] + + :param email_address: Unique email address for the new user identity. + :type email_address: str + + :param full_name: Full name of the user associated with the new user identity. + :type full_name: str + + :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). + :type phone_number: str + + :param user_identity_key: Unique key for the new user identity. + :type user_identity_key: str + + :returns: OK + :rtype: UserIdentity""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, user_identity_id: str) -> None: + """Deletes a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This deletes the user identity and all associated resources, including any [credentials](https://docs.seam.co/api/acs/credentials), [acs users](https://docs.seam.co/api/acs/users) and [client sessions](https://docs.seam.co/api/client_sessions). + + :param user_identity_id: ID of the user identity that you want to delete. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -56,6 +93,19 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: + """Generates a new [instant key](https://docs.seam.co/capability-guides/instant-keys) for a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to generate an instant key. + :type user_identity_id: str + + :param customization_profile_id: + :type customization_profile_id: str + + :param max_use_count: Maximum number of times the instant key can be used. Default: 1. + :type max_use_count: float + + :returns: OK + :rtype: InstantKey""" raise NotImplementedError() @abc.abstractmethod @@ -65,10 +115,27 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Returns a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to get. + :type user_identity_id: str + + :param user_identity_key: + :type user_identity_key: str + + :returns: OK + :rtype: UserIdentity""" raise NotImplementedError() @abc.abstractmethod def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Grants a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) access to a specified [device](https://docs.seam.co/core-concepts/devices/). + + :param device_id: ID of the managed device to which you want to grant access to the user identity. + :type device_id: str + + :param user_identity_id: ID of the user identity that you want to grant access to a device. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -82,30 +149,94 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: + """Returns a list of all [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. + :type created_before: str + + :param credential_manager_acs_system_id: `acs_system_id` of the credential manager by which you want to filter the list of user identities. + :type credential_manager_acs_system_id: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address` or `user_identity_id`. + :type search: str + + :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: List[UserIdentity]""" raise NotImplementedError() @abc.abstractmethod def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: + """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. + :type user_identity_id: str + + :returns: OK + :rtype: List[Device]""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: + """Returns a list of all [ACS entrances](https://docs.seam.co/api/acs/entrances) accessible to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" raise NotImplementedError() @abc.abstractmethod def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: + """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsSystem]""" raise NotImplementedError() @abc.abstractmethod def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) assigned to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsUser]""" raise NotImplementedError() @abc.abstractmethod def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param acs_user_id: ID of the access system user that you want to remove from the user identity.. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity from which you want to remove an access system user. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Revokes access to a specified [device](https://docs.seam.co/core-concepts/devices/) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param device_id: ID of the managed device to which you want to revoke access from the user identity. + :type device_id: str + + :param user_identity_id: ID of the user identity from which you want to revoke access to a device. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -118,6 +249,22 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Updates a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to update. + :type user_identity_id: str + + :param email_address: Unique email address for the user identity. + :type email_address: str + + :param full_name: Full name of the user associated with the user identity. + :type full_name: str + + :param phone_number: Unique phone number for the user identity. + :type phone_number: str + + :param user_identity_key: Unique key for the user identity. + :type user_identity_key: str""" raise NotImplementedError() @@ -138,6 +285,20 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + You must specify either `user_identity_id` or `user_identity_key` to identify the user identity. + + If `user_identity_key` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + + :param acs_user_id: ID of the access system user that you want to add to the user identity. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity to which you want to add an access system user. + :type user_identity_id: str + + :param user_identity_key: Key of the user identity to which you want to add an access system user. + :type user_identity_key: str""" json_payload = {} if acs_user_id is not None: @@ -160,6 +321,25 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Creates a new [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. + :type acs_system_ids: List[str] + + :param email_address: Unique email address for the new user identity. + :type email_address: str + + :param full_name: Full name of the user associated with the new user identity. + :type full_name: str + + :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). + :type phone_number: str + + :param user_identity_key: Unique key for the new user identity. + :type user_identity_key: str + + :returns: OK + :rtype: UserIdentity""" json_payload = {} if acs_system_ids is not None: @@ -178,6 +358,10 @@ def create( return UserIdentity.from_dict(res["user_identity"]) def delete(self, *, user_identity_id: str) -> None: + """Deletes a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This deletes the user identity and all associated resources, including any [credentials](https://docs.seam.co/api/acs/credentials), [acs users](https://docs.seam.co/api/acs/users) and [client sessions](https://docs.seam.co/api/client_sessions). + + :param user_identity_id: ID of the user identity that you want to delete. + :type user_identity_id: str""" json_payload = {} if user_identity_id is not None: @@ -194,6 +378,19 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: + """Generates a new [instant key](https://docs.seam.co/capability-guides/instant-keys) for a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to generate an instant key. + :type user_identity_id: str + + :param customization_profile_id: + :type customization_profile_id: str + + :param max_use_count: Maximum number of times the instant key can be used. Default: 1. + :type max_use_count: float + + :returns: OK + :rtype: InstantKey""" json_payload = {} if user_identity_id is not None: @@ -215,6 +412,16 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Returns a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to get. + :type user_identity_id: str + + :param user_identity_key: + :type user_identity_key: str + + :returns: OK + :rtype: UserIdentity""" json_payload = {} if user_identity_id is not None: @@ -227,6 +434,13 @@ def get( return UserIdentity.from_dict(res["user_identity"]) def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Grants a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) access to a specified [device](https://docs.seam.co/core-concepts/devices/). + + :param device_id: ID of the managed device to which you want to grant access to the user identity. + :type device_id: str + + :param user_identity_id: ID of the user identity that you want to grant access to a device. + :type user_identity_id: str""" json_payload = {} if device_id is not None: @@ -248,6 +462,28 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: + """Returns a list of all [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. + :type created_before: str + + :param credential_manager_acs_system_id: `acs_system_id` of the credential manager by which you want to filter the list of user identities. + :type credential_manager_acs_system_id: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address` or `user_identity_id`. + :type search: str + + :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. + :type user_identity_ids: List[str] + + :returns: OK + :rtype: List[UserIdentity]""" json_payload = {} if created_before is not None: @@ -270,6 +506,13 @@ def list( return [UserIdentity.from_dict(item) for item in res["user_identities"]] def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: + """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. + :type user_identity_id: str + + :returns: OK + :rtype: List[Device]""" json_payload = {} if user_identity_id is not None: @@ -282,6 +525,13 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: return [Device.from_dict(item) for item in res["devices"]] def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: + """Returns a list of all [ACS entrances](https://docs.seam.co/api/acs/entrances) accessible to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsEntrance]""" json_payload = {} if user_identity_id is not None: @@ -294,6 +544,13 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: + """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsSystem]""" json_payload = {} if user_identity_id is not None: @@ -304,6 +561,13 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: return [AcsSystem.from_dict(item) for item in res["acs_systems"]] def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: + """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) assigned to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + :type user_identity_id: str + + :returns: OK + :rtype: List[AcsUser]""" json_payload = {} if user_identity_id is not None: @@ -314,6 +578,13 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: return [AcsUser.from_dict(item) for item in res["acs_users"]] def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: + """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param acs_user_id: ID of the access system user that you want to remove from the user identity.. + :type acs_user_id: str + + :param user_identity_id: ID of the user identity from which you want to remove an access system user. + :type user_identity_id: str""" json_payload = {} if acs_user_id is not None: @@ -326,6 +597,13 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: return None def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Revokes access to a specified [device](https://docs.seam.co/core-concepts/devices/) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param device_id: ID of the managed device to which you want to revoke access from the user identity. + :type device_id: str + + :param user_identity_id: ID of the user identity from which you want to revoke access to a device. + :type user_identity_id: str""" json_payload = {} if device_id is not None: @@ -346,6 +624,22 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Updates a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + + :param user_identity_id: ID of the user identity that you want to update. + :type user_identity_id: str + + :param email_address: Unique email address for the user identity. + :type email_address: str + + :param full_name: Full name of the user associated with the user identity. + :type full_name: str + + :param phone_number: Unique phone number for the user identity. + :type phone_number: str + + :param user_identity_key: Unique key for the user identity. + :type user_identity_key: str""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/user_identities_unmanaged.py b/seam/routes/user_identities_unmanaged.py index ab88144..5d68401 100644 --- a/seam/routes/user_identities_unmanaged.py +++ b/seam/routes/user_identities_unmanaged.py @@ -7,6 +7,10 @@ class AbstractUserIdentitiesUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, user_identity_id: str) -> None: + """Returns a specified unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + + :param user_identity_id: ID of the unmanaged user identity that you want to get. + :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod @@ -18,6 +22,19 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> None: + """Returns a list of all unmanaged [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + + :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. + :type created_before: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `user_identity_id` or `acs_system_id`. + :type search: str""" raise NotImplementedError() @abc.abstractmethod @@ -28,6 +45,18 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: + """Updates an unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) to make it managed. + + This endpoint can only be used to convert unmanaged user identities to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed user identities back to unmanaged. + + :param is_managed: Must be set to true to convert the unmanaged user identity to managed. + :type is_managed: bool + + :param user_identity_id: ID of the unmanaged user identity that you want to update. + :type user_identity_id: str + + :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. + :type user_identity_key: str""" raise NotImplementedError() @@ -37,6 +66,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, user_identity_id: str) -> None: + """Returns a specified unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + + :param user_identity_id: ID of the unmanaged user identity that you want to get. + :type user_identity_id: str""" json_payload = {} if user_identity_id is not None: @@ -54,6 +87,19 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> None: + """Returns a list of all unmanaged [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + + :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. + :type created_before: str + + :param limit: Maximum number of records to return per page. + :type limit: int + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :type page_cursor: str + + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `user_identity_id` or `acs_system_id`. + :type search: str""" json_payload = {} if created_before is not None: @@ -76,6 +122,18 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: + """Updates an unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) to make it managed. + + This endpoint can only be used to convert unmanaged user identities to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed user identities back to unmanaged. + + :param is_managed: Must be set to true to convert the unmanaged user identity to managed. + :type is_managed: bool + + :param user_identity_id: ID of the unmanaged user identity that you want to update. + :type user_identity_id: str + + :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. + :type user_identity_key: str""" json_payload = {} if is_managed is not None: diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index 4d11eff..14561c7 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -8,24 +8,56 @@ class AbstractWebhooks(abc.ABC): @abc.abstractmethod def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: + """Creates a new [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param url: URL for the new webhook. + :type url: str + + :param event_types: Types of events that you want the new webhook to receive. + :type event_types: List[str] + + :returns: OK + :rtype: Webhook""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, webhook_id: str) -> None: + """Deletes a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param webhook_id: ID of the webhook that you want to delete. + :type webhook_id: str""" raise NotImplementedError() @abc.abstractmethod def get(self, *, webhook_id: str) -> Webhook: + """Gets a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param webhook_id: ID of the webhook that you want to get. + :type webhook_id: str + + :returns: OK + :rtype: Webhook""" raise NotImplementedError() @abc.abstractmethod def list( self, ) -> List[Webhook]: + """Returns a list of all [webhooks](https://docs.seam.co/developer-tools/webhooks). + + :returns: OK + :rtype: List[Webhook]""" raise NotImplementedError() @abc.abstractmethod def update(self, *, event_types: List[str], webhook_id: str) -> None: + """Updates a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param event_types: Types of events that you want the webhook to receive. + :type event_types: List[str] + + :param webhook_id: ID of the webhook that you want to update. + :type webhook_id: str""" raise NotImplementedError() @@ -35,6 +67,16 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: + """Creates a new [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param url: URL for the new webhook. + :type url: str + + :param event_types: Types of events that you want the new webhook to receive. + :type event_types: List[str] + + :returns: OK + :rtype: Webhook""" json_payload = {} if url is not None: @@ -47,6 +89,10 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo return Webhook.from_dict(res["webhook"]) def delete(self, *, webhook_id: str) -> None: + """Deletes a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param webhook_id: ID of the webhook that you want to delete. + :type webhook_id: str""" json_payload = {} if webhook_id is not None: @@ -57,6 +103,13 @@ def delete(self, *, webhook_id: str) -> None: return None def get(self, *, webhook_id: str) -> Webhook: + """Gets a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param webhook_id: ID of the webhook that you want to get. + :type webhook_id: str + + :returns: OK + :rtype: Webhook""" json_payload = {} if webhook_id is not None: @@ -69,6 +122,10 @@ def get(self, *, webhook_id: str) -> Webhook: def list( self, ) -> List[Webhook]: + """Returns a list of all [webhooks](https://docs.seam.co/developer-tools/webhooks). + + :returns: OK + :rtype: List[Webhook]""" json_payload = {} res = self.client.post("/webhooks/list", json=json_payload) @@ -76,6 +133,13 @@ def list( return [Webhook.from_dict(item) for item in res["webhooks"]] def update(self, *, event_types: List[str], webhook_id: str) -> None: + """Updates a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + + :param event_types: Types of events that you want the webhook to receive. + :type event_types: List[str] + + :param webhook_id: ID of the webhook that you want to update. + :type webhook_id: str""" json_payload = {} if event_types is not None: diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 75ecded..79acd97 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -22,24 +22,73 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: + """Creates a new [workspace](https://docs.seam.co/core-concepts/workspaces). + + :param name: Name of the new workspace. + :type name: str + + :param company_name: Company name for the new workspace. + :type company_name: str + + :param connect_partner_name: Deprecated: Use `company_name` instead. Connect partner name for the new workspace. + :type connect_partner_name: str + + :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the new workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :type connect_webview_customization: Dict[str, Any] + + :param is_sandbox: Indicates whether the new workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :type is_sandbox: bool + + :param organization_id: ID of the organization to associate with the new workspace. + :type organization_id: str + + :param webview_logo_shape: Deprecated: Use `connect_webview_customization.webview_logo_shape` instead. + :type webview_logo_shape: str + + :param webview_primary_button_color: Deprecated: Use `connect_webview_customization.webview_primary_button_color` instead. + :type webview_primary_button_color: str + + :param webview_primary_button_text_color: Deprecated: Use `connect_webview_customization.webview_primary_button_text_color` instead. + :type webview_primary_button_text_color: str + + :param webview_success_message: Deprecated: Use `connect_webview_customization.webview_success_message` instead. + :type webview_success_message: str + + :returns: OK + :rtype: Workspace""" raise NotImplementedError() @abc.abstractmethod def get( self, ) -> Workspace: + """Returns the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :returns: OK + :rtype: Workspace""" raise NotImplementedError() @abc.abstractmethod def list( self, ) -> List[Workspace]: + """Returns a list of [workspaces](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :returns: OK + :rtype: List[Workspace]""" raise NotImplementedError() @abc.abstractmethod def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Resets the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +102,25 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: + """Updates the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :param connect_partner_name: Connect partner name for the workspace. + :type connect_partner_name: str + + :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :type connect_webview_customization: Dict[str, Any] + + :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. + :type is_publishable_key_auth_enabled: bool + + :param is_suspended: Indicates whether the workspace is suspended. + :type is_suspended: bool + + :param name: Name of the workspace. + :type name: str + + :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. + :type organization_id: str""" raise NotImplementedError() @@ -75,6 +143,40 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: + """Creates a new [workspace](https://docs.seam.co/core-concepts/workspaces). + + :param name: Name of the new workspace. + :type name: str + + :param company_name: Company name for the new workspace. + :type company_name: str + + :param connect_partner_name: Deprecated: Use `company_name` instead. Connect partner name for the new workspace. + :type connect_partner_name: str + + :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the new workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :type connect_webview_customization: Dict[str, Any] + + :param is_sandbox: Indicates whether the new workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :type is_sandbox: bool + + :param organization_id: ID of the organization to associate with the new workspace. + :type organization_id: str + + :param webview_logo_shape: Deprecated: Use `connect_webview_customization.webview_logo_shape` instead. + :type webview_logo_shape: str + + :param webview_primary_button_color: Deprecated: Use `connect_webview_customization.webview_primary_button_color` instead. + :type webview_primary_button_color: str + + :param webview_primary_button_text_color: Deprecated: Use `connect_webview_customization.webview_primary_button_text_color` instead. + :type webview_primary_button_text_color: str + + :param webview_success_message: Deprecated: Use `connect_webview_customization.webview_success_message` instead. + :type webview_success_message: str + + :returns: OK + :rtype: Workspace""" json_payload = {} if name is not None: @@ -109,6 +211,10 @@ def create( def get( self, ) -> Workspace: + """Returns the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :returns: OK + :rtype: Workspace""" json_payload = {} res = self.client.post("/workspaces/get", json=json_payload) @@ -118,6 +224,10 @@ def get( def list( self, ) -> List[Workspace]: + """Returns a list of [workspaces](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :returns: OK + :rtype: List[Workspace]""" json_payload = {} res = self.client.post("/workspaces/list", json=json_payload) @@ -127,6 +237,13 @@ def list( def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Resets the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] + + :returns: OK + :rtype: ActionAttempt""" json_payload = {} res = self.client.post("/workspaces/reset_sandbox", json=json_payload) @@ -153,6 +270,25 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: + """Updates the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + + :param connect_partner_name: Connect partner name for the workspace. + :type connect_partner_name: str + + :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :type connect_webview_customization: Dict[str, Any] + + :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. + :type is_publishable_key_auth_enabled: bool + + :param is_suspended: Indicates whether the workspace is suspended. + :type is_suspended: bool + + :param name: Name of the workspace. + :type name: str + + :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. + :type organization_id: str""" json_payload = {} if connect_partner_name is not None: From fba30231be2d7beffdc9debe0d6ec30420de439e Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 11:04:17 -0500 Subject: [PATCH 2/8] Convert generated doc links to reStructuredText --- codegen/lib/layouts/resources.ts | 12 +- codegen/lib/layouts/route.ts | 14 +- codegen/lib/python-docstring.ts | 9 + seam/resources/access_code.py | 22 +- seam/resources/access_grant.py | 6 +- seam/resources/access_method.py | 8 +- seam/resources/acs_access_group.py | 14 +- seam/resources/acs_credential.py | 58 ++-- seam/resources/acs_encoder.py | 20 +- seam/resources/acs_entrance.py | 42 +-- seam/resources/acs_system.py | 46 +-- seam/resources/acs_user.py | 48 +-- seam/resources/batch.py | 78 ++--- seam/resources/client_session.py | 28 +- seam/resources/connect_webview.py | 26 +- seam/resources/connected_account.py | 14 +- seam/resources/device.py | 14 +- seam/resources/device_provider.py | 2 +- seam/resources/noise_threshold.py | 4 +- seam/resources/pagination.py | 2 +- seam/resources/phone.py | 6 +- seam/resources/seam_event.py | 20 +- seam/resources/space.py | 2 +- seam/resources/thermostat_schedule.py | 22 +- seam/resources/unmanaged_access_code.py | 14 +- seam/resources/unmanaged_device.py | 10 +- seam/resources/user_identity.py | 4 +- seam/resources/webhook.py | 8 +- seam/resources/workspace.py | 16 +- seam/routes/access_codes.py | 304 +++++++++--------- seam/routes/access_codes_simulate.py | 4 +- seam/routes/access_codes_unmanaged.py | 64 ++-- seam/routes/access_grants.py | 52 +-- seam/routes/access_grants_unmanaged.py | 8 +- seam/routes/access_methods.py | 28 +- seam/routes/acs_access_groups.py | 36 +-- seam/routes/acs_credentials.py | 88 ++--- seam/routes/acs_encoders.py | 48 +-- seam/routes/acs_encoders_simulate.py | 40 +-- seam/routes/acs_entrances.py | 36 +-- seam/routes/acs_systems.py | 24 +- seam/routes/acs_users.py | 88 ++--- seam/routes/action_attempts.py | 12 +- seam/routes/client_sessions.py | 96 +++--- seam/routes/connect_webviews.py | 68 ++-- seam/routes/connected_accounts.py | 56 ++-- seam/routes/connected_accounts_simulate.py | 4 +- seam/routes/devices.py | 56 ++-- seam/routes/devices_simulate.py | 24 +- seam/routes/devices_unmanaged.py | 48 +-- seam/routes/events.py | 16 +- seam/routes/instant_keys.py | 12 +- seam/routes/locks.py | 40 +-- seam/routes/locks_simulate.py | 8 +- seam/routes/noise_sensors.py | 20 +- seam/routes/noise_sensors_noise_thresholds.py | 28 +- seam/routes/noise_sensors_simulate.py | 4 +- seam/routes/phones.py | 16 +- seam/routes/phones_simulate.py | 4 +- seam/routes/spaces.py | 24 +- seam/routes/thermostats.py | 208 ++++++------ seam/routes/thermostats_schedules.py | 60 ++-- seam/routes/thermostats_simulate.py | 32 +- seam/routes/user_identities.py | 76 ++--- seam/routes/user_identities_unmanaged.py | 24 +- seam/routes/webhooks.py | 20 +- seam/routes/workspaces.py | 52 +-- 67 files changed, 1201 insertions(+), 1196 deletions(-) create mode 100644 codegen/lib/python-docstring.ts diff --git a/codegen/lib/layouts/resources.ts b/codegen/lib/layouts/resources.ts index 70bc515..ca06e6a 100644 --- a/codegen/lib/layouts/resources.ts +++ b/codegen/lib/layouts/resources.ts @@ -6,6 +6,7 @@ import type { Blueprint, Property, Resource } from '@seamapi/blueprint' import { pascalCase, snakeCase } from 'change-case' import { convertCustomResourceName } from '../custom-resource-name-conversions.js' +import { formatPythonDoc } from '../python-docstring.js' import { mapPropertyToPythonType } from '../python-type.js' // Python hard keywords cannot be used as identifiers. When a property name @@ -65,25 +66,22 @@ export interface ResourceLayoutContext { }> } -const cleanDoc = (value: string): string => - value.trim().replaceAll('"""', '\\"\\"\\"') - const createResourceDocstring = ( description: string, isDeprecated: boolean, deprecationMessage: string, properties: Property[], ): string => { - const lines = [cleanDoc(description)] + const lines = [formatPythonDoc(description)] for (const property of properties) { const deprecated = property.isDeprecated - ? `Deprecated${property.deprecationMessage === '' ? '.' : `: ${cleanDoc(property.deprecationMessage)}`}` + ? `Deprecated${property.deprecationMessage === '' ? '.' : `: ${formatPythonDoc(property.deprecationMessage)}`}` : '' lines.push( '', `:ivar ${toSafeIdentifier(property.name)}: ${[ deprecated, - cleanDoc(property.description), + formatPythonDoc(property.description), ] .filter(Boolean) .join(' ')}`, @@ -94,7 +92,7 @@ const createResourceDocstring = ( lines.push( '', '.. deprecated::', - ` ${cleanDoc(deprecationMessage) || 'This resource is deprecated.'}`, + ` ${formatPythonDoc(deprecationMessage) || 'This resource is deprecated.'}`, ) } return lines diff --git a/codegen/lib/layouts/route.ts b/codegen/lib/layouts/route.ts index 3b9afdc..e0bdda8 100644 --- a/codegen/lib/layouts/route.ts +++ b/codegen/lib/layouts/route.ts @@ -8,6 +8,7 @@ import { type ClassModel, sortClassMethodParameters, } from '../class-model.js' +import { formatPythonDoc } from '../python-docstring.js' export interface MethodLayoutContext { name: string @@ -57,9 +58,6 @@ export interface RouteLayoutContext { const waitForActionAttemptParameter = 'wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None' -const cleanDoc = (value: string): string => - value.trim().replaceAll('"""', '\\"\\"\\"') - const indentDoc = (value: string, spaces: number): string => value.replaceAll('\n', `\n${' '.repeat(spaces)}`) @@ -67,13 +65,13 @@ const methodDocstring = ( method: ClassMethod, sortedParameters: ClassMethod['parameters'], ): string => { - const lines = [cleanDoc(method.description)] + const lines = [formatPythonDoc(method.description)] for (const parameter of sortedParameters) { const deprecated = parameter.isDeprecated - ? `Deprecated${parameter.deprecationMessage === '' ? '.' : `: ${cleanDoc(parameter.deprecationMessage)}`}` + ? `Deprecated${parameter.deprecationMessage === '' ? '.' : `: ${formatPythonDoc(parameter.deprecationMessage)}`}` : '' - const description = cleanDoc(parameter.description) + const description = formatPythonDoc(parameter.description) lines.push( '', `:param ${parameter.name}: ${[deprecated, description].filter(Boolean).join(' ')}`, @@ -92,7 +90,7 @@ const methodDocstring = ( if (method.returnResource !== 'None') { lines.push( '', - `:returns: ${cleanDoc(method.responseDescription)}`, + `:returns: ${formatPythonDoc(method.responseDescription)}`, `:rtype: ${method.returnResource}`, ) } @@ -101,7 +99,7 @@ const methodDocstring = ( lines.push( '', '.. deprecated::', - ` ${cleanDoc(method.deprecationMessage) || 'This method is deprecated.'}`, + ` ${formatPythonDoc(method.deprecationMessage) || 'This method is deprecated.'}`, ) } diff --git a/codegen/lib/python-docstring.ts b/codegen/lib/python-docstring.ts new file mode 100644 index 0000000..f5dad2f --- /dev/null +++ b/codegen/lib/python-docstring.ts @@ -0,0 +1,9 @@ +// Blueprint descriptions use Markdown, while the generated Python docstrings +// use Sphinx/reStructuredText fields. Normalize the Markdown constructs that +// would otherwise be displayed literally (or interpreted as invalid roles). +export const formatPythonDoc = (value: string): string => + value + .trim() + .replaceAll('"""', '\\"\\"\\"') + .replaceAll(/(?`_') diff --git a/seam/resources/access_code.py b/seam/resources/access_code.py index 8740695..d24e8aa 100644 --- a/seam/resources/access_code.py +++ b/seam/resources/access_code.py @@ -5,15 +5,15 @@ @dataclass class AccessCode: - """Represents a smart lock [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Represents a smart lock `access code `_. An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate. - Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/low-level-apis/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/low-level-apis/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the `type` property of the access code. Ongoing codes display as `ongoing`, whereas time-bound codes are labeled `time_bound`. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both `starts_at` and `ends_at` empty. A time-bound access code will be programmed at the `starts_at` time and removed at the `ends_at` time. + Seam supports programming two types of access codes: `ongoing `_ and `time-bound `_. To differentiate between the two, refer to the ``type`` property of the access code. Ongoing codes display as ``ongoing``, whereas time-bound codes are labeled ``time_bound``. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both ``starts_at`` and ``ends_at`` empty. A time-bound access code will be programmed at the ``starts_at`` time and removed at the ``ends_at`` time. - In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. + In addition, for certain devices, Seam also supports `offline access codes `_. Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :ivar access_code_id: Unique identifier for the access code. :vartype access_code_id: str @@ -36,7 +36,7 @@ class AccessCode: :ivar ends_at: Date and time after which the time-bound access code becomes inactive. :vartype ends_at: str - :ivar errors: Errors associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :ivar errors: Errors associated with the `access code `_. :vartype errors: List[Dict[str, Any]] :ivar is_backup: Indicates whether the access code is a backup code. @@ -51,10 +51,10 @@ class AccessCode: :ivar is_managed: Indicates whether Seam manages the access code. :vartype is_managed: bool - :ivar is_offline_access_code: Indicates whether the access code is intended for use in offline scenarios. If `true`, this code can be created on a device without a network connection. + :ivar is_offline_access_code: Indicates whether the access code is intended for use in offline scenarios. If ``true``, this code can be created on a device without a network connection. :vartype is_offline_access_code: bool - :ivar is_one_time_use: Indicates whether the access code can only be used once. If `true`, the code becomes invalid after the first use. + :ivar is_one_time_use: Indicates whether the access code can only be used once. If ``true``, the code becomes invalid after the first use. :vartype is_one_time_use: bool :ivar is_scheduled_on_device: Indicates whether the code is set on the device according to a preconfigured schedule. @@ -63,7 +63,7 @@ class AccessCode: :ivar is_waiting_for_code_assignment: Indicates whether the access code is waiting for a code assignment. :vartype is_waiting_for_code_assignment: bool - :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :vartype name: str :ivar pending_mutations: Collection of pending mutations for the access code. Indicates changes that Seam is in the process of pushing to the device. @@ -75,13 +75,13 @@ class AccessCode: :ivar starts_at: Date and time at which the time-bound access code becomes active. :vartype starts_at: str - :ivar status: Current status of the access code within the operational lifecycle. Values are `setting`, a transitional phase that indicates that the code is being configured or activated; `set`, which indicates that the code is active and operational; `unset`, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; `removing`, which indicates a transitional period in which the code is being deleted or made inactive; and `unknown`, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting. See also [Lifecycle of Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/lifecycle-of-access-codes). + :ivar status: Current status of the access code within the operational lifecycle. Values are ``setting``, a transitional phase that indicates that the code is being configured or activated; ``set``, which indicates that the code is active and operational; ``unset``, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; ``removing``, which indicates a transitional period in which the code is being deleted or made inactive; and ``unknown``, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting. See also `Lifecycle of Access Codes `_. :vartype status: str - :ivar type: Type of the access code. `ongoing` access codes are active continuously until deactivated manually. `time_bound` access codes have a specific duration. + :ivar type: Type of the access code. ``ongoing`` access codes are active continuously until deactivated manually. ``time_bound`` access codes have a specific duration. :vartype type: str - :ivar warnings: Warnings associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :ivar warnings: Warnings associated with the `access code `_. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. diff --git a/seam/resources/access_grant.py b/seam/resources/access_grant.py index 5143a00..22d7e6c 100644 --- a/seam/resources/access_grant.py +++ b/seam/resources/access_grant.py @@ -31,13 +31,13 @@ class AccessGrant: :ivar ends_at: Date and time at which the Access Grant ends. :vartype ends_at: str - :ivar errors: Errors associated with the [access grant](https://docs.seam.co/use-cases/granting-access). + :ivar errors: Errors associated with the `access grant `_. :vartype errors: List[Dict[str, Any]] :ivar instant_key_url: Instant Key URL. Only returned if the Access Grant has a single mobile_key access_method. :vartype instant_key_url: str - :ivar location_ids: Deprecated: Use `space_ids`. + :ivar location_ids: Deprecated: Use ``space_ids``. :vartype location_ids: List[str] :ivar name: Name of the Access Grant. If not provided, the display name will be computed. @@ -61,7 +61,7 @@ class AccessGrant: :ivar user_identity_id: ID of user identity to which the Access Grant gives access. :vartype user_identity_id: str - :ivar warnings: Warnings associated with the [access grant](https://docs.seam.co/use-cases/granting-access). + :ivar warnings: Warnings associated with the `access grant `_. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the Seam workspace associated with the Access Grant. diff --git a/seam/resources/access_method.py b/seam/resources/access_method.py index 01dfa74..833cbb9 100644 --- a/seam/resources/access_method.py +++ b/seam/resources/access_method.py @@ -25,7 +25,7 @@ class AccessMethod: :ivar display_name: Display name of the access method. :vartype display_name: str - :ivar errors: Errors associated with the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). + :ivar errors: Errors associated with the `access method `_. :vartype errors: List[Dict[str, Any]] :ivar instant_key_url: URL of the Instant Key for mobile key access methods. @@ -49,13 +49,13 @@ class AccessMethod: :ivar issued_at: Date and time at which the access method was issued. :vartype issued_at: str - :ivar mode: Access method mode. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :ivar mode: Access method mode. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. :vartype mode: str - :ivar pending_mutations: Pending mutations for the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). Indicates operations that are in progress. + :ivar pending_mutations: Pending mutations for the `access method `_. Indicates operations that are in progress. :vartype pending_mutations: List[Dict[str, Any]] - :ivar warnings: Warnings associated with the [access method](https://docs.seam.co/use-cases/granting-access/creating-an-access-grant). + :ivar warnings: Warnings associated with the `access method `_. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the Seam workspace associated with the access method. diff --git a/seam/resources/acs_access_group.py b/seam/resources/acs_access_group.py index 3b9383b..97da659 100644 --- a/seam/resources/acs_access_group.py +++ b/seam/resources/acs_access_group.py @@ -7,17 +7,17 @@ class AcsAccessGroup: """Group that defines the entrances to which a set of users has access and, in some cases, the access schedule for these entrances and users. - Some access control systems use [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups), which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. + Some access control systems use `access group `_, which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. - To learn whether your access control system supports access groups, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + To learn whether your access control system supports access groups, see the corresponding `system integration guide `_. - :ivar access_group_type: Deprecated: Use `external_type`. + :ivar access_group_type: Deprecated: Use ``external_type``. :vartype access_group_type: str - :ivar access_group_type_display_name: Deprecated: Use `external_type_display_name`. + :ivar access_group_type_display_name: Deprecated: Use ``external_type_display_name``. :vartype access_group_type_display_name: str - :ivar access_schedule: `starts_at` and `ends_at` timestamps for the access group's access. + :ivar access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access group's access. :vartype access_schedule: Dict[str, Any] :ivar acs_access_group_id: ID of the access group. @@ -35,7 +35,7 @@ class AcsAccessGroup: :ivar display_name: Display name for the access group. :vartype display_name: str - :ivar errors: Errors associated with the `acs_access_group`. + :ivar errors: Errors associated with the ``acs_access_group``. :vartype errors: List[Dict[str, Any]] :ivar external_type: Brand-specific terminology for the access group type. @@ -53,7 +53,7 @@ class AcsAccessGroup: :ivar pending_mutations: Collection of pending mutations for the access group. Represents operations that have been requested but not yet completed on the integrated access system. :vartype pending_mutations: List[Dict[str, Any]] - :ivar warnings: Warnings associated with the `acs_access_group`. + :ivar warnings: Warnings associated with the ``acs_access_group``. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the workspace that contains the access group. diff --git a/seam/resources/acs_credential.py b/seam/resources/acs_credential.py index 5c918e4..287bba5 100644 --- a/seam/resources/acs_credential.py +++ b/seam/resources/acs_credential.py @@ -5,96 +5,96 @@ @dataclass class AcsCredential: - """Means by which an [access control system user](https://docs.seam.co/low-level-apis/access-systems/user-management) gains access at an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). The `acs_credential` object represents a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) that provides an ACS user access within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + """Means by which an `access control system user `_ gains access at an `entrance `_. The ``acs_credential`` object represents a `credential `_ that provides an ACS user access within an `access control system `_. An access control system generally uses digital means of access to authorize a user trying to get through a specific entrance. Examples of credentials include plastic key cards, mobile keys, biometric identifiers, and PIN codes. The electronic nature of these credentials, as well as the fact that access is centralized, enables both the rapid provisioning and rescinding of access and the ability to compile access audit logs. - For each `acs_credential`, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. + For each ``acs_credential``, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. - :ivar access_method: Access method for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :ivar access_method: Access method for the `credential `_. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. :vartype access_method: str - :ivar acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar acs_credential_id: ID of the `credential `_. :vartype acs_credential_id: str :ivar acs_credential_pool_id: ID of the credential pool to which the credential belongs. :vartype acs_credential_pool_id: str - :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar acs_system_id: ID of the `access control system `_ that contains the `credential `_. :vartype acs_system_id: str - :ivar acs_user_id: ID of the [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management) to whom the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :ivar acs_user_id: ID of the `ACS user `_ to whom the `credential `_ belongs. :vartype acs_user_id: str - :ivar assa_abloy_vostio_metadata: Vostio-specific metadata for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar assa_abloy_vostio_metadata: Vostio-specific metadata for the `credential `_. :vartype assa_abloy_vostio_metadata: Dict[str, Any] - :ivar card_number: Number of the card associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar card_number: Number of the card associated with the `credential `_. :vartype card_number: str - :ivar code: Access (PIN) code for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar code: Access (PIN) code for the `credential `_. :vartype code: str - :ivar connected_account_id: ID of the [connected account](https://docs.seam.co/core-concepts/connected-accounts) to which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :ivar connected_account_id: ID of the `connected account `_ to which the `credential `_ belongs. :vartype connected_account_id: str - :ivar created_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was created. + :ivar created_at: Date and time at which the `credential `_ was created. :vartype created_at: str - :ivar display_name: Display name that corresponds to the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. + :ivar display_name: Display name that corresponds to the `credential `_ type. :vartype display_name: str - :ivar ends_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) validity ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :ivar ends_at: Date and time at which the `credential `_ validity ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :vartype ends_at: str - :ivar errors: Errors associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar errors: Errors associated with the `credential `_. :vartype errors: List[Dict[str, Any]] - :ivar external_type: Brand-specific terminology for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. Supported values: `pti_card`, `brivo_credential`, `hid_credential`, `visionline_card`. + :ivar external_type: Brand-specific terminology for the `credential `_ type. Supported values: ``pti_card``, ``brivo_credential``, ``hid_credential``, ``visionline_card``. :vartype external_type: str - :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) type. + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `credential `_ type. :vartype external_type_display_name: str - :ivar is_issued: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) has been encoded onto a card. + :ivar is_issued: Indicates whether the `credential `_ has been encoded onto a card. :vartype is_issued: bool - :ivar is_latest_desired_state_synced_with_provider: Indicates whether the latest state of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) has been synced from Seam to the provider. + :ivar is_latest_desired_state_synced_with_provider: Indicates whether the latest state of the `credential `_ has been synced from Seam to the provider. :vartype is_latest_desired_state_synced_with_provider: bool :ivar is_managed: Indicates whether Seam manages the credential. :vartype is_managed: bool - :ivar is_multi_phone_sync_credential: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :ivar is_multi_phone_sync_credential: Indicates whether the `credential `_ is a `multi-phone sync credential `_. :vartype is_multi_phone_sync_credential: bool - :ivar is_one_time_use: Indicates whether the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) can only be used once. If `true`, the code becomes invalid after the first use. + :ivar is_one_time_use: Indicates whether the `credential `_ can only be used once. If ``true``, the code becomes invalid after the first use. :vartype is_one_time_use: bool - :ivar issued_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was encoded onto a card. + :ivar issued_at: Date and time at which the `credential `_ was encoded onto a card. :vartype issued_at: str - :ivar latest_desired_state_synced_with_provider_at: Date and time at which the state of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) was most recently synced from Seam to the provider. + :ivar latest_desired_state_synced_with_provider_at: Date and time at which the state of the `credential `_ was most recently synced from Seam to the provider. :vartype latest_desired_state_synced_with_provider_at: str - :ivar parent_acs_credential_id: ID of the parent [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar parent_acs_credential_id: ID of the parent `credential `_. :vartype parent_acs_credential_id: str - :ivar starts_at: Date and time at which the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) validity starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :ivar starts_at: Date and time at which the `credential `_ validity starts, in `ISO 8601 `_ format. :vartype starts_at: str - :ivar user_identity_id: ID of the [user identity](https://docs.seam.co/api/user_identities) to whom the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) belongs. + :ivar user_identity_id: ID of the `user identity `_ to whom the `credential `_ belongs. :vartype user_identity_id: str - :ivar visionline_metadata: Visionline-specific metadata for the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar visionline_metadata: Visionline-specific metadata for the `credential `_. :vartype visionline_metadata: Dict[str, Any] - :ivar warnings: Warnings associated with the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar warnings: Warnings associated with the `credential `_. :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + :ivar workspace_id: ID of the workspace that contains the `credential `_. :vartype workspace_id: str""" access_method: str diff --git a/seam/resources/acs_encoder.py b/seam/resources/acs_encoder.py index 4707e3b..70a6c38 100644 --- a/seam/resources/acs_encoder.py +++ b/seam/resources/acs_encoder.py @@ -5,7 +5,7 @@ @dataclass class AcsEncoder: - """Represents a hardware device that encodes [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) data onto physical cards within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + """Represents a hardware device that encodes `credential `_ data onto physical cards within an `access control system `_. Some access control systems require credentials to be encoded onto plastic key cards using a card encoder. This process involves the following two key steps: @@ -16,29 +16,29 @@ class AcsEncoder: Separately, the Seam API also supports card scanning, which enables you to scan and read the encoded data on a card. You can use this action to confirm consistency with access control system records or diagnose discrepancies if needed. - See [Working with Card Encoders and Scanners](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + See `Working with Card Encoders and Scanners `_. - To verify if your access control system requires a card encoder, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + To verify if your access control system requires a card encoder, see the corresponding `system integration guide `_. - :ivar acs_encoder_id: ID of the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar acs_encoder_id: ID of the `encoder `_. :vartype acs_encoder_id: str - :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar acs_system_id: ID of the `access control system `_ that contains the `encoder `_. :vartype acs_system_id: str - :ivar connected_account_id: ID of the connected account that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar connected_account_id: ID of the connected account that contains the `encoder `_. :vartype connected_account_id: str - :ivar created_at: Date and time at which the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) was created. + :ivar created_at: Date and time at which the `encoder `_ was created. :vartype created_at: str - :ivar display_name: Display name for the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar display_name: Display name for the `encoder `_. :vartype display_name: str - :ivar errors: Errors associated with the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar errors: Errors associated with the `encoder `_. :vartype errors: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + :ivar workspace_id: ID of the workspace that contains the `encoder `_. :vartype workspace_id: str""" acs_encoder_id: str diff --git a/seam/resources/acs_entrance.py b/seam/resources/acs_entrance.py index 88954a3..55efe04 100644 --- a/seam/resources/acs_entrance.py +++ b/seam/resources/acs_entrance.py @@ -5,26 +5,26 @@ @dataclass class AcsEntrance: - """Represents an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + """Represents an `entrance `_ within an `access control system `_. - In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the `acs_entrance` resources in your workspace or get these details for a specific `acs_entrance`. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. + In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the ``acs_entrance`` resources in your workspace or get these details for a specific ``acs_entrance``. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. - :ivar acs_entrance_id: ID of the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar acs_entrance_id: ID of the `entrance `_. :vartype acs_entrance_id: str - :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems) that contains the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar acs_system_id: ID of the `access control system `_ that contains the `entrance `_. :vartype acs_system_id: str - :ivar akiles_metadata: Akiles-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar akiles_metadata: Akiles-specific metadata associated with the `entrance `_. :vartype akiles_metadata: Dict[str, Any] - :ivar assa_abloy_vostio_metadata: ASSA ABLOY Vostio-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar assa_abloy_vostio_metadata: ASSA ABLOY Vostio-specific metadata associated with the `entrance `_. :vartype assa_abloy_vostio_metadata: Dict[str, Any] - :ivar avigilon_alta_metadata: Avigilon Alta-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar avigilon_alta_metadata: Avigilon Alta-specific metadata associated with the `entrance `_. :vartype avigilon_alta_metadata: Dict[str, Any] - :ivar brivo_metadata: Brivo-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar brivo_metadata: Brivo-specific metadata associated with the `entrance `_. :vartype brivo_metadata: Dict[str, Any] :ivar can_belong_to_reservation: Indicates whether the ACS entrance can belong to a reservation via an access_grant.reservation_key. @@ -42,46 +42,46 @@ class AcsEntrance: :ivar can_unlock_with_mobile_key: Indicates whether the ACS entrance can be unlocked with mobile key credentials. :vartype can_unlock_with_mobile_key: bool - :ivar connected_account_id: ID of the [connected account](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar connected_account_id: ID of the `connected account `_ associated with the `entrance `_. :vartype connected_account_id: str - :ivar created_at: Date and time at which the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) was created. + :ivar created_at: Date and time at which the `entrance `_ was created. :vartype created_at: str - :ivar display_name: Display name for the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar display_name: Display name for the `entrance `_. :vartype display_name: str - :ivar dormakaba_ambiance_metadata: dormakaba Ambiance-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar dormakaba_ambiance_metadata: dormakaba Ambiance-specific metadata associated with the `entrance `_. :vartype dormakaba_ambiance_metadata: Dict[str, Any] - :ivar dormakaba_community_metadata: dormakaba Community-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar dormakaba_community_metadata: dormakaba Community-specific metadata associated with the `entrance `_. :vartype dormakaba_community_metadata: Dict[str, Any] - :ivar errors: Errors associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar errors: Errors associated with the `entrance `_. :vartype errors: List[Dict[str, Any]] - :ivar hotek_metadata: Hotek-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar hotek_metadata: Hotek-specific metadata associated with the `entrance `_. :vartype hotek_metadata: Dict[str, Any] - :ivar is_locked: Indicates whether the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) is currently locked. + :ivar is_locked: Indicates whether the `entrance `_ is currently locked. :vartype is_locked: bool - :ivar latch_metadata: Latch-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar latch_metadata: Latch-specific metadata associated with the `entrance `_. :vartype latch_metadata: Dict[str, Any] - :ivar salto_ks_metadata: Salto KS-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar salto_ks_metadata: Salto KS-specific metadata associated with the `entrance `_. :vartype salto_ks_metadata: Dict[str, Any] - :ivar salto_space_metadata: Salto Space-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar salto_space_metadata: Salto Space-specific metadata associated with the `entrance `_. :vartype salto_space_metadata: Dict[str, Any] :ivar space_ids: IDs of the spaces that the entrance is in. :vartype space_ids: List[str] - :ivar visionline_metadata: Visionline-specific metadata associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar visionline_metadata: Visionline-specific metadata associated with the `entrance `_. :vartype visionline_metadata: Dict[str, Any] - :ivar warnings: Warnings associated with the [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar warnings: Warnings associated with the `entrance `_. :vartype warnings: List[Dict[str, Any]]""" acs_entrance_id: str diff --git a/seam/resources/acs_system.py b/seam/resources/acs_system.py index 71ca75a..015e180 100644 --- a/seam/resources/acs_system.py +++ b/seam/resources/acs_system.py @@ -5,70 +5,70 @@ @dataclass class AcsSystem: - """Represents an [access control system](https://docs.seam.co/low-level-apis/access-systems). + """Represents an `access control system `_. - Within an `acs_system`, create [`acs_user`s](https://docs.seam.co/api/acs/users/object) and [`acs_credential`s](https://docs.seam.co/api/acs/credentials/object) to grant access to the `acs_user`s. + Within an ``acs_system``, create ```acs_user``s `_ and ```acs_credential``s `_ to grant access to the ``acs_user``s. - For details about the resources associated with an access control system, see the [access control systems namespace](https://docs.seam.co/api/acs). + For details about the resources associated with an access control system, see the `access control systems namespace `_. - :ivar acs_access_group_count: Number of access groups in the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_access_group_count: Number of access groups in the `access control system `_. :vartype acs_access_group_count: float - :ivar acs_system_id: ID of the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_system_id: ID of the `access control system `_. :vartype acs_system_id: str - :ivar acs_user_count: Number of users in the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_user_count: Number of users in the `access control system `_. :vartype acs_user_count: float - :ivar connected_account_id: ID of the connected account associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar connected_account_id: ID of the connected account associated with the `access control system `_. :vartype connected_account_id: str - :ivar connected_account_ids: Deprecated: Use `connected_account_id`. IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar connected_account_ids: Deprecated: Use ``connected_account_id``. IDs of the `connected accounts `_ associated with the `access control system `_. :vartype connected_account_ids: List[str] - :ivar created_at: Date and time at which the [access control system](https://docs.seam.co/low-level-apis/access-systems) was created. + :ivar created_at: Date and time at which the `access control system `_ was created. :vartype created_at: str - :ivar default_credential_manager_acs_system_id: ID of the default credential manager `acs_system` for this [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar default_credential_manager_acs_system_id: ID of the default credential manager ``acs_system`` for this `access control system `_. :vartype default_credential_manager_acs_system_id: str - :ivar errors: Errors associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar errors: Errors associated with the `access control system `_. :vartype errors: List[Dict[str, Any]] - :ivar external_type: Brand-specific terminology for the [access control system](https://docs.seam.co/low-level-apis/access-systems) type. + :ivar external_type: Brand-specific terminology for the `access control system `_ type. :vartype external_type: str - :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [access control system](https://docs.seam.co/low-level-apis/access-systems) type. + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `access control system `_ type. :vartype external_type_display_name: str - :ivar image_alt_text: Alternative text for the [access control system](https://docs.seam.co/low-level-apis/access-systems) image. + :ivar image_alt_text: Alternative text for the `access control system `_ image. :vartype image_alt_text: str - :ivar image_url: URL for the image that represents the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar image_url: URL for the image that represents the `access control system `_. :vartype image_url: str - :ivar is_credential_manager: Indicates whether the `acs_system` is a credential manager. + :ivar is_credential_manager: Indicates whether the ``acs_system`` is a credential manager. :vartype is_credential_manager: bool - :ivar location: Location information for the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar location: Location information for the `access control system `_. :vartype location: Dict[str, Any] - :ivar name: Name of the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar name: Name of the `access control system `_. :vartype name: str - :ivar system_type: Deprecated: Use `external_type`. + :ivar system_type: Deprecated: Use ``external_type``. :vartype system_type: str - :ivar system_type_display_name: Deprecated: Use `external_type_display_name`. + :ivar system_type_display_name: Deprecated: Use ``external_type_display_name``. :vartype system_type_display_name: str - :ivar visionline_metadata: Visionline-specific metadata for the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar visionline_metadata: Visionline-specific metadata for the `access control system `_. :vartype visionline_metadata: Dict[str, Any] - :ivar warnings: Warnings associated with the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar warnings: Warnings associated with the `access control system `_. :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar workspace_id: ID of the workspace that contains the `access control system `_. :vartype workspace_id: str""" acs_access_group_count: float diff --git a/seam/resources/acs_user.py b/seam/resources/acs_user.py index 2635a7f..60deb46 100644 --- a/seam/resources/acs_user.py +++ b/seam/resources/acs_user.py @@ -5,46 +5,46 @@ @dataclass class AcsUser: - """Represents a [user](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access system](https://docs.seam.co/low-level-apis/access-systems). + """Represents a `user `_ in an `access system `_. An access system user typically refers to an individual who requires access, like an employee or resident. Each user can possess multiple credentials that serve as their keys or identifiers for access. The type of credential can vary widely. For example, in the Salto system, a user can have a PIN code, a mobile app account, and a fob. In other platforms, it is not uncommon for a user to have more than one of the same credential type, such as multiple key cards. Additionally, these credentials can have a schedule or validity period. - For details about how to configure users in your access system, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + For details about how to configure users in your access system, see the corresponding `system integration guide `_. - :ivar access_schedule: `starts_at` and `ends_at` timestamps for the [access system user's](https://docs.seam.co/low-level-apis/access-systems/user-management) access. + :ivar access_schedule: ``starts_at`` and ``ends_at`` timestamps for the `access system user's `_ access. :vartype access_schedule: Dict[str, Any] - :ivar acs_system_id: ID of the [access system](https://docs.seam.co/low-level-apis/access-systems) that contains the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar acs_system_id: ID of the `access system `_ that contains the `access system user `_. :vartype acs_system_id: str - :ivar acs_user_id: ID of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar acs_user_id: ID of the `access system user `_. :vartype acs_user_id: str - :ivar connected_account_id: The ID of the connected account that is associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar connected_account_id: The ID of the connected account that is associated with the `access system user `_. :vartype connected_account_id: str - :ivar created_at: Date and time at which the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) was created. + :ivar created_at: Date and time at which the `access system user `_ was created. :vartype created_at: str - :ivar display_name: Display name for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar display_name: Display name for the `access system user `_. :vartype display_name: str :ivar email: Deprecated: use email_address. :vartype email: str - :ivar email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar email_address: Email address of the `access system user `_. :vartype email_address: str - :ivar errors: Errors associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar errors: Errors associated with the `access system user `_. :vartype errors: List[Dict[str, Any]] - :ivar external_type: Brand-specific terminology for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) type. + :ivar external_type: Brand-specific terminology for the `access system user `_ type. :vartype external_type: str - :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) type. + :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `access system user `_ type. :vartype external_type_display_name: str - :ivar full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar full_name: Full name of the `access system user `_. :vartype full_name: str :ivar hid_acs_system_id: ID of the HID access control system associated with the user. @@ -53,37 +53,37 @@ class AcsUser: :ivar is_managed: Indicates whether Seam manages the access system user. :vartype is_managed: bool - :ivar is_suspended: Indicates whether the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) is currently [suspended](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users). + :ivar is_suspended: Indicates whether the `access system user `_ is currently `suspended `_. :vartype is_suspended: bool - :ivar pending_mutations: Pending mutations associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Seam is in the process of pushing these mutations to the integrated access system. + :ivar pending_mutations: Pending mutations associated with the `access system user `_. Seam is in the process of pushing these mutations to the integrated access system. :vartype pending_mutations: List[Dict[str, Any]] - :ivar phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :ivar phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). :vartype phone_number: str - :ivar salto_ks_metadata: Salto KS-specific metadata associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar salto_ks_metadata: Salto KS-specific metadata associated with the `access system user `_. :vartype salto_ks_metadata: Dict[str, Any] - :ivar salto_space_metadata: Salto Space-specific metadata associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar salto_space_metadata: Salto Space-specific metadata associated with the `access system user `_. :vartype salto_space_metadata: Dict[str, Any] - :ivar user_identity_email_address: Email address of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar user_identity_email_address: Email address of the user identity associated with the `access system user `_. :vartype user_identity_email_address: str - :ivar user_identity_full_name: Full name of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar user_identity_full_name: Full name of the user identity associated with the `access system user `_. :vartype user_identity_full_name: str - :ivar user_identity_id: ID of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar user_identity_id: ID of the user identity associated with the `access system user `_. :vartype user_identity_id: str - :ivar user_identity_phone_number: Phone number of the user identity associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :ivar user_identity_phone_number: Phone number of the user identity associated with the `access system user `_ in E.164 format (for example, ``+15555550100``). :vartype user_identity_phone_number: str - :ivar warnings: Warnings associated with the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar warnings: Warnings associated with the `access system user `_. :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :ivar workspace_id: ID of the workspace that contains the `access system user `_. :vartype workspace_id: str""" access_schedule: Dict[str, Any] diff --git a/seam/resources/batch.py b/seam/resources/batch.py index 8c06b8f..a7f33f1 100644 --- a/seam/resources/batch.py +++ b/seam/resources/batch.py @@ -7,15 +7,15 @@ class Batch: """A batch of workspace resources. - :ivar access_codes: Represents a smart lock [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :ivar access_codes: Represents a smart lock `access code `_. An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. Using the Seam Access Code API, you can easily generate access codes on the hundreds of door lock models with which we integrate. - Seam supports programming two types of access codes: [ongoing](https://docs.seam.co/low-level-apis/smart-locks/access-codes#ongoing-access-codes) and [time-bound](https://docs.seam.co/low-level-apis/smart-locks/access-codes#time-bound-access-codes). To differentiate between the two, refer to the `type` property of the access code. Ongoing codes display as `ongoing`, whereas time-bound codes are labeled `time_bound`. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both `starts_at` and `ends_at` empty. A time-bound access code will be programmed at the `starts_at` time and removed at the `ends_at` time. + Seam supports programming two types of access codes: `ongoing `_ and `time-bound `_. To differentiate between the two, refer to the ``type`` property of the access code. Ongoing codes display as ``ongoing``, whereas time-bound codes are labeled ``time_bound``. An ongoing access code is active, until it has been removed from the device. To specify an ongoing access code, leave both ``starts_at`` and ``ends_at`` empty. A time-bound access code will be programmed at the ``starts_at`` time and removed at the ``ends_at`` time. - In addition, for certain devices, Seam also supports [offline access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes#offline-access-codes). Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. + In addition, for certain devices, Seam also supports `offline access codes `_. Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :vartype access_codes: List[Dict[str, Any]] :ivar access_grants: Represents an Access Grant. Access Grants enable you to grant a user identity access to spaces, entrances, and devices through one or more access methods, such as mobile keys, plastic cards, and PIN codes. You can create an Access Grant for an existing user identity, or you can create a new user identity *while* creating the new Access Grant. @@ -26,21 +26,21 @@ class Batch: :ivar acs_access_groups: Group that defines the entrances to which a set of users has access and, in some cases, the access schedule for these entrances and users. - Some access control systems use [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups), which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. + Some access control systems use `access group `_, which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. - To learn whether your access control system supports access groups, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + To learn whether your access control system supports access groups, see the corresponding `system integration guide `_. :vartype acs_access_groups: List[Dict[str, Any]] - :ivar acs_credentials: Means by which an [access control system user](https://docs.seam.co/low-level-apis/access-systems/user-management) gains access at an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). The `acs_credential` object represents a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) that provides an ACS user access within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_credentials: Means by which an `access control system user `_ gains access at an `entrance `_. The ``acs_credential`` object represents a `credential `_ that provides an ACS user access within an `access control system `_. An access control system generally uses digital means of access to authorize a user trying to get through a specific entrance. Examples of credentials include plastic key cards, mobile keys, biometric identifiers, and PIN codes. The electronic nature of these credentials, as well as the fact that access is centralized, enables both the rapid provisioning and rescinding of access and the ability to compile access audit logs. - For each `acs_credential`, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. + For each ``acs_credential``, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. :vartype acs_credentials: List[Dict[str, Any]] - :ivar acs_encoders: Represents a hardware device that encodes [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) data onto physical cards within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_encoders: Represents a hardware device that encodes `credential `_ data onto physical cards within an `access control system `_. Some access control systems require credentials to be encoded onto plastic key cards using a card encoder. This process involves the following two key steps: @@ -51,70 +51,70 @@ class Batch: Separately, the Seam API also supports card scanning, which enables you to scan and read the encoded data on a card. You can use this action to confirm consistency with access control system records or diagnose discrepancies if needed. - See [Working with Card Encoders and Scanners](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + See `Working with Card Encoders and Scanners `_. - To verify if your access control system requires a card encoder, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + To verify if your access control system requires a card encoder, see the corresponding `system integration guide `_. :vartype acs_encoders: List[Dict[str, Any]] - :ivar acs_entrances: Represents an [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) within an [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_entrances: Represents an `entrance `_ within an `access control system `_. - In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the `acs_entrance` resources in your workspace or get these details for a specific `acs_entrance`. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. + In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the ``acs_entrance`` resources in your workspace or get these details for a specific ``acs_entrance``. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. :vartype acs_entrances: List[Dict[str, Any]] - :ivar acs_systems: Represents an [access control system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_systems: Represents an `access control system `_. - Within an `acs_system`, create [`acs_user`s](https://docs.seam.co/api/acs/users/object) and [`acs_credential`s](https://docs.seam.co/api/acs/credentials/object) to grant access to the `acs_user`s. + Within an ``acs_system``, create ```acs_user``s `_ and ```acs_credential``s `_ to grant access to the ``acs_user``s. - For details about the resources associated with an access control system, see the [access control systems namespace](https://docs.seam.co/api/acs). + For details about the resources associated with an access control system, see the `access control systems namespace `_. :vartype acs_systems: List[Dict[str, Any]] - :ivar acs_users: Represents a [user](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access system](https://docs.seam.co/low-level-apis/access-systems). + :ivar acs_users: Represents a `user `_ in an `access system `_. An access system user typically refers to an individual who requires access, like an employee or resident. Each user can possess multiple credentials that serve as their keys or identifiers for access. The type of credential can vary widely. For example, in the Salto system, a user can have a PIN code, a mobile app account, and a fob. In other platforms, it is not uncommon for a user to have more than one of the same credential type, such as multiple key cards. Additionally, these credentials can have a schedule or validity period. - For details about how to configure users in your access system, see the corresponding [system integration guide](https://docs.seam.co/device-and-system-integration-guides#access-control-systems). + For details about how to configure users in your access system, see the corresponding `system integration guide `_. :vartype acs_users: List[Dict[str, Any]] :ivar action_attempts: Represents an action attempt that enables you to keep track of the progress of your action that affects a physical device or system.actions against a device. Action attempts are useful because the physical world is intrinsically asynchronous. When you request for a device to perform an action, the Seam API immediately returns an action attempt object. In the background, the Seam API performs the action. - See also [Action Attempts](https://docs.seam.co/core-concepts/action-attempts). + See also `Action Attempts `_. :vartype action_attempts: List[Dict[str, Any]] - :ivar client_sessions: Represents a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). If you want to restrict your users' access to their own devices, use client sessions. + :ivar client_sessions: Represents a `client session `_. If you want to restrict your users' access to their own devices, use client sessions. - You create each client session with a custom `user_identifier_key`. Normally, the `user_identifier_key` is a user ID that your application provides. + You create each client session with a custom ``user_identifier_key``. Normally, the ``user_identifier_key`` is a user ID that your application provides. - When calling the Seam API from your backend using an API key, you can pass the `user_identifier_key` as a parameter to limit results to the associated client session. For example, `/devices/list?user_identifier_key=123` only returns devices associated with the client session created with the `user_identifier_key` `123`. + When calling the Seam API from your backend using an API key, you can pass the ``user_identifier_key`` as a parameter to limit results to the associated client session. For example, ``/devices/list?user_identifier_key=123`` only returns devices associated with the client session created with the ``user_identifier_key`` ``123``. A client session has a token that you can use with the Seam JavaScript SDK to make requests from the client (browser) directly to the Seam API. The token restricts the user's access to only the devices that they own. - See also [Get Started with React](https://docs.seam.co/ui-components/overview/getting-started-with-seam-components/get-started-with-react-components-and-client-session-tokens). + See also `Get Started with React `_. :vartype client_sessions: List[Dict[str, Any]] - :ivar connect_webviews: Represents a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + :ivar connect_webviews: Represents a `Connect Webview `_. Connect Webviews are fully-embedded client-side components that you add to your app. Your users interact with your embedded Connect Webviews to link their IoT device or system accounts to Seam. That is, Connect Webviews walk your users through the process of logging in to their device or system accounts. Seam handles all the authentication steps, and—once your user has completed the authorization through your app—you can access and control their devices or systems using the Seam API. Connect Webviews perform credential validation, multifactor authentication (when applicable), and error handling for each brand that Seam supports. Further, Connect Webviews work across all modern browsers and platforms, including Chrome, Safari, and Firefox. - To enable a user to connect their device or system account to Seam through your app, first create a `connect_webview`. Once created, this `connect_webview` includes a URL that you can use to open an [iframe](https://www.w3schools.com/html/html_iframe.asp) or new window containing the Connect Webview for your user. + To enable a user to connect their device or system account to Seam through your app, first create a ``connect_webview``. Once created, this ``connect_webview`` includes a URL that you can use to open an `iframe `_ or new window containing the Connect Webview for your user. - When you create a Connect Webview, specify the desired provider category key in the `provider_category` parameter. Alternately, to specify a list of providers explicitly, use the `accepted_providers` parameter with a list of device provider keys. + When you create a Connect Webview, specify the desired provider category key in the ``provider_category`` parameter. Alternately, to specify a list of providers explicitly, use the ``accepted_providers`` parameter with a list of device provider keys. - To list all providers within a category, use `/devices/list_device_providers` with the desired `provider_category` filter. To list all provider keys, use `/devices/list_device_providers` with no filters. + To list all providers within a category, use ``/devices/list_device_providers`` with the desired ``provider_category`` filter. To list all provider keys, use ``/devices/list_device_providers`` with no filters. :vartype connect_webviews: List[Dict[str, Any]] - :ivar connected_accounts: Represents a [connected account](https://docs.seam.co/core-concepts/connected-accounts). A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. + :ivar connected_accounts: Represents a `connected account `_. A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. :vartype connected_accounts: List[Dict[str, Any]] - :ivar devices: Represents a [device](https://docs.seam.co/core-concepts/devices) that has been connected to Seam. + :ivar devices: Represents a `device `_ that has been connected to Seam. :vartype devices: List[Dict[str, Any]] - :ivar events: Represents an event. Events let you know when something interesting happens in your workspace. For example, when a lock is unlocked, Seam creates a `lock.unlocked` event. When a device's battery level is low, Seam creates a `device.battery_low` event. + :ivar events: Represents an event. Events let you know when something interesting happens in your workspace. For example, when a lock is unlocked, Seam creates a ``lock.unlocked`` event. When a device's battery level is low, Seam creates a ``device.battery_low`` event. - As with other API resources, you can retrieve an individual event or a list of events. Seam also provides a separate webhook system for sending the event objects directly to an endpoint on your sever. Manage webhooks through [Seam Console](https://console.seam.co). You can also use the webhooks sandbox in Seam Console to see the different payloads for each event and test them against your own endpoints. + As with other API resources, you can retrieve an individual event or a list of events. Seam also provides a separate webhook system for sending the event objects directly to an endpoint on your sever. Manage webhooks through `Seam Console `_. You can also use the webhooks sandbox in Seam Console to see the different payloads for each event and test them against your own endpoints. :vartype events: List[Dict[str, Any]] :ivar instant_keys: Represents a Seam Instant Key. For issuing Bluetooth mobile keys, Instant Keys are the fastest way to share access. With a single API call, you can create a mobile key and send it through text or email or embed it in your own app. @@ -122,7 +122,7 @@ class Batch: There’s no app to install, nor account to create. Your user just taps a link and gets a lightweight, native-feeling experience using iOS App Clip or Instant Apps on Android. Further, Instant Keys work offline, so even in areas with poor cellular or Wi-Fi, like elevator banks or concrete-walled hallways, the Instant Keys still work. :vartype instant_keys: List[Dict[str, Any]] - :ivar noise_thresholds: Represents a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + :ivar noise_thresholds: Represents a `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :vartype noise_thresholds: List[Dict[str, Any]] :ivar spaces: Represents a space that is a logical grouping of devices and entrances. You can assign access to an entire space, thereby making granting access more efficient. @@ -131,10 +131,10 @@ class Batch: :ivar thermostat_daily_programs: Represents a thermostat daily program, consisting of a set of periods, each of which has a starting time and the key that identifies the climate preset to apply at the starting time. :vartype thermostat_daily_programs: List[Dict[str, Any]] - :ivar thermostat_schedules: Represents a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) that activates a configured [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) on a [thermostat](https://docs.seam.co/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time. + :ivar thermostat_schedules: Represents a `thermostat schedule `_ that activates a configured `climate preset `_ on a `thermostat `_ at a specified starting time and deactivates the climate preset at a specified ending time. :vartype thermostat_schedules: List[Dict[str, Any]] - :ivar unmanaged_access_codes: Represents an [unmanaged smart lock access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + :ivar unmanaged_access_codes: Represents an `unmanaged smart lock access code `_. An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. @@ -144,16 +144,16 @@ class Batch: Not all providers support unmanaged access codes. The following providers do not support unmanaged access codes: - - [Kwikset](https://docs.seam.co/device-and-system-integration-guides/kwikset-locks) + - `Kwikset `_ :vartype unmanaged_access_codes: List[Dict[str, Any]] - :ivar unmanaged_devices: Represents an [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + :ivar unmanaged_devices: Represents an `unmanaged device `_. An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :vartype unmanaged_devices: List[Dict[str, Any]] - :ivar user_identities: Represents a [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with an application user account. + :ivar user_identities: Represents a `user identity `_ associated with an application user account. :vartype user_identities: List[Dict[str, Any]] - :ivar workspaces: Represents a Seam [workspace](https://docs.seam.co/core-concepts/workspaces). A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a [production workspace](https://docs.seam.co/core-concepts/workspaces#production-workspaces). + :ivar workspaces: Represents a Seam `workspace `_. A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A `sandbox workspace `_ is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a `production workspace `_. :vartype workspaces: List[Dict[str, Any]]""" access_codes: List[Dict[str, Any]] diff --git a/seam/resources/client_session.py b/seam/resources/client_session.py index 9769a76..1c12f25 100644 --- a/seam/resources/client_session.py +++ b/seam/resources/client_session.py @@ -5,47 +5,47 @@ @dataclass class ClientSession: - """Represents a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). If you want to restrict your users' access to their own devices, use client sessions. + """Represents a `client session `_. If you want to restrict your users' access to their own devices, use client sessions. - You create each client session with a custom `user_identifier_key`. Normally, the `user_identifier_key` is a user ID that your application provides. + You create each client session with a custom ``user_identifier_key``. Normally, the ``user_identifier_key`` is a user ID that your application provides. - When calling the Seam API from your backend using an API key, you can pass the `user_identifier_key` as a parameter to limit results to the associated client session. For example, `/devices/list?user_identifier_key=123` only returns devices associated with the client session created with the `user_identifier_key` `123`. + When calling the Seam API from your backend using an API key, you can pass the ``user_identifier_key`` as a parameter to limit results to the associated client session. For example, ``/devices/list?user_identifier_key=123`` only returns devices associated with the client session created with the ``user_identifier_key`` ``123``. A client session has a token that you can use with the Seam JavaScript SDK to make requests from the client (browser) directly to the Seam API. The token restricts the user's access to only the devices that they own. - See also [Get Started with React](https://docs.seam.co/ui-components/overview/getting-started-with-seam-components/get-started-with-react-components-and-client-session-tokens). + See also `Get Started with React `_. :ivar client_session_id: ID of the client session. :vartype client_session_id: str - :ivar connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar connect_webview_ids: IDs of the `Connect Webviews `_ associated with the `client session `_. :vartype connect_webview_ids: List[str] - :ivar connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar connected_account_ids: IDs of the `connected accounts `_ associated with the `client session `_. :vartype connected_account_ids: List[str] - :ivar created_at: Date and time at which the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) was created. + :ivar created_at: Date and time at which the `client session `_ was created. :vartype created_at: str - :ivar customer_key: Customer key associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar customer_key: Customer key associated with the `client session `_. :vartype customer_key: str - :ivar device_count: Number of devices associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar device_count: Number of devices associated with the `client session `_. :vartype device_count: float - :ivar expires_at: Date and time at which the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) expires. + :ivar expires_at: Date and time at which the `client session `_ expires. :vartype expires_at: str - :ivar token: Client session token associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar token: Client session token associated with the `client session `_. :vartype token: str - :ivar user_identifier_key: Your user ID for the user associated with the [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + :ivar user_identifier_key: Your user ID for the user associated with the `client session `_. :vartype user_identifier_key: str - :ivar user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with the client session. + :ivar user_identity_id: ID of the `user identity `_ associated with the client session. :vartype user_identity_id: str - :ivar user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with the client session. + :ivar user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ associated with the client session. :vartype user_identity_ids: List[str] :ivar workspace_id: ID of the workspace associated with the client session. diff --git a/seam/resources/connect_webview.py b/seam/resources/connect_webview.py index 661d071..d59a7c4 100644 --- a/seam/resources/connect_webview.py +++ b/seam/resources/connect_webview.py @@ -5,22 +5,22 @@ @dataclass class ConnectWebview: - """Represents a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Represents a `Connect Webview `_. Connect Webviews are fully-embedded client-side components that you add to your app. Your users interact with your embedded Connect Webviews to link their IoT device or system accounts to Seam. That is, Connect Webviews walk your users through the process of logging in to their device or system accounts. Seam handles all the authentication steps, and—once your user has completed the authorization through your app—you can access and control their devices or systems using the Seam API. Connect Webviews perform credential validation, multifactor authentication (when applicable), and error handling for each brand that Seam supports. Further, Connect Webviews work across all modern browsers and platforms, including Chrome, Safari, and Firefox. - To enable a user to connect their device or system account to Seam through your app, first create a `connect_webview`. Once created, this `connect_webview` includes a URL that you can use to open an [iframe](https://www.w3schools.com/html/html_iframe.asp) or new window containing the Connect Webview for your user. + To enable a user to connect their device or system account to Seam through your app, first create a ``connect_webview``. Once created, this ``connect_webview`` includes a URL that you can use to open an `iframe `_ or new window containing the Connect Webview for your user. - When you create a Connect Webview, specify the desired provider category key in the `provider_category` parameter. Alternately, to specify a list of providers explicitly, use the `accepted_providers` parameter with a list of device provider keys. + When you create a Connect Webview, specify the desired provider category key in the ``provider_category`` parameter. Alternately, to specify a list of providers explicitly, use the ``accepted_providers`` parameter with a list of device provider keys. - To list all providers within a category, use `/devices/list_device_providers` with the desired `provider_category` filter. To list all provider keys, use `/devices/list_device_providers` with no filters. + To list all providers within a category, use ``/devices/list_device_providers`` with the desired ``provider_category`` filter. To list all provider keys, use ``/devices/list_device_providers`` with no filters. - :ivar accepted_capabilities: High-level device capabilities that the Connect Webview can accept. When creating a Connect Webview, you can specify the types of devices that it can connect to Seam. If you do not set custom `accepted_capabilities`, Seam uses a default set of `accepted_capabilities` for each provider. For example, if you create a Connect Webview that accepts SmartThing devices, without specifying `accepted_capabilities`, Seam accepts only SmartThings locks. To connect SmartThings thermostats and locks to Seam, create a Connect Webview and include both `thermostat` and `lock` in the `accepted_capabilities`. + :ivar accepted_capabilities: High-level device capabilities that the Connect Webview can accept. When creating a Connect Webview, you can specify the types of devices that it can connect to Seam. If you do not set custom ``accepted_capabilities``, Seam uses a default set of ``accepted_capabilities`` for each provider. For example, if you create a Connect Webview that accepts SmartThing devices, without specifying ``accepted_capabilities``, Seam accepts only SmartThings locks. To connect SmartThings thermostats and locks to Seam, create a Connect Webview and include both ``thermostat`` and ``lock`` in the ``accepted_capabilities``. :vartype accepted_capabilities: List[str] - :ivar accepted_providers: List of accepted [provider keys](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + :ivar accepted_providers: List of accepted `provider keys `_. :vartype accepted_providers: List[str] :ivar any_provider_allowed: Indicates whether any provider is allowed. @@ -29,7 +29,7 @@ class ConnectWebview: :ivar authorized_at: Date and time at which the user authorized (through the Connect Webview) the management of their devices. :vartype authorized_at: str - :ivar automatically_manage_new_devices: Indicates whether Seam should [import all new devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#automatically_manage_new_devices) for the connected account to make these devices available for use and management by the Seam API. + :ivar automatically_manage_new_devices: Indicates whether Seam should `import all new devices `_ for the connected account to make these devices available for use and management by the Seam API. :vartype automatically_manage_new_devices: bool :ivar connect_webview_id: ID of the Connect Webview. @@ -41,34 +41,34 @@ class ConnectWebview: :ivar created_at: Date and time at which the Connect Webview was created. :vartype created_at: str - :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. :vartype custom_metadata: Dict[str, Any] :ivar custom_redirect_failure_url: URL to which the Connect Webview should redirect when an unexpected error occurs. :vartype custom_redirect_failure_url: str - :ivar custom_redirect_url: URL to which the Connect Webview should redirect when the user successfully pairs a device or system. If you do not set the `custom_redirect_failure_url`, the Connect Webview redirects to the `custom_redirect_url` when an unexpected error occurs. + :ivar custom_redirect_url: URL to which the Connect Webview should redirect when the user successfully pairs a device or system. If you do not set the ``custom_redirect_failure_url``, the Connect Webview redirects to the ``custom_redirect_url`` when an unexpected error occurs. :vartype custom_redirect_url: str :ivar customer_key: The customer key associated with this webview, if any. :vartype customer_key: str - :ivar device_selection_mode: Device selection mode of the Connect Webview. Supported values: `none`, `single`, `multiple`. + :ivar device_selection_mode: Device selection mode of the Connect Webview. Supported values: ``none``, ``single``, ``multiple``. :vartype device_selection_mode: str :ivar login_successful: Indicates whether the user logged in successfully using the Connect Webview. :vartype login_successful: bool - :ivar selected_provider: Selected provider of the Connect Webview, one of the [provider keys](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + :ivar selected_provider: Selected provider of the Connect Webview, one of the `provider keys `_. :vartype selected_provider: str - :ivar status: Status of the Connect Webview. `authorized` indicates that the user has successfully logged into their device or system account, thereby completing the Connect Webview. + :ivar status: Status of the Connect Webview. ``authorized`` indicates that the user has successfully logged into their device or system account, thereby completing the Connect Webview. :vartype status: str :ivar url: URL for the Connect Webview. You use the URL to display the Connect Webview flow to your user. :vartype url: str - :ivar wait_for_device_creation: Indicates whether Seam should [finish syncing all devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#wait_for_device_creation) in a newly-connected account before completing the associated Connect Webview. + :ivar wait_for_device_creation: Indicates whether Seam should `finish syncing all devices `_ in a newly-connected account before completing the associated Connect Webview. :vartype wait_for_device_creation: bool :ivar workspace_id: ID of the workspace that contains the Connect Webview. diff --git a/seam/resources/connected_account.py b/seam/resources/connected_account.py index 94c4a56..52aefee 100644 --- a/seam/resources/connected_account.py +++ b/seam/resources/connected_account.py @@ -5,7 +5,7 @@ @dataclass class ConnectedAccount: - """Represents a [connected account](https://docs.seam.co/core-concepts/connected-accounts). A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. + """Represents a `connected account `_. A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. :ivar accepted_capabilities: List of capabilities that were accepted during the account connection process. :vartype accepted_capabilities: List[str] @@ -16,7 +16,7 @@ class ConnectedAccount: :ivar account_type_display_name: Display name for the connected account type. :vartype account_type_display_name: str - :ivar automatically_manage_new_devices: Indicates whether Seam should [import all new devices](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#automatically_manage_new_devices) for the connected account to make these devices available for management by the Seam API. + :ivar automatically_manage_new_devices: Indicates whether Seam should `import all new devices `_ for the connected account to make these devices available for management by the Seam API. :vartype automatically_manage_new_devices: bool :ivar connected_account_id: ID of the connected account. @@ -25,16 +25,16 @@ class ConnectedAccount: :ivar created_at: Date and time at which the connected account was created. :vartype created_at: str - :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. :vartype custom_metadata: Dict[str, Any] :ivar customer_key: Your unique key for the customer associated with this connected account. :vartype customer_key: str - :ivar default_checkin_time: Default reservation check-in time for this connected account, as `HH:mm` (24-hour). Sourced from the connector configuration — set during the connect_webview for providers like Lodgify whose API does not expose check-in times. + :ivar default_checkin_time: Default reservation check-in time for this connected account, as ``HH:mm`` (24-hour). Sourced from the connector configuration — set during the connect_webview for providers like Lodgify whose API does not expose check-in times. :vartype default_checkin_time: str - :ivar default_checkout_time: Default reservation check-out time for this connected account, as `HH:mm` (24-hour). Sourced from the connector configuration. + :ivar default_checkout_time: Default reservation check-out time for this connected account, as ``HH:mm`` (24-hour). Sourced from the connector configuration. :vartype default_checkout_time: str :ivar display_name: Display name for the connected account. @@ -43,7 +43,7 @@ class ConnectedAccount: :ivar errors: Errors associated with the connected account. :vartype errors: List[Dict[str, Any]] - :ivar ical_feed_origin: For iCal connected accounts, the platform that produced the feed (for example, `airbnb`, `vrbo`, or `booking`), or `unknown` when it could not be determined. Intended for rendering the source platform's logo. + :ivar ical_feed_origin: For iCal connected accounts, the platform that produced the feed (for example, ``airbnb``, ``vrbo``, or ``booking``), or ``unknown`` when it could not be determined. Intended for rendering the source platform's logo. :vartype ical_feed_origin: str :ivar ical_url: For iCal connected accounts, the feed URL for the connection. Sourced from the connector configuration. @@ -55,7 +55,7 @@ class ConnectedAccount: :ivar time_zone: IANA time zone (e.g. America/Los_Angeles) for this connected account. Sourced from the connector configuration. :vartype time_zone: str - :ivar user_identifier: Deprecated: Use `display_name` instead. User identifier associated with the connected account. + :ivar user_identifier: Deprecated: Use ``display_name`` instead. User identifier associated with the connected account. :vartype user_identifier: Dict[str, Any] :ivar warnings: Warnings associated with the connected account. diff --git a/seam/resources/device.py b/seam/resources/device.py index 8ff7ebc..6a157ff 100644 --- a/seam/resources/device.py +++ b/seam/resources/device.py @@ -5,7 +5,7 @@ @dataclass class Device: - """Represents a [device](https://docs.seam.co/core-concepts/devices) that has been connected to Seam. + """Represents a `device `_ that has been connected to Seam. :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. :vartype can_configure_auto_lock: bool @@ -67,7 +67,7 @@ class Device: :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. :vartype can_unlock_with_code: bool - :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are `access_code`, which indicates that the device can manage and utilize digital PIN codes for secure access; `lock`, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; `noise_detection`, which indicates that the device supports monitoring and responding to ambient noise levels; `thermostat`, which indicates that the device can regulate and adjust indoor temperatures; `battery`, which indicates that the device can manage battery life and health; and `phone`, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags). + :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are ``access_code``, which indicates that the device can manage and utilize digital PIN codes for secure access; ``lock``, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; ``noise_detection``, which indicates that the device supports monitoring and responding to ambient noise levels; ``thermostat``, which indicates that the device can regulate and adjust indoor temperatures; ``battery``, which indicates that the device can manage battery life and health; and ``phone``, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by `capability flags `_. :vartype capabilities_supported: List[str] :ivar connected_account_id: Unique identifier for the account associated with the device. @@ -76,7 +76,7 @@ class Device: :ivar created_at: Date and time at which the device object was created. :vartype created_at: str - :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the device. @@ -91,13 +91,13 @@ class Device: :ivar device_type: Type of the device. :vartype device_type: str - :ivar display_name: Display name of the device, defaults to nickname (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. + :ivar display_name: Display name of the device, defaults to nickname (if it is set) or ``properties.appearance.name``, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. :vartype display_name: str - :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: ``error_code`` and ``message``. ``error_code`` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. :vartype errors: List[Dict[str, Any]] - :ivar is_managed: Indicates whether Seam manages the device. See also [Managed and Unmanaged Devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :ivar is_managed: Indicates whether Seam manages the device. See also `Managed and Unmanaged Devices `_. :vartype is_managed: bool :ivar location: Location information for the device. @@ -112,7 +112,7 @@ class Device: :ivar space_ids: IDs of the spaces the device is in. :vartype space_ids: List[str] - :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: ``warning_code`` and ``message``. ``warning_code`` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. diff --git a/seam/resources/device_provider.py b/seam/resources/device_provider.py index 09af188..fbbdc8b 100644 --- a/seam/resources/device_provider.py +++ b/seam/resources/device_provider.py @@ -75,7 +75,7 @@ class DeviceProvider: :ivar image_url: Image URL for the device provider. :vartype image_url: str - :ivar provider_categories: List of provider categories to which the device provider belongs, such as `stable`, `consumer_smartlocks`, `thermostats`, and so on. + :ivar provider_categories: List of provider categories to which the device provider belongs, such as ``stable``, ``consumer_smartlocks``, ``thermostats``, and so on. :vartype provider_categories: List[str]""" can_configure_auto_lock: bool diff --git a/seam/resources/noise_threshold.py b/seam/resources/noise_threshold.py index b149a00..87c86ff 100644 --- a/seam/resources/noise_threshold.py +++ b/seam/resources/noise_threshold.py @@ -5,7 +5,7 @@ @dataclass class NoiseThreshold: - """Represents a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + """Represents a `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :ivar device_id: Unique identifier for the device that contains the noise threshold. :vartype device_id: str @@ -22,7 +22,7 @@ class NoiseThreshold: :ivar noise_threshold_id: Unique identifier for the noise threshold. :vartype noise_threshold_id: str - :ivar noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :ivar noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. :vartype noise_threshold_nrs: float :ivar starts_daily_at: Time at which the noise threshold should become active daily. diff --git a/seam/resources/pagination.py b/seam/resources/pagination.py index 31cd269..fadd299 100644 --- a/seam/resources/pagination.py +++ b/seam/resources/pagination.py @@ -10,7 +10,7 @@ class Pagination: :ivar has_next_page: Indicates whether there is another page of results after this one. :vartype has_next_page: bool - :ivar next_page_cursor: Opaque value that can be used to select the next page of results via the `page_cursor` parameter. + :ivar next_page_cursor: Opaque value that can be used to select the next page of results via the ``page_cursor`` parameter. :vartype next_page_cursor: str :ivar next_page_url: URL to get the next page of results. diff --git a/seam/resources/phone.py b/seam/resources/phone.py index d74b949..8bb54e4 100644 --- a/seam/resources/phone.py +++ b/seam/resources/phone.py @@ -10,16 +10,16 @@ class Phone: :ivar created_at: Date and time at which the phone was created. :vartype created_at: str - :ivar custom_metadata: Optional [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for the phone. + :ivar custom_metadata: Optional `custom metadata `_ for the phone. :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the phone. :vartype device_id: str - :ivar device_type: Type of the phone device, such as `ios_phone` or `android_phone`. + :ivar device_type: Type of the phone device, such as ``ios_phone`` or ``android_phone``. :vartype device_type: str - :ivar display_name: Display name of the phone. Defaults to `nickname` (if it is set) or `properties.appearance.name`, otherwise. Enables administrators and users to identify the phone easily, especially when there are numerous phones. + :ivar display_name: Display name of the phone. Defaults to ``nickname`` (if it is set) or ``properties.appearance.name``, otherwise. Enables administrators and users to identify the phone easily, especially when there are numerous phones. :vartype display_name: str :ivar errors: Errors associated with the phone. diff --git a/seam/resources/seam_event.py b/seam/resources/seam_event.py index 45620c7..f2bd789 100644 --- a/seam/resources/seam_event.py +++ b/seam/resources/seam_event.py @@ -39,7 +39,7 @@ class SeamEvent: :ivar workspace_id: ID of the workspace associated with the event. :vartype workspace_id: str - :ivar change_reason: Human-readable reason for the change (e.g. `ongoing code auto-renewed`). + :ivar change_reason: Human-readable reason for the change (e.g. ``ongoing code auto-renewed``). :vartype change_reason: str :ivar changed_properties: List of properties that changed on the access code. @@ -84,7 +84,7 @@ class SeamEvent: :ivar access_grant_id: ID of the affected Access Grant. :vartype access_grant_id: str - :ivar acs_entrance_id: ID of the affected [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + :ivar acs_entrance_id: ID of the affected `entrance `_. :vartype acs_entrance_id: str :ivar access_grant_key: Key of the affected Access Grant (if present). @@ -162,7 +162,7 @@ class SeamEvent: :ivar battery_level: Number in the range 0 to 1.0 indicating the amount of battery in the affected device, as reported by the device. :vartype battery_level: float - :ivar battery_status: Battery status of the affected device, calculated from the numeric `battery_level` value. + :ivar battery_status: Battery status of the affected device, calculated from the numeric ``battery_level`` value. :vartype battery_status: str :ivar device_name: Name of the deleted device, captured at deletion time. The device record no longer exists when this event fires, so the name is preserved here. Null when the device had no resolvable name. @@ -195,7 +195,7 @@ class SeamEvent: :ivar is_via_nfc: Whether the lock action was performed by an NFC credential tap (such as an Apple Home Key or an NFC key fob) presented to the lock, rather than a direct physical interaction or a Seam-initiated remote action. :vartype is_via_nfc: bool - :ivar method: Method by which the lock was locked. `keycode`: an access code was used (see `access_code_id`). `manual`: a physical action such as a thumbturn or button press. `remote`: a remote action via an app, Bluetooth, or the Seam API (see `action_attempt_id` if Seam-initiated; see `is_via_bluetooth` or `is_via_nfc` for the transport). `automatic`: triggered automatically, for example by an auto-relock timer. `unknown`: could not be determined. + :ivar method: Method by which the lock was locked. ``keycode``: an access code was used (see ``access_code_id``). ``manual``: a physical action such as a thumbturn or button press. ``remote``: a remote action via an app, Bluetooth, or the Seam API (see ``action_attempt_id`` if Seam-initiated; see ``is_via_bluetooth`` or ``is_via_nfc`` for the transport). ``automatic``: triggered automatically, for example by an auto-relock timer. ``unknown``: could not be determined. :vartype method: str :ivar user_identity_id: undocumented: Unreleased. @@ -215,22 +215,22 @@ class SeamEvent: :ivar thermostat_schedule_id: ID of the thermostat schedule that prompted the affected climate preset to be activated. :vartype thermostat_schedule_id: str - :ivar cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :ivar cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. :vartype cooling_set_point_celsius: float - :ivar cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :ivar cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. :vartype cooling_set_point_fahrenheit: float - :ivar fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :ivar fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. :vartype fan_mode_setting: str - :ivar heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :ivar heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. :vartype heating_set_point_celsius: float - :ivar heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :ivar heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. :vartype heating_set_point_fahrenheit: float - :ivar hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :ivar hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. :vartype hvac_mode_setting: str :ivar lower_limit_celsius: Lower temperature limit, in °C, defined by the set threshold. diff --git a/seam/resources/space.py b/seam/resources/space.py index f0f546b..4cf0d81 100644 --- a/seam/resources/space.py +++ b/seam/resources/space.py @@ -13,7 +13,7 @@ class Space: :ivar created_at: Date and time at which the space was created. :vartype created_at: str - :ivar customer_data: Reservation/stay-related defaults for the space. Also carries the provider/PMS-supplied name under a `_name` key (e.g. `guesty_name`), which Seam preserves when you rename the space (read-only — managed by Seam). + :ivar customer_data: Reservation/stay-related defaults for the space. Also carries the provider/PMS-supplied name under a ``_name`` key (e.g. ``guesty_name``), which Seam preserves when you rename the space (read-only — managed by Seam). :vartype customer_data: Dict[str, Any] :ivar customer_key: Customer key associated with the space. diff --git a/seam/resources/thermostat_schedule.py b/seam/resources/thermostat_schedule.py index 5740e2f..abab093 100644 --- a/seam/resources/thermostat_schedule.py +++ b/seam/resources/thermostat_schedule.py @@ -5,36 +5,36 @@ @dataclass class ThermostatSchedule: - """Represents a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) that activates a configured [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) on a [thermostat](https://docs.seam.co/capability-guides/thermostats) at a specified starting time and deactivates the climate preset at a specified ending time. + """Represents a `thermostat schedule `_ that activates a configured `climate preset `_ on a `thermostat `_ at a specified starting time and deactivates the climate preset at a specified ending time. - :ivar climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :ivar climate_preset_key: Key of the `climate preset `_ to use for the `thermostat schedule `_. :vartype climate_preset_key: str - :ivar created_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) was created. + :ivar created_at: Date and time at which the `thermostat schedule `_ was created. :vartype created_at: str - :ivar device_id: ID of the desired [thermostat](https://docs.seam.co/capability-guides/thermostats) device. + :ivar device_id: ID of the desired `thermostat `_ device. :vartype device_id: str - :ivar ends_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :ivar ends_at: Date and time at which the `thermostat schedule `_ ends, in `ISO 8601 `_ format. :vartype ends_at: str - :ivar errors: Errors associated with the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :ivar errors: Errors associated with the `thermostat schedule `_. :vartype errors: List[Dict[str, Any]] - :ivar is_override_allowed: Indicates whether a person at the thermostat can change the thermostat's settings after the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts. + :ivar is_override_allowed: Indicates whether a person at the thermostat can change the thermostat's settings after the `thermostat schedule `_ starts. :vartype is_override_allowed: bool - :ivar max_override_period_minutes: Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :ivar max_override_period_minutes: Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled `climate preset `_. See also `Specifying Manual Override Permissions `_. :vartype max_override_period_minutes: int - :ivar name: User-friendly name to identify the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :ivar name: User-friendly name to identify the `thermostat schedule `_. :vartype name: str - :ivar starts_at: Date and time at which the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :ivar starts_at: Date and time at which the `thermostat schedule `_ starts, in `ISO 8601 `_ format. :vartype starts_at: str - :ivar thermostat_schedule_id: ID of the [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + :ivar thermostat_schedule_id: ID of the `thermostat schedule `_. :vartype thermostat_schedule_id: str :ivar workspace_id: ID of the workspace that contains the thermostat schedule. diff --git a/seam/resources/unmanaged_access_code.py b/seam/resources/unmanaged_access_code.py index 2091be0..d2dc744 100644 --- a/seam/resources/unmanaged_access_code.py +++ b/seam/resources/unmanaged_access_code.py @@ -5,7 +5,7 @@ @dataclass class UnmanagedAccessCode: - """Represents an [unmanaged smart lock access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Represents an `unmanaged smart lock access code `_. An access code is a code used for a keypad or pinpad device. Unlike physical keys, which can easily be lost or duplicated, PIN codes can be customized, tracked, and altered on the fly. @@ -15,7 +15,7 @@ class UnmanagedAccessCode: Not all providers support unmanaged access codes. The following providers do not support unmanaged access codes: - - [Kwikset](https://docs.seam.co/device-and-system-integration-guides/kwikset-locks) + - `Kwikset `_ :ivar access_code_id: Unique identifier for the access code. :vartype access_code_id: str @@ -41,25 +41,25 @@ class UnmanagedAccessCode: :ivar ends_at: Date and time after which the time-bound access code becomes inactive. :vartype ends_at: str - :ivar errors: Errors associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :ivar errors: Errors associated with the `access code `_. :vartype errors: List[Dict[str, Any]] :ivar is_managed: Indicates that Seam does not manage the access code. :vartype is_managed: bool - :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :vartype name: str :ivar starts_at: Date and time at which the time-bound access code becomes active. :vartype starts_at: str - :ivar status: Current status of the access code within the operational lifecycle. `set` indicates that the code is active and operational. `unset` indicates that the code exists on the provider but is not usable on the device. + :ivar status: Current status of the access code within the operational lifecycle. ``set`` indicates that the code is active and operational. ``unset`` indicates that the code exists on the provider but is not usable on the device. :vartype status: str - :ivar type: Type of the access code. `ongoing` access codes are active continuously until deactivated manually. `time_bound` access codes have a specific duration. + :ivar type: Type of the access code. ``ongoing`` access codes are active continuously until deactivated manually. ``time_bound`` access codes have a specific duration. :vartype type: str - :ivar warnings: Warnings associated with the [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + :ivar warnings: Warnings associated with the `access code `_. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. diff --git a/seam/resources/unmanaged_device.py b/seam/resources/unmanaged_device.py index 5d58602..0b232b8 100644 --- a/seam/resources/unmanaged_device.py +++ b/seam/resources/unmanaged_device.py @@ -5,7 +5,7 @@ @dataclass class UnmanagedDevice: - """Represents an [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + """Represents an `unmanaged device `_. An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. :vartype can_configure_auto_lock: bool @@ -67,7 +67,7 @@ class UnmanagedDevice: :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. :vartype can_unlock_with_code: bool - :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are `access_code`, which indicates that the device can manage and utilize digital PIN codes for secure access; `lock`, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; `noise_detection`, which indicates that the device supports monitoring and responding to ambient noise levels; `thermostat`, which indicates that the device can regulate and adjust indoor temperatures; `battery`, which indicates that the device can manage battery life and health; and `phone`, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags). + :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are ``access_code``, which indicates that the device can manage and utilize digital PIN codes for secure access; ``lock``, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; ``noise_detection``, which indicates that the device supports monitoring and responding to ambient noise levels; ``thermostat``, which indicates that the device can regulate and adjust indoor temperatures; ``battery``, which indicates that the device can manage battery life and health; and ``phone``, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by `capability flags `_. :vartype capabilities_supported: List[str] :ivar connected_account_id: Unique identifier for the account associated with the device. @@ -76,7 +76,7 @@ class UnmanagedDevice: :ivar created_at: Date and time at which the device object was created. :vartype created_at: str - :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview), [connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account), or [device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device), enables you to store custom information, like customer details or internal IDs from your application. + :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the device. @@ -85,7 +85,7 @@ class UnmanagedDevice: :ivar device_type: Type of the device. :vartype device_type: str - :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: `error_code` and `message`. `error_code` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: ``error_code`` and ``message``. ``error_code`` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. :vartype errors: List[Dict[str, Any]] :ivar is_managed: Indicates that Seam does not manage the device. @@ -97,7 +97,7 @@ class UnmanagedDevice: :ivar properties: properties of the device. :vartype properties: Dict[str, Any] - :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: `warning_code` and `message`. `warning_code` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. `message` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: ``warning_code`` and ``message``. ``warning_code`` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. diff --git a/seam/resources/user_identity.py b/seam/resources/user_identity.py index 334fee7..23772f5 100644 --- a/seam/resources/user_identity.py +++ b/seam/resources/user_identity.py @@ -5,7 +5,7 @@ @dataclass class UserIdentity: - """Represents a [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) associated with an application user account. + """Represents a `user identity `_ associated with an application user account. :ivar acs_user_ids: Array of access system user IDs associated with the user identity. :vartype acs_user_ids: List[str] @@ -25,7 +25,7 @@ class UserIdentity: :ivar full_name: Full name of the user associated with the user identity. :vartype full_name: str - :ivar phone_number: Unique phone number for the user identity in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, +15555550100). + :ivar phone_number: Unique phone number for the user identity in `E.164 format `_ (for example, +15555550100). :vartype phone_number: str :ivar user_identity_id: ID of the user identity. diff --git a/seam/resources/webhook.py b/seam/resources/webhook.py index d4d7ca2..77598d5 100644 --- a/seam/resources/webhook.py +++ b/seam/resources/webhook.py @@ -5,15 +5,15 @@ @dataclass class Webhook: - """Represents a [webhook](https://docs.seam.co/developer-tools/webhooks) that enables you to receive notifications of events. When you create a webhook, specify the endpoint URL at which you want to receive events and the set of event types that you want to receive. + """Represents a `webhook `_ that enables you to receive notifications of events. When you create a webhook, specify the endpoint URL at which you want to receive events and the set of event types that you want to receive. - :ivar event_types: Types of events that the [webhook](https://docs.seam.co/developer-tools/webhooks) should receive. + :ivar event_types: Types of events that the `webhook `_ should receive. :vartype event_types: List[str] - :ivar secret: Secret associated with the [webhook](https://docs.seam.co/developer-tools/webhooks). + :ivar secret: Secret associated with the `webhook `_. :vartype secret: str - :ivar url: URL for the [webhook](https://docs.seam.co/developer-tools/webhooks). + :ivar url: URL for the `webhook `_. :vartype url: str :ivar webhook_id: ID of the webhook. diff --git a/seam/resources/workspace.py b/seam/resources/workspace.py index b2ec1ca..3116f63 100644 --- a/seam/resources/workspace.py +++ b/seam/resources/workspace.py @@ -5,12 +5,12 @@ @dataclass class Workspace: - """Represents a Seam [workspace](https://docs.seam.co/core-concepts/workspaces). A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a [production workspace](https://docs.seam.co/core-concepts/workspaces#production-workspaces). + """Represents a Seam `workspace `_. A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A `sandbox workspace `_ is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a `production workspace `_. - :ivar company_name: Company name associated with the [workspace](https://docs.seam.co/core-concepts/workspaces). + :ivar company_name: Company name associated with the `workspace `_. :vartype company_name: str - :ivar connect_partner_name: Deprecated: Use `company_name` instead. + :ivar connect_partner_name: Deprecated: Use ``company_name`` instead. :vartype connect_partner_name: str :ivar connect_webview_customization: @@ -19,19 +19,19 @@ class Workspace: :ivar is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. :vartype is_publishable_key_auth_enabled: bool - :ivar is_sandbox: Indicates whether the workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :ivar is_sandbox: Indicates whether the workspace is a `sandbox workspace `_. :vartype is_sandbox: bool - :ivar is_suspended: Indicates whether the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) is suspended. Seam suspends sandbox workspaces that have not been accessed in 14 days. + :ivar is_suspended: Indicates whether the `sandbox workspace `_ is suspended. Seam suspends sandbox workspaces that have not been accessed in 14 days. :vartype is_suspended: bool - :ivar name: Name of the [workspace](https://docs.seam.co/core-concepts/workspaces). + :ivar name: Name of the `workspace `_. :vartype name: str - :ivar organization_id: ID of the organization to which the workspace belongs, or `null` if the workspace is not assigned to an organization. + :ivar organization_id: ID of the organization to which the workspace belongs, or ``null`` if the workspace is not assigned to an organization. :vartype organization_id: str - :ivar publishable_key: Publishable key for the [workspace](https://docs.seam.co/core-concepts/workspaces). This key is used to identify the workspace in client-side applications. + :ivar publishable_key: Publishable key for the `workspace `_. This key is used to identify the workspace in client-side applications. :vartype publishable_key: str :ivar workspace_id: ID of the workspace. diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index 26f5139..2add0b0 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -39,12 +39,12 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: - """Creates a new [access code](https://docs.seam.co/low-level-apis/access-codes). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. :param device_id: ID of the device for which you want to create the new access code. :type device_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: @@ -53,46 +53,46 @@ def create( :param code: Code to be used for access. :type code: str - :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same `common_code_key` are guaranteed to have the same `code`. See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. :type common_code_key: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool - :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. :type is_offline_access_code: bool - :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. :type is_one_time_use: bool - :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool - :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool - :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. :type use_offline_access_code: bool :returns: OK @@ -116,58 +116,58 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: - """Creates new [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + """Creates new `access codes `_ that share a common code across multiple devices. Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. - If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a `common_code_key`. That is, `common_code_key` remains null for these access codes. + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a ``common_code_key``. That is, ``common_code_key`` remains null for these access codes. - If you want to change these access codes that are not linked by a `common_code_key`, you cannot use `/access_codes/update_multiple`. However, you can update each of these access codes individually, using `/access_codes/update`. + If you want to change these access codes that are not linked by a ``common_code_key``, you cannot use ``/access_codes/update_multiple``. However, you can update each of these access codes individually, using ``/access_codes/update``. - See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + See also `Creating and Updating Multiple Linked Access Codes `_. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :param device_ids: IDs of the devices for which you want to create the new access codes. :type device_ids: List[str] - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: :type attempt_for_offline_device: bool - :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If `throw` (default), no access codes will be created if any device cannot share a code. If `create_random_code`, a random code will be created on devices that cannot share a code. + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. :type behavior_when_code_cannot_be_shared: str :param code: Code to be used for access. :type code: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool :returns: OK @@ -176,7 +176,7 @@ def create_multiple( @abc.abstractmethod def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: - """Deletes an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Deletes an `access code `_. :param access_code_id: ID of the access code that you want to delete. :type access_code_id: str @@ -187,7 +187,7 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non @abc.abstractmethod def generate_code(self, *, device_id: str) -> AccessCode: - """Generates a code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes), given a device ID. + """Generates a code for an `access code `_, given a device ID. :param device_id: ID of the device for which you want to generate a code. :type device_id: str @@ -204,17 +204,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: - """Returns a specified [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Returns a specified `access code `_. - You must specify either `access_code_id` or both `device_id` and `code`. + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :param access_code_id: ID of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type access_code_id: str - :param code: Code of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type code: str - :param device_id: ID of the device containing the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type device_id: str :returns: OK @@ -236,35 +236,35 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: - """Returns a list of all [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Returns a list of all `access codes `_. - Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :param access_code_ids: IDs of the access codes that you want to retrieve. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_code_ids: List[str] - :param access_grant_id: ID of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_grant_id: str - :param access_grant_key: Key of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_grant_key: str - :param access_method_id: ID of the access method for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_method_id: str :param customer_key: Customer key for which you want to list access codes. :type customer_key: str - :param device_id: ID of the device for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type device_id: str :param limit: Numerical limit on the number of access codes to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. :type search: str :param user_identifier_key: Your user ID for the user by which to filter access codes. @@ -276,7 +276,7 @@ def list( @abc.abstractmethod def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: - """Retrieves a backup access code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes). + """Retrieves a backup access code for an `access code `_. See also `Managing Backup Access Codes `_. A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. @@ -284,7 +284,7 @@ def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: You can only pull backup access codes for time-bound access codes. - Before pulling a backup access code, make sure that the device's `properties.supports_backup_access_code_pool` is `true`. Then, to activate the backup pool, set `use_backup_access_code_pool` to `true` when creating an access code. + Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. :param access_code_id: ID of the access code for which you want to pull a backup access code. :type access_code_id: str @@ -304,18 +304,18 @@ def report_device_constraints( ) -> None: """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. - Specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :param device_id: ID of the device for which you want to report constraints. :type device_id: str - :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. :type max_code_length: int - :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. :type min_code_length: int - :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :type supported_code_lengths: List[float]""" raise NotImplementedError() @@ -342,14 +342,14 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: - """Updates a specified active or upcoming [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Updates a specified active or upcoming `access code `_. - See also [Modifying Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes). + See also `Modifying Access Codes `_. :param access_code_id: ID of the access code that you want to update. :type access_code_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: @@ -361,49 +361,49 @@ def update( :param device_id: ID of the device containing the access code that you want to update. :type device_id: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool - :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use `/access_codes/unmanaged/convert_to_managed`. + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. :type is_managed: bool - :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. :type is_offline_access_code: bool - :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. :type is_one_time_use: bool - :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool - :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access). + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. :type type: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool - :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. :type use_offline_access_code: bool""" raise NotImplementedError() @@ -416,28 +416,28 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: - """Updates [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + """Updates `access codes `_ that share a common code across multiple devices. - Specify the `common_code_key` to identify the set of access codes that you want to update. + Specify the ``common_code_key`` to identify the set of access codes that you want to update. - See also [Update Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes#update-linked-access-codes). + See also `Update Linked Access Codes `_. - :param common_code_key: Key that links the group of access codes, assigned on creation by `/access_codes/create_multiple`. + :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. :type common_code_key: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str""" raise NotImplementedError() @@ -477,12 +477,12 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: - """Creates a new [access code](https://docs.seam.co/low-level-apis/access-codes). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. :param device_id: ID of the device for which you want to create the new access code. :type device_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: @@ -491,46 +491,46 @@ def create( :param code: Code to be used for access. :type code: str - :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same `common_code_key` are guaranteed to have the same `code`. See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. :type common_code_key: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool - :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. :type is_offline_access_code: bool - :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. :type is_one_time_use: bool - :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool - :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool - :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. :type use_offline_access_code: bool :returns: OK @@ -592,58 +592,58 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: - """Creates new [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + """Creates new `access codes `_ that share a common code across multiple devices. Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. - If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a `common_code_key`. That is, `common_code_key` remains null for these access codes. + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a ``common_code_key``. That is, ``common_code_key`` remains null for these access codes. - If you want to change these access codes that are not linked by a `common_code_key`, you cannot use `/access_codes/update_multiple`. However, you can update each of these access codes individually, using `/access_codes/update`. + If you want to change these access codes that are not linked by a ``common_code_key``, you cannot use ``/access_codes/update_multiple``. However, you can update each of these access codes individually, using ``/access_codes/update``. - See also [Creating and Updating Multiple Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes). + See also `Creating and Updating Multiple Linked Access Codes `_. - For granting a person access to a space, [Access Grants](https://docs.seam.co/use-cases/granting-access) are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :param device_ids: IDs of the devices for which you want to create the new access codes. :type device_ids: List[str] - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: :type attempt_for_offline_device: bool - :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If `throw` (default), no access codes will be created if any device cannot share a code. If `create_random_code`, a random code will be created on devices that cannot share a code. + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. :type behavior_when_code_cannot_be_shared: str :param code: Code to be used for access. :type code: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool :returns: OK @@ -684,7 +684,7 @@ def create_multiple( return [AccessCode.from_dict(item) for item in res["access_codes"]] def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: - """Deletes an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Deletes an `access code `_. :param access_code_id: ID of the access code that you want to delete. :type access_code_id: str @@ -703,7 +703,7 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non return None def generate_code(self, *, device_id: str) -> AccessCode: - """Generates a code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes), given a device ID. + """Generates a code for an `access code `_, given a device ID. :param device_id: ID of the device for which you want to generate a code. :type device_id: str @@ -726,17 +726,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: - """Returns a specified [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Returns a specified `access code `_. - You must specify either `access_code_id` or both `device_id` and `code`. + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :param access_code_id: ID of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type access_code_id: str - :param code: Code of the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type code: str - :param device_id: ID of the device containing the access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type device_id: str :returns: OK @@ -768,35 +768,35 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: - """Returns a list of all [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Returns a list of all `access codes `_. - Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :param access_code_ids: IDs of the access codes that you want to retrieve. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_code_ids: List[str] - :param access_grant_id: ID of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_grant_id: str - :param access_grant_key: Key of the access grant for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_grant_key: str - :param access_method_id: ID of the access method for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type access_method_id: str :param customer_key: Customer key for which you want to list access codes. :type customer_key: str - :param device_id: ID of the device for which you want to list access codes. Specify `device_id`, `access_code_ids`, `access_method_id`, `access_grant_id`, or `access_grant_key`. + :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :type device_id: str :param limit: Numerical limit on the number of access codes to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. :type search: str :param user_identifier_key: Your user ID for the user by which to filter access codes. @@ -832,7 +832,7 @@ def list( return [AccessCode.from_dict(item) for item in res["access_codes"]] def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: - """Retrieves a backup access code for an [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). See also [Managing Backup Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes). + """Retrieves a backup access code for an `access code `_. See also `Managing Backup Access Codes `_. A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. @@ -840,7 +840,7 @@ def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: You can only pull backup access codes for time-bound access codes. - Before pulling a backup access code, make sure that the device's `properties.supports_backup_access_code_pool` is `true`. Then, to activate the backup pool, set `use_backup_access_code_pool` to `true` when creating an access code. + Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. :param access_code_id: ID of the access code for which you want to pull a backup access code. :type access_code_id: str @@ -868,18 +868,18 @@ def report_device_constraints( ) -> None: """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. - Specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :param device_id: ID of the device for which you want to report constraints. :type device_id: str - :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. :type max_code_length: int - :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either `min_code_length`/`max_code_length` or `supported_code_lengths`. + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. :type min_code_length: int - :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either `supported_code_lengths` or `min_code_length`/`max_code_length`. + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :type supported_code_lengths: List[float]""" json_payload = {} @@ -918,14 +918,14 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: - """Updates a specified active or upcoming [access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Updates a specified active or upcoming `access code `_. - See also [Modifying Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes). + See also `Modifying Access Codes `_. :param access_code_id: ID of the access code that you want to update. :type access_code_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type allow_external_modification: bool :param attempt_for_offline_device: @@ -937,49 +937,49 @@ def update( :param device_id: ID of the device containing the access code that you want to update. :type device_id: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. Default: `false`. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. :type is_external_modification_allowed: bool - :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use `/access_codes/unmanaged/convert_to_managed`. + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. :type is_managed: bool - :param is_offline_access_code: Indicates whether the access code is an [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes). + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. :type is_offline_access_code: bool - :param is_one_time_use: Indicates whether the [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) is a single-use access code. + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. :type is_one_time_use: bool - :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound [offline access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/offline-access-codes) for devices that support this feature, set this parameter to `1d`. + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param prefer_native_scheduling: Indicates whether [native scheduling](https://docs.seam.co/low-level-apis/smart-locks/access-codes#native-scheduling) should be used for time-bound codes when supported by the provider. Default: `true`. + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. :type prefer_native_scheduling: bool - :param preferred_code_length: Preferred code length. Only applicable if you do not specify a `code`. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. :type preferred_code_length: float - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str - :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set `type` to `ongoing`. See also [Changing a time-bound access code to permanent access](https://docs.seam.co/low-level-apis/smart-locks/access-codes/modifying-access-codes#special-case-2-changing-a-time-bound-access-code-to-permanent-access). + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. :type type: str - :param use_backup_access_code_pool: Indicates whether to use a [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) provided by Seam. If `true`, you can use [`/access_codes/pull_backup_access_code`](https://docs.seam.co/api/access_codes/pull_backup_access_code). + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. :type use_backup_access_code_pool: bool - :param use_offline_access_code: Deprecated: Use `is_offline_access_code` instead. + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. :type use_offline_access_code: bool""" json_payload = {} @@ -1034,28 +1034,28 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: - """Updates [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes) that share a common code across multiple devices. + """Updates `access codes `_ that share a common code across multiple devices. - Specify the `common_code_key` to identify the set of access codes that you want to update. + Specify the ``common_code_key`` to identify the set of access codes that you want to update. - See also [Update Linked Access Codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/creating-and-updating-multiple-linked-access-codes#update-linked-access-codes). + See also `Update Linked Access Codes `_. - :param common_code_key: Key that links the group of access codes, assigned on creation by `/access_codes/create_multiple`. + :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. :type common_code_key: str - :param ends_at: Date and time at which the validity of the new access code ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. - Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as `first_name` and `last_name`. + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. - To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called `appearance`. This is an object with a `name` property and, optionally, `first_name` and `last_name` properties (for providers that break down a name into components). + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). :type name: str - :param starts_at: Date and time at which the validity of the new access code starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. :type starts_at: str""" json_payload = {} diff --git a/seam/routes/access_codes_simulate.py b/seam/routes/access_codes_simulate.py index c1b76ae..11c8af0 100644 --- a/seam/routes/access_codes_simulate.py +++ b/seam/routes/access_codes_simulate.py @@ -10,7 +10,7 @@ class AbstractAccessCodesSimulate(abc.ABC): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: - """Simulates the creation of an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. :param code: Code of the simulated unmanaged access code. :type code: str @@ -34,7 +34,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: - """Simulates the creation of an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. :param code: Code of the simulated unmanaged access code. :type code: str diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index a74f304..3a3bab4 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -15,7 +15,7 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: - """Converts an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Converts an `unmanaged access code `_ to an `access code managed through Seam `_. An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. @@ -24,19 +24,19 @@ def convert_to_managed( :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. :type access_code_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. :type allow_external_modification: bool - :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set `force` to `true`. + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. :type force: bool - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. :type is_external_modification_allowed: bool""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_code_id: str) -> None: - """Deletes an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Deletes an `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to delete. :type access_code_id: str""" @@ -50,17 +50,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: - """Returns a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Returns a specified `unmanaged access code `_. - You must specify either `access_code_id` or both `device_id` and `code`. + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type access_code_id: str - :param code: Code of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type code: str - :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type device_id: str :returns: OK @@ -77,7 +77,7 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: - """Returns a list of all [unmanaged access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Returns a list of all `unmanaged access codes `_. :param device_id: ID of the device for which you want to list unmanaged access codes. :type device_id: str @@ -85,10 +85,10 @@ def list( :param limit: Numerical limit on the number of unmanaged access codes to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. :type search: str :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. @@ -108,7 +108,7 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: - """Updates a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Updates a specified `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to update. :type access_code_id: str @@ -116,13 +116,13 @@ def update( :param is_managed: :type is_managed: bool - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. :type allow_external_modification: bool :param force: Indicates whether to force the unmanaged access code update. :type force: bool - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. :type is_external_modification_allowed: bool""" raise NotImplementedError() @@ -140,7 +140,7 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: - """Converts an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) to an [access code managed through Seam](https://docs.seam.co/low-level-apis/smart-locks/access-codes). + """Converts an `unmanaged access code `_ to an `access code managed through Seam `_. An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. @@ -149,13 +149,13 @@ def convert_to_managed( :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. :type access_code_id: str - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. :type allow_external_modification: bool - :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set `force` to `true`. + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. :type force: bool - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the access code is allowed. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. :type is_external_modification_allowed: bool""" json_payload = {} @@ -177,7 +177,7 @@ def convert_to_managed( return None def delete(self, *, access_code_id: str) -> None: - """Deletes an [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Deletes an `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to delete. :type access_code_id: str""" @@ -197,17 +197,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: - """Returns a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Returns a specified `unmanaged access code `_. - You must specify either `access_code_id` or both `device_id` and `code`. + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type access_code_id: str - :param code: Code of the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type code: str - :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either `access_code_id` or both `device_id` and `code`. + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :type device_id: str :returns: OK @@ -234,7 +234,7 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: - """Returns a list of all [unmanaged access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Returns a list of all `unmanaged access codes `_. :param device_id: ID of the device for which you want to list unmanaged access codes. :type device_id: str @@ -242,10 +242,10 @@ def list( :param limit: Numerical limit on the number of unmanaged access codes to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using `name`, `code` or `access_code_id`. + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. :type search: str :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. @@ -279,7 +279,7 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: - """Updates a specified [unmanaged access code](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes). + """Updates a specified `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to update. :type access_code_id: str @@ -287,13 +287,13 @@ def update( :param is_managed: :type is_managed: bool - :param allow_external_modification: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. :type allow_external_modification: bool :param force: Indicates whether to force the unmanaged access code update. :type force: bool - :param is_external_modification_allowed: Indicates whether [external modification](https://docs.seam.co/low-level-apis/smart-locks/access-codes#external-modification) of the code is allowed. + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. :type is_external_modification_allowed: bool""" json_payload = {} diff --git a/seam/routes/access_grants.py b/seam/routes/access_grants.py index 268512b..3cbbc77 100644 --- a/seam/routes/access_grants.py +++ b/seam/routes/access_grants.py @@ -35,7 +35,7 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: - """Creates a new [Access Grant](https://docs.seam.co/use-cases/granting-access/access-grants). Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using `device_ids`) and access control systems (using `acs_entrance_ids` or `space_ids`), and can issue PIN codes, key cards, and mobile keys through a single request. + """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. :param requested_access_methods: :type requested_access_methods: List[Dict[str, Any]] @@ -49,22 +49,22 @@ def create( :param access_grant_key: Unique key for the access grant within the workspace. :type access_grant_key: str - :param acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/api/acs/systems/list) to which access is being granted. + :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. :type acs_entrance_ids: List[str] :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. :type customization_profile_id: str - :param device_ids: Set of IDs of the [devices](https://docs.seam.co/api/devices/list) to which access is being granted. + :param device_ids: Set of IDs of the `devices `_ to which access is being granted. :type device_ids: List[str] - :param ends_at: Date and time at which the validity of the new grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param location: Deprecated: Create a space first, then reference it using `space_ids`. + :param location: Deprecated: Create a space first, then reference it using ``space_ids``. :type location: Dict[str, Any] - :param location_ids: Deprecated: Use `space_ids`. + :param location_ids: Deprecated: Use ``space_ids``. :type location_ids: List[str] :param name: Name for the access grant. @@ -79,7 +79,7 @@ def create( :param space_keys: Set of keys of existing spaces to which access is being granted. :type space_keys: List[str] - :param starts_at: Date and time at which the validity of the new grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. :type starts_at: str :returns: OK @@ -184,10 +184,10 @@ def list( :param limit: Numerical limit on the number of access grants to return. :type limit: float - :param location_id: Deprecated: Use `space_id`. + :param location_id: Deprecated: Use ``space_id``. :type location_id: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :param reservation_key: Filter Access Grants by reservation_key. @@ -231,19 +231,19 @@ def update( ) -> None: """Updates an existing Access Grant's time window. - :param access_grant_id: ID of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. :type access_grant_id: str - :param access_grant_key: Key of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. :type access_grant_key: str - :param ends_at: Date and time at which the validity of the grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str :param name: Display name for the access grant. :type name: str - :param starts_at: Date and time at which the validity of the grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. :type starts_at: str""" raise NotImplementedError() @@ -277,7 +277,7 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: - """Creates a new [Access Grant](https://docs.seam.co/use-cases/granting-access/access-grants). Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using `device_ids`) and access control systems (using `acs_entrance_ids` or `space_ids`), and can issue PIN codes, key cards, and mobile keys through a single request. + """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. :param requested_access_methods: :type requested_access_methods: List[Dict[str, Any]] @@ -291,22 +291,22 @@ def create( :param access_grant_key: Unique key for the access grant within the workspace. :type access_grant_key: str - :param acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/api/acs/systems/list) to which access is being granted. + :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. :type acs_entrance_ids: List[str] :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. :type customization_profile_id: str - :param device_ids: Set of IDs of the [devices](https://docs.seam.co/api/devices/list) to which access is being granted. + :param device_ids: Set of IDs of the `devices `_ to which access is being granted. :type device_ids: List[str] - :param ends_at: Date and time at which the validity of the new grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param location: Deprecated: Create a space first, then reference it using `space_ids`. + :param location: Deprecated: Create a space first, then reference it using ``space_ids``. :type location: Dict[str, Any] - :param location_ids: Deprecated: Use `space_ids`. + :param location_ids: Deprecated: Use ``space_ids``. :type location_ids: List[str] :param name: Name for the access grant. @@ -321,7 +321,7 @@ def create( :param space_keys: Set of keys of existing spaces to which access is being granted. :type space_keys: List[str] - :param starts_at: Date and time at which the validity of the new grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. :type starts_at: str :returns: OK @@ -486,10 +486,10 @@ def list( :param limit: Numerical limit on the number of access grants to return. :type limit: float - :param location_id: Deprecated: Use `space_id`. + :param location_id: Deprecated: Use ``space_id``. :type location_id: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :param reservation_key: Filter Access Grants by reservation_key. @@ -573,19 +573,19 @@ def update( ) -> None: """Updates an existing Access Grant's time window. - :param access_grant_id: ID of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. :type access_grant_id: str - :param access_grant_key: Key of the Access Grant to update. Provide either `access_grant_id` or `access_grant_key`. + :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. :type access_grant_key: str - :param ends_at: Date and time at which the validity of the grant ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str :param name: Display name for the access grant. :type name: str - :param starts_at: Date and time at which the validity of the grant starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. :type starts_at: str""" json_payload = {} diff --git a/seam/routes/access_grants_unmanaged.py b/seam/routes/access_grants_unmanaged.py index 8b2aca7..2560b4e 100644 --- a/seam/routes/access_grants_unmanaged.py +++ b/seam/routes/access_grants_unmanaged.py @@ -35,7 +35,7 @@ def list( :param limit: Numerical limit on the number of unmanaged access grants to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :param reservation_key: Filter unmanaged Access Grants by reservation_key. @@ -55,7 +55,7 @@ def update( ) -> None: """Updates an unmanaged Access Grant to make it managed. - This endpoint can only be used to convert unmanaged access grants to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed access grants back to unmanaged. + This endpoint can only be used to convert unmanaged access grants to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed access grants back to unmanaged. When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. @@ -110,7 +110,7 @@ def list( :param limit: Numerical limit on the number of unmanaged access grants to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :param reservation_key: Filter unmanaged Access Grants by reservation_key. @@ -146,7 +146,7 @@ def update( ) -> None: """Updates an unmanaged Access Grant to make it managed. - This endpoint can only be used to convert unmanaged access grants to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed access grants back to unmanaged. + This endpoint can only be used to convert unmanaged access grants to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed access grants back to unmanaged. When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. diff --git a/seam/routes/access_methods.py b/seam/routes/access_methods.py index 36247c8..70c25ae 100644 --- a/seam/routes/access_methods.py +++ b/seam/routes/access_methods.py @@ -24,9 +24,9 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Assigns a pre-registered card credential, identified by `card_number`, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. - :param access_method_id: ID of the `access_method` to assign the credential to. + :param access_method_id: ID of the ``access_method`` to assign the credential to. :type access_method_id: str :param card_number: Card number of the credential to assign. @@ -67,12 +67,12 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Encodes an existing access method onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. - :param access_method_id: ID of the `access_method` to encode onto a card. + :param access_method_id: ID of the ``access_method`` to encode onto a card. :type access_method_id: str - :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `access_method`. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. :type acs_encoder_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -159,9 +159,9 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. - :param access_method_id: ID of the cloud_key `access_method` to use for the unlock operation. + :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. :type access_method_id: str :param acs_entrance_id: ID of the entrance to unlock. @@ -192,9 +192,9 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Assigns a pre-registered card credential, identified by `card_number`, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. - :param access_method_id: ID of the `access_method` to assign the credential to. + :param access_method_id: ID of the ``access_method`` to assign the credential to. :type access_method_id: str :param card_number: Card number of the credential to assign. @@ -263,12 +263,12 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Encodes an existing access method onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. - :param access_method_id: ID of the `access_method` to encode onto a card. + :param access_method_id: ID of the ``access_method`` to encode onto a card. :type access_method_id: str - :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `access_method`. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. :type acs_encoder_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -405,9 +405,9 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. - :param access_method_id: ID of the cloud_key `access_method` to use for the unlock operation. + :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. :type access_method_id: str :param acs_entrance_id: ID of the entrance to unlock. diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 8bc93ea..51a75c2 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -14,7 +14,7 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. :type acs_access_group_id: str @@ -22,13 +22,13 @@ def add_user( :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_access_group_id: str) -> None: - """Deletes a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Deletes a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to delete. :type acs_access_group_id: str""" @@ -36,7 +36,7 @@ def delete(self, *, acs_access_group_id: str) -> None: @abc.abstractmethod def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: - """Returns a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to get. :type acs_access_group_id: str @@ -54,7 +54,7 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: - """Returns a list of all [access groups](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all `access groups `_. :param acs_system_id: ID of the access system for which you want to retrieve all access groups. :type acs_system_id: str @@ -62,7 +62,7 @@ def list( :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. :type acs_user_id: str - :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using `name` or `acs_access_group_id`. + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. :type search: str :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. @@ -76,7 +76,7 @@ def list( def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: - """Returns a list of all accessible entrances for a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all accessible entrances for a specified `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. :type acs_access_group_id: str @@ -87,7 +87,7 @@ def list_accessible_entrances( @abc.abstractmethod def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all `access system users `_ in an `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. :type acs_access_group_id: str @@ -104,7 +104,7 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. :type acs_access_group_id: str @@ -129,7 +129,7 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. :type acs_access_group_id: str @@ -137,7 +137,7 @@ def add_user( :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" json_payload = {} @@ -153,7 +153,7 @@ def add_user( return None def delete(self, *, acs_access_group_id: str) -> None: - """Deletes a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Deletes a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to delete. :type acs_access_group_id: str""" @@ -167,7 +167,7 @@ def delete(self, *, acs_access_group_id: str) -> None: return None def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: - """Returns a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to get. :type acs_access_group_id: str @@ -191,7 +191,7 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: - """Returns a list of all [access groups](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all `access groups `_. :param acs_system_id: ID of the access system for which you want to retrieve all access groups. :type acs_system_id: str @@ -199,7 +199,7 @@ def list( :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. :type acs_user_id: str - :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using `name` or `acs_access_group_id`. + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. :type search: str :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. @@ -225,7 +225,7 @@ def list( def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: - """Returns a list of all accessible entrances for a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all accessible entrances for a specified `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. :type acs_access_group_id: str @@ -244,7 +244,7 @@ def list_accessible_entrances( return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) in an [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Returns a list of all `access system users `_ in an `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. :type acs_access_group_id: str @@ -267,7 +267,7 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. :type acs_access_group_id: str diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index dc89105..d9437c2 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -14,7 +14,7 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Assigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) to a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Assigns a specified `credential `_ to a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to assign to an access system user. :type acs_credential_id: str @@ -22,7 +22,7 @@ def assign( :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" raise NotImplementedError() @@ -44,42 +44,42 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: - """Creates a new [credential](https://docs.seam.co/low-level-apis/managing-credentials) for a specified [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. - :param access_method: Access method for the new credential. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. :type access_method: str - :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. :type acs_system_id: str - :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. :type acs_user_id: str - :param allowed_acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) for which the new credential grants access. + :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. :type allowed_acs_entrance_ids: List[str] :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. :type assa_abloy_vostio_metadata: Dict[str, Any] - :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable [device or system integration guide](https://docs.seam.co/device-and-system-integration-guides). + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. :type code: str :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. :type credential_manager_acs_system_id: str - :param ends_at: Date and time at which the validity of the new credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_multi_phone_sync_credential: Indicates whether the new credential is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. :type is_multi_phone_sync_credential: bool :param salto_space_metadata: Salto Space-specific metadata for the new credential. :type salto_space_metadata: Dict[str, Any] - :param starts_at: Date and time at which the validity of the new credential starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. :type starts_at: str - :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. If the access system contains a user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. :type user_identity_id: str :param visionline_metadata: Visionline-specific metadata for the new credential. @@ -91,7 +91,7 @@ def create( @abc.abstractmethod def delete(self, *, acs_credential_id: str) -> None: - """Deletes a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Deletes a specified `credential `_. :param acs_credential_id: ID of the credential that you want to delete. :type acs_credential_id: str""" @@ -99,7 +99,7 @@ def delete(self, *, acs_credential_id: str) -> None: @abc.abstractmethod def get(self, *, acs_credential_id: str) -> AcsCredential: - """Returns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Returns a specified `credential `_. :param acs_credential_id: ID of the credential that you want to get. :type acs_credential_id: str @@ -121,7 +121,7 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: - """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Returns a list of all `credentials `_. :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. :type acs_user_id: str @@ -132,7 +132,7 @@ def list( :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. :type user_identity_id: str - :param created_before: Date and time, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format, before which events to return were created. + :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. :type created_before: str :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. @@ -141,10 +141,10 @@ def list( :param limit: Number of credentials to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using `display_name`, `code`, `card_number`, `acs_user_id` or `acs_credential_id`. + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. :type search: str :returns: OK @@ -153,7 +153,7 @@ def list( @abc.abstractmethod def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: - """Returns a list of all [entrances](https://docs.seam.co/api/acs/entrances) to which a [credential](https://docs.seam.co/api/acs/credentials) grants access. + """Returns a list of all `entrances `_ to which a `credential `_ grants access. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. :type acs_credential_id: str @@ -170,7 +170,7 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Unassigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Unassigns a specified `credential `_ from a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to unassign from an access system user. :type acs_credential_id: str @@ -190,7 +190,7 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: - """Updates the code and ends at date and time for a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Updates the code and ends at date and time for a specified `credential `_. :param acs_credential_id: ID of the credential that you want to update. :type acs_credential_id: str @@ -198,7 +198,7 @@ def update( :param code: Replacement access (PIN) code for the credential that you want to update. :type code: str - :param ends_at: Replacement date and time at which the validity of the credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after the `starts_at` value that you set when creating the credential. + :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. :type ends_at: str""" raise NotImplementedError() @@ -215,7 +215,7 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Assigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) to a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Assigns a specified `credential `_ to a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to assign to an access system user. :type acs_credential_id: str @@ -223,7 +223,7 @@ def assign( :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" json_payload = {} @@ -255,42 +255,42 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: - """Creates a new [credential](https://docs.seam.co/low-level-apis/managing-credentials) for a specified [ACS user](https://docs.seam.co/low-level-apis/access-systems/user-management). For granting access, we recommend [Access Grants](https://docs.seam.co/use-cases/granting-access) instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. - :param access_method: Access method for the new credential. Supported values: `code`, `card`, `mobile_key`, `cloud_key`. + :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. :type access_method: str - :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. :type acs_system_id: str - :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. :type acs_user_id: str - :param allowed_acs_entrance_ids: Set of IDs of the [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) for which the new credential grants access. + :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. :type allowed_acs_entrance_ids: List[str] :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. :type assa_abloy_vostio_metadata: Dict[str, Any] - :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable [device or system integration guide](https://docs.seam.co/device-and-system-integration-guides). + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. :type code: str :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. :type credential_manager_acs_system_id: str - :param ends_at: Date and time at which the validity of the new credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after `starts_at`. + :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. :type ends_at: str - :param is_multi_phone_sync_credential: Indicates whether the new credential is a [multi-phone sync credential](https://docs.seam.co/capability-guides/mobile-access/issuing-mobile-credentials-from-an-access-control-system#what-are-multi-phone-sync-credentials). + :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. :type is_multi_phone_sync_credential: bool :param salto_space_metadata: Salto Space-specific metadata for the new credential. :type salto_space_metadata: Dict[str, Any] - :param starts_at: Date and time at which the validity of the new credential starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. :type starts_at: str - :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either `acs_user_id` or the combination of `user_identity_id` and `acs_system_id`. If the access system contains a user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. :type user_identity_id: str :param visionline_metadata: Visionline-specific metadata for the new credential. @@ -336,7 +336,7 @@ def create( return AcsCredential.from_dict(res["acs_credential"]) def delete(self, *, acs_credential_id: str) -> None: - """Deletes a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Deletes a specified `credential `_. :param acs_credential_id: ID of the credential that you want to delete. :type acs_credential_id: str""" @@ -350,7 +350,7 @@ def delete(self, *, acs_credential_id: str) -> None: return None def get(self, *, acs_credential_id: str) -> AcsCredential: - """Returns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Returns a specified `credential `_. :param acs_credential_id: ID of the credential that you want to get. :type acs_credential_id: str @@ -378,7 +378,7 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: - """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Returns a list of all `credentials `_. :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. :type acs_user_id: str @@ -389,7 +389,7 @@ def list( :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. :type user_identity_id: str - :param created_before: Date and time, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format, before which events to return were created. + :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. :type created_before: str :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. @@ -398,10 +398,10 @@ def list( :param limit: Number of credentials to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using `display_name`, `code`, `card_number`, `acs_user_id` or `acs_credential_id`. + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. :type search: str :returns: OK @@ -432,7 +432,7 @@ def list( return [AcsCredential.from_dict(item) for item in res["acs_credentials"]] def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: - """Returns a list of all [entrances](https://docs.seam.co/api/acs/entrances) to which a [credential](https://docs.seam.co/api/acs/credentials) grants access. + """Returns a list of all `entrances `_ to which a `credential `_ grants access. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. :type acs_credential_id: str @@ -457,7 +457,7 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Unassigns a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Unassigns a specified `credential `_ from a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to unassign from an access system user. :type acs_credential_id: str @@ -487,7 +487,7 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: - """Updates the code and ends at date and time for a specified [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Updates the code and ends at date and time for a specified `credential `_. :param acs_credential_id: ID of the credential that you want to update. :type acs_credential_id: str @@ -495,7 +495,7 @@ def update( :param code: Replacement access (PIN) code for the credential that you want to update. :type code: str - :param ends_at: Replacement date and time at which the validity of the credential ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. Must be a time in the future and after the `starts_at` value that you set when creating the credential. + :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. :type ends_at: str""" json_payload = {} diff --git a/seam/routes/acs_encoders.py b/seam/routes/acs_encoders.py index aba1e95..39b3d05 100644 --- a/seam/routes/acs_encoders.py +++ b/seam/routes/acs_encoders.py @@ -22,15 +22,15 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Encodes an existing [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). Either provide an `acs_credential_id` or an `access_method_id` + """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` - :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. :type acs_encoder_id: str - :param access_method_id: ID of the `access_method` to encode onto a card. + :param access_method_id: ID of the ``access_method`` to encode onto a card. :type access_method_id: str - :param acs_credential_id: ID of the `acs_credential` to encode onto a card. + :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. :type acs_credential_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -42,7 +42,7 @@ def encode_credential( @abc.abstractmethod def get(self, *, acs_encoder_id: str) -> AcsEncoder: - """Returns a specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Returns a specified `encoder `_. :param acs_encoder_id: ID of the encoder that you want to get. :type acs_encoder_id: str @@ -61,7 +61,7 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: - """Returns a list of all [encoders](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Returns a list of all `encoders `_. :param acs_system_id: ID of the access system for which you want to retrieve all encoders. :type acs_system_id: str @@ -75,7 +75,7 @@ def list( :param limit: Number of encoders to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :returns: OK @@ -90,7 +90,7 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Scans an encoded [acs_credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. :param acs_encoder_id: ID of the encoder to use for the scan. :type acs_encoder_id: str @@ -115,18 +115,18 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Scans a physical card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) and assigns the scanned credential to an ACS user. Provide either an `acs_user_id` or a `user_identity_id`. + """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. - :param acs_encoder_id: ID of the `acs_encoder` to use to scan the credential. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. :type acs_encoder_id: str - :param acs_user_id: ID of the `acs_user` to assign the scanned credential to. + :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. :type acs_user_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. :type salto_ks_metadata: Dict[str, Any] - :param user_identity_id: ID of the `user_identity` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. :type user_identity_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -155,15 +155,15 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Encodes an existing [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) onto a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). Either provide an `acs_credential_id` or an `access_method_id` + """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` - :param acs_encoder_id: ID of the `acs_encoder` to use to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. :type acs_encoder_id: str - :param access_method_id: ID of the `access_method` to encode onto a card. + :param access_method_id: ID of the ``access_method`` to encode onto a card. :type access_method_id: str - :param acs_credential_id: ID of the `acs_credential` to encode onto a card. + :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. :type acs_credential_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -195,7 +195,7 @@ def encode_credential( ) def get(self, *, acs_encoder_id: str) -> AcsEncoder: - """Returns a specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Returns a specified `encoder `_. :param acs_encoder_id: ID of the encoder that you want to get. :type acs_encoder_id: str @@ -220,7 +220,7 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: - """Returns a list of all [encoders](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Returns a list of all `encoders `_. :param acs_system_id: ID of the access system for which you want to retrieve all encoders. :type acs_system_id: str @@ -234,7 +234,7 @@ def list( :param limit: Number of encoders to return. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :returns: OK @@ -263,7 +263,7 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Scans an encoded [acs_credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) from a plastic card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners). + """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. :param acs_encoder_id: ID of the encoder to use for the scan. :type acs_encoder_id: str @@ -306,18 +306,18 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Scans a physical card placed on the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) and assigns the scanned credential to an ACS user. Provide either an `acs_user_id` or a `user_identity_id`. + """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. - :param acs_encoder_id: ID of the `acs_encoder` to use to scan the credential. + :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. :type acs_encoder_id: str - :param acs_user_id: ID of the `acs_user` to assign the scanned credential to. + :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. :type acs_user_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. :type salto_ks_metadata: Dict[str, Any] - :param user_identity_id: ID of the `user_identity` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. :type user_identity_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. diff --git a/seam/routes/acs_encoders_simulate.py b/seam/routes/acs_encoders_simulate.py index b1e55bf..4731d0c 100644 --- a/seam/routes/acs_encoders_simulate.py +++ b/seam/routes/acs_encoders_simulate.py @@ -13,15 +13,15 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: - """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. :type acs_encoder_id: str :param error_code: Code of the error to simulate. :type error_code: str - :param acs_credential_id: ID of the `acs_credential` that will fail to be encoded onto a card in the next request. + :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. :type acs_credential_id: str""" raise NotImplementedError() @@ -29,9 +29,9 @@ def next_credential_encode_will_fail( def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: - """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. :type acs_encoder_id: str :param scenario: Scenario to simulate. @@ -46,9 +46,9 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: - """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will fail to scan the `acs_credential` in the next request. + :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. :type acs_encoder_id: str :param error_code: @@ -66,12 +66,12 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: - """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to scan the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. :type acs_encoder_id: str - :param acs_credential_id_on_seam: ID of the Seam `acs_credential` that matches the `acs_credential` on the encoder in this simulation. + :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. :type acs_credential_id_on_seam: str :param scenario: Scenario to simulate. @@ -91,15 +91,15 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: - """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. :type acs_encoder_id: str :param error_code: Code of the error to simulate. :type error_code: str - :param acs_credential_id: ID of the `acs_credential` that will fail to be encoded onto a card in the next request. + :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. :type acs_credential_id: str""" json_payload = {} @@ -119,9 +119,9 @@ def next_credential_encode_will_fail( def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: - """Simulates that the next attempt to encode a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to encode the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. :type acs_encoder_id: str :param scenario: Scenario to simulate. @@ -147,9 +147,9 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: - """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will fail. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will fail to scan the `acs_credential` in the next request. + :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. :type acs_encoder_id: str :param error_code: @@ -179,12 +179,12 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: - """Simulates that the next attempt to scan a [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) using the specified [encoder](https://docs.seam.co/low-level-apis/access-systems/working-with-card-encoders-and-scanners) will succeed. You can only perform this action within a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. - :param acs_encoder_id: ID of the `acs_encoder` that will be used in the next request to scan the `acs_credential`. + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. :type acs_encoder_id: str - :param acs_credential_id_on_seam: ID of the Seam `acs_credential` that matches the `acs_credential` on the encoder in this simulation. + :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. :type acs_credential_id_on_seam: str :param scenario: Scenario to simulate. diff --git a/seam/routes/acs_entrances.py b/seam/routes/acs_entrances.py index 4d9772c..8952874 100644 --- a/seam/routes/acs_entrances.py +++ b/seam/routes/acs_entrances.py @@ -9,7 +9,7 @@ class AbstractAcsEntrances(abc.ABC): @abc.abstractmethod def get(self, *, acs_entrance_id: str) -> AcsEntrance: - """Returns a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance that you want to get. :type acs_entrance_id: str @@ -26,7 +26,7 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Grants a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) access to a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Grants a specified `access system user `_ access to a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. :type acs_entrance_id: str @@ -34,7 +34,7 @@ def grant_access( :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" raise NotImplementedError() @@ -53,7 +53,7 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: - """Returns a list of all [access system entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a list of all `access system entrances `_. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. :type acs_credential_id: str @@ -73,13 +73,13 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param location_id: Deprecated: Use `space_id`. + :param location_id: Deprecated: Use ``space_id``. :type location_id: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using `display_name`. + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. :type search: str :param space_id: ID of the space for which you want to list entrances. @@ -93,7 +93,7 @@ def list( def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: - """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) with access to a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a list of all `credentials `_ with access to a specified `entrance `_. :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. :type acs_entrance_id: str @@ -113,7 +113,7 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. :type acs_credential_id: str @@ -135,7 +135,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_entrance_id: str) -> AcsEntrance: - """Returns a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance that you want to get. :type acs_entrance_id: str @@ -158,7 +158,7 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Grants a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) access to a specified [access system entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Grants a specified `access system user `_ access to a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. :type acs_entrance_id: str @@ -166,7 +166,7 @@ def grant_access( :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. :type acs_user_id: str - :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same `email_address` or `phone_number` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. :type user_identity_id: str""" json_payload = {} @@ -195,7 +195,7 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: - """Returns a list of all [access system entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a list of all `access system entrances `_. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. :type acs_credential_id: str @@ -215,13 +215,13 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param location_id: Deprecated: Use `space_id`. + :param location_id: Deprecated: Use ``space_id``. :type location_id: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using `display_name`. + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. :type search: str :param space_id: ID of the space for which you want to list entrances. @@ -259,7 +259,7 @@ def list( def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: - """Returns a list of all [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) with access to a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details). + """Returns a list of all `credentials `_ with access to a specified `entrance `_. :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. :type acs_entrance_id: str @@ -289,7 +289,7 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Remotely unlocks a specified [entrance](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. :type acs_credential_id: str diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index ed43327..0c4226d 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -8,7 +8,7 @@ class AbstractAcsSystems(abc.ABC): @abc.abstractmethod def get(self, *, acs_system_id: str) -> AcsSystem: - """Returns a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + """Returns a specified `access system `_. :param acs_system_id: ID of the access system that you want to get. :type acs_system_id: str @@ -25,9 +25,9 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: - """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems). + """Returns a list of all `access systems `_. - To filter the list of returned access systems by a specific connected account ID, include the `connected_account_id` in the request body. If you omit the `connected_account_id` parameter, the response includes all access systems connected to your workspace. + To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. :type connected_account_id: str @@ -35,7 +35,7 @@ def list( :param customer_key: Customer key for which you want to list access systems. :type customer_key: str - :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using `name` or `acs_system_id`. + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. :type search: str :returns: OK @@ -46,9 +46,9 @@ def list( def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: - """Returns a list of all credential manager systems that are compatible with a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + """Returns a list of all credential manager systems that are compatible with a specified `access system `_. - Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding `acs_system_id` in the request body. + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. :type acs_system_id: str @@ -84,7 +84,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_system_id: str) -> AcsSystem: - """Returns a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + """Returns a specified `access system `_. :param acs_system_id: ID of the access system that you want to get. :type acs_system_id: str @@ -107,9 +107,9 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: - """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems). + """Returns a list of all `access systems `_. - To filter the list of returned access systems by a specific connected account ID, include the `connected_account_id` in the request body. If you omit the `connected_account_id` parameter, the response includes all access systems connected to your workspace. + To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. :type connected_account_id: str @@ -117,7 +117,7 @@ def list( :param customer_key: Customer key for which you want to list access systems. :type customer_key: str - :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using `name` or `acs_system_id`. + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. :type search: str :returns: OK @@ -138,9 +138,9 @@ def list( def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: - """Returns a list of all credential manager systems that are compatible with a specified [access system](https://docs.seam.co/low-level-apis/access-systems). + """Returns a list of all credential manager systems that are compatible with a specified `access system `_. - Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding `acs_system_id` in the request body. + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. :type acs_system_id: str diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index 084de01..ac15053 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -10,7 +10,7 @@ class AbstractAcsUsers(abc.ABC): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. :type acs_access_group_id: str @@ -32,7 +32,7 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: - """Creates a new [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Creates a new `access system user `_. :param acs_system_id: ID of the access system to which you want to add the new access system user. :type acs_system_id: str @@ -40,7 +40,7 @@ def create( :param full_name: Full name of the new access system user. :type full_name: str - :param access_schedule: `starts_at` and `ends_at` timestamps for the new access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. :type access_schedule: Dict[str, Any] :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. @@ -49,10 +49,10 @@ def create( :param email: Deprecated: use email_address. :type email: str - :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param email_address: Email address of the `access system user `_. :type email_address: str - :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). :type phone_number: str :param user_identity_id: ID of the user identity with which you want to associate the new access system user. @@ -70,7 +70,7 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Deletes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) and invalidates the access system user's [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -90,7 +90,7 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: - """Returns a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Returns a specified `access system user `_. :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. :type acs_user_id: str @@ -118,9 +118,9 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Returns a list of all `access system users `_. - :param acs_system_id: ID of the `acs_system` for which you want to retrieve all access system users. + :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. :type acs_system_id: str :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. @@ -129,10 +129,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `acs_user_id`, `user_identity_id`, `user_identity_full_name` or `user_identity_phone_number`. + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. :type search: str :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. @@ -141,7 +141,7 @@ def list( :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. :type user_identity_id: str - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, `+15555550100`). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). :type user_identity_phone_number: str :returns: OK @@ -156,7 +156,7 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: - """Lists the [entrances](https://docs.seam.co/api/acs/entrances) to which a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) has access. + """Lists the `entrances `_ to which a specified `access system user `_ has access. :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -179,7 +179,7 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. :type acs_access_group_id: str @@ -199,7 +199,7 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Revokes access to all [entrances](https://docs.seam.co/api/acs/entrances) for a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Revokes access to all `entrances `_ for a specified `access system user `_. :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -219,7 +219,7 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """[Suspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#suspend-an-acs-user) a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can [unsuspend](https://docs.seam.co/api/acs/users/unsuspend) them. + """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. :type acs_system_id: str @@ -239,7 +239,7 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """[Unsuspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#unsuspend-an-acs-user) a specified suspended [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). While [suspending an access system user](https://docs.seam.co/api/acs/users/suspend) revokes their access temporarily, unsuspending the access system user restores their access. + """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -265,9 +265,9 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Updates the properties of a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Updates the properties of a specified `access system user `_. - :param access_schedule: `starts_at` and `ends_at` timestamps for the access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. :type access_schedule: Dict[str, Any] :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. @@ -279,16 +279,16 @@ def update( :param email: Deprecated: use email_address. :type email: str - :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param email_address: Email address of the `access system user `_. :type email_address: str - :param full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param full_name: Full name of the `access system user `_. :type full_name: str :param hid_acs_system_id: ID of the HID access control system associated with the user. :type hid_acs_system_id: str - :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). :type phone_number: str :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. @@ -304,7 +304,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. :type acs_access_group_id: str @@ -334,7 +334,7 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: - """Creates a new [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Creates a new `access system user `_. :param acs_system_id: ID of the access system to which you want to add the new access system user. :type acs_system_id: str @@ -342,7 +342,7 @@ def create( :param full_name: Full name of the new access system user. :type full_name: str - :param access_schedule: `starts_at` and `ends_at` timestamps for the new access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. :type access_schedule: Dict[str, Any] :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. @@ -351,10 +351,10 @@ def create( :param email: Deprecated: use email_address. :type email: str - :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param email_address: Email address of the `access system user `_. :type email_address: str - :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). :type phone_number: str :param user_identity_id: ID of the user identity with which you want to associate the new access system user. @@ -392,7 +392,7 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Deletes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) and invalidates the access system user's [credentials](https://docs.seam.co/low-level-apis/access-systems/managing-credentials). + """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -422,7 +422,7 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: - """Returns a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Returns a specified `access system user `_. :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. :type acs_user_id: str @@ -460,9 +460,9 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Returns a list of all `access system users `_. - :param acs_system_id: ID of the `acs_system` for which you want to retrieve all access system users. + :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. :type acs_system_id: str :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. @@ -471,10 +471,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `acs_user_id`, `user_identity_id`, `user_identity_full_name` or `user_identity_phone_number`. + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. :type search: str :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. @@ -483,7 +483,7 @@ def list( :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. :type user_identity_id: str - :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in [E.164 format](https://www.itu.int/rec/T-REC-E.164/en) (for example, `+15555550100`). + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). :type user_identity_phone_number: str :returns: OK @@ -518,7 +518,7 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: - """Lists the [entrances](https://docs.seam.co/api/acs/entrances) to which a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) has access. + """Lists the `entrances `_ to which a specified `access system user `_ has access. :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -553,7 +553,7 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [access group](https://docs.seam.co/low-level-apis/access-systems/user-management/assigning-users-to-access-groups). + """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. :type acs_access_group_id: str @@ -583,7 +583,7 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Revokes access to all [entrances](https://docs.seam.co/api/acs/entrances) for a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Revokes access to all `entrances `_ for a specified `access system user `_. :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -613,7 +613,7 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """[Suspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#suspend-an-acs-user) a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can [unsuspend](https://docs.seam.co/api/acs/users/unsuspend) them. + """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. :type acs_system_id: str @@ -643,7 +643,7 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """[Unsuspends](https://docs.seam.co/low-level-apis/access-systems/user-management/suspending-and-unsuspending-users#unsuspend-an-acs-user) a specified suspended [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). While [suspending an access system user](https://docs.seam.co/api/acs/users/suspend) revokes their access temporarily, unsuspending the access system user restores their access. + """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. :type acs_system_id: str @@ -679,9 +679,9 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: - """Updates the properties of a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + """Updates the properties of a specified `access system user `_. - :param access_schedule: `starts_at` and `ends_at` timestamps for the access system user's access. If you specify an `access_schedule`, you may include both `starts_at` and `ends_at`. If you omit `starts_at`, it defaults to the current time. `ends_at` is optional and must be a time in the future and after `starts_at`. + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. :type access_schedule: Dict[str, Any] :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. @@ -693,16 +693,16 @@ def update( :param email: Deprecated: use email_address. :type email: str - :param email_address: Email address of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param email_address: Email address of the `access system user `_. :type email_address: str - :param full_name: Full name of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management). + :param full_name: Full name of the `access system user `_. :type full_name: str :param hid_acs_system_id: ID of the HID access control system associated with the user. :type hid_acs_system_id: str - :param phone_number: Phone number of the [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) in E.164 format (for example, `+15555550100`). + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). :type phone_number: str :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. diff --git a/seam/routes/action_attempts.py b/seam/routes/action_attempts.py index b64f23f..b4ea0fd 100644 --- a/seam/routes/action_attempts.py +++ b/seam/routes/action_attempts.py @@ -14,7 +14,7 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Returns a specified [action attempt](https://docs.seam.co/core-concepts/action-attempts). + """Returns a specified `action attempt `_. :param action_attempt_id: ID of the action attempt that you want to get. :type action_attempt_id: str @@ -35,7 +35,7 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: - """Returns a list of the [action attempts](https://docs.seam.co/core-concepts/action-attempts) that you specify as an array of `action_attempt_id`s. + """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. :param action_attempt_ids: IDs of the action attempts that you want to retrieve. :type action_attempt_ids: List[str] @@ -46,7 +46,7 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :returns: OK @@ -65,7 +65,7 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Returns a specified [action attempt](https://docs.seam.co/core-concepts/action-attempts). + """Returns a specified `action attempt `_. :param action_attempt_id: ID of the action attempt that you want to get. :type action_attempt_id: str @@ -102,7 +102,7 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: - """Returns a list of the [action attempts](https://docs.seam.co/core-concepts/action-attempts) that you specify as an array of `action_attempt_id`s. + """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. :param action_attempt_ids: IDs of the action attempts that you want to retrieve. :type action_attempt_ids: List[str] @@ -113,7 +113,7 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str :returns: OK diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index 4563c55..4df6be1 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -19,12 +19,12 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: - """Creates a new [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Creates a new `client session `_. - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) for which you want to create a client session. + :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) for which you want to create a client session. + :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. :type connected_account_ids: List[str] :param customer_id: Customer ID that you want to associate with the new client session. @@ -33,16 +33,16 @@ def create( :param customer_key: Customer key that you want to associate with the new client session. :type customer_key: str - :param expires_at: Date and time at which the client session should expire, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. :type expires_at: str :param user_identifier_key: Your user ID for the user for whom you want to create a client session. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to create a client session. + :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str] :returns: OK @@ -51,7 +51,7 @@ def create( @abc.abstractmethod def delete(self, *, client_session_id: str) -> None: - """Deletes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Deletes a `client session `_. :param client_session_id: ID of the client session that you want to delete. :type client_session_id: str""" @@ -64,7 +64,7 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: - """Returns a specified [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Returns a specified `client session `_. :param client_session_id: ID of the client session that you want to get. :type client_session_id: str @@ -87,24 +87,24 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: - """Returns a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session (or that are already associated with the existing client session). + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/api/connected_accounts) that you want to associate with the client session (or that are already associated with the existing client session). + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). :type connected_account_ids: List[str] - :param expires_at: Date and time at which the client session should expire in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. If the client session already exists, this will update the expiration before returning it. + :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. :type expires_at: str :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session (or that are already associated with the existing client session). + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str] :returns: OK @@ -122,24 +122,24 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: - """Grants a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) access to one or more resources, such as [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews), [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity), and so on. + """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. :param client_session_id: ID of the client session to which you want to grant access to resources. :type client_session_id: str - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session. + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that you want to associate with the client session. + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. :type connected_account_ids: List[str] :param user_identifier_key: Your user ID for the user that you want to associate with the client session. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str]""" raise NotImplementedError() @@ -153,18 +153,18 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: - """Returns a list of all [client sessions](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. :type client_session_id: str - :param connect_webview_id: ID of the [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. :type connect_webview_id: str :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. :type user_identity_id: str :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. @@ -176,9 +176,9 @@ def list( @abc.abstractmethod def revoke(self, *, client_session_id: str) -> None: - """Revokes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Revokes a `client session `_. - Note that [deleting a client session](https://docs.seam.co/api/client_sessions/delete) is a separate action. + Note that `deleting a client session `_ is a separate action. :param client_session_id: ID of the client session that you want to revoke. :type client_session_id: str""" @@ -202,12 +202,12 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: - """Creates a new [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Creates a new `client session `_. - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) for which you want to create a client session. + :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) for which you want to create a client session. + :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. :type connected_account_ids: List[str] :param customer_id: Customer ID that you want to associate with the new client session. @@ -216,16 +216,16 @@ def create( :param customer_key: Customer key that you want to associate with the new client session. :type customer_key: str - :param expires_at: Date and time at which the client session should expire, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. :type expires_at: str :param user_identifier_key: Your user ID for the user for whom you want to create a client session. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to create a client session. + :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id` instead. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str] :returns: OK @@ -254,7 +254,7 @@ def create( return ClientSession.from_dict(res["client_session"]) def delete(self, *, client_session_id: str) -> None: - """Deletes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Deletes a `client session `_. :param client_session_id: ID of the client session that you want to delete. :type client_session_id: str""" @@ -273,7 +273,7 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: - """Returns a specified [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Returns a specified `client session `_. :param client_session_id: ID of the client session that you want to get. :type client_session_id: str @@ -304,24 +304,24 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: - """Returns a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session (or that are already associated with the existing client session). + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/api/connected_accounts) that you want to associate with the client session (or that are already associated with the existing client session). + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). :type connected_account_ids: List[str] - :param expires_at: Date and time at which the client session should expire in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. If the client session already exists, this will update the expiration before returning it. + :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. :type expires_at: str :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session (or that are already associated with the existing client session). + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str] :returns: OK @@ -355,24 +355,24 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: - """Grants a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens) access to one or more resources, such as [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews), [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity), and so on. + """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. :param client_session_id: ID of the client session to which you want to grant access to resources. :type client_session_id: str - :param connect_webview_ids: IDs of the [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews) that you want to associate with the client session. + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. :type connect_webview_ids: List[str] - :param connected_account_ids: IDs of the [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that you want to associate with the client session. + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. :type connected_account_ids: List[str] :param user_identifier_key: Your user ID for the user that you want to associate with the client session. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. :type user_identity_id: str - :param user_identity_ids: Deprecated: Use `user_identity_id`. IDs of the [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) that you want to associate with the client session. + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. :type user_identity_ids: List[str]""" json_payload = {} @@ -402,18 +402,18 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: - """Returns a list of all [client sessions](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. :type client_session_id: str - :param connect_webview_id: ID of the [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) for which you want to retrieve client sessions. + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. :type connect_webview_id: str :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. :type user_identifier_key: str - :param user_identity_id: ID of the [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) for which you want to retrieve client sessions. + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. :type user_identity_id: str :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. @@ -439,9 +439,9 @@ def list( return [ClientSession.from_dict(item) for item in res["client_sessions"]] def revoke(self, *, client_session_id: str) -> None: - """Revokes a [client session](https://docs.seam.co/core-concepts/authentication/client-session-tokens). + """Revokes a `client session `_. - Note that [deleting a client session](https://docs.seam.co/api/client_sessions/delete) is a separate action. + Note that `deleting a client session `_ is a separate action. :param client_session_id: ID of the client session that you want to revoke. :type client_session_id: str""" diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index 8cd64bb..4b08c9b 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -21,27 +21,27 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: - """Creates a new [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Creates a new `Connect Webview `_. - To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a `connect_webview`. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a ``connect_webview``. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. - You should make a new `connect_webview` for each unique login request. Each `connect_webview` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + You should make a new ``connect_webview`` for each unique login request. Each ``connect_webview`` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. - See also: [Connect Webview Process](https://docs.seam.co/core-concepts/connect-webviews/connect-webview-process). + See also: `Connect Webview Process `_. :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. :type accepted_capabilities: List[str] - :param accepted_providers: Accepted device provider keys as an alternative to `provider_category`. Use this parameter to specify accepted providers explicitly. See [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). To list all provider keys, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with no filters. + :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. :type accepted_providers: List[str] - :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. :type automatically_manage_new_devices: bool - :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview) enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that were connected using the Connect Webview, making it easy to find and filter these resources in your [workspace](https://docs.seam.co/core-concepts/workspaces). You can also [filter Connect Webviews by custom metadata](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. :type custom_metadata: Dict[str, Any] - :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the `custom_redirect_url`. + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. :type custom_redirect_failure_url: str :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. @@ -53,10 +53,10 @@ def create( :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. :type excluded_providers: List[str] - :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with the desired `provider_category` filter. + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. :type provider_category: str - :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. :type wait_for_device_creation: bool :returns: OK @@ -65,7 +65,7 @@ def create( @abc.abstractmethod def delete(self, *, connect_webview_id: str) -> None: - """Deletes a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Deletes a `Connect Webview `_. You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. @@ -75,9 +75,9 @@ def delete(self, *, connect_webview_id: str) -> None: @abc.abstractmethod def get(self, *, connect_webview_id: str) -> ConnectWebview: - """Returns a specified [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Returns a specified `Connect Webview `_. - Unless you're using a `custom_redirect_url`, you should poll a newly-created `connect_webview` to find out if the user has signed in or to get details about what devices they've connected. + Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. :param connect_webview_id: ID of the Connect Webview that you want to get. :type connect_webview_id: str @@ -97,9 +97,9 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: - """Returns a list of all [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews). + """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to [filter Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). Returns Connect Webviews with `custom_metadata` that contains all of the provided key:value pairs. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list connect webviews. @@ -108,10 +108,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using `connect_webview_id`, `accepted_providers`, `custom_metadata`, or `customer_key`. + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. :type search: str :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. @@ -141,27 +141,27 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: - """Creates a new [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Creates a new `Connect Webview `_. - To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a `connect_webview`. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a ``connect_webview``. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. - You should make a new `connect_webview` for each unique login request. Each `connect_webview` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + You should make a new ``connect_webview`` for each unique login request. Each ``connect_webview`` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. - See also: [Connect Webview Process](https://docs.seam.co/core-concepts/connect-webviews/connect-webview-process). + See also: `Connect Webview Process `_. :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. :type accepted_capabilities: List[str] - :param accepted_providers: Accepted device provider keys as an alternative to `provider_category`. Use this parameter to specify accepted providers explicitly. See [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). To list all provider keys, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with no filters. + :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. :type accepted_providers: List[str] - :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. :type automatically_manage_new_devices: bool - :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a Connect Webview](https://docs.seam.co/core-concepts/connect-webviews/attaching-custom-data-to-the-connect-webview) enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any [connected accounts](https://docs.seam.co/core-concepts/connected-accounts) that were connected using the Connect Webview, making it easy to find and filter these resources in your [workspace](https://docs.seam.co/core-concepts/workspaces). You can also [filter Connect Webviews by custom metadata](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. :type custom_metadata: Dict[str, Any] - :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the `custom_redirect_url`. + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. :type custom_redirect_failure_url: str :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. @@ -173,10 +173,10 @@ def create( :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. :type excluded_providers: List[str] - :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use [`/devices/list_device_providers`](https://docs.seam.co/api/devices/list_device_providers) with the desired `provider_category` filter. + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. :type provider_category: str - :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: [Customize the Behavior Settings of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-behavior-settings-of-your-connect-webviews). + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. :type wait_for_device_creation: bool :returns: OK @@ -211,7 +211,7 @@ def create( return ConnectWebview.from_dict(res["connect_webview"]) def delete(self, *, connect_webview_id: str) -> None: - """Deletes a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Deletes a `Connect Webview `_. You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. @@ -227,9 +227,9 @@ def delete(self, *, connect_webview_id: str) -> None: return None def get(self, *, connect_webview_id: str) -> ConnectWebview: - """Returns a specified [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews). + """Returns a specified `Connect Webview `_. - Unless you're using a `custom_redirect_url`, you should poll a newly-created `connect_webview` to find out if the user has signed in or to get details about what devices they've connected. + Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. :param connect_webview_id: ID of the Connect Webview that you want to get. :type connect_webview_id: str @@ -255,9 +255,9 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: - """Returns a list of all [Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews). + """Returns a list of all `Connect Webviews `_. - :param custom_metadata_has: Custom metadata pairs by which you want to [filter Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/filtering-connect-webviews-by-custom-metadata). Returns Connect Webviews with `custom_metadata` that contains all of the provided key:value pairs. + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list connect webviews. @@ -266,10 +266,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using `connect_webview_id`, `accepted_providers`, `custom_metadata`, or `customer_key`. + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. :type search: str :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 205d248..7e0e943 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -17,11 +17,11 @@ def simulate(self) -> AbstractConnectedAccountsSimulate: @abc.abstractmethod def delete(self, *, connected_account_id: str) -> None: - """Deletes a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Deletes a specified `connected account `_. - Deleting a connected account triggers a `connected_account.deleted` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + Deleting a connected account triggers a ``connected_account.deleted`` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. - For example, if you delete a connected account with a device that has an access code, Seam sends a `connected_account.deleted` event, a `device.deleted` event, and an `access_code.deleted` event, but Seam does not remove the access code from the device. + For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. :param connected_account_id: ID of the connected account that you want to delete. :type connected_account_id: str""" @@ -31,7 +31,7 @@ def delete(self, *, connected_account_id: str) -> None: def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: - """Returns a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Returns a specified `connected account `_. :param connected_account_id: ID of the connected account that you want to get. :type connected_account_id: str @@ -55,9 +55,9 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: - """Returns a list of all [connected accounts](https://docs.seam.co/core-concepts/connected-accounts). + """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with `custom_metadata` that contains all of the provided key:value pairs. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key by which you want to filter connected accounts. @@ -66,10 +66,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using `connected_account_id`, `account_type`, `customer_key`, `custom_metadata`, `user_identifier.username`, `user_identifier.email` or `user_identifier.phone`. + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. :type search: str :param space_id: ID of the space by which you want to filter connected accounts. @@ -84,7 +84,7 @@ def list( @abc.abstractmethod def sync(self, *, connected_account_id: str) -> None: - """Request a [connected account](https://docs.seam.co/core-concepts/connected-accounts) sync attempt for the specified `connected_account_id`. + """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. :param connected_account_id: ID of the connected account that you want to sync. :type connected_account_id: str""" @@ -101,24 +101,24 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: - """Updates a [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Updates a `connected account `_. :param connected_account_id: ID of the connected account that you want to update. :type connected_account_id: str - :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are `lock`, `thermostat`, `noise_sensor`, and `access_control`. + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. :type accepted_capabilities: List[str] - :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. :type automatically_manage_new_devices: bool - :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter connected accounts by the desired metadata](https://docs.seam.co/core-concepts/connected-accounts/filtering-connected-accounts-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. :type custom_metadata: Dict[str, Any] :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. :type customer_key: str - :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, `Booking from Airbnb House 1`. + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. :type display_name: str""" raise NotImplementedError() @@ -134,11 +134,11 @@ def simulate(self) -> ConnectedAccountsSimulate: return self._simulate def delete(self, *, connected_account_id: str) -> None: - """Deletes a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Deletes a specified `connected account `_. - Deleting a connected account triggers a `connected_account.deleted` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + Deleting a connected account triggers a ``connected_account.deleted`` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. - For example, if you delete a connected account with a device that has an access code, Seam sends a `connected_account.deleted` event, a `device.deleted` event, and an `access_code.deleted` event, but Seam does not remove the access code from the device. + For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. :param connected_account_id: ID of the connected account that you want to delete. :type connected_account_id: str""" @@ -154,7 +154,7 @@ def delete(self, *, connected_account_id: str) -> None: def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: - """Returns a specified [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Returns a specified `connected account `_. :param connected_account_id: ID of the connected account that you want to get. :type connected_account_id: str @@ -186,9 +186,9 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: - """Returns a list of all [connected accounts](https://docs.seam.co/core-concepts/connected-accounts). + """Returns a list of all `connected accounts `_. - :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with `custom_metadata` that contains all of the provided key:value pairs. + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key by which you want to filter connected accounts. @@ -197,10 +197,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using `connected_account_id`, `account_type`, `customer_key`, `custom_metadata`, `user_identifier.username`, `user_identifier.email` or `user_identifier.phone`. + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. :type search: str :param space_id: ID of the space by which you want to filter connected accounts. @@ -233,7 +233,7 @@ def list( return [ConnectedAccount.from_dict(item) for item in res["connected_accounts"]] def sync(self, *, connected_account_id: str) -> None: - """Request a [connected account](https://docs.seam.co/core-concepts/connected-accounts) sync attempt for the specified `connected_account_id`. + """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. :param connected_account_id: ID of the connected account that you want to sync. :type connected_account_id: str""" @@ -256,24 +256,24 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: - """Updates a [connected account](https://docs.seam.co/core-concepts/connected-accounts). + """Updates a `connected account `_. :param connected_account_id: ID of the connected account that you want to update. :type connected_account_id: str - :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are `lock`, `thermostat`, `noise_sensor`, and `access_control`. + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. :type accepted_capabilities: List[str] - :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as [managed devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. :type automatically_manage_new_devices: bool - :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a connected account](https://docs.seam.co/core-concepts/connected-accounts/adding-custom-metadata-to-a-connected-account) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter connected accounts by the desired metadata](https://docs.seam.co/core-concepts/connected-accounts/filtering-connected-accounts-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. :type custom_metadata: Dict[str, Any] :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. :type customer_key: str - :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, `Booking from Airbnb House 1`. + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. :type display_name: str""" json_payload = {} diff --git a/seam/routes/connected_accounts_simulate.py b/seam/routes/connected_accounts_simulate.py index a4a0266..64fae4c 100644 --- a/seam/routes/connected_accounts_simulate.py +++ b/seam/routes/connected_accounts_simulate.py @@ -7,7 +7,7 @@ class AbstractConnectedAccountsSimulate(abc.ABC): @abc.abstractmethod def disconnect(self, *, connected_account_id: str) -> None: - """Simulates a connected account becoming disconnected from Seam. Only applicable for [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. :param connected_account_id: ID of the connected account you want to simulate as disconnected. :type connected_account_id: str""" @@ -20,7 +20,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def disconnect(self, *, connected_account_id: str) -> None: - """Simulates a connected account becoming disconnected from Seam. Only applicable for [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. :param connected_account_id: ID of the connected account you want to simulate as disconnected. :type connected_account_id: str""" diff --git a/seam/routes/devices.py b/seam/routes/devices.py index 89eace4..d692108 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -22,9 +22,9 @@ def unmanaged(self) -> AbstractDevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: - """Returns a specified [device](https://docs.seam.co/core-concepts/devices). + """Returns a specified `device `_. - You must specify either `device_id` or `name`. + You must specify either ``device_id`` or ``name``. :param device_id: ID of the device that you want to get. :type device_id: str @@ -57,7 +57,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices). + """Returns a list of all `devices `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -71,7 +71,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -92,16 +92,16 @@ def list( :param manufacturer: Manufacturer for which you want to list devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -117,9 +117,9 @@ def list_device_providers( ) -> List[DeviceProvider]: """Returns a list of all device providers. - The information that this endpoint returns for each provider includes a set of [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags), such as `device_provider.can_remotely_unlock`. If at least one supported device from a provider has a specific capability, the corresponding capability flag is `true`. + The information that this endpoint returns for each provider includes a set of `capability flags `_, such as ``device_provider.can_remotely_unlock``. If at least one supported device from a provider has a specific capability, the corresponding capability flag is ``true``. - When you create a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews), you can customize the providers—that is, the brands—that it displays. In the `/connect_webviews/create` request, include the desired set of device provider keys in the `accepted_providers` parameter. See also [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. :param provider_category: Category for which you want to list providers. :type provider_category: str @@ -147,20 +147,20 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: - """Updates a specified [device](https://docs.seam.co/core-concepts/devices). + """Updates a specified `device `_. - You can add or change [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for a device, change the device's name, or [convert a managed device to unmanaged](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. :param device_id: ID of the device that you want to update. :type device_id: str - :param backup_access_code_pool_enabled: Indicates whether the device's [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) is enabled. Set to `false` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. :type backup_access_code_pool_enabled: bool - :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter devices by the desired metadata](https://docs.seam.co/core-concepts/devices/filtering-devices-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. :type custom_metadata: Dict[str, Any] - :param is_managed: Indicates whether the device is managed. To unmanage a device, set `is_managed` to `false`. + :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. :type is_managed: bool :param name: Name for the device. @@ -189,9 +189,9 @@ def unmanaged(self) -> DevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: - """Returns a specified [device](https://docs.seam.co/core-concepts/devices). + """Returns a specified `device `_. - You must specify either `device_id` or `name`. + You must specify either ``device_id`` or ``name``. :param device_id: ID of the device that you want to get. :type device_id: str @@ -232,7 +232,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices). + """Returns a list of all `devices `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -246,7 +246,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -267,16 +267,16 @@ def list( :param manufacturer: Manufacturer for which you want to list devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -328,9 +328,9 @@ def list_device_providers( ) -> List[DeviceProvider]: """Returns a list of all device providers. - The information that this endpoint returns for each provider includes a set of [capability flags](https://docs.seam.co/capability-guides/device-and-system-capabilities#capability-flags), such as `device_provider.can_remotely_unlock`. If at least one supported device from a provider has a specific capability, the corresponding capability flag is `true`. + The information that this endpoint returns for each provider includes a set of `capability flags `_, such as ``device_provider.can_remotely_unlock``. If at least one supported device from a provider has a specific capability, the corresponding capability flag is ``true``. - When you create a [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews), you can customize the providers—that is, the brands—that it displays. In the `/connect_webviews/create` request, include the desired set of device provider keys in the `accepted_providers` parameter. See also [Customize the Brands to Display in Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-brands-to-display-in-your-connect-webviews). + When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. :param provider_category: Category for which you want to list providers. :type provider_category: str @@ -370,20 +370,20 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: - """Updates a specified [device](https://docs.seam.co/core-concepts/devices). + """Updates a specified `device `_. - You can add or change [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) for a device, change the device's name, or [convert a managed device to unmanaged](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. :param device_id: ID of the device that you want to update. :type device_id: str - :param backup_access_code_pool_enabled: Indicates whether the device's [backup access code pool](https://docs.seam.co/low-level-apis/smart-locks/access-codes/backup-access-codes) is enabled. Set to `false` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. :type backup_access_code_pool_enabled: bool - :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. [Adding custom metadata to a device](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) enables you to store custom information, like customer details or internal IDs from your application. Then, you can [filter devices by the desired metadata](https://docs.seam.co/core-concepts/devices/filtering-devices-by-custom-metadata). + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. :type custom_metadata: Dict[str, Any] - :param is_managed: Indicates whether the device is managed. To unmanage a device, set `is_managed` to `false`. + :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. :type is_managed: bool :param name: Name for the device. diff --git a/seam/routes/devices_simulate.py b/seam/routes/devices_simulate.py index c34232c..7a9fac0 100644 --- a/seam/routes/devices_simulate.py +++ b/seam/routes/devices_simulate.py @@ -7,7 +7,7 @@ class AbstractDevicesSimulate(abc.ABC): @abc.abstractmethod def connect(self, *, device_id: str) -> None: - """Simulates connecting a device to Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate connecting to Seam. :type device_id: str""" @@ -18,7 +18,7 @@ def connect_to_hub(self, *, device_id: str) -> None: """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. Only applicable for sandbox workspaces and currently implemented for August and TTLock locks. - This will clear the `hub_disconnected` error on the device. + This will clear the ``hub_disconnected`` error on the device. :param device_id: ID of the device whose hub you want to reconnect. :type device_id: str""" @@ -26,7 +26,7 @@ def connect_to_hub(self, *, device_id: str) -> None: @abc.abstractmethod def disconnect(self, *, device_id: str) -> None: - """Simulates disconnecting a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate disconnecting from Seam. :type device_id: str""" @@ -37,7 +37,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: """Simulates taking the Wi‑Fi hub (bridge) offline for a device. Only applicable for sandbox workspaces and currently implemented for August, TTLock, and IglooHome devices. - This will set the `hub_disconnected` error on the device, or mark the + This will set the ``hub_disconnected`` error on the device, or mark the IglooHome bridge offline in sandbox. :param device_id: ID of the device whose hub you want to disconnect. @@ -47,7 +47,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: @abc.abstractmethod def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). - Send `is_expired: true` to simulate an expired subscription, or `false` to simulate an active subscription. + Send ``is_expired: true`` to simulate an expired subscription, or ``false`` to simulate an active subscription. The actual device error is created/cleared by the poller after this state change. :param device_id: @@ -59,7 +59,7 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: @abc.abstractmethod def remove(self, *, device_id: str) -> None: - """Simulates removing a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate removing from Seam. :type device_id: str""" @@ -72,7 +72,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def connect(self, *, device_id: str) -> None: - """Simulates connecting a device to Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate connecting to Seam. :type device_id: str""" @@ -89,7 +89,7 @@ def connect_to_hub(self, *, device_id: str) -> None: """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. Only applicable for sandbox workspaces and currently implemented for August and TTLock locks. - This will clear the `hub_disconnected` error on the device. + This will clear the ``hub_disconnected`` error on the device. :param device_id: ID of the device whose hub you want to reconnect. :type device_id: str""" @@ -103,7 +103,7 @@ def connect_to_hub(self, *, device_id: str) -> None: return None def disconnect(self, *, device_id: str) -> None: - """Simulates disconnecting a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate disconnecting from Seam. :type device_id: str""" @@ -120,7 +120,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: """Simulates taking the Wi‑Fi hub (bridge) offline for a device. Only applicable for sandbox workspaces and currently implemented for August, TTLock, and IglooHome devices. - This will set the `hub_disconnected` error on the device, or mark the + This will set the ``hub_disconnected`` error on the device, or mark the IglooHome bridge offline in sandbox. :param device_id: ID of the device whose hub you want to disconnect. @@ -136,7 +136,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). - Send `is_expired: true` to simulate an expired subscription, or `false` to simulate an active subscription. + Send ``is_expired: true`` to simulate an expired subscription, or ``false`` to simulate an active subscription. The actual device error is created/cleared by the poller after this state change. :param device_id: @@ -156,7 +156,7 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: return None def remove(self, *, device_id: str) -> None: - """Simulates removing a device from Seam. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your App Against Device Disconnection and Removal](https://docs.seam.co/core-concepts/devices/testing-your-app-against-device-disconnection-and-removal). + """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate removing from Seam. :type device_id: str""" diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index ec64262..6e59288 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -10,11 +10,11 @@ class AbstractDevicesUnmanaged(abc.ABC): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: - """Returns a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + """Returns a specified `unmanaged device `_. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. - You must specify either `device_id` or `name`. + You must specify either ``device_id`` or ``name``. :param device_id: ID of the unmanaged device that you want to get. :type device_id: str @@ -47,9 +47,9 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: - """Returns a list of all [unmanaged devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + """Returns a list of all `unmanaged devices `_. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -63,7 +63,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -84,16 +84,16 @@ def list( :param manufacturer: Manufacturer for which you want to list devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -111,9 +111,9 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: - """Updates a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). To convert an unmanaged device to managed, set `is_managed` to `true`. + """Updates a specified `unmanaged device `_. To convert an unmanaged device to managed, set ``is_managed`` to ``true``. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param device_id: ID of the unmanaged device that you want to update. :type device_id: str @@ -121,7 +121,7 @@ def update( :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. :type custom_metadata: Dict[str, Any] - :param is_managed: Indicates whether the device is managed. Set this parameter to `true` to convert an unmanaged device to managed. + :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. :type is_managed: bool""" raise NotImplementedError() @@ -134,11 +134,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: - """Returns a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + """Returns a specified `unmanaged device `_. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. - You must specify either `device_id` or `name`. + You must specify either ``device_id`` or ``name``. :param device_id: ID of the unmanaged device that you want to get. :type device_id: str @@ -179,9 +179,9 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: - """Returns a list of all [unmanaged devices](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). + """Returns a list of all `unmanaged devices `_. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -195,7 +195,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -216,16 +216,16 @@ def list( :param manufacturer: Manufacturer for which you want to list devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -279,9 +279,9 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: - """Updates a specified [unmanaged device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices). To convert an unmanaged device to managed, set `is_managed` to `true`. + """Updates a specified `unmanaged device `_. To convert an unmanaged device to managed, set ``is_managed`` to ``true``. - An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any [access codes](https://docs.seam.co/low-level-apis/smart-locks/access-codes/migrating-existing-access-codes) on an unmanaged device are unmanaged. To control an unmanaged device with Seam, [convert it to a managed device](https://docs.seam.co/core-concepts/devices/managed-and-unmanaged-devices#convert-an-unmanaged-device-to-managed). + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param device_id: ID of the unmanaged device that you want to update. :type device_id: str @@ -289,7 +289,7 @@ def update( :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. :type custom_metadata: Dict[str, Any] - :param is_managed: Indicates whether the device is managed. Set this parameter to `true` to convert an unmanaged device to managed. + :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. :type is_managed: bool""" json_payload = {} diff --git a/seam/routes/events.py b/seam/routes/events.py index 41ab941..075b8ed 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -14,7 +14,7 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: - """Returns a specified event. This endpoint returns the same event that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to retrieve an event that already took place. + """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. :param event_id: Unique identifier for the event that you want to get. :type event_id: str @@ -62,7 +62,7 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: - """Returns a list of all events. This endpoint returns the same events that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to filter or see events that already took place. + """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. :param access_code_id: ID of the access code for which you want to list events. :type access_code_id: str @@ -103,7 +103,7 @@ def list( :param acs_user_id: ID of the ACS user for which you want to list events. :type acs_user_id: str - :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include `since` or `between`. + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. :type between: List[Dict[str, Any]] :param connect_webview_id: ID of the Connect Webview for which you want to list events. @@ -133,7 +133,7 @@ def list( :param limit: Numerical limit on the number of events to return. :type limit: float - :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include `since` or `between`. + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. :type since: str :param space_id: ID of the space for which you want to list events. @@ -165,7 +165,7 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: - """Returns a specified event. This endpoint returns the same event that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to retrieve an event that already took place. + """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. :param event_id: Unique identifier for the event that you want to get. :type event_id: str @@ -223,7 +223,7 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: - """Returns a list of all events. This endpoint returns the same events that would be sent to a [webhook](https://docs.seam.co/developer-tools/webhooks), but it enables you to filter or see events that already took place. + """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. :param access_code_id: ID of the access code for which you want to list events. :type access_code_id: str @@ -264,7 +264,7 @@ def list( :param acs_user_id: ID of the ACS user for which you want to list events. :type acs_user_id: str - :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include `since` or `between`. + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. :type between: List[Dict[str, Any]] :param connect_webview_id: ID of the Connect Webview for which you want to list events. @@ -294,7 +294,7 @@ def list( :param limit: Numerical limit on the number of events to return. :type limit: float - :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include `since` or `between`. + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. :type since: str :param space_id: ID of the space for which you want to list events. diff --git a/seam/routes/instant_keys.py b/seam/routes/instant_keys.py index 7b7311f..06e7907 100644 --- a/seam/routes/instant_keys.py +++ b/seam/routes/instant_keys.py @@ -8,7 +8,7 @@ class AbstractInstantKeys(abc.ABC): @abc.abstractmethod def delete(self, *, instant_key_id: str) -> None: - """Deletes a specified [Instant Key](https://docs.seam.co/capability-guides/instant-keys). + """Deletes a specified `Instant Key `_. :param instant_key_id: ID of the Instant Key that you want to delete. :type instant_key_id: str""" @@ -21,7 +21,7 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: - """Gets an [instant key](https://docs.seam.co/capability-guides/instant-keys). + """Gets an `instant key `_. :param instant_key_id: ID of the instant key to get. :type instant_key_id: str @@ -35,7 +35,7 @@ def get( @abc.abstractmethod def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: - """Returns a list of all [instant keys](https://docs.seam.co/capability-guides/instant-keys). + """Returns a list of all `instant keys `_. :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. :type user_identity_id: str @@ -51,7 +51,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def delete(self, *, instant_key_id: str) -> None: - """Deletes a specified [Instant Key](https://docs.seam.co/capability-guides/instant-keys). + """Deletes a specified `Instant Key `_. :param instant_key_id: ID of the Instant Key that you want to delete. :type instant_key_id: str""" @@ -70,7 +70,7 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: - """Gets an [instant key](https://docs.seam.co/capability-guides/instant-keys). + """Gets an `instant key `_. :param instant_key_id: ID of the instant key to get. :type instant_key_id: str @@ -92,7 +92,7 @@ def get( return InstantKey.from_dict(res["instant_key"]) def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: - """Returns a list of all [instant keys](https://docs.seam.co/capability-guides/instant-keys). + """Returns a list of all `instant keys `_. :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. :type user_identity_id: str diff --git a/seam/routes/locks.py b/seam/routes/locks.py index 2674d8f..35ee3bf 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -22,7 +22,7 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Configures the auto-lock setting for a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + """Configures the auto-lock setting for a specified `lock `_. :param auto_lock_enabled: Whether to enable or disable auto-lock. :type auto_lock_enabled: bool @@ -44,7 +44,7 @@ def configure_auto_lock( def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: - """Returns a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + """Returns a specified `lock `_. :param device_id: ID of the lock that you want to get. :type device_id: str @@ -56,7 +56,7 @@ def get( :rtype: Device .. deprecated:: - Use `/devices/get` instead.""" + Use ``/devices/get`` instead.""" raise NotImplementedError() @abc.abstractmethod @@ -80,7 +80,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [locks](https://docs.seam.co/low-level-apis/smart-locks). + """Returns a list of all `locks `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -94,7 +94,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -115,16 +115,16 @@ def list( :param manufacturer: Manufacturer of the locks that you want to list. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -141,7 +141,7 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Locks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to lock. :type device_id: str @@ -160,7 +160,7 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Unlocks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to unlock. :type device_id: str @@ -191,7 +191,7 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Configures the auto-lock setting for a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + """Configures the auto-lock setting for a specified `lock `_. :param auto_lock_enabled: Whether to enable or disable auto-lock. :type auto_lock_enabled: bool @@ -233,7 +233,7 @@ def configure_auto_lock( def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: - """Returns a specified [lock](https://docs.seam.co/low-level-apis/smart-locks). + """Returns a specified `lock `_. :param device_id: ID of the lock that you want to get. :type device_id: str @@ -245,7 +245,7 @@ def get( :rtype: Device .. deprecated:: - Use `/devices/get` instead.""" + Use ``/devices/get`` instead.""" json_payload = {} if device_id is not None: @@ -277,7 +277,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [locks](https://docs.seam.co/low-level-apis/smart-locks). + """Returns a list of all `locks `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -291,7 +291,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -312,16 +312,16 @@ def list( :param manufacturer: Manufacturer of the locks that you want to list. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -374,7 +374,7 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Locks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to lock. :type device_id: str @@ -409,7 +409,7 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Unlocks a [lock](https://docs.seam.co/low-level-apis/smart-locks). See also [Locking and Unlocking Smart Locks](https://docs.seam.co/low-level-apis/smart-locks/lock-and-unlock). + """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to unlock. :type device_id: str diff --git a/seam/routes/locks_simulate.py b/seam/routes/locks_simulate.py index 2250978..2b1f993 100644 --- a/seam/routes/locks_simulate.py +++ b/seam/routes/locks_simulate.py @@ -15,7 +15,7 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Simulates the entry of a code on a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param code: Code that you want to simulate entering on a keypad. :type code: str @@ -37,7 +37,7 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Simulates a manual lock action using a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. :type device_id: str @@ -62,7 +62,7 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Simulates the entry of a code on a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param code: Code that you want to simulate entering on a keypad. :type code: str @@ -102,7 +102,7 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Simulates a manual lock action using a keypad. You can only perform this action for [August](https://docs.seam.co/device-and-system-integration-guides/august-locks) devices within [sandbox workspaces](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. :type device_id: str diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index de66a1e..6d9f639 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -42,7 +42,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [noise sensors](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a list of all `noise sensors `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -56,7 +56,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -77,16 +77,16 @@ def list( :param manufacturer: Manufacturers of the noise sensors that you want to list. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -134,7 +134,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [noise sensors](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a list of all `noise sensors `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -148,7 +148,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -169,16 +169,16 @@ def list( :param manufacturer: Manufacturers of the noise sensors that you want to list. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. diff --git a/seam/routes/noise_sensors_noise_thresholds.py b/seam/routes/noise_sensors_noise_thresholds.py index c345a00..3a3c9de 100644 --- a/seam/routes/noise_sensors_noise_thresholds.py +++ b/seam/routes/noise_sensors_noise_thresholds.py @@ -17,7 +17,7 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: - """Creates a new [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :param device_id: ID of the device for which you want to create a noise threshold. :type device_id: str @@ -34,7 +34,7 @@ def create( :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. :type noise_threshold_decibels: float - :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. :type noise_threshold_nrs: float :returns: OK @@ -43,7 +43,7 @@ def create( @abc.abstractmethod def delete(self, *, device_id: str, noise_threshold_id: str) -> None: - """Deletes a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) from a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Deletes a `noise threshold `_ from a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to delete. :type device_id: str @@ -54,7 +54,7 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: @abc.abstractmethod def get(self, *, noise_threshold_id: str) -> NoiseThreshold: - """Returns a specified [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a specified `noise threshold `_ for a `noise sensor `_. :param noise_threshold_id: ID of the noise threshold that you want to get. :type noise_threshold_id: str @@ -65,7 +65,7 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: @abc.abstractmethod def list(self, *, device_id: str) -> List[NoiseThreshold]: - """Returns a list of all [noise thresholds](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a list of all `noise thresholds `_ for a `noise sensor `_. :param device_id: ID of the device for which you want to list noise thresholds. :type device_id: str @@ -86,7 +86,7 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: - """Updates a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Updates a `noise threshold `_ for a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to update. :type device_id: str @@ -103,7 +103,7 @@ def update( :param noise_threshold_decibels: Noise level in decibels for the noise threshold. :type noise_threshold_decibels: float - :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. :type noise_threshold_nrs: float :param starts_daily_at: Time at which the noise threshold should become active daily. @@ -126,7 +126,7 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: - """Creates a new [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :param device_id: ID of the device for which you want to create a noise threshold. :type device_id: str @@ -143,7 +143,7 @@ def create( :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. :type noise_threshold_decibels: float - :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. :type noise_threshold_nrs: float :returns: OK @@ -170,7 +170,7 @@ def create( return NoiseThreshold.from_dict(res["noise_threshold"]) def delete(self, *, device_id: str, noise_threshold_id: str) -> None: - """Deletes a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) from a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Deletes a `noise threshold `_ from a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to delete. :type device_id: str @@ -189,7 +189,7 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: return None def get(self, *, noise_threshold_id: str) -> NoiseThreshold: - """Returns a specified [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a specified `noise threshold `_ for a `noise sensor `_. :param noise_threshold_id: ID of the noise threshold that you want to get. :type noise_threshold_id: str @@ -206,7 +206,7 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: return NoiseThreshold.from_dict(res["noise_threshold"]) def list(self, *, device_id: str) -> List[NoiseThreshold]: - """Returns a list of all [noise thresholds](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Returns a list of all `noise thresholds `_ for a `noise sensor `_. :param device_id: ID of the device for which you want to list noise thresholds. :type device_id: str @@ -235,7 +235,7 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: - """Updates a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors). + """Updates a `noise threshold `_ for a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to update. :type device_id: str @@ -252,7 +252,7 @@ def update( :param noise_threshold_decibels: Noise level in decibels for the noise threshold. :type noise_threshold_decibels: float - :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for [Noiseaware sensors](https://docs.seam.co/device-and-system-integration-guides/noiseaware-sensors). + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. :type noise_threshold_nrs: float :param starts_daily_at: Time at which the noise threshold should become active daily. diff --git a/seam/routes/noise_sensors_simulate.py b/seam/routes/noise_sensors_simulate.py index 52361e0..fac1c4f 100644 --- a/seam/routes/noise_sensors_simulate.py +++ b/seam/routes/noise_sensors_simulate.py @@ -7,7 +7,7 @@ class AbstractNoiseSensorsSimulate(abc.ABC): @abc.abstractmethod def trigger_noise_threshold(self, *, device_id: str) -> None: - """Simulates the triggering of a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. :type device_id: str""" @@ -20,7 +20,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def trigger_noise_threshold(self, *, device_id: str) -> None: - """Simulates the triggering of a [noise threshold](https://docs.seam.co/capability-guides/noise-sensors/configure-noise-threshold-settings) for a [noise sensor](https://docs.seam.co/capability-guides/noise-sensors) in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. :type device_id: str""" diff --git a/seam/routes/phones.py b/seam/routes/phones.py index e1925cd..149b261 100644 --- a/seam/routes/phones.py +++ b/seam/routes/phones.py @@ -14,7 +14,7 @@ def simulate(self) -> AbstractPhonesSimulate: @abc.abstractmethod def deactivate(self, *, device_id: str) -> None: - """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see [App User Lost Phone Process](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity#app-user-lost-phone-process). + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. :param device_id: Device ID of the phone that you want to deactivate. :type device_id: str""" @@ -22,7 +22,7 @@ def deactivate(self, *, device_id: str) -> None: @abc.abstractmethod def get(self, *, device_id: str) -> Phone: - """Returns a specified [phone](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). + """Returns a specified `phone `_. :param device_id: Device ID of the phone that you want to get. :type device_id: str @@ -38,9 +38,9 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: - """Returns a list of all [phones](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). To filter the list of returned phones by a specific owner user identity or credential, include the `owner_user_identity_id` or `acs_credential_id`, respectively, in the request body. + """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. - :param acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) by which you want to filter the list of returned phones. + :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. :type acs_credential_id: str :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. @@ -62,7 +62,7 @@ def simulate(self) -> PhonesSimulate: return self._simulate def deactivate(self, *, device_id: str) -> None: - """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see [App User Lost Phone Process](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity#app-user-lost-phone-process). + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. :param device_id: Device ID of the phone that you want to deactivate. :type device_id: str""" @@ -76,7 +76,7 @@ def deactivate(self, *, device_id: str) -> None: return None def get(self, *, device_id: str) -> Phone: - """Returns a specified [phone](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). + """Returns a specified `phone `_. :param device_id: Device ID of the phone that you want to get. :type device_id: str @@ -98,9 +98,9 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: - """Returns a list of all [phones](https://docs.seam.co/capability-guides/mobile-access/managing-phones-for-a-user-identity). To filter the list of returned phones by a specific owner user identity or credential, include the `owner_user_identity_id` or `acs_credential_id`, respectively, in the request body. + """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. - :param acs_credential_id: ID of the [credential](https://docs.seam.co/low-level-apis/access-systems/managing-credentials) by which you want to filter the list of returned phones. + :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. :type acs_credential_id: str :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. diff --git a/seam/routes/phones_simulate.py b/seam/routes/phones_simulate.py index 7ce2814..151efbe 100644 --- a/seam/routes/phones_simulate.py +++ b/seam/routes/phones_simulate.py @@ -15,7 +15,7 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: - """Creates a new simulated phone in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Creating a Simulated Phone for a User Identity](https://docs.seam.co/capability-guides/mobile-access/developing-in-a-sandbox-workspace#creating-a-simulated-phone-for-a-user-identity). + """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. :type user_identity_id: str @@ -47,7 +47,7 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: - """Creates a new simulated phone in a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Creating a Simulated Phone for a User Identity](https://docs.seam.co/capability-guides/mobile-access/developing-in-a-sandbox-workspace#creating-a-simulated-phone-for-a-user-identity). + """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. :type user_identity_id: str diff --git a/seam/routes/spaces.py b/seam/routes/spaces.py index 145f00e..49d9d19 100644 --- a/seam/routes/spaces.py +++ b/seam/routes/spaces.py @@ -8,7 +8,7 @@ class AbstractSpaces(abc.ABC): @abc.abstractmethod def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: - """Adds [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) to a specific space. + """Adds `entrances `_ to a specific space. :param acs_entrance_ids: IDs of the entrances that you want to add to the space. :type acs_entrance_ids: List[str] @@ -21,7 +21,7 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: - """Adds a [connected account](https://docs.seam.co/core-concepts/connected-accounts) to a specific space. + """Adds a `connected account `_ to a specific space. :param connected_account_id: ID of the connected account that you want to add to the space. :type connected_account_id: str @@ -149,10 +149,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using `name`, `space_key`, or `customer_key`. + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. :type search: str :param space_key: Filter spaces by space_key. @@ -166,7 +166,7 @@ def list( def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: - """Removes [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) from a specific space. + """Removes `entrances `_ from a specific space. :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. :type acs_entrance_ids: List[str] @@ -179,7 +179,7 @@ def remove_acs_entrances( def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: - """Removes a [connected account](https://docs.seam.co/core-concepts/connected-accounts) from a specific space. + """Removes a `connected account `_ from a specific space. :param connected_account_id: ID of the connected account that you want to remove from the space. :type connected_account_id: str @@ -241,7 +241,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: - """Adds [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) to a specific space. + """Adds `entrances `_ to a specific space. :param acs_entrance_ids: IDs of the entrances that you want to add to the space. :type acs_entrance_ids: List[str] @@ -262,7 +262,7 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: - """Adds a [connected account](https://docs.seam.co/core-concepts/connected-accounts) to a specific space. + """Adds a `connected account `_ to a specific space. :param connected_account_id: ID of the connected account that you want to add to the space. :type connected_account_id: str @@ -450,10 +450,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: float - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using `name`, `space_key`, or `customer_key`. + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. :type search: str :param space_key: Filter spaces by space_key. @@ -481,7 +481,7 @@ def list( def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: - """Removes [entrances](https://docs.seam.co/low-level-apis/access-systems/retrieving-entrance-details) from a specific space. + """Removes `entrances `_ from a specific space. :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. :type acs_entrance_ids: List[str] @@ -502,7 +502,7 @@ def remove_acs_entrances( def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: - """Removes a [connected account](https://docs.seam.co/core-concepts/connected-accounts) from a specific space. + """Removes a `connected account `_ from a specific space. :param connected_account_id: ID of the connected account that you want to remove from the space. :type connected_account_id: str diff --git a/seam/routes/thermostats.py b/seam/routes/thermostats.py index 1cb3feb..2bf1ac0 100644 --- a/seam/routes/thermostats.py +++ b/seam/routes/thermostats.py @@ -36,7 +36,7 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Activates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Activates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to activate. :type climate_preset_key: str @@ -60,15 +60,15 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [cool mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `cool mode `_. :param device_id: ID of the thermostat device that you want to set to cool mode. :type device_id: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -95,9 +95,9 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: - """Creates a [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Creates a `climate preset `_ for a specified `thermostat `_. - :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param climate_preset_key: Unique key to identify the `climate preset `_. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want create a climate preset. @@ -106,37 +106,37 @@ def create_climate_preset( :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. :type climate_preset_mode: str - :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. :type ecobee_metadata: Dict[str, Any] - :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. :type fan_mode_setting: str - :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. :type heating_set_point_fahrenheit: float - :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. :type manual_override_allowed: bool - :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param name: User-friendly name to identify the `climate preset `_. :type name: str""" raise NotImplementedError() @abc.abstractmethod def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: - """Deletes a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Deletes a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to delete. :type climate_preset_key: str @@ -154,15 +154,15 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `heat mode `_. :param device_id: ID of the thermostat device that you want to set to heat mode. :type device_id: str - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -183,21 +183,21 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat-cool ("auto") mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. :param device_id: ID of the thermostat device that you want to set to heat-cool mode. :type device_id: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -228,7 +228,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [thermostats](https://docs.seam.co/capability-guides/thermostats). + """Returns a list of all `thermostats `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -242,7 +242,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -263,16 +263,16 @@ def list( :param manufacturer: Manufacturer by which you want to filter thermostat devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -289,7 +289,7 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to ["off" mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `"off" mode `_. :param device_id: ID of the thermostat device that you want to set to off mode. :type device_id: str @@ -305,7 +305,7 @@ def off( def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: - """Sets a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) as the ["fallback"](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) preset for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. :type climate_preset_key: str @@ -323,15 +323,15 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets the [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets the `fan mode setting `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the fan mode. :type device_id: str - :param fan_mode: Deprecated: Use `fan_mode_setting` instead. Fan mode setting for the thermostat, such as `auto`, `on`, or `circulate`. + :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. :type fan_mode: str - :param fan_mode_setting: [Fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) that you want to set for the thermostat. + :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. :type fan_mode_setting: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -353,7 +353,7 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets the `HVAC mode `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the HVAC mode. :type device_id: str @@ -361,16 +361,16 @@ def set_hvac_mode( :param hvac_mode_setting: :type hvac_mode_setting: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -390,21 +390,21 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: - """Sets a [temperature threshold](https://docs.seam.co/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) for a specified thermostat. Seam emits a `thermostat.temperature_threshold_exceeded` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. :param device_id: ID of the thermostat device for which you want to set a temperature threshold. :type device_id: str - :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. :type lower_limit_celsius: float - :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. :type lower_limit_fahrenheit: float - :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. :type upper_limit_celsius: float - :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. :type upper_limit_fahrenheit: float""" raise NotImplementedError() @@ -425,9 +425,9 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: - """Updates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Updates a specified `climate preset `_ for a specified `thermostat `_. - :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param climate_preset_key: Unique key to identify the `climate preset `_. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to update a climate preset. @@ -436,31 +436,31 @@ def update_climate_preset( :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. :type climate_preset_mode: str - :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. :type ecobee_metadata: Dict[str, Any] - :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. :type fan_mode_setting: str - :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. :type heating_set_point_fahrenheit: float - :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. :type hvac_mode_setting: str - :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. :type manual_override_allowed: bool - :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param name: User-friendly name to identify the `climate preset `_. :type name: str""" raise NotImplementedError() @@ -541,7 +541,7 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Activates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Activates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to activate. :type climate_preset_key: str @@ -585,15 +585,15 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [cool mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `cool mode `_. :param device_id: ID of the thermostat device that you want to set to cool mode. :type device_id: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -640,9 +640,9 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: - """Creates a [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Creates a `climate preset `_ for a specified `thermostat `_. - :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param climate_preset_key: Unique key to identify the `climate preset `_. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want create a climate preset. @@ -651,31 +651,31 @@ def create_climate_preset( :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. :type climate_preset_mode: str - :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. :type ecobee_metadata: Dict[str, Any] - :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. :type fan_mode_setting: str - :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. :type heating_set_point_fahrenheit: float - :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. :type manual_override_allowed: bool - :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param name: User-friendly name to identify the `climate preset `_. :type name: str""" json_payload = {} @@ -709,7 +709,7 @@ def create_climate_preset( return None def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: - """Deletes a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Deletes a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to delete. :type climate_preset_key: str @@ -735,15 +735,15 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `heat mode `_. :param device_id: ID of the thermostat device that you want to set to heat mode. :type device_id: str - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -784,21 +784,21 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to [heat-cool ("auto") mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. :param device_id: ID of the thermostat device that you want to set to heat-cool mode. :type device_id: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -853,7 +853,7 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: - """Returns a list of all [thermostats](https://docs.seam.co/capability-guides/thermostats). + """Returns a list of all `thermostats `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. :type connect_webview_id: str @@ -867,7 +867,7 @@ def list( :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. :type created_before: str - :param custom_metadata_has: Set of key:value [custom metadata](https://docs.seam.co/core-concepts/devices/adding-custom-metadata-to-a-device) pairs for which you want to list devices. + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. @@ -888,16 +888,16 @@ def list( :param manufacturer: Manufacturer by which you want to filter thermostat devices. :type manufacturer: str - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using `device_id` (full or partial UUID prefix, minimum 4 characters), `connected_account_id`, `display_name`, `custom_metadata` or `location.location_name`. + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. :type search: str :param space_id: ID of the space for which you want to list devices. :type space_id: str - :param unstable_location_id: Deprecated: Use `space_id`. + :param unstable_location_id: Deprecated: Use ``space_id``. :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. @@ -950,7 +950,7 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets a specified [thermostat](https://docs.seam.co/capability-guides/thermostats) to ["off" mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings). + """Sets a specified `thermostat `_ to `"off" mode `_. :param device_id: ID of the thermostat device that you want to set to off mode. :type device_id: str @@ -982,7 +982,7 @@ def off( def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: - """Sets a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) as the ["fallback"](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets/setting-the-fallback-climate-preset) preset for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. :type climate_preset_key: str @@ -1008,15 +1008,15 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets the [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets the `fan mode setting `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the fan mode. :type device_id: str - :param fan_mode: Deprecated: Use `fan_mode_setting` instead. Fan mode setting for the thermostat, such as `auto`, `on`, or `circulate`. + :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. :type fan_mode: str - :param fan_mode_setting: [Fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings) that you want to set for the thermostat. + :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. :type fan_mode_setting: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -1058,7 +1058,7 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Sets the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Sets the `HVAC mode `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the HVAC mode. :type device_id: str @@ -1066,16 +1066,16 @@ def set_hvac_mode( :param hvac_mode_setting: :type hvac_mode_setting: str - :param cooling_set_point_celsius: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: [Cooling set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `cooling_set_point` parameters. + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: [Heating set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to set for the thermostat. You must set one of the `heating_set_point` parameters. + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. @@ -1121,21 +1121,21 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: - """Sets a [temperature threshold](https://docs.seam.co/capability-guides/thermostats/setting-and-monitoring-temperature-thresholds) for a specified thermostat. Seam emits a `thermostat.temperature_threshold_exceeded` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. :param device_id: ID of the thermostat device for which you want to set a temperature threshold. :type device_id: str - :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. :type lower_limit_celsius: float - :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either `lower_limit` but not both. + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. :type lower_limit_fahrenheit: float - :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. :type upper_limit_celsius: float - :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either `upper_limit` but not both. + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. :type upper_limit_fahrenheit: float""" json_payload = {} @@ -1170,9 +1170,9 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: - """Updates a specified [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Updates a specified `climate preset `_ for a specified `thermostat `_. - :param climate_preset_key: Unique key to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param climate_preset_key: Unique key to identify the `climate preset `_. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to update a climate preset. @@ -1181,31 +1181,31 @@ def update_climate_preset( :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. :type climate_preset_mode: str - :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. :type ecobee_metadata: Dict[str, Any] - :param fan_mode_setting: Desired [fan mode setting](https://docs.seam.co/capability-guides/thermostats/configure-current-climate-settings#fan-mode-settings), such as `on`, `auto`, or `circulate`. + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. :type fan_mode_setting: str - :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also [Set Points](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points). + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. :type heating_set_point_fahrenheit: float - :param hvac_mode_setting: Desired [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) setting, such as `heat`, `cool`, `heat_cool`, or `off`. + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. :type hvac_mode_setting: str - :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. :type manual_override_allowed: bool - :param name: User-friendly name to identify the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets). + :param name: User-friendly name to identify the `climate preset `_. :type name: str""" json_payload = {} diff --git a/seam/routes/thermostats_schedules.py b/seam/routes/thermostats_schedules.py index ec793fb..6a1566e 100644 --- a/seam/routes/thermostats_schedules.py +++ b/seam/routes/thermostats_schedules.py @@ -18,24 +18,24 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: - """Creates a new [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Creates a new `thermostat schedule `_ for a specified `thermostat `_. - :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the new thermostat schedule. + :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to create a schedule. :type device_id: str - :param ends_at: Date and time at which the new thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. :type ends_at: str - :param starts_at: Date and time at which the new thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. :type starts_at: str - :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. :type is_override_allowed: bool - :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. :type max_override_period_minutes: int :param name: Name of the thermostat schedule. @@ -47,7 +47,7 @@ def create( @abc.abstractmethod def delete(self, *, thermostat_schedule_id: str) -> None: - """Deletes a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Deletes a `thermostat schedule `_ for a specified `thermostat `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. :type thermostat_schedule_id: str""" @@ -55,7 +55,7 @@ def delete(self, *, thermostat_schedule_id: str) -> None: @abc.abstractmethod def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: - """Returns a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + """Returns a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. :type thermostat_schedule_id: str @@ -68,7 +68,7 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: - """Returns a list of all [thermostat schedules](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to list schedules. :type device_id: str @@ -92,27 +92,27 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: - """Updates a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + """Updates a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. :type thermostat_schedule_id: str - :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the thermostat schedule. + :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. :type climate_preset_key: str - :param ends_at: Date and time at which the thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. :type ends_at: str - :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. :type is_override_allowed: bool - :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. :type max_override_period_minutes: int :param name: Name of the thermostat schedule. :type name: str - :param starts_at: Date and time at which the thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. :type starts_at: str""" raise NotImplementedError() @@ -133,24 +133,24 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: - """Creates a new [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Creates a new `thermostat schedule `_ for a specified `thermostat `_. - :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the new thermostat schedule. + :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to create a schedule. :type device_id: str - :param ends_at: Date and time at which the new thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. :type ends_at: str - :param starts_at: Date and time at which the new thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. :type starts_at: str - :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. :type is_override_allowed: bool - :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. :type max_override_period_minutes: int :param name: Name of the thermostat schedule. @@ -180,7 +180,7 @@ def create( return ThermostatSchedule.from_dict(res["thermostat_schedule"]) def delete(self, *, thermostat_schedule_id: str) -> None: - """Deletes a [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Deletes a `thermostat schedule `_ for a specified `thermostat `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. :type thermostat_schedule_id: str""" @@ -194,7 +194,7 @@ def delete(self, *, thermostat_schedule_id: str) -> None: return None def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: - """Returns a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + """Returns a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. :type thermostat_schedule_id: str @@ -213,7 +213,7 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: - """Returns a list of all [thermostat schedules](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules) for a specified [thermostat](https://docs.seam.co/capability-guides/thermostats). + """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to list schedules. :type device_id: str @@ -247,27 +247,27 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: - """Updates a specified [thermostat schedule](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules). + """Updates a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. :type thermostat_schedule_id: str - :param climate_preset_key: Key of the [climate preset](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-climate-presets) to use for the thermostat schedule. + :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. :type climate_preset_key: str - :param ends_at: Date and time at which the thermostat schedule ends, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. :type ends_at: str - :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. :type is_override_allowed: bool - :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also [Specifying Manual Override Permissions](https://docs.seam.co/capability-guides/thermostats/creating-and-managing-thermostat-schedules#specifying-manual-override-permissions). + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. :type max_override_period_minutes: int :param name: Name of the thermostat schedule. :type name: str - :param starts_at: Date and time at which the thermostat schedule starts, in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. + :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. :type starts_at: str""" json_payload = {} diff --git a/seam/routes/thermostats_simulate.py b/seam/routes/thermostats_simulate.py index ab04cf5..a43dab8 100644 --- a/seam/routes/thermostats_simulate.py +++ b/seam/routes/thermostats_simulate.py @@ -16,7 +16,7 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: - """Simulates having adjusted the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) for a [thermostat](https://docs.seam.co/capability-guides/thermostats). Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. :type device_id: str @@ -24,16 +24,16 @@ def hvac_mode_adjusted( :param hvac_mode: HVAC mode that you want to simulate. :type hvac_mode: str - :param cooling_set_point_celsius: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `cooling_set_point_celsius` or `cooling_set_point_fahrenheit`. + :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `cooling_set_point_fahrenheit` or `cooling_set_point_celsius`. + :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `heating_set_point_celsius` or `heating_set_point_fahrenheit`. + :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `heating_set_point_fahrenheit` or `heating_set_point_celsius`. + :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. :type heating_set_point_fahrenheit: float""" raise NotImplementedError() @@ -45,15 +45,15 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: - """Simulates a [thermostat](https://docs.seam.co/capability-guides/thermostats) reaching a specified temperature. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. :type device_id: str - :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set `temperature_celsius` or `temperature_fahrenheit`. + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. :type temperature_celsius: float - :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set `temperature_fahrenheit` or `temperature_celsius`. + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. :type temperature_fahrenheit: float""" raise NotImplementedError() @@ -73,7 +73,7 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: - """Simulates having adjusted the [HVAC mode](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/hvac-mode) for a [thermostat](https://docs.seam.co/capability-guides/thermostats). Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. :type device_id: str @@ -81,16 +81,16 @@ def hvac_mode_adjusted( :param hvac_mode: HVAC mode that you want to simulate. :type hvac_mode: str - :param cooling_set_point_celsius: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `cooling_set_point_celsius` or `cooling_set_point_fahrenheit`. + :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. :type cooling_set_point_celsius: float - :param cooling_set_point_fahrenheit: Cooling [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `cooling_set_point_fahrenheit` or `cooling_set_point_celsius`. + :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. :type cooling_set_point_fahrenheit: float - :param heating_set_point_celsius: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °C that you want to simulate. You must set `heating_set_point_celsius` or `heating_set_point_fahrenheit`. + :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. :type heating_set_point_celsius: float - :param heating_set_point_fahrenheit: Heating [set point](https://docs.seam.co/capability-guides/thermostats/understanding-thermostat-concepts/set-points) in °F that you want to simulate. You must set `heating_set_point_fahrenheit` or `heating_set_point_celsius`. + :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. :type heating_set_point_fahrenheit: float""" json_payload = {} @@ -118,15 +118,15 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: - """Simulates a [thermostat](https://docs.seam.co/capability-guides/thermostats) reaching a specified temperature. Only applicable for [sandbox devices](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). See also [Testing Your Thermostat App with Simulate Endpoints](https://docs.seam.co/capability-guides/thermostats/testing-your-thermostat-app-with-simulate-endpoints). + """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. :type device_id: str - :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set `temperature_celsius` or `temperature_fahrenheit`. + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. :type temperature_celsius: float - :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set `temperature_fahrenheit` or `temperature_celsius`. + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. :type temperature_fahrenheit: float""" json_payload = {} diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index 455dee2..4748d88 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -30,11 +30,11 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Adds a specified `access system user `_ to a specified `user identity `_. - You must specify either `user_identity_id` or `user_identity_key` to identify the user identity. + You must specify either ``user_identity_id`` or ``user_identity_key`` to identify the user identity. - If `user_identity_key` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. :param acs_user_id: ID of the access system user that you want to add to the user identity. :type acs_user_id: str @@ -56,7 +56,7 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: - """Creates a new [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Creates a new `user identity `_. :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. :type acs_system_ids: List[str] @@ -79,7 +79,7 @@ def create( @abc.abstractmethod def delete(self, *, user_identity_id: str) -> None: - """Deletes a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This deletes the user identity and all associated resources, including any [credentials](https://docs.seam.co/api/acs/credentials), [acs users](https://docs.seam.co/api/acs/users) and [client sessions](https://docs.seam.co/api/client_sessions). + """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. :param user_identity_id: ID of the user identity that you want to delete. :type user_identity_id: str""" @@ -93,7 +93,7 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: - """Generates a new [instant key](https://docs.seam.co/capability-guides/instant-keys) for a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Generates a new `instant key `_ for a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to generate an instant key. :type user_identity_id: str @@ -115,7 +115,7 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: - """Returns a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to get. :type user_identity_id: str @@ -129,7 +129,7 @@ def get( @abc.abstractmethod def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: - """Grants a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) access to a specified [device](https://docs.seam.co/core-concepts/devices/). + """Grants a specified `user identity `_ access to a specified `device `_. :param device_id: ID of the managed device to which you want to grant access to the user identity. :type device_id: str @@ -149,21 +149,21 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: - """Returns a list of all [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `user identities `_. :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. :type created_before: str - :param credential_manager_acs_system_id: `acs_system_id` of the credential manager by which you want to filter the list of user identities. + :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. :type credential_manager_acs_system_id: str :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address` or `user_identity_id`. + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. :type search: str :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. @@ -175,7 +175,7 @@ def list( @abc.abstractmethod def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: - """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. :type user_identity_id: str @@ -186,7 +186,7 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: @abc.abstractmethod def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: - """Returns a list of all [ACS entrances](https://docs.seam.co/api/acs/entrances) accessible to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. :type user_identity_id: str @@ -197,7 +197,7 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc @abc.abstractmethod def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: - """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `access systems `_ associated with a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. :type user_identity_id: str @@ -208,7 +208,7 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: @abc.abstractmethod def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) assigned to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `access system users `_ assigned to a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. :type user_identity_id: str @@ -219,7 +219,7 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: @abc.abstractmethod def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Removes a specified `access system user `_ from a specified `user identity `_. :param acs_user_id: ID of the access system user that you want to remove from the user identity.. :type acs_user_id: str @@ -230,7 +230,7 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: @abc.abstractmethod def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: - """Revokes access to a specified [device](https://docs.seam.co/core-concepts/devices/) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Revokes access to a specified `device `_ from a specified `user identity `_. :param device_id: ID of the managed device to which you want to revoke access from the user identity. :type device_id: str @@ -249,7 +249,7 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: - """Updates a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Updates a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to update. :type user_identity_id: str @@ -285,11 +285,11 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: - """Adds a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Adds a specified `access system user `_ to a specified `user identity `_. - You must specify either `user_identity_id` or `user_identity_key` to identify the user identity. + You must specify either ``user_identity_id`` or ``user_identity_key`` to identify the user identity. - If `user_identity_key` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. :param acs_user_id: ID of the access system user that you want to add to the user identity. :type acs_user_id: str @@ -321,7 +321,7 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: - """Creates a new [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Creates a new `user identity `_. :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. :type acs_system_ids: List[str] @@ -358,7 +358,7 @@ def create( return UserIdentity.from_dict(res["user_identity"]) def delete(self, *, user_identity_id: str) -> None: - """Deletes a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This deletes the user identity and all associated resources, including any [credentials](https://docs.seam.co/api/acs/credentials), [acs users](https://docs.seam.co/api/acs/users) and [client sessions](https://docs.seam.co/api/client_sessions). + """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. :param user_identity_id: ID of the user identity that you want to delete. :type user_identity_id: str""" @@ -378,7 +378,7 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: - """Generates a new [instant key](https://docs.seam.co/capability-guides/instant-keys) for a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Generates a new `instant key `_ for a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to generate an instant key. :type user_identity_id: str @@ -412,7 +412,7 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: - """Returns a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to get. :type user_identity_id: str @@ -434,7 +434,7 @@ def get( return UserIdentity.from_dict(res["user_identity"]) def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: - """Grants a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) access to a specified [device](https://docs.seam.co/core-concepts/devices/). + """Grants a specified `user identity `_ access to a specified `device `_. :param device_id: ID of the managed device to which you want to grant access to the user identity. :type device_id: str @@ -462,21 +462,21 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: - """Returns a list of all [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `user identities `_. :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. :type created_before: str - :param credential_manager_acs_system_id: `acs_system_id` of the credential manager by which you want to filter the list of user identities. + :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. :type credential_manager_acs_system_id: str :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address` or `user_identity_id`. + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. :type search: str :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. @@ -506,7 +506,7 @@ def list( return [UserIdentity.from_dict(item) for item in res["user_identities"]] def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: - """Returns a list of all [devices](https://docs.seam.co/core-concepts/devices) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. :type user_identity_id: str @@ -525,7 +525,7 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: return [Device.from_dict(item) for item in res["devices"]] def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: - """Returns a list of all [ACS entrances](https://docs.seam.co/api/acs/entrances) accessible to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. :type user_identity_id: str @@ -544,7 +544,7 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: - """Returns a list of all [access systems](https://docs.seam.co/low-level-apis/access-systems) associated with a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `access systems `_ associated with a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. :type user_identity_id: str @@ -561,7 +561,7 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: return [AcsSystem.from_dict(item) for item in res["acs_systems"]] def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: - """Returns a list of all [access system users](https://docs.seam.co/low-level-apis/access-systems/user-management) assigned to a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Returns a list of all `access system users `_ assigned to a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. :type user_identity_id: str @@ -578,7 +578,7 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: return [AcsUser.from_dict(item) for item in res["acs_users"]] def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: - """Removes a specified [access system user](https://docs.seam.co/low-level-apis/access-systems/user-management) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Removes a specified `access system user `_ from a specified `user identity `_. :param acs_user_id: ID of the access system user that you want to remove from the user identity.. :type acs_user_id: str @@ -597,7 +597,7 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: return None def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: - """Revokes access to a specified [device](https://docs.seam.co/core-concepts/devices/) from a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Revokes access to a specified `device `_ from a specified `user identity `_. :param device_id: ID of the managed device to which you want to revoke access from the user identity. :type device_id: str @@ -624,7 +624,7 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: - """Updates a specified [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity). + """Updates a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to update. :type user_identity_id: str diff --git a/seam/routes/user_identities_unmanaged.py b/seam/routes/user_identities_unmanaged.py index 5d68401..67a2ca7 100644 --- a/seam/routes/user_identities_unmanaged.py +++ b/seam/routes/user_identities_unmanaged.py @@ -7,7 +7,7 @@ class AbstractUserIdentitiesUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, user_identity_id: str) -> None: - """Returns a specified unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + """Returns a specified unmanaged `user identity `_ (where is_managed = false). :param user_identity_id: ID of the unmanaged user identity that you want to get. :type user_identity_id: str""" @@ -22,7 +22,7 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> None: - """Returns a list of all unmanaged [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + """Returns a list of all unmanaged `user identities `_ (where is_managed = false). :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. :type created_before: str @@ -30,10 +30,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `user_identity_id` or `acs_system_id`. + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. :type search: str""" raise NotImplementedError() @@ -45,9 +45,9 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: - """Updates an unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) to make it managed. + """Updates an unmanaged `user identity `_ to make it managed. - This endpoint can only be used to convert unmanaged user identities to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed user identities back to unmanaged. + This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. :param is_managed: Must be set to true to convert the unmanaged user identity to managed. :type is_managed: bool @@ -66,7 +66,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, user_identity_id: str) -> None: - """Returns a specified unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + """Returns a specified unmanaged `user identity `_ (where is_managed = false). :param user_identity_id: ID of the unmanaged user identity that you want to get. :type user_identity_id: str""" @@ -87,7 +87,7 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> None: - """Returns a list of all unmanaged [user identities](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) (where is_managed = false). + """Returns a list of all unmanaged `user identities `_ (where is_managed = false). :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. :type created_before: str @@ -95,10 +95,10 @@ def list( :param limit: Maximum number of records to return per page. :type limit: int - :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's `next_page_cursor`. + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. :type page_cursor: str - :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using `full_name`, `phone_number`, `email_address`, `user_identity_id` or `acs_system_id`. + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. :type search: str""" json_payload = {} @@ -122,9 +122,9 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: - """Updates an unmanaged [user identity](https://docs.seam.co/capability-guides/mobile-access/managing-mobile-app-user-accounts-with-user-identities#what-is-a-user-identity) to make it managed. + """Updates an unmanaged `user identity `_ to make it managed. - This endpoint can only be used to convert unmanaged user identities to managed ones by setting `is_managed` to `true`. It cannot be used to convert managed user identities back to unmanaged. + This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. :param is_managed: Must be set to true to convert the unmanaged user identity to managed. :type is_managed: bool diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index 14561c7..cbcf11e 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -8,7 +8,7 @@ class AbstractWebhooks(abc.ABC): @abc.abstractmethod def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: - """Creates a new [webhook](https://docs.seam.co/developer-tools/webhooks). + """Creates a new `webhook `_. :param url: URL for the new webhook. :type url: str @@ -22,7 +22,7 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo @abc.abstractmethod def delete(self, *, webhook_id: str) -> None: - """Deletes a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Deletes a specified `webhook `_. :param webhook_id: ID of the webhook that you want to delete. :type webhook_id: str""" @@ -30,7 +30,7 @@ def delete(self, *, webhook_id: str) -> None: @abc.abstractmethod def get(self, *, webhook_id: str) -> Webhook: - """Gets a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Gets a specified `webhook `_. :param webhook_id: ID of the webhook that you want to get. :type webhook_id: str @@ -43,7 +43,7 @@ def get(self, *, webhook_id: str) -> Webhook: def list( self, ) -> List[Webhook]: - """Returns a list of all [webhooks](https://docs.seam.co/developer-tools/webhooks). + """Returns a list of all `webhooks `_. :returns: OK :rtype: List[Webhook]""" @@ -51,7 +51,7 @@ def list( @abc.abstractmethod def update(self, *, event_types: List[str], webhook_id: str) -> None: - """Updates a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Updates a specified `webhook `_. :param event_types: Types of events that you want the webhook to receive. :type event_types: List[str] @@ -67,7 +67,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: - """Creates a new [webhook](https://docs.seam.co/developer-tools/webhooks). + """Creates a new `webhook `_. :param url: URL for the new webhook. :type url: str @@ -89,7 +89,7 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo return Webhook.from_dict(res["webhook"]) def delete(self, *, webhook_id: str) -> None: - """Deletes a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Deletes a specified `webhook `_. :param webhook_id: ID of the webhook that you want to delete. :type webhook_id: str""" @@ -103,7 +103,7 @@ def delete(self, *, webhook_id: str) -> None: return None def get(self, *, webhook_id: str) -> Webhook: - """Gets a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Gets a specified `webhook `_. :param webhook_id: ID of the webhook that you want to get. :type webhook_id: str @@ -122,7 +122,7 @@ def get(self, *, webhook_id: str) -> Webhook: def list( self, ) -> List[Webhook]: - """Returns a list of all [webhooks](https://docs.seam.co/developer-tools/webhooks). + """Returns a list of all `webhooks `_. :returns: OK :rtype: List[Webhook]""" @@ -133,7 +133,7 @@ def list( return [Webhook.from_dict(item) for item in res["webhooks"]] def update(self, *, event_types: List[str], webhook_id: str) -> None: - """Updates a specified [webhook](https://docs.seam.co/developer-tools/webhooks). + """Updates a specified `webhook `_. :param event_types: Types of events that you want the webhook to receive. :type event_types: List[str] diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 79acd97..593df41 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -22,7 +22,7 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: - """Creates a new [workspace](https://docs.seam.co/core-concepts/workspaces). + """Creates a new `workspace `_. :param name: Name of the new workspace. :type name: str @@ -30,28 +30,28 @@ def create( :param company_name: Company name for the new workspace. :type company_name: str - :param connect_partner_name: Deprecated: Use `company_name` instead. Connect partner name for the new workspace. + :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. :type connect_partner_name: str - :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the new workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. :type connect_webview_customization: Dict[str, Any] - :param is_sandbox: Indicates whether the new workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. :type is_sandbox: bool :param organization_id: ID of the organization to associate with the new workspace. :type organization_id: str - :param webview_logo_shape: Deprecated: Use `connect_webview_customization.webview_logo_shape` instead. + :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. :type webview_logo_shape: str - :param webview_primary_button_color: Deprecated: Use `connect_webview_customization.webview_primary_button_color` instead. + :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. :type webview_primary_button_color: str - :param webview_primary_button_text_color: Deprecated: Use `connect_webview_customization.webview_primary_button_text_color` instead. + :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. :type webview_primary_button_text_color: str - :param webview_success_message: Deprecated: Use `connect_webview_customization.webview_success_message` instead. + :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. :type webview_success_message: str :returns: OK @@ -62,7 +62,7 @@ def create( def get( self, ) -> Workspace: - """Returns the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Returns the `workspace `_ associated with the authentication value. :returns: OK :rtype: Workspace""" @@ -72,7 +72,7 @@ def get( def list( self, ) -> List[Workspace]: - """Returns a list of [workspaces](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Returns a list of `workspaces `_ associated with the authentication value. :returns: OK :rtype: List[Workspace]""" @@ -82,7 +82,7 @@ def list( def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Resets the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] @@ -102,12 +102,12 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: - """Updates the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Updates the `workspace `_ associated with the authentication value. :param connect_partner_name: Connect partner name for the workspace. :type connect_partner_name: str - :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. :type connect_webview_customization: Dict[str, Any] :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. @@ -143,7 +143,7 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: - """Creates a new [workspace](https://docs.seam.co/core-concepts/workspaces). + """Creates a new `workspace `_. :param name: Name of the new workspace. :type name: str @@ -151,28 +151,28 @@ def create( :param company_name: Company name for the new workspace. :type company_name: str - :param connect_partner_name: Deprecated: Use `company_name` instead. Connect partner name for the new workspace. + :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. :type connect_partner_name: str - :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the new workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. :type connect_webview_customization: Dict[str, Any] - :param is_sandbox: Indicates whether the new workspace is a [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces). + :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. :type is_sandbox: bool :param organization_id: ID of the organization to associate with the new workspace. :type organization_id: str - :param webview_logo_shape: Deprecated: Use `connect_webview_customization.webview_logo_shape` instead. + :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. :type webview_logo_shape: str - :param webview_primary_button_color: Deprecated: Use `connect_webview_customization.webview_primary_button_color` instead. + :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. :type webview_primary_button_color: str - :param webview_primary_button_text_color: Deprecated: Use `connect_webview_customization.webview_primary_button_text_color` instead. + :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. :type webview_primary_button_text_color: str - :param webview_success_message: Deprecated: Use `connect_webview_customization.webview_success_message` instead. + :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. :type webview_success_message: str :returns: OK @@ -211,7 +211,7 @@ def create( def get( self, ) -> Workspace: - """Returns the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Returns the `workspace `_ associated with the authentication value. :returns: OK :rtype: Workspace""" @@ -224,7 +224,7 @@ def get( def list( self, ) -> List[Workspace]: - """Returns a list of [workspaces](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Returns a list of `workspaces `_ associated with the authentication value. :returns: OK :rtype: List[Workspace]""" @@ -237,7 +237,7 @@ def list( def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: - """Resets the [sandbox workspace](https://docs.seam.co/core-concepts/workspaces#sandbox-workspaces) associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] @@ -270,12 +270,12 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: - """Updates the [workspace](https://docs.seam.co/core-concepts/workspaces) associated with the authentication value. + """Updates the `workspace `_ associated with the authentication value. :param connect_partner_name: Connect partner name for the workspace. :type connect_partner_name: str - :param connect_webview_customization: [Connect Webview](https://docs.seam.co/core-concepts/connect-webviews) customizations for the workspace. See also [Customize the Look and Feel of Your Connect Webviews](https://docs.seam.co/core-concepts/connect-webviews/customizing-connect-webviews#customize-the-look-and-feel-of-your-connect-webviews). + :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. :type connect_webview_customization: Dict[str, Any] :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. From 4ad62206ffa61eb405bf4476aae9c78ee07b81ad Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 11:04:28 -0500 Subject: [PATCH 3/8] Rely on Python annotations for docstring types --- codegen/lib/layouts/resources.ts | 1 - codegen/lib/layouts/route.ts | 8 +- seam/resources/access_code.py | 25 +- seam/resources/access_grant.py | 22 +- seam/resources/access_method.py | 20 +- seam/resources/acs_access_group.py | 18 +- seam/resources/acs_credential.py | 29 +-- seam/resources/acs_encoder.py | 8 +- seam/resources/acs_entrance.py | 26 +- seam/resources/acs_system.py | 21 +- seam/resources/acs_user.py | 26 +- seam/resources/action_attempt.py | 7 +- seam/resources/batch.py | 25 +- seam/resources/client_session.py | 14 +- seam/resources/connect_webview.py | 21 +- seam/resources/connected_account.py | 20 +- seam/resources/customer_portal.py | 7 +- seam/resources/device.py | 38 +-- seam/resources/device_provider.py | 25 +- seam/resources/instant_key.py | 11 +- seam/resources/noise_threshold.py | 8 +- seam/resources/pagination.py | 5 +- seam/resources/phone.py | 12 +- seam/resources/seam_event.py | 93 +------ seam/resources/space.py | 13 +- seam/resources/thermostat_daily_program.py | 7 +- seam/resources/thermostat_schedule.py | 13 +- seam/resources/unmanaged_access_code.py | 17 +- seam/resources/unmanaged_device.py | 33 +-- seam/resources/user_identity.py | 13 +- seam/resources/webhook.py | 6 +- seam/resources/workspace.py | 12 +- seam/routes/access_codes.py | 186 ++------------ seam/routes/access_codes_simulate.py | 12 +- seam/routes/access_codes_unmanaged.py | 54 +--- seam/routes/access_grants.py | 120 +-------- seam/routes/access_grants_unmanaged.py | 28 +- seam/routes/access_methods.py | 82 +----- seam/routes/access_methods_unmanaged.py | 16 +- seam/routes/acs_access_groups.py | 60 +---- seam/routes/acs_credentials.py | 100 ++------ seam/routes/acs_encoders.py | 66 +---- seam/routes/acs_encoders_simulate.py | 36 +-- seam/routes/acs_entrances.py | 64 +---- seam/routes/acs_systems.py | 38 +-- seam/routes/acs_users.py | 134 ++-------- seam/routes/action_attempts.py | 24 +- seam/routes/client_sessions.py | 92 +------ seam/routes/connect_webviews.py | 58 +---- seam/routes/connected_accounts.py | 52 +--- seam/routes/connected_accounts_simulate.py | 4 +- seam/routes/customers.py | 114 +-------- seam/routes/devices.py | 78 +----- seam/routes/devices_simulate.py | 32 +-- seam/routes/devices_unmanaged.py | 56 +--- seam/routes/events.py | 74 +----- seam/routes/instant_keys.py | 24 +- seam/routes/locks.py | 78 +----- seam/routes/locks_simulate.py | 22 +- seam/routes/noise_sensors.py | 38 +-- seam/routes/noise_sensors_noise_thresholds.py | 58 +---- seam/routes/noise_sensors_simulate.py | 4 +- seam/routes/phones.py | 24 +- seam/routes/phones_simulate.py | 14 +- seam/routes/spaces.py | 128 ++-------- seam/routes/thermostats.py | 240 ++---------------- seam/routes/thermostats_daily_programs.py | 30 +-- seam/routes/thermostats_schedules.py | 58 +---- seam/routes/thermostats_simulate.py | 22 +- seam/routes/user_identities.py | 134 ++-------- seam/routes/user_identities_unmanaged.py | 22 +- seam/routes/webhooks.py | 38 +-- seam/routes/workspaces.py | 60 +---- 73 files changed, 431 insertions(+), 2747 deletions(-) diff --git a/codegen/lib/layouts/resources.ts b/codegen/lib/layouts/resources.ts index ca06e6a..8cc9d8a 100644 --- a/codegen/lib/layouts/resources.ts +++ b/codegen/lib/layouts/resources.ts @@ -85,7 +85,6 @@ const createResourceDocstring = ( ] .filter(Boolean) .join(' ')}`, - `:vartype ${toSafeIdentifier(property.name)}: ${mapPropertyToPythonType(property)}`, ) } if (isDeprecated) { diff --git a/codegen/lib/layouts/route.ts b/codegen/lib/layouts/route.ts index e0bdda8..d664cc9 100644 --- a/codegen/lib/layouts/route.ts +++ b/codegen/lib/layouts/route.ts @@ -75,7 +75,6 @@ const methodDocstring = ( lines.push( '', `:param ${parameter.name}: ${[deprecated, description].filter(Boolean).join(' ')}`, - `:type ${parameter.name}: ${parameter.type}`, ) } @@ -83,16 +82,11 @@ const methodDocstring = ( lines.push( '', ':param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish.', - ':type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]]', ) } if (method.returnResource !== 'None') { - lines.push( - '', - `:returns: ${formatPythonDoc(method.responseDescription)}`, - `:rtype: ${method.returnResource}`, - ) + lines.push('', `:returns: ${formatPythonDoc(method.responseDescription)}`) } if (method.isDeprecated) { diff --git a/seam/resources/access_code.py b/seam/resources/access_code.py index d24e8aa..ead1a49 100644 --- a/seam/resources/access_code.py +++ b/seam/resources/access_code.py @@ -16,76 +16,53 @@ class AccessCode: For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :ivar access_code_id: Unique identifier for the access code. - :vartype access_code_id: str :ivar code: Code used for access. Typically, a numeric or alphanumeric string. - :vartype code: str :ivar common_code_key: Unique identifier for a group of access codes that share the same code. - :vartype common_code_key: str :ivar created_at: Date and time at which the access code was created. - :vartype created_at: str :ivar device_id: Unique identifier for the device associated with the access code. - :vartype device_id: str :ivar dormakaba_oracode_metadata: Metadata for a dormakaba Oracode managed access code. Only present for access codes from dormakaba Oracode devices. - :vartype dormakaba_oracode_metadata: Dict[str, Any] :ivar ends_at: Date and time after which the time-bound access code becomes inactive. - :vartype ends_at: str :ivar errors: Errors associated with the `access code `_. - :vartype errors: List[Dict[str, Any]] :ivar is_backup: Indicates whether the access code is a backup code. - :vartype is_backup: bool :ivar is_backup_access_code_available: Indicates whether a backup access code is available for use if the primary access code is lost or compromised. - :vartype is_backup_access_code_available: bool :ivar is_external_modification_allowed: Indicates whether changes to the access code from external sources are permitted. - :vartype is_external_modification_allowed: bool :ivar is_managed: Indicates whether Seam manages the access code. - :vartype is_managed: bool :ivar is_offline_access_code: Indicates whether the access code is intended for use in offline scenarios. If ``true``, this code can be created on a device without a network connection. - :vartype is_offline_access_code: bool :ivar is_one_time_use: Indicates whether the access code can only be used once. If ``true``, the code becomes invalid after the first use. - :vartype is_one_time_use: bool :ivar is_scheduled_on_device: Indicates whether the code is set on the device according to a preconfigured schedule. - :vartype is_scheduled_on_device: bool :ivar is_waiting_for_code_assignment: Indicates whether the access code is waiting for a code assignment. - :vartype is_waiting_for_code_assignment: bool :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :vartype name: str :ivar pending_mutations: Collection of pending mutations for the access code. Indicates changes that Seam is in the process of pushing to the device. - :vartype pending_mutations: List[Dict[str, Any]] :ivar pulled_backup_access_code_id: Identifier of the pulled backup access code. Used to associate the pulled backup access code with the original access code. - :vartype pulled_backup_access_code_id: str :ivar starts_at: Date and time at which the time-bound access code becomes active. - :vartype starts_at: str :ivar status: Current status of the access code within the operational lifecycle. Values are ``setting``, a transitional phase that indicates that the code is being configured or activated; ``set``, which indicates that the code is active and operational; ``unset``, which indicates a deactivated or unused state, either before activation or after deliberate deactivation; ``removing``, which indicates a transitional period in which the code is being deleted or made inactive; and ``unknown``, which indicates an indeterminate state, due to reasons such as system errors or incomplete data, that highlights a potential need for system review or troubleshooting. See also `Lifecycle of Access Codes `_. - :vartype status: str :ivar type: Type of the access code. ``ongoing`` access codes are active continuously until deactivated manually. ``time_bound`` access codes have a specific duration. - :vartype type: str :ivar warnings: Warnings associated with the `access code `_. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. - :vartype workspace_id: str""" + """ access_code_id: str code: str diff --git a/seam/resources/access_grant.py b/seam/resources/access_grant.py index 22d7e6c..ad2b742 100644 --- a/seam/resources/access_grant.py +++ b/seam/resources/access_grant.py @@ -8,64 +8,44 @@ class AccessGrant: """Represents an Access Grant. Access Grants enable you to grant a user identity access to spaces, entrances, and devices through one or more access methods, such as mobile keys, plastic cards, and PIN codes. You can create an Access Grant for an existing user identity, or you can create a new user identity *while* creating the new Access Grant. :ivar access_grant_id: ID of the Access Grant. - :vartype access_grant_id: str :ivar access_grant_key: Unique key for the access grant within the workspace. - :vartype access_grant_key: str :ivar access_method_ids: IDs of the access methods created for the Access Grant. - :vartype access_method_ids: List[str] :ivar client_session_token: Client Session Token. Only returned if the Access Grant has a mobile_key access method. - :vartype client_session_token: str :ivar created_at: Date and time at which the Access Grant was created. - :vartype created_at: str :ivar customization_profile_id: ID of the customization profile associated with the Access Grant. - :vartype customization_profile_id: str :ivar display_name: Display name of the Access Grant. - :vartype display_name: str :ivar ends_at: Date and time at which the Access Grant ends. - :vartype ends_at: str :ivar errors: Errors associated with the `access grant `_. - :vartype errors: List[Dict[str, Any]] :ivar instant_key_url: Instant Key URL. Only returned if the Access Grant has a single mobile_key access_method. - :vartype instant_key_url: str :ivar location_ids: Deprecated: Use ``space_ids``. - :vartype location_ids: List[str] :ivar name: Name of the Access Grant. If not provided, the display name will be computed. - :vartype name: str :ivar pending_mutations: List of pending mutations for the access grant. This shows updates that are in progress. - :vartype pending_mutations: List[Dict[str, Any]] :ivar requested_access_methods: Access methods that the user requested for the Access Grant. - :vartype requested_access_methods: List[Dict[str, Any]] :ivar reservation_key: Reservation key for the access grant. - :vartype reservation_key: str :ivar space_ids: IDs of the spaces to which the Access Grant gives access. - :vartype space_ids: List[str] :ivar starts_at: Date and time at which the Access Grant starts. - :vartype starts_at: str :ivar user_identity_id: ID of user identity to which the Access Grant gives access. - :vartype user_identity_id: str :ivar warnings: Warnings associated with the `access grant `_. - :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the Seam workspace associated with the Access Grant. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the Seam workspace associated with the Access Grant.""" access_grant_id: str access_grant_key: str diff --git a/seam/resources/access_method.py b/seam/resources/access_method.py index 833cbb9..415f0ff 100644 --- a/seam/resources/access_method.py +++ b/seam/resources/access_method.py @@ -8,58 +8,40 @@ class AccessMethod: """Represents an access method for an Access Grant. Access methods describe the modes of access, such as PIN codes, plastic cards, and mobile keys. For a mobile key, the access method also stores the URL for the associated Instant Key. :ivar access_method_id: ID of the access method. - :vartype access_method_id: str :ivar client_session_token: Token of the client session associated with the access method. - :vartype client_session_token: str :ivar code: The actual PIN code for code access methods. - :vartype code: str :ivar created_at: Date and time at which the access method was created. - :vartype created_at: str :ivar customization_profile_id: ID of the customization profile associated with the access method. - :vartype customization_profile_id: str :ivar display_name: Display name of the access method. - :vartype display_name: str :ivar errors: Errors associated with the `access method `_. - :vartype errors: List[Dict[str, Any]] :ivar instant_key_url: URL of the Instant Key for mobile key access methods. - :vartype instant_key_url: str :ivar is_assignment_required: Indicates whether an existing card credential must be assigned to this access method before it can be issued. Only applies to card-mode access methods on systems that support credential assignment. - :vartype is_assignment_required: bool :ivar is_encoding_required: Indicates whether encoding with an card encoder is required to issue or reissue the plastic card associated with the access method. - :vartype is_encoding_required: bool :ivar is_issued: Indicates whether the access method has been issued. - :vartype is_issued: bool :ivar is_ready_for_assignment: Indicates whether the access method is ready for card assignment. This is true when the access method is in card mode, has not yet been issued, and the system supports credential assignment. - :vartype is_ready_for_assignment: bool :ivar is_ready_for_encoding: Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. - :vartype is_ready_for_encoding: bool :ivar issued_at: Date and time at which the access method was issued. - :vartype issued_at: str :ivar mode: Access method mode. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. - :vartype mode: str :ivar pending_mutations: Pending mutations for the `access method `_. Indicates operations that are in progress. - :vartype pending_mutations: List[Dict[str, Any]] :ivar warnings: Warnings associated with the `access method `_. - :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the Seam workspace associated with the access method. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the Seam workspace associated with the access method.""" access_method_id: str client_session_token: str diff --git a/seam/resources/acs_access_group.py b/seam/resources/acs_access_group.py index 97da659..a11b946 100644 --- a/seam/resources/acs_access_group.py +++ b/seam/resources/acs_access_group.py @@ -12,52 +12,36 @@ class AcsAccessGroup: To learn whether your access control system supports access groups, see the corresponding `system integration guide `_. :ivar access_group_type: Deprecated: Use ``external_type``. - :vartype access_group_type: str :ivar access_group_type_display_name: Deprecated: Use ``external_type_display_name``. - :vartype access_group_type_display_name: str :ivar access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access group's access. - :vartype access_schedule: Dict[str, Any] :ivar acs_access_group_id: ID of the access group. - :vartype acs_access_group_id: str :ivar acs_system_id: ID of the access control system that contains the access group. - :vartype acs_system_id: str :ivar connected_account_id: ID of the connected account that contains the access group. - :vartype connected_account_id: str :ivar created_at: Date and time at which the access group was created. - :vartype created_at: str :ivar display_name: Display name for the access group. - :vartype display_name: str :ivar errors: Errors associated with the ``acs_access_group``. - :vartype errors: List[Dict[str, Any]] :ivar external_type: Brand-specific terminology for the access group type. - :vartype external_type: str :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the access group type. - :vartype external_type_display_name: str :ivar is_managed: Indicates whether Seam manages the access group. - :vartype is_managed: bool :ivar name: Name of the access group. - :vartype name: str :ivar pending_mutations: Collection of pending mutations for the access group. Represents operations that have been requested but not yet completed on the integrated access system. - :vartype pending_mutations: List[Dict[str, Any]] :ivar warnings: Warnings associated with the ``acs_access_group``. - :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the access group. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the access group.""" access_group_type: str access_group_type_display_name: str diff --git a/seam/resources/acs_credential.py b/seam/resources/acs_credential.py index 287bba5..64356dd 100644 --- a/seam/resources/acs_credential.py +++ b/seam/resources/acs_credential.py @@ -14,88 +14,61 @@ class AcsCredential: For granting a person access to a space, `Access Grants `_ are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. :ivar access_method: Access method for the `credential `_. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. - :vartype access_method: str :ivar acs_credential_id: ID of the `credential `_. - :vartype acs_credential_id: str :ivar acs_credential_pool_id: ID of the credential pool to which the credential belongs. - :vartype acs_credential_pool_id: str :ivar acs_system_id: ID of the `access control system `_ that contains the `credential `_. - :vartype acs_system_id: str :ivar acs_user_id: ID of the `ACS user `_ to whom the `credential `_ belongs. - :vartype acs_user_id: str :ivar assa_abloy_vostio_metadata: Vostio-specific metadata for the `credential `_. - :vartype assa_abloy_vostio_metadata: Dict[str, Any] :ivar card_number: Number of the card associated with the `credential `_. - :vartype card_number: str :ivar code: Access (PIN) code for the `credential `_. - :vartype code: str :ivar connected_account_id: ID of the `connected account `_ to which the `credential `_ belongs. - :vartype connected_account_id: str :ivar created_at: Date and time at which the `credential `_ was created. - :vartype created_at: str :ivar display_name: Display name that corresponds to the `credential `_ type. - :vartype display_name: str :ivar ends_at: Date and time at which the `credential `_ validity ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :vartype ends_at: str :ivar errors: Errors associated with the `credential `_. - :vartype errors: List[Dict[str, Any]] :ivar external_type: Brand-specific terminology for the `credential `_ type. Supported values: ``pti_card``, ``brivo_credential``, ``hid_credential``, ``visionline_card``. - :vartype external_type: str :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `credential `_ type. - :vartype external_type_display_name: str :ivar is_issued: Indicates whether the `credential `_ has been encoded onto a card. - :vartype is_issued: bool :ivar is_latest_desired_state_synced_with_provider: Indicates whether the latest state of the `credential `_ has been synced from Seam to the provider. - :vartype is_latest_desired_state_synced_with_provider: bool :ivar is_managed: Indicates whether Seam manages the credential. - :vartype is_managed: bool :ivar is_multi_phone_sync_credential: Indicates whether the `credential `_ is a `multi-phone sync credential `_. - :vartype is_multi_phone_sync_credential: bool :ivar is_one_time_use: Indicates whether the `credential `_ can only be used once. If ``true``, the code becomes invalid after the first use. - :vartype is_one_time_use: bool :ivar issued_at: Date and time at which the `credential `_ was encoded onto a card. - :vartype issued_at: str :ivar latest_desired_state_synced_with_provider_at: Date and time at which the state of the `credential `_ was most recently synced from Seam to the provider. - :vartype latest_desired_state_synced_with_provider_at: str :ivar parent_acs_credential_id: ID of the parent `credential `_. - :vartype parent_acs_credential_id: str :ivar starts_at: Date and time at which the `credential `_ validity starts, in `ISO 8601 `_ format. - :vartype starts_at: str :ivar user_identity_id: ID of the `user identity `_ to whom the `credential `_ belongs. - :vartype user_identity_id: str :ivar visionline_metadata: Visionline-specific metadata for the `credential `_. - :vartype visionline_metadata: Dict[str, Any] :ivar warnings: Warnings associated with the `credential `_. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the workspace that contains the `credential `_. - :vartype workspace_id: str""" + """ access_method: str acs_credential_id: str diff --git a/seam/resources/acs_encoder.py b/seam/resources/acs_encoder.py index 70a6c38..f27c4b2 100644 --- a/seam/resources/acs_encoder.py +++ b/seam/resources/acs_encoder.py @@ -21,25 +21,19 @@ class AcsEncoder: To verify if your access control system requires a card encoder, see the corresponding `system integration guide `_. :ivar acs_encoder_id: ID of the `encoder `_. - :vartype acs_encoder_id: str :ivar acs_system_id: ID of the `access control system `_ that contains the `encoder `_. - :vartype acs_system_id: str :ivar connected_account_id: ID of the connected account that contains the `encoder `_. - :vartype connected_account_id: str :ivar created_at: Date and time at which the `encoder `_ was created. - :vartype created_at: str :ivar display_name: Display name for the `encoder `_. - :vartype display_name: str :ivar errors: Errors associated with the `encoder `_. - :vartype errors: List[Dict[str, Any]] :ivar workspace_id: ID of the workspace that contains the `encoder `_. - :vartype workspace_id: str""" + """ acs_encoder_id: str acs_system_id: str diff --git a/seam/resources/acs_entrance.py b/seam/resources/acs_entrance.py index 55efe04..02b7657 100644 --- a/seam/resources/acs_entrance.py +++ b/seam/resources/acs_entrance.py @@ -10,79 +10,55 @@ class AcsEntrance: In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the ``acs_entrance`` resources in your workspace or get these details for a specific ``acs_entrance``. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. :ivar acs_entrance_id: ID of the `entrance `_. - :vartype acs_entrance_id: str :ivar acs_system_id: ID of the `access control system `_ that contains the `entrance `_. - :vartype acs_system_id: str :ivar akiles_metadata: Akiles-specific metadata associated with the `entrance `_. - :vartype akiles_metadata: Dict[str, Any] :ivar assa_abloy_vostio_metadata: ASSA ABLOY Vostio-specific metadata associated with the `entrance `_. - :vartype assa_abloy_vostio_metadata: Dict[str, Any] :ivar avigilon_alta_metadata: Avigilon Alta-specific metadata associated with the `entrance `_. - :vartype avigilon_alta_metadata: Dict[str, Any] :ivar brivo_metadata: Brivo-specific metadata associated with the `entrance `_. - :vartype brivo_metadata: Dict[str, Any] :ivar can_belong_to_reservation: Indicates whether the ACS entrance can belong to a reservation via an access_grant.reservation_key. - :vartype can_belong_to_reservation: bool :ivar can_unlock_with_card: Indicates whether the ACS entrance can be unlocked with card credentials. - :vartype can_unlock_with_card: bool :ivar can_unlock_with_cloud_key: Indicates whether the ACS entrance can be unlocked with cloud key credentials. - :vartype can_unlock_with_cloud_key: bool :ivar can_unlock_with_code: Indicates whether the ACS entrance can be unlocked with pin codes. - :vartype can_unlock_with_code: bool :ivar can_unlock_with_mobile_key: Indicates whether the ACS entrance can be unlocked with mobile key credentials. - :vartype can_unlock_with_mobile_key: bool :ivar connected_account_id: ID of the `connected account `_ associated with the `entrance `_. - :vartype connected_account_id: str :ivar created_at: Date and time at which the `entrance `_ was created. - :vartype created_at: str :ivar display_name: Display name for the `entrance `_. - :vartype display_name: str :ivar dormakaba_ambiance_metadata: dormakaba Ambiance-specific metadata associated with the `entrance `_. - :vartype dormakaba_ambiance_metadata: Dict[str, Any] :ivar dormakaba_community_metadata: dormakaba Community-specific metadata associated with the `entrance `_. - :vartype dormakaba_community_metadata: Dict[str, Any] :ivar errors: Errors associated with the `entrance `_. - :vartype errors: List[Dict[str, Any]] :ivar hotek_metadata: Hotek-specific metadata associated with the `entrance `_. - :vartype hotek_metadata: Dict[str, Any] :ivar is_locked: Indicates whether the `entrance `_ is currently locked. - :vartype is_locked: bool :ivar latch_metadata: Latch-specific metadata associated with the `entrance `_. - :vartype latch_metadata: Dict[str, Any] :ivar salto_ks_metadata: Salto KS-specific metadata associated with the `entrance `_. - :vartype salto_ks_metadata: Dict[str, Any] :ivar salto_space_metadata: Salto Space-specific metadata associated with the `entrance `_. - :vartype salto_space_metadata: Dict[str, Any] :ivar space_ids: IDs of the spaces that the entrance is in. - :vartype space_ids: List[str] :ivar visionline_metadata: Visionline-specific metadata associated with the `entrance `_. - :vartype visionline_metadata: Dict[str, Any] :ivar warnings: Warnings associated with the `entrance `_. - :vartype warnings: List[Dict[str, Any]]""" + """ acs_entrance_id: str acs_system_id: str diff --git a/seam/resources/acs_system.py b/seam/resources/acs_system.py index 015e180..6b9d6b3 100644 --- a/seam/resources/acs_system.py +++ b/seam/resources/acs_system.py @@ -12,64 +12,45 @@ class AcsSystem: For details about the resources associated with an access control system, see the `access control systems namespace `_. :ivar acs_access_group_count: Number of access groups in the `access control system `_. - :vartype acs_access_group_count: float :ivar acs_system_id: ID of the `access control system `_. - :vartype acs_system_id: str :ivar acs_user_count: Number of users in the `access control system `_. - :vartype acs_user_count: float :ivar connected_account_id: ID of the connected account associated with the `access control system `_. - :vartype connected_account_id: str :ivar connected_account_ids: Deprecated: Use ``connected_account_id``. IDs of the `connected accounts `_ associated with the `access control system `_. - :vartype connected_account_ids: List[str] :ivar created_at: Date and time at which the `access control system `_ was created. - :vartype created_at: str :ivar default_credential_manager_acs_system_id: ID of the default credential manager ``acs_system`` for this `access control system `_. - :vartype default_credential_manager_acs_system_id: str :ivar errors: Errors associated with the `access control system `_. - :vartype errors: List[Dict[str, Any]] :ivar external_type: Brand-specific terminology for the `access control system `_ type. - :vartype external_type: str :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `access control system `_ type. - :vartype external_type_display_name: str :ivar image_alt_text: Alternative text for the `access control system `_ image. - :vartype image_alt_text: str :ivar image_url: URL for the image that represents the `access control system `_. - :vartype image_url: str :ivar is_credential_manager: Indicates whether the ``acs_system`` is a credential manager. - :vartype is_credential_manager: bool :ivar location: Location information for the `access control system `_. - :vartype location: Dict[str, Any] :ivar name: Name of the `access control system `_. - :vartype name: str :ivar system_type: Deprecated: Use ``external_type``. - :vartype system_type: str :ivar system_type_display_name: Deprecated: Use ``external_type_display_name``. - :vartype system_type_display_name: str :ivar visionline_metadata: Visionline-specific metadata for the `access control system `_. - :vartype visionline_metadata: Dict[str, Any] :ivar warnings: Warnings associated with the `access control system `_. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the workspace that contains the `access control system `_. - :vartype workspace_id: str""" + """ acs_access_group_count: float acs_system_id: str diff --git a/seam/resources/acs_user.py b/seam/resources/acs_user.py index 60deb46..6be4dac 100644 --- a/seam/resources/acs_user.py +++ b/seam/resources/acs_user.py @@ -12,79 +12,55 @@ class AcsUser: For details about how to configure users in your access system, see the corresponding `system integration guide `_. :ivar access_schedule: ``starts_at`` and ``ends_at`` timestamps for the `access system user's `_ access. - :vartype access_schedule: Dict[str, Any] :ivar acs_system_id: ID of the `access system `_ that contains the `access system user `_. - :vartype acs_system_id: str :ivar acs_user_id: ID of the `access system user `_. - :vartype acs_user_id: str :ivar connected_account_id: The ID of the connected account that is associated with the `access system user `_. - :vartype connected_account_id: str :ivar created_at: Date and time at which the `access system user `_ was created. - :vartype created_at: str :ivar display_name: Display name for the `access system user `_. - :vartype display_name: str :ivar email: Deprecated: use email_address. - :vartype email: str :ivar email_address: Email address of the `access system user `_. - :vartype email_address: str :ivar errors: Errors associated with the `access system user `_. - :vartype errors: List[Dict[str, Any]] :ivar external_type: Brand-specific terminology for the `access system user `_ type. - :vartype external_type: str :ivar external_type_display_name: Display name that corresponds to the brand-specific terminology for the `access system user `_ type. - :vartype external_type_display_name: str :ivar full_name: Full name of the `access system user `_. - :vartype full_name: str :ivar hid_acs_system_id: ID of the HID access control system associated with the user. - :vartype hid_acs_system_id: str :ivar is_managed: Indicates whether Seam manages the access system user. - :vartype is_managed: bool :ivar is_suspended: Indicates whether the `access system user `_ is currently `suspended `_. - :vartype is_suspended: bool :ivar pending_mutations: Pending mutations associated with the `access system user `_. Seam is in the process of pushing these mutations to the integrated access system. - :vartype pending_mutations: List[Dict[str, Any]] :ivar phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). - :vartype phone_number: str :ivar salto_ks_metadata: Salto KS-specific metadata associated with the `access system user `_. - :vartype salto_ks_metadata: Dict[str, Any] :ivar salto_space_metadata: Salto Space-specific metadata associated with the `access system user `_. - :vartype salto_space_metadata: Dict[str, Any] :ivar user_identity_email_address: Email address of the user identity associated with the `access system user `_. - :vartype user_identity_email_address: str :ivar user_identity_full_name: Full name of the user identity associated with the `access system user `_. - :vartype user_identity_full_name: str :ivar user_identity_id: ID of the user identity associated with the `access system user `_. - :vartype user_identity_id: str :ivar user_identity_phone_number: Phone number of the user identity associated with the `access system user `_ in E.164 format (for example, ``+15555550100``). - :vartype user_identity_phone_number: str :ivar warnings: Warnings associated with the `access system user `_. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: ID of the workspace that contains the `access system user `_. - :vartype workspace_id: str""" + """ access_schedule: Dict[str, Any] acs_system_id: str diff --git a/seam/resources/action_attempt.py b/seam/resources/action_attempt.py index 2980db5..0dd38a6 100644 --- a/seam/resources/action_attempt.py +++ b/seam/resources/action_attempt.py @@ -8,19 +8,14 @@ class ActionAttempt: """An attempt to perform an action in the Seam API. :ivar action_attempt_id: ID of the action attempt. - :vartype action_attempt_id: str :ivar action_type: Action attempt to track the status of locking a door. - :vartype action_type: str :ivar error: Error associated with the action. - :vartype error: Dict[str, Any] :ivar result: Result of the action. - :vartype result: Dict[str, Any] - :ivar status: - :vartype status: str""" + :ivar status:""" action_attempt_id: str action_type: str diff --git a/seam/resources/batch.py b/seam/resources/batch.py index a7f33f1..2321659 100644 --- a/seam/resources/batch.py +++ b/seam/resources/batch.py @@ -16,20 +16,16 @@ class Batch: In addition, for certain devices, Seam also supports `offline access codes `_. Offline access (PIN) codes are designed for door locks that might not always maintain an internet connection. For this type of access code, the device manufacturer uses encryption keys (tokens) to create server-based registries of algorithmically-generated offline PIN codes. Because the tokens remain synchronized with the managed devices, the locks do not require an active internet connection—and you do not need to be near the locks—to create an offline access code. Then, owners or managers can share these offline codes with users through a variety of mechanisms, such as messaging applications. That is, lock users do not need to install a smartphone application to receive an offline access code. For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. - :vartype access_codes: List[Dict[str, Any]] :ivar access_grants: Represents an Access Grant. Access Grants enable you to grant a user identity access to spaces, entrances, and devices through one or more access methods, such as mobile keys, plastic cards, and PIN codes. You can create an Access Grant for an existing user identity, or you can create a new user identity *while* creating the new Access Grant. - :vartype access_grants: List[Dict[str, Any]] :ivar access_methods: Represents an access method for an Access Grant. Access methods describe the modes of access, such as PIN codes, plastic cards, and mobile keys. For a mobile key, the access method also stores the URL for the associated Instant Key. - :vartype access_methods: List[Dict[str, Any]] :ivar acs_access_groups: Group that defines the entrances to which a set of users has access and, in some cases, the access schedule for these entrances and users. Some access control systems use `access group `_, which are sets of users, combined with sets of permissions. These permissions include both the set of areas or assets that the users can access and the schedule during which the users can access these areas or assets. Instead of assigning access rights individually to each access control system user, which can be time-consuming and error-prone, administrators can assign users to an access group, thereby ensuring that the users inherit all the permissions associated with the access group. Using access groups streamlines the process of managing large numbers of access control system users, especially in bigger organizations or complexes. To learn whether your access control system supports access groups, see the corresponding `system integration guide `_. - :vartype acs_access_groups: List[Dict[str, Any]] :ivar acs_credentials: Means by which an `access control system user `_ gains access at an `entrance `_. The ``acs_credential`` object represents a `credential `_ that provides an ACS user access within an `access control system `_. @@ -38,7 +34,6 @@ class Batch: For each ``acs_credential``, you define the access method. You can also specify additional properties, such as a PIN code, depending on the credential type. For granting a person access to a space, `Access Grants `_ are the default and recommended approach. Use the lower-level ACS credential API directly only when you specifically need to manage individual credentials. - :vartype acs_credentials: List[Dict[str, Any]] :ivar acs_encoders: Represents a hardware device that encodes `credential `_ data onto physical cards within an `access control system `_. @@ -54,33 +49,28 @@ class Batch: See `Working with Card Encoders and Scanners `_. To verify if your access control system requires a card encoder, see the corresponding `system integration guide `_. - :vartype acs_encoders: List[Dict[str, Any]] :ivar acs_entrances: Represents an `entrance `_ within an `access control system `_. In an access control system, an entrance is a secured door, gate, zone, or other method of entry. You can list details for all the ``acs_entrance`` resources in your workspace or get these details for a specific ``acs_entrance``. You can also list all entrances associated with a specific credential, and you can list all credentials associated with a specific entrance. - :vartype acs_entrances: List[Dict[str, Any]] :ivar acs_systems: Represents an `access control system `_. Within an ``acs_system``, create ```acs_user``s `_ and ```acs_credential``s `_ to grant access to the ``acs_user``s. For details about the resources associated with an access control system, see the `access control systems namespace `_. - :vartype acs_systems: List[Dict[str, Any]] :ivar acs_users: Represents a `user `_ in an `access system `_. An access system user typically refers to an individual who requires access, like an employee or resident. Each user can possess multiple credentials that serve as their keys or identifiers for access. The type of credential can vary widely. For example, in the Salto system, a user can have a PIN code, a mobile app account, and a fob. In other platforms, it is not uncommon for a user to have more than one of the same credential type, such as multiple key cards. Additionally, these credentials can have a schedule or validity period. For details about how to configure users in your access system, see the corresponding `system integration guide `_. - :vartype acs_users: List[Dict[str, Any]] :ivar action_attempts: Represents an action attempt that enables you to keep track of the progress of your action that affects a physical device or system.actions against a device. Action attempts are useful because the physical world is intrinsically asynchronous. When you request for a device to perform an action, the Seam API immediately returns an action attempt object. In the background, the Seam API performs the action. See also `Action Attempts `_. - :vartype action_attempts: List[Dict[str, Any]] :ivar client_sessions: Represents a `client session `_. If you want to restrict your users' access to their own devices, use client sessions. @@ -91,7 +81,6 @@ class Batch: A client session has a token that you can use with the Seam JavaScript SDK to make requests from the client (browser) directly to the Seam API. The token restricts the user's access to only the devices that they own. See also `Get Started with React `_. - :vartype client_sessions: List[Dict[str, Any]] :ivar connect_webviews: Represents a `Connect Webview `_. @@ -104,35 +93,26 @@ class Batch: When you create a Connect Webview, specify the desired provider category key in the ``provider_category`` parameter. Alternately, to specify a list of providers explicitly, use the ``accepted_providers`` parameter with a list of device provider keys. To list all providers within a category, use ``/devices/list_device_providers`` with the desired ``provider_category`` filter. To list all provider keys, use ``/devices/list_device_providers`` with no filters. - :vartype connect_webviews: List[Dict[str, Any]] :ivar connected_accounts: Represents a `connected account `_. A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. - :vartype connected_accounts: List[Dict[str, Any]] :ivar devices: Represents a `device `_ that has been connected to Seam. - :vartype devices: List[Dict[str, Any]] :ivar events: Represents an event. Events let you know when something interesting happens in your workspace. For example, when a lock is unlocked, Seam creates a ``lock.unlocked`` event. When a device's battery level is low, Seam creates a ``device.battery_low`` event. As with other API resources, you can retrieve an individual event or a list of events. Seam also provides a separate webhook system for sending the event objects directly to an endpoint on your sever. Manage webhooks through `Seam Console `_. You can also use the webhooks sandbox in Seam Console to see the different payloads for each event and test them against your own endpoints. - :vartype events: List[Dict[str, Any]] :ivar instant_keys: Represents a Seam Instant Key. For issuing Bluetooth mobile keys, Instant Keys are the fastest way to share access. With a single API call, you can create a mobile key and send it through text or email or embed it in your own app. There’s no app to install, nor account to create. Your user just taps a link and gets a lightweight, native-feeling experience using iOS App Clip or Instant Apps on Android. Further, Instant Keys work offline, so even in areas with poor cellular or Wi-Fi, like elevator banks or concrete-walled hallways, the Instant Keys still work. - :vartype instant_keys: List[Dict[str, Any]] :ivar noise_thresholds: Represents a `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. - :vartype noise_thresholds: List[Dict[str, Any]] :ivar spaces: Represents a space that is a logical grouping of devices and entrances. You can assign access to an entire space, thereby making granting access more efficient. - :vartype spaces: List[Dict[str, Any]] :ivar thermostat_daily_programs: Represents a thermostat daily program, consisting of a set of periods, each of which has a starting time and the key that identifies the climate preset to apply at the starting time. - :vartype thermostat_daily_programs: List[Dict[str, Any]] :ivar thermostat_schedules: Represents a `thermostat schedule `_ that activates a configured `climate preset `_ on a `thermostat `_ at a specified starting time and deactivates the climate preset at a specified ending time. - :vartype thermostat_schedules: List[Dict[str, Any]] :ivar unmanaged_access_codes: Represents an `unmanaged smart lock access code `_. @@ -145,16 +125,13 @@ class Batch: Not all providers support unmanaged access codes. The following providers do not support unmanaged access codes: - `Kwikset `_ - :vartype unmanaged_access_codes: List[Dict[str, Any]] :ivar unmanaged_devices: Represents an `unmanaged device `_. An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. - :vartype unmanaged_devices: List[Dict[str, Any]] :ivar user_identities: Represents a `user identity `_ associated with an application user account. - :vartype user_identities: List[Dict[str, Any]] :ivar workspaces: Represents a Seam `workspace `_. A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A `sandbox workspace `_ is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a `production workspace `_. - :vartype workspaces: List[Dict[str, Any]]""" + """ access_codes: List[Dict[str, Any]] access_grants: List[Dict[str, Any]] diff --git a/seam/resources/client_session.py b/seam/resources/client_session.py index 1c12f25..a23ebcd 100644 --- a/seam/resources/client_session.py +++ b/seam/resources/client_session.py @@ -16,40 +16,28 @@ class ClientSession: See also `Get Started with React `_. :ivar client_session_id: ID of the client session. - :vartype client_session_id: str :ivar connect_webview_ids: IDs of the `Connect Webviews `_ associated with the `client session `_. - :vartype connect_webview_ids: List[str] :ivar connected_account_ids: IDs of the `connected accounts `_ associated with the `client session `_. - :vartype connected_account_ids: List[str] :ivar created_at: Date and time at which the `client session `_ was created. - :vartype created_at: str :ivar customer_key: Customer key associated with the `client session `_. - :vartype customer_key: str :ivar device_count: Number of devices associated with the `client session `_. - :vartype device_count: float :ivar expires_at: Date and time at which the `client session `_ expires. - :vartype expires_at: str :ivar token: Client session token associated with the `client session `_. - :vartype token: str :ivar user_identifier_key: Your user ID for the user associated with the `client session `_. - :vartype user_identifier_key: str :ivar user_identity_id: ID of the `user identity `_ associated with the client session. - :vartype user_identity_id: str :ivar user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ associated with the client session. - :vartype user_identity_ids: List[str] - :ivar workspace_id: ID of the workspace associated with the client session. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace associated with the client session.""" client_session_id: str connect_webview_ids: List[str] diff --git a/seam/resources/connect_webview.py b/seam/resources/connect_webview.py index d59a7c4..bb436eb 100644 --- a/seam/resources/connect_webview.py +++ b/seam/resources/connect_webview.py @@ -18,61 +18,42 @@ class ConnectWebview: To list all providers within a category, use ``/devices/list_device_providers`` with the desired ``provider_category`` filter. To list all provider keys, use ``/devices/list_device_providers`` with no filters. :ivar accepted_capabilities: High-level device capabilities that the Connect Webview can accept. When creating a Connect Webview, you can specify the types of devices that it can connect to Seam. If you do not set custom ``accepted_capabilities``, Seam uses a default set of ``accepted_capabilities`` for each provider. For example, if you create a Connect Webview that accepts SmartThing devices, without specifying ``accepted_capabilities``, Seam accepts only SmartThings locks. To connect SmartThings thermostats and locks to Seam, create a Connect Webview and include both ``thermostat`` and ``lock`` in the ``accepted_capabilities``. - :vartype accepted_capabilities: List[str] :ivar accepted_providers: List of accepted `provider keys `_. - :vartype accepted_providers: List[str] :ivar any_provider_allowed: Indicates whether any provider is allowed. - :vartype any_provider_allowed: bool :ivar authorized_at: Date and time at which the user authorized (through the Connect Webview) the management of their devices. - :vartype authorized_at: str :ivar automatically_manage_new_devices: Indicates whether Seam should `import all new devices `_ for the connected account to make these devices available for use and management by the Seam API. - :vartype automatically_manage_new_devices: bool :ivar connect_webview_id: ID of the Connect Webview. - :vartype connect_webview_id: str :ivar connected_account_id: ID of the connected account associated with the Connect Webview. - :vartype connected_account_id: str :ivar created_at: Date and time at which the Connect Webview was created. - :vartype created_at: str :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. - :vartype custom_metadata: Dict[str, Any] :ivar custom_redirect_failure_url: URL to which the Connect Webview should redirect when an unexpected error occurs. - :vartype custom_redirect_failure_url: str :ivar custom_redirect_url: URL to which the Connect Webview should redirect when the user successfully pairs a device or system. If you do not set the ``custom_redirect_failure_url``, the Connect Webview redirects to the ``custom_redirect_url`` when an unexpected error occurs. - :vartype custom_redirect_url: str :ivar customer_key: The customer key associated with this webview, if any. - :vartype customer_key: str :ivar device_selection_mode: Device selection mode of the Connect Webview. Supported values: ``none``, ``single``, ``multiple``. - :vartype device_selection_mode: str :ivar login_successful: Indicates whether the user logged in successfully using the Connect Webview. - :vartype login_successful: bool :ivar selected_provider: Selected provider of the Connect Webview, one of the `provider keys `_. - :vartype selected_provider: str :ivar status: Status of the Connect Webview. ``authorized`` indicates that the user has successfully logged into their device or system account, thereby completing the Connect Webview. - :vartype status: str :ivar url: URL for the Connect Webview. You use the URL to display the Connect Webview flow to your user. - :vartype url: str :ivar wait_for_device_creation: Indicates whether Seam should `finish syncing all devices `_ in a newly-connected account before completing the associated Connect Webview. - :vartype wait_for_device_creation: bool - :ivar workspace_id: ID of the workspace that contains the Connect Webview. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the Connect Webview.""" accepted_capabilities: List[str] accepted_providers: List[str] diff --git a/seam/resources/connected_account.py b/seam/resources/connected_account.py index 52aefee..2a0e775 100644 --- a/seam/resources/connected_account.py +++ b/seam/resources/connected_account.py @@ -8,58 +8,40 @@ class ConnectedAccount: """Represents a `connected account `_. A connected account is an external third-party account to which your user has authorized Seam to get access, for example, an August account with a list of door locks. :ivar accepted_capabilities: List of capabilities that were accepted during the account connection process. - :vartype accepted_capabilities: List[str] :ivar account_type: Type of connected account. - :vartype account_type: str :ivar account_type_display_name: Display name for the connected account type. - :vartype account_type_display_name: str :ivar automatically_manage_new_devices: Indicates whether Seam should `import all new devices `_ for the connected account to make these devices available for management by the Seam API. - :vartype automatically_manage_new_devices: bool :ivar connected_account_id: ID of the connected account. - :vartype connected_account_id: str :ivar created_at: Date and time at which the connected account was created. - :vartype created_at: str :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. - :vartype custom_metadata: Dict[str, Any] :ivar customer_key: Your unique key for the customer associated with this connected account. - :vartype customer_key: str :ivar default_checkin_time: Default reservation check-in time for this connected account, as ``HH:mm`` (24-hour). Sourced from the connector configuration — set during the connect_webview for providers like Lodgify whose API does not expose check-in times. - :vartype default_checkin_time: str :ivar default_checkout_time: Default reservation check-out time for this connected account, as ``HH:mm`` (24-hour). Sourced from the connector configuration. - :vartype default_checkout_time: str :ivar display_name: Display name for the connected account. - :vartype display_name: str :ivar errors: Errors associated with the connected account. - :vartype errors: List[Dict[str, Any]] :ivar ical_feed_origin: For iCal connected accounts, the platform that produced the feed (for example, ``airbnb``, ``vrbo``, or ``booking``), or ``unknown`` when it could not be determined. Intended for rendering the source platform's logo. - :vartype ical_feed_origin: str :ivar ical_url: For iCal connected accounts, the feed URL for the connection. Sourced from the connector configuration. - :vartype ical_url: str :ivar image_url: Logo URL for the connected account provider. - :vartype image_url: str :ivar time_zone: IANA time zone (e.g. America/Los_Angeles) for this connected account. Sourced from the connector configuration. - :vartype time_zone: str :ivar user_identifier: Deprecated: Use ``display_name`` instead. User identifier associated with the connected account. - :vartype user_identifier: Dict[str, Any] - :ivar warnings: Warnings associated with the connected account. - :vartype warnings: List[Dict[str, Any]]""" + :ivar warnings: Warnings associated with the connected account.""" accepted_capabilities: List[str] account_type: str diff --git a/seam/resources/customer_portal.py b/seam/resources/customer_portal.py index 305bfe2..3a62506 100644 --- a/seam/resources/customer_portal.py +++ b/seam/resources/customer_portal.py @@ -12,19 +12,14 @@ class CustomerPortal: Seam hosts these flows, handling everything from account connection and device mapping to full-featured device control. :ivar created_at: Date and time at which the customer portal link was created. - :vartype created_at: str :ivar customer_key: Customer key for the customer portal. - :vartype customer_key: str :ivar expires_at: Date and time at which the customer portal link expires. - :vartype expires_at: str :ivar url: URL for the customer portal. - :vartype url: str - :ivar workspace_id: ID of the workspace associated with the customer portal. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace associated with the customer portal.""" created_at: str customer_key: str diff --git a/seam/resources/device.py b/seam/resources/device.py index 6a157ff..7813fd1 100644 --- a/seam/resources/device.py +++ b/seam/resources/device.py @@ -8,115 +8,79 @@ class Device: """Represents a `device `_ that has been connected to Seam. :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. - :vartype can_configure_auto_lock: bool :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. - :vartype can_hvac_cool: bool :ivar can_hvac_heat: Indicates whether the thermostat supports heating. - :vartype can_hvac_heat: bool :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. - :vartype can_hvac_heat_cool: bool :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. - :vartype can_program_offline_access_codes: bool :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. - :vartype can_program_online_access_codes: bool :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. - :vartype can_program_thermostat_programs_as_different_each_day: bool :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. - :vartype can_program_thermostat_programs_as_same_each_day: bool :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. - :vartype can_program_thermostat_programs_as_weekday_weekend: bool :ivar can_remotely_lock: Indicates whether the device supports remote locking. - :vartype can_remotely_lock: bool :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. - :vartype can_remotely_unlock: bool :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. - :vartype can_run_thermostat_programs: bool :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. - :vartype can_simulate_connection: bool :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. - :vartype can_simulate_disconnection: bool :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. - :vartype can_simulate_hub_connection: bool :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. - :vartype can_simulate_hub_disconnection: bool :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. - :vartype can_simulate_paid_subscription: bool :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. - :vartype can_simulate_removal: bool :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. - :vartype can_turn_off_hvac: bool :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. - :vartype can_unlock_with_code: bool :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are ``access_code``, which indicates that the device can manage and utilize digital PIN codes for secure access; ``lock``, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; ``noise_detection``, which indicates that the device supports monitoring and responding to ambient noise levels; ``thermostat``, which indicates that the device can regulate and adjust indoor temperatures; ``battery``, which indicates that the device can manage battery life and health; and ``phone``, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by `capability flags `_. - :vartype capabilities_supported: List[str] :ivar connected_account_id: Unique identifier for the account associated with the device. - :vartype connected_account_id: str :ivar created_at: Date and time at which the device object was created. - :vartype created_at: str :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. - :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the device. - :vartype device_id: str :ivar device_manufacturer: Manufacturer of the device. Represents the hardware brand, which may differ from the provider. - :vartype device_manufacturer: Dict[str, Any] :ivar device_provider: Provider of the device. Represents the third-party service through which the device is controlled. - :vartype device_provider: Dict[str, Any] :ivar device_type: Type of the device. - :vartype device_type: str :ivar display_name: Display name of the device, defaults to nickname (if it is set) or ``properties.appearance.name``, otherwise. Enables administrators and users to identify the device easily, especially when there are numerous devices. - :vartype display_name: str :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: ``error_code`` and ``message``. ``error_code`` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. - :vartype errors: List[Dict[str, Any]] :ivar is_managed: Indicates whether Seam manages the device. See also `Managed and Unmanaged Devices `_. - :vartype is_managed: bool :ivar location: Location information for the device. - :vartype location: Dict[str, Any] :ivar nickname: Optional nickname to describe the device, settable through Seam. - :vartype nickname: str :ivar properties: Properties of the device. - :vartype properties: Dict[str, Any] :ivar space_ids: IDs of the spaces the device is in. - :vartype space_ids: List[str] :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: ``warning_code`` and ``message``. ``warning_code`` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. - :vartype workspace_id: str""" + """ can_configure_auto_lock: bool can_hvac_cool: bool diff --git a/seam/resources/device_provider.py b/seam/resources/device_provider.py index fbbdc8b..b1fe461 100644 --- a/seam/resources/device_provider.py +++ b/seam/resources/device_provider.py @@ -7,76 +7,53 @@ class DeviceProvider: """ :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. - :vartype can_configure_auto_lock: bool :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. - :vartype can_hvac_cool: bool :ivar can_hvac_heat: Indicates whether the thermostat supports heating. - :vartype can_hvac_heat: bool :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. - :vartype can_hvac_heat_cool: bool :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. - :vartype can_program_offline_access_codes: bool :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. - :vartype can_program_online_access_codes: bool :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. - :vartype can_program_thermostat_programs_as_different_each_day: bool :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. - :vartype can_program_thermostat_programs_as_same_each_day: bool :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. - :vartype can_program_thermostat_programs_as_weekday_weekend: bool :ivar can_remotely_lock: Indicates whether the device supports remote locking. - :vartype can_remotely_lock: bool :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. - :vartype can_remotely_unlock: bool :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. - :vartype can_run_thermostat_programs: bool :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. - :vartype can_simulate_connection: bool :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. - :vartype can_simulate_disconnection: bool :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. - :vartype can_simulate_hub_connection: bool :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. - :vartype can_simulate_hub_disconnection: bool :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. - :vartype can_simulate_paid_subscription: bool :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. - :vartype can_simulate_removal: bool :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. - :vartype can_turn_off_hvac: bool :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. - :vartype can_unlock_with_code: bool :ivar device_provider_name: Name of the device provider. - :vartype device_provider_name: str :ivar display_name: Display name for the device provider. - :vartype display_name: str :ivar image_url: Image URL for the device provider. - :vartype image_url: str :ivar provider_categories: List of provider categories to which the device provider belongs, such as ``stable``, ``consumer_smartlocks``, ``thermostats``, and so on. - :vartype provider_categories: List[str]""" + """ can_configure_auto_lock: bool can_hvac_cool: bool diff --git a/seam/resources/instant_key.py b/seam/resources/instant_key.py index 53aebcc..a635069 100644 --- a/seam/resources/instant_key.py +++ b/seam/resources/instant_key.py @@ -10,31 +10,22 @@ class InstantKey: There’s no app to install, nor account to create. Your user just taps a link and gets a lightweight, native-feeling experience using iOS App Clip or Instant Apps on Android. Further, Instant Keys work offline, so even in areas with poor cellular or Wi-Fi, like elevator banks or concrete-walled hallways, the Instant Keys still work. :ivar client_session_id: ID of the client session associated with the Instant Key. - :vartype client_session_id: str :ivar created_at: Date and time at which the Instant Key was created. - :vartype created_at: str :ivar customization: Customization applied to the Instant Key UI. - :vartype customization: Dict[str, Any] :ivar customization_profile_id: ID of the customization profile associated with the Instant Key. - :vartype customization_profile_id: str :ivar expires_at: Date and time at which the Instant Key expires. - :vartype expires_at: str :ivar instant_key_id: ID of the Instant Key. - :vartype instant_key_id: str :ivar instant_key_url: Shareable URL for the Instant Key. Use the URL to deliver the Instant Key to your user through a link in a text message or email or by embedding it in your web app. - :vartype instant_key_url: str :ivar user_identity_id: ID of the user identity associated with the Instant Key. - :vartype user_identity_id: str - :ivar workspace_id: ID of the workspace that contains the Instant Key. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the Instant Key.""" client_session_id: str created_at: str diff --git a/seam/resources/noise_threshold.py b/seam/resources/noise_threshold.py index 87c86ff..0c8eee1 100644 --- a/seam/resources/noise_threshold.py +++ b/seam/resources/noise_threshold.py @@ -8,25 +8,19 @@ class NoiseThreshold: """Represents a `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :ivar device_id: Unique identifier for the device that contains the noise threshold. - :vartype device_id: str :ivar ends_daily_at: Time at which the noise threshold should become inactive daily. - :vartype ends_daily_at: str :ivar name: Name of the noise threshold. - :vartype name: str :ivar noise_threshold_decibels: Noise level in decibels for the noise threshold. - :vartype noise_threshold_decibels: float :ivar noise_threshold_id: Unique identifier for the noise threshold. - :vartype noise_threshold_id: str :ivar noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. - :vartype noise_threshold_nrs: float :ivar starts_daily_at: Time at which the noise threshold should become active daily. - :vartype starts_daily_at: str""" + """ device_id: str ends_daily_at: str diff --git a/seam/resources/pagination.py b/seam/resources/pagination.py index fadd299..164cac4 100644 --- a/seam/resources/pagination.py +++ b/seam/resources/pagination.py @@ -8,13 +8,10 @@ class Pagination: """Information about the current page of results. :ivar has_next_page: Indicates whether there is another page of results after this one. - :vartype has_next_page: bool :ivar next_page_cursor: Opaque value that can be used to select the next page of results via the ``page_cursor`` parameter. - :vartype next_page_cursor: str - :ivar next_page_url: URL to get the next page of results. - :vartype next_page_url: str""" + :ivar next_page_url: URL to get the next page of results.""" has_next_page: bool next_page_cursor: str diff --git a/seam/resources/phone.py b/seam/resources/phone.py index 8bb54e4..a9830ef 100644 --- a/seam/resources/phone.py +++ b/seam/resources/phone.py @@ -8,34 +8,24 @@ class Phone: """Represents an app user's mobile phone. :ivar created_at: Date and time at which the phone was created. - :vartype created_at: str :ivar custom_metadata: Optional `custom metadata `_ for the phone. - :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the phone. - :vartype device_id: str :ivar device_type: Type of the phone device, such as ``ios_phone`` or ``android_phone``. - :vartype device_type: str :ivar display_name: Display name of the phone. Defaults to ``nickname`` (if it is set) or ``properties.appearance.name``, otherwise. Enables administrators and users to identify the phone easily, especially when there are numerous phones. - :vartype display_name: str :ivar errors: Errors associated with the phone. - :vartype errors: List[Dict[str, Any]] :ivar nickname: Optional nickname to describe the phone, settable through Seam. - :vartype nickname: str :ivar properties: Properties of the phone. - :vartype properties: Dict[str, Any] :ivar warnings: Warnings associated with the phone. - :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the phone. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the phone.""" created_at: str custom_metadata: Dict[str, Any] diff --git a/seam/resources/seam_event.py b/seam/resources/seam_event.py index f2bd789..e0b14e2 100644 --- a/seam/resources/seam_event.py +++ b/seam/resources/seam_event.py @@ -7,279 +7,188 @@ class SeamEvent: """ :ivar access_code_id: ID of the affected access code. - :vartype access_code_id: str :ivar connected_account_custom_metadata: Custom metadata of the connected account, present when connected_account_id is provided. - :vartype connected_account_custom_metadata: Dict[str, Any] :ivar connected_account_id: ID of the connected account associated with the affected access code. - :vartype connected_account_id: str :ivar created_at: Date and time at which the event was created. - :vartype created_at: str :ivar device_custom_metadata: Custom metadata of the device, present when device_id is provided. - :vartype device_custom_metadata: Dict[str, Any] :ivar device_id: ID of the device associated with the affected access code. - :vartype device_id: str :ivar event_description: Human-readable description of the event. Persisted when the event is created (so the creating code, including a provider, can supply a tailored description) and otherwise derived from the event. - :vartype event_description: str :ivar event_id: ID of the event. - :vartype event_id: str :ivar event_type: - :vartype event_type: str :ivar occurred_at: Date and time at which the event occurred. - :vartype occurred_at: str :ivar workspace_id: ID of the workspace associated with the event. - :vartype workspace_id: str :ivar change_reason: Human-readable reason for the change (e.g. ``ongoing code auto-renewed``). - :vartype change_reason: str :ivar changed_properties: List of properties that changed on the access code. - :vartype changed_properties: List[Dict[str, Any]] :ivar description: Human-readable description of the change and its source. - :vartype description: str :ivar from_: Previous access code name configuration. - :vartype from_: Dict[str, Any] :ivar to: New access code name configuration. - :vartype to: Dict[str, Any] :ivar requested_mutations: Array of mutations requested on the access code, each containing the mutation type and from/to values. - :vartype requested_mutations: List[Dict[str, Any]] :ivar code: Code for the affected access code. - :vartype code: str :ivar access_code_errors: Errors associated with the access code. - :vartype access_code_errors: List[Dict[str, Any]] :ivar access_code_warnings: Warnings associated with the access code. - :vartype access_code_warnings: List[Dict[str, Any]] :ivar connected_account_errors: Errors associated with the connected account. - :vartype connected_account_errors: List[Dict[str, Any]] :ivar connected_account_warnings: Warnings associated with the connected account. - :vartype connected_account_warnings: List[Dict[str, Any]] :ivar device_errors: Errors associated with the device. - :vartype device_errors: List[Dict[str, Any]] :ivar device_warnings: Warnings associated with the device. - :vartype device_warnings: List[Dict[str, Any]] :ivar backup_access_code_id: ID of the backup access code that was pulled from the pool. - :vartype backup_access_code_id: str :ivar access_grant_id: ID of the affected Access Grant. - :vartype access_grant_id: str :ivar acs_entrance_id: ID of the affected `entrance `_. - :vartype acs_entrance_id: str :ivar access_grant_key: Key of the affected Access Grant (if present). - :vartype access_grant_key: str :ivar ends_at: The new end time for the access grant. - :vartype ends_at: str :ivar starts_at: The new start time for the access grant. - :vartype starts_at: str :ivar error_message: Description of why the access methods could not be created. - :vartype error_message: str :ivar missing_device_ids: IDs of the devices that did not receive a requested access method. Use these to identify which specific devices failed without having to fetch the Access Grant. - :vartype missing_device_ids: List[str] :ivar access_grant_ids: IDs of the access grants associated with this access method. - :vartype access_grant_ids: List[str] :ivar access_grant_keys: Keys of the access grants associated with this access method (if present). - :vartype access_grant_keys: List[str] :ivar access_method_id: ID of the affected access method. - :vartype access_method_id: str :ivar is_backup_code: Indicates whether the code is a backup code (only present when mode is 'code' and a backup code was used). - :vartype is_backup_code: bool :ivar acs_system_id: ID of the access system. - :vartype acs_system_id: str :ivar acs_system_errors: Errors associated with the access control system. - :vartype acs_system_errors: List[Dict[str, Any]] :ivar acs_system_warnings: Warnings associated with the access control system. - :vartype acs_system_warnings: List[Dict[str, Any]] :ivar acs_credential_id: ID of the affected credential. - :vartype acs_credential_id: str :ivar acs_user_id: ID of the affected access system user. - :vartype acs_user_id: str :ivar acs_encoder_id: ID of the affected encoder. - :vartype acs_encoder_id: str :ivar acs_access_group_id: ID of the affected access group. - :vartype acs_access_group_id: str :ivar client_session_id: ID of the affected client session. - :vartype client_session_id: str :ivar connect_webview_id: ID of the Connect Webview associated with the event. - :vartype connect_webview_id: str :ivar customer_key: The customer key associated with this connected account, if any. - :vartype customer_key: str :ivar connected_account_type: undocumented: Unreleased. - :vartype connected_account_type: str :ivar action_attempt_id: ID of the affected action attempt. - :vartype action_attempt_id: str :ivar action_type: Type of the action. - :vartype action_type: str :ivar status: Status of the action. - :vartype status: str :ivar error_code: Error code associated with the disconnection event, if any. - :vartype error_code: str :ivar battery_level: Number in the range 0 to 1.0 indicating the amount of battery in the affected device, as reported by the device. - :vartype battery_level: float :ivar battery_status: Battery status of the affected device, calculated from the numeric ``battery_level`` value. - :vartype battery_status: str :ivar device_name: Name of the deleted device, captured at deletion time. The device record no longer exists when this event fires, so the name is preserved here. Null when the device had no resolvable name. - :vartype device_name: str :ivar minut_metadata: Metadata from Minut. - :vartype minut_metadata: Dict[str, Any] :ivar noise_level_decibels: Detected noise level in decibels. - :vartype noise_level_decibels: float :ivar noise_level_nrs: Detected noise level in Noiseaware Noise Risk Score (NRS). - :vartype noise_level_nrs: float :ivar noise_threshold_id: ID of the noise threshold that was triggered. - :vartype noise_threshold_id: str :ivar noise_threshold_name: Name of the noise threshold that was triggered. - :vartype noise_threshold_name: str :ivar noiseaware_metadata: Metadata from Noiseaware. - :vartype noiseaware_metadata: Dict[str, Any] :ivar access_code_is_managed: Whether the access code is managed by Seam (true) or unmanaged (false). Only present when access_code_id is set. - :vartype access_code_is_managed: bool :ivar is_via_bluetooth: Whether the lock action was performed over Bluetooth by a remote client (such as the provider's mobile app), rather than a direct physical interaction or a Seam-initiated remote action. - :vartype is_via_bluetooth: bool :ivar is_via_nfc: Whether the lock action was performed by an NFC credential tap (such as an Apple Home Key or an NFC key fob) presented to the lock, rather than a direct physical interaction or a Seam-initiated remote action. - :vartype is_via_nfc: bool :ivar method: Method by which the lock was locked. ``keycode``: an access code was used (see ``access_code_id``). ``manual``: a physical action such as a thumbturn or button press. ``remote``: a remote action via an app, Bluetooth, or the Seam API (see ``action_attempt_id`` if Seam-initiated; see ``is_via_bluetooth`` or ``is_via_nfc`` for the transport). ``automatic``: triggered automatically, for example by an auto-relock timer. ``unknown``: could not be determined. - :vartype method: str :ivar user_identity_id: undocumented: Unreleased. --- ID of the user identity associated with the lock event. - :vartype user_identity_id: str :ivar reason: Why access was denied, when the provider reports a determinable cause. Omitted when unknown. - :vartype reason: Dict[str, Any] :ivar climate_preset_key: Key of the climate preset that was activated. - :vartype climate_preset_key: str :ivar is_fallback_climate_preset: Indicates whether the climate preset that was activated is the fallback climate preset for the thermostat. - :vartype is_fallback_climate_preset: bool :ivar thermostat_schedule_id: ID of the thermostat schedule that prompted the affected climate preset to be activated. - :vartype thermostat_schedule_id: str :ivar cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. - :vartype cooling_set_point_celsius: float :ivar cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. - :vartype cooling_set_point_fahrenheit: float :ivar fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. - :vartype fan_mode_setting: str :ivar heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. - :vartype heating_set_point_celsius: float :ivar heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. - :vartype heating_set_point_fahrenheit: float :ivar hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. - :vartype hvac_mode_setting: str :ivar lower_limit_celsius: Lower temperature limit, in °C, defined by the set threshold. - :vartype lower_limit_celsius: float :ivar lower_limit_fahrenheit: Lower temperature limit, in °F, defined by the set threshold. - :vartype lower_limit_fahrenheit: float :ivar temperature_celsius: Temperature, in °C, reported by the affected thermostat. - :vartype temperature_celsius: float :ivar temperature_fahrenheit: Temperature, in °F, reported by the affected thermostat. - :vartype temperature_fahrenheit: float :ivar upper_limit_celsius: Upper temperature limit, in °C, defined by the set threshold. - :vartype upper_limit_celsius: float :ivar upper_limit_fahrenheit: Upper temperature limit, in °F, defined by the set threshold. - :vartype upper_limit_fahrenheit: float :ivar desired_temperature_celsius: Desired temperature, in °C, defined by the affected thermostat's cooling or heating set point. - :vartype desired_temperature_celsius: float :ivar desired_temperature_fahrenheit: Desired temperature, in °F, defined by the affected thermostat's cooling or heating set point. - :vartype desired_temperature_fahrenheit: float :ivar activation_reason: The reason the camera was activated. - :vartype activation_reason: str :ivar image_url: URL to a thumbnail image captured at the time of activation. - :vartype image_url: str :ivar motion_sub_type: Sub-type of motion detected, if available. - :vartype motion_sub_type: str :ivar video_url: URL to a short video clip captured at the time of activation. - :vartype video_url: str :ivar acs_entrance_ids: IDs of all ACS entrances currently attached to the space. - :vartype acs_entrance_ids: List[str] :ivar device_ids: IDs of all devices currently attached to the space. - :vartype device_ids: List[str] :ivar space_id: ID of the affected space. - :vartype space_id: str - :ivar space_key: Unique key for the space within the workspace. - :vartype space_key: str""" + :ivar space_key: Unique key for the space within the workspace.""" access_code_id: str connected_account_custom_metadata: Dict[str, Any] diff --git a/seam/resources/space.py b/seam/resources/space.py index 4cf0d81..4eaa901 100644 --- a/seam/resources/space.py +++ b/seam/resources/space.py @@ -8,37 +8,26 @@ class Space: """Represents a space that is a logical grouping of devices and entrances. You can assign access to an entire space, thereby making granting access more efficient. :ivar acs_entrance_count: Number of entrances in the space. - :vartype acs_entrance_count: float :ivar created_at: Date and time at which the space was created. - :vartype created_at: str :ivar customer_data: Reservation/stay-related defaults for the space. Also carries the provider/PMS-supplied name under a ``_name`` key (e.g. ``guesty_name``), which Seam preserves when you rename the space (read-only — managed by Seam). - :vartype customer_data: Dict[str, Any] :ivar customer_key: Customer key associated with the space. - :vartype customer_key: str :ivar device_count: Number of devices in the space. - :vartype device_count: float :ivar display_name: Display name for the space. - :vartype display_name: str :ivar geolocation: Geographic coordinates (latitude and longitude) of the space. - :vartype geolocation: Dict[str, Any] :ivar name: Name of the space. - :vartype name: str :ivar space_id: ID of the space. - :vartype space_id: str :ivar space_key: Unique key for the space within the workspace. - :vartype space_key: str - :ivar workspace_id: ID of the workspace associated with the space. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace associated with the space.""" acs_entrance_count: float created_at: str diff --git a/seam/resources/thermostat_daily_program.py b/seam/resources/thermostat_daily_program.py index e3bf2de..dbc703f 100644 --- a/seam/resources/thermostat_daily_program.py +++ b/seam/resources/thermostat_daily_program.py @@ -8,22 +8,17 @@ class ThermostatDailyProgram: """Represents a thermostat daily program, consisting of a set of periods, each of which has a starting time and the key that identifies the climate preset to apply at the starting time. :ivar created_at: Date and time at which the thermostat daily program was created. - :vartype created_at: str :ivar device_id: ID of the thermostat device on which the thermostat daily program is configured. - :vartype device_id: str :ivar name: User-friendly name to identify the thermostat daily program. - :vartype name: str :ivar periods: Array of thermostat daily program periods. - :vartype periods: List[Dict[str, Any]] :ivar thermostat_daily_program_id: ID of the thermostat daily program. - :vartype thermostat_daily_program_id: str :ivar workspace_id: ID of the workspace that contains the thermostat daily program. - :vartype workspace_id: str""" + """ created_at: str device_id: str diff --git a/seam/resources/thermostat_schedule.py b/seam/resources/thermostat_schedule.py index abab093..13d9ae9 100644 --- a/seam/resources/thermostat_schedule.py +++ b/seam/resources/thermostat_schedule.py @@ -8,37 +8,26 @@ class ThermostatSchedule: """Represents a `thermostat schedule `_ that activates a configured `climate preset `_ on a `thermostat `_ at a specified starting time and deactivates the climate preset at a specified ending time. :ivar climate_preset_key: Key of the `climate preset `_ to use for the `thermostat schedule `_. - :vartype climate_preset_key: str :ivar created_at: Date and time at which the `thermostat schedule `_ was created. - :vartype created_at: str :ivar device_id: ID of the desired `thermostat `_ device. - :vartype device_id: str :ivar ends_at: Date and time at which the `thermostat schedule `_ ends, in `ISO 8601 `_ format. - :vartype ends_at: str :ivar errors: Errors associated with the `thermostat schedule `_. - :vartype errors: List[Dict[str, Any]] :ivar is_override_allowed: Indicates whether a person at the thermostat can change the thermostat's settings after the `thermostat schedule `_ starts. - :vartype is_override_allowed: bool :ivar max_override_period_minutes: Number of minutes for which a person at the thermostat can change the thermostat's settings after the activation of the scheduled `climate preset `_. See also `Specifying Manual Override Permissions `_. - :vartype max_override_period_minutes: int :ivar name: User-friendly name to identify the `thermostat schedule `_. - :vartype name: str :ivar starts_at: Date and time at which the `thermostat schedule `_ starts, in `ISO 8601 `_ format. - :vartype starts_at: str :ivar thermostat_schedule_id: ID of the `thermostat schedule `_. - :vartype thermostat_schedule_id: str - :ivar workspace_id: ID of the workspace that contains the thermostat schedule. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the thermostat schedule.""" climate_preset_key: str created_at: str diff --git a/seam/resources/unmanaged_access_code.py b/seam/resources/unmanaged_access_code.py index d2dc744..84b43d6 100644 --- a/seam/resources/unmanaged_access_code.py +++ b/seam/resources/unmanaged_access_code.py @@ -18,52 +18,37 @@ class UnmanagedAccessCode: - `Kwikset `_ :ivar access_code_id: Unique identifier for the access code. - :vartype access_code_id: str :ivar cannot_be_managed: Indicates that Seam cannot convert this unmanaged access code to a managed access code. Some providers do not support management of unmanaged access codes through API integrations. - :vartype cannot_be_managed: bool :ivar cannot_delete_unmanaged_access_code: Indicates that Seam cannot delete this unmanaged access code through the provider. If this access code needs to be deleted, it will only be possible from the manufacturer app. - :vartype cannot_delete_unmanaged_access_code: bool :ivar code: Code used for access. Typically, a numeric or alphanumeric string. - :vartype code: str :ivar created_at: Date and time at which the access code was created. - :vartype created_at: str :ivar device_id: Unique identifier for the device associated with the access code. - :vartype device_id: str :ivar dormakaba_oracode_metadata: Metadata for a dormakaba Oracode unmanaged access code. Only present for unmanaged access codes from dormakaba Oracode devices. - :vartype dormakaba_oracode_metadata: Dict[str, Any] :ivar ends_at: Date and time after which the time-bound access code becomes inactive. - :vartype ends_at: str :ivar errors: Errors associated with the `access code `_. - :vartype errors: List[Dict[str, Any]] :ivar is_managed: Indicates that Seam does not manage the access code. - :vartype is_managed: bool :ivar name: Name of the access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :vartype name: str :ivar starts_at: Date and time at which the time-bound access code becomes active. - :vartype starts_at: str :ivar status: Current status of the access code within the operational lifecycle. ``set`` indicates that the code is active and operational. ``unset`` indicates that the code exists on the provider but is not usable on the device. - :vartype status: str :ivar type: Type of the access code. ``ongoing`` access codes are active continuously until deactivated manually. ``time_bound`` access codes have a specific duration. - :vartype type: str :ivar warnings: Warnings associated with the `access code `_. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the access code. - :vartype workspace_id: str""" + """ access_code_id: str cannot_be_managed: bool diff --git a/seam/resources/unmanaged_device.py b/seam/resources/unmanaged_device.py index 0b232b8..c6be5b7 100644 --- a/seam/resources/unmanaged_device.py +++ b/seam/resources/unmanaged_device.py @@ -8,100 +8,69 @@ class UnmanagedDevice: """Represents an `unmanaged device `_. An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. - :vartype can_configure_auto_lock: bool :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. - :vartype can_hvac_cool: bool :ivar can_hvac_heat: Indicates whether the thermostat supports heating. - :vartype can_hvac_heat: bool :ivar can_hvac_heat_cool: Indicates whether the thermostat supports simultaneous heating and cooling. - :vartype can_hvac_heat_cool: bool :ivar can_program_offline_access_codes: Indicates whether the device supports programming offline access codes. - :vartype can_program_offline_access_codes: bool :ivar can_program_online_access_codes: Indicates whether the device supports programming online access codes. - :vartype can_program_online_access_codes: bool :ivar can_program_thermostat_programs_as_different_each_day: Indicates whether the thermostat supports different climate programs for each day of the week. - :vartype can_program_thermostat_programs_as_different_each_day: bool :ivar can_program_thermostat_programs_as_same_each_day: Indicates whether the thermostat supports a single climate program applied to every day. - :vartype can_program_thermostat_programs_as_same_each_day: bool :ivar can_program_thermostat_programs_as_weekday_weekend: Indicates whether the thermostat supports weekday/weekend climate programs. - :vartype can_program_thermostat_programs_as_weekday_weekend: bool :ivar can_remotely_lock: Indicates whether the device supports remote locking. - :vartype can_remotely_lock: bool :ivar can_remotely_unlock: Indicates whether the device supports remote unlocking. - :vartype can_remotely_unlock: bool :ivar can_run_thermostat_programs: Indicates whether the thermostat supports running climate programs. - :vartype can_run_thermostat_programs: bool :ivar can_simulate_connection: Indicates whether the device supports simulating connection in a sandbox. - :vartype can_simulate_connection: bool :ivar can_simulate_disconnection: Indicates whether the device supports simulating disconnection in a sandbox. - :vartype can_simulate_disconnection: bool :ivar can_simulate_hub_connection: Indicates whether the hub supports simulating connection in a sandbox. - :vartype can_simulate_hub_connection: bool :ivar can_simulate_hub_disconnection: Indicates whether the hub supports simulating disconnection in a sandbox. - :vartype can_simulate_hub_disconnection: bool :ivar can_simulate_paid_subscription: Indicates whether the device supports simulating a paid subscription in a sandbox. - :vartype can_simulate_paid_subscription: bool :ivar can_simulate_removal: Indicates whether the device supports simulating removal in a sandbox. - :vartype can_simulate_removal: bool :ivar can_turn_off_hvac: Indicates whether the thermostat can be turned off. - :vartype can_turn_off_hvac: bool :ivar can_unlock_with_code: Indicates whether the lock supports unlocking with an access code. - :vartype can_unlock_with_code: bool :ivar capabilities_supported: Collection of capabilities that the device supports when connected to Seam. Values are ``access_code``, which indicates that the device can manage and utilize digital PIN codes for secure access; ``lock``, which indicates that the device controls a door locking mechanism, enabling the remote opening and closing of doors and other entry points; ``noise_detection``, which indicates that the device supports monitoring and responding to ambient noise levels; ``thermostat``, which indicates that the device can regulate and adjust indoor temperatures; ``battery``, which indicates that the device can manage battery life and health; and ``phone``, which indicates that the device is a mobile device, such as a smartphone. **Important:** Superseded by `capability flags `_. - :vartype capabilities_supported: List[str] :ivar connected_account_id: Unique identifier for the account associated with the device. - :vartype connected_account_id: str :ivar created_at: Date and time at which the device object was created. - :vartype created_at: str :ivar custom_metadata: Set of key:value pairs. Adding custom metadata to a resource, such as a `Connect Webview `_, `connected account `_, or `device `_, enables you to store custom information, like customer details or internal IDs from your application. - :vartype custom_metadata: Dict[str, Any] :ivar device_id: ID of the device. - :vartype device_id: str :ivar device_type: Type of the device. - :vartype device_type: str :ivar errors: Array of errors associated with the device. Each error object within the array contains two fields: ``error_code`` and ``message``. ``error_code`` is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. - :vartype errors: List[Dict[str, Any]] :ivar is_managed: Indicates that Seam does not manage the device. - :vartype is_managed: bool :ivar location: Location information for the device. - :vartype location: Dict[str, Any] :ivar properties: properties of the device. - :vartype properties: Dict[str, Any] :ivar warnings: Array of warnings associated with the device. Each warning object within the array contains two fields: ``warning_code`` and ``message``. ``warning_code`` is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. ``message`` provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. - :vartype warnings: List[Dict[str, Any]] :ivar workspace_id: Unique identifier for the Seam workspace associated with the device. - :vartype workspace_id: str""" + """ can_configure_auto_lock: bool can_hvac_cool: bool diff --git a/seam/resources/user_identity.py b/seam/resources/user_identity.py index 23772f5..d2d173d 100644 --- a/seam/resources/user_identity.py +++ b/seam/resources/user_identity.py @@ -8,37 +8,26 @@ class UserIdentity: """Represents a `user identity `_ associated with an application user account. :ivar acs_user_ids: Array of access system user IDs associated with the user identity. - :vartype acs_user_ids: List[str] :ivar created_at: Date and time at which the user identity was created. - :vartype created_at: str :ivar display_name: Display name for the user identity. - :vartype display_name: str :ivar email_address: Unique email address for the user identity. - :vartype email_address: str :ivar errors: Array of errors associated with the user identity. Each error object within the array contains fields like "error_code" and "message." "error_code" is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. - :vartype errors: List[Dict[str, Any]] :ivar full_name: Full name of the user associated with the user identity. - :vartype full_name: str :ivar phone_number: Unique phone number for the user identity in `E.164 format `_ (for example, +15555550100). - :vartype phone_number: str :ivar user_identity_id: ID of the user identity. - :vartype user_identity_id: str :ivar user_identity_key: Unique key for the user identity. - :vartype user_identity_key: str :ivar warnings: Array of warnings associated with the user identity. Each warning object within the array contains two fields: "warning_code" and "message." "warning_code" is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. - :vartype warnings: List[Dict[str, Any]] - :ivar workspace_id: ID of the workspace that contains the user identity. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace that contains the user identity.""" acs_user_ids: List[str] created_at: str diff --git a/seam/resources/webhook.py b/seam/resources/webhook.py index 77598d5..9f78d13 100644 --- a/seam/resources/webhook.py +++ b/seam/resources/webhook.py @@ -8,16 +8,12 @@ class Webhook: """Represents a `webhook `_ that enables you to receive notifications of events. When you create a webhook, specify the endpoint URL at which you want to receive events and the set of event types that you want to receive. :ivar event_types: Types of events that the `webhook `_ should receive. - :vartype event_types: List[str] :ivar secret: Secret associated with the `webhook `_. - :vartype secret: str :ivar url: URL for the `webhook `_. - :vartype url: str - :ivar webhook_id: ID of the webhook. - :vartype webhook_id: str""" + :ivar webhook_id: ID of the webhook.""" event_types: List[str] secret: str diff --git a/seam/resources/workspace.py b/seam/resources/workspace.py index 3116f63..1f2ddd7 100644 --- a/seam/resources/workspace.py +++ b/seam/resources/workspace.py @@ -8,34 +8,24 @@ class Workspace: """Represents a Seam `workspace `_. A workspace is a top-level entity that encompasses all other resources below it, such as devices, connected accounts, and Connect Webviews. Seam provides two types of workspaces. A `sandbox workspace `_ is a special type of workspace designed for testing code. Sandbox workspaces offer test device accounts and virtual devices that you can connect and control. This ability to work with virtual devices is quite handy because it removes the need to own physical devices from multiple brands. To connect real devices and systems to Seam, use a `production workspace `_. :ivar company_name: Company name associated with the `workspace `_. - :vartype company_name: str :ivar connect_partner_name: Deprecated: Use ``company_name`` instead. - :vartype connect_partner_name: str :ivar connect_webview_customization: - :vartype connect_webview_customization: Dict[str, Any] :ivar is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. - :vartype is_publishable_key_auth_enabled: bool :ivar is_sandbox: Indicates whether the workspace is a `sandbox workspace `_. - :vartype is_sandbox: bool :ivar is_suspended: Indicates whether the `sandbox workspace `_ is suspended. Seam suspends sandbox workspaces that have not been accessed in 14 days. - :vartype is_suspended: bool :ivar name: Name of the `workspace `_. - :vartype name: str :ivar organization_id: ID of the organization to which the workspace belongs, or ``null`` if the workspace is not assigned to an organization. - :vartype organization_id: str :ivar publishable_key: Publishable key for the `workspace `_. This key is used to identify the workspace in client-side applications. - :vartype publishable_key: str - :ivar workspace_id: ID of the workspace. - :vartype workspace_id: str""" + :ivar workspace_id: ID of the workspace.""" company_name: str connect_partner_name: str diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index 2add0b0..a194118 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -42,34 +42,24 @@ def create( """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. :param device_id: ID of the device for which you want to create the new access code. - :type device_id: str :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param code: Code to be used for access. - :type code: str :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. - :type common_code_key: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. - :type is_offline_access_code: bool :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. - :type is_one_time_use: bool :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. - :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -78,25 +68,18 @@ def create( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. - :type use_offline_access_code: bool - :returns: OK - :rtype: AccessCode""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -129,25 +112,18 @@ def create_multiple( For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :param device_ids: IDs of the devices for which you want to create the new access codes. - :type device_ids: List[str] :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. - :type behavior_when_code_cannot_be_shared: str :param code: Code to be used for access. - :type code: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -156,22 +132,16 @@ def create_multiple( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool - :returns: OK - :rtype: List[AccessCode]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -179,10 +149,9 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non """Deletes an `access code `_. :param access_code_id: ID of the access code that you want to delete. - :type access_code_id: str :param device_id: ID of the device for which you want to delete the access code. - :type device_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -190,10 +159,8 @@ def generate_code(self, *, device_id: str) -> AccessCode: """Generates a code for an `access code `_, given a device ID. :param device_id: ID of the device for which you want to generate a code. - :type device_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -209,16 +176,12 @@ def get( You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type access_code_id: str :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type code: str :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type device_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -241,37 +204,26 @@ def list( Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_code_ids: List[str] :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_grant_id: str :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_grant_key: str :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_method_id: str :param customer_key: Customer key for which you want to list access codes. - :type customer_key: str :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type device_id: str :param limit: Numerical limit on the number of access codes to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. - :type search: str :param user_identifier_key: Your user ID for the user by which to filter access codes. - :type user_identifier_key: str - :returns: OK - :rtype: List[AccessCode]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -287,10 +239,8 @@ def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. :param access_code_id: ID of the access code for which you want to pull a backup access code. - :type access_code_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -307,16 +257,13 @@ def report_device_constraints( Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :param device_id: ID of the device for which you want to report constraints. - :type device_id: str :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. - :type max_code_length: int :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. - :type min_code_length: int :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. - :type supported_code_lengths: List[float]""" + """ raise NotImplementedError() @abc.abstractmethod @@ -347,37 +294,26 @@ def update( See also `Modifying Access Codes `_. :param access_code_id: ID of the access code that you want to update. - :type access_code_id: str :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param code: Code to be used for access. - :type code: str :param device_id: ID of the device containing the access code that you want to update. - :type device_id: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. - :type is_managed: bool :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. - :type is_offline_access_code: bool :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. - :type is_one_time_use: bool :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. - :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -386,25 +322,19 @@ def update( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. - :type type: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. - :type use_offline_access_code: bool""" + """ raise NotImplementedError() @abc.abstractmethod @@ -423,10 +353,8 @@ def update_multiple( See also `Update Linked Access Codes `_. :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. - :type common_code_key: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -435,10 +363,9 @@ def update_multiple( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ raise NotImplementedError() @@ -480,34 +407,24 @@ def create( """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. :param device_id: ID of the device for which you want to create the new access code. - :type device_id: str :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param code: Code to be used for access. - :type code: str :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. - :type common_code_key: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. - :type is_offline_access_code: bool :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. - :type is_one_time_use: bool :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. - :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -516,25 +433,18 @@ def create( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. - :type use_offline_access_code: bool - :returns: OK - :rtype: AccessCode""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -605,25 +515,18 @@ def create_multiple( For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. :param device_ids: IDs of the devices for which you want to create the new access codes. - :type device_ids: List[str] :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. - :type behavior_when_code_cannot_be_shared: str :param code: Code to be used for access. - :type code: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -632,22 +535,16 @@ def create_multiple( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool - :returns: OK - :rtype: List[AccessCode]""" + :returns: OK""" json_payload = {} if device_ids is not None: @@ -687,10 +584,9 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non """Deletes an `access code `_. :param access_code_id: ID of the access code that you want to delete. - :type access_code_id: str :param device_id: ID of the device for which you want to delete the access code. - :type device_id: str""" + """ json_payload = {} if access_code_id is not None: @@ -706,10 +602,8 @@ def generate_code(self, *, device_id: str) -> AccessCode: """Generates a code for an `access code `_, given a device ID. :param device_id: ID of the device for which you want to generate a code. - :type device_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -731,16 +625,12 @@ def get( You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type access_code_id: str :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type code: str :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type device_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -773,37 +663,26 @@ def list( Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_code_ids: List[str] :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_grant_id: str :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_grant_key: str :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type access_method_id: str :param customer_key: Customer key for which you want to list access codes. - :type customer_key: str :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. - :type device_id: str :param limit: Numerical limit on the number of access codes to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. - :type search: str :param user_identifier_key: Your user ID for the user by which to filter access codes. - :type user_identifier_key: str - :returns: OK - :rtype: List[AccessCode]""" + :returns: OK""" json_payload = {} if access_code_ids is not None: @@ -843,10 +722,8 @@ def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. :param access_code_id: ID of the access code for which you want to pull a backup access code. - :type access_code_id: str - :returns: OK - :rtype: AccessCode""" + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -871,16 +748,13 @@ def report_device_constraints( Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. :param device_id: ID of the device for which you want to report constraints. - :type device_id: str :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. - :type max_code_length: int :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. - :type min_code_length: int :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. - :type supported_code_lengths: List[float]""" + """ json_payload = {} if device_id is not None: @@ -923,37 +797,26 @@ def update( See also `Modifying Access Codes `_. :param access_code_id: ID of the access code that you want to update. - :type access_code_id: str :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type allow_external_modification: bool :param attempt_for_offline_device: - :type attempt_for_offline_device: bool :param code: Code to be used for access. - :type code: str :param device_id: ID of the device containing the access code that you want to update. - :type device_id: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. - :type is_external_modification_allowed: bool :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. - :type is_managed: bool :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. - :type is_offline_access_code: bool :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. - :type is_one_time_use: bool :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. - :type max_time_rounding: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -962,25 +825,19 @@ def update( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. - :type prefer_native_scheduling: bool :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. - :type preferred_code_length: float :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. - :type type: str :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. - :type use_backup_access_code_pool: bool :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. - :type use_offline_access_code: bool""" + """ json_payload = {} if access_code_id is not None: @@ -1041,10 +898,8 @@ def update_multiple( See also `Update Linked Access Codes `_. :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. - :type common_code_key: str :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. @@ -1053,10 +908,9 @@ def update_multiple( To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). - :type name: str :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ json_payload = {} if common_code_key is not None: diff --git a/seam/routes/access_codes_simulate.py b/seam/routes/access_codes_simulate.py index 11c8af0..048c13f 100644 --- a/seam/routes/access_codes_simulate.py +++ b/seam/routes/access_codes_simulate.py @@ -13,16 +13,12 @@ def create_unmanaged_access_code( """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. :param code: Code of the simulated unmanaged access code. - :type code: str :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. - :type device_id: str :param name: Name of the simulated unmanaged access code. - :type name: str - :returns: OK - :rtype: UnmanagedAccessCode""" + :returns: OK""" raise NotImplementedError() @@ -37,16 +33,12 @@ def create_unmanaged_access_code( """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. :param code: Code of the simulated unmanaged access code. - :type code: str :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. - :type device_id: str :param name: Name of the simulated unmanaged access code. - :type name: str - :returns: OK - :rtype: UnmanagedAccessCode""" + :returns: OK""" json_payload = {} if code is not None: diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index 3a3bab4..ac90e4e 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -22,16 +22,13 @@ def convert_to_managed( Note that not all device providers support converting an unmanaged access code to a managed access code. :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. - :type access_code_id: str :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. - :type allow_external_modification: bool :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. - :type force: bool :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. - :type is_external_modification_allowed: bool""" + """ raise NotImplementedError() @abc.abstractmethod @@ -39,7 +36,7 @@ def delete(self, *, access_code_id: str) -> None: """Deletes an `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to delete. - :type access_code_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -55,16 +52,12 @@ def get( You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type access_code_id: str :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type code: str :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type device_id: str - :returns: OK - :rtype: UnmanagedAccessCode""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -80,22 +73,16 @@ def list( """Returns a list of all `unmanaged access codes `_. :param device_id: ID of the device for which you want to list unmanaged access codes. - :type device_id: str :param limit: Numerical limit on the number of unmanaged access codes to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. - :type search: str :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. - :type user_identifier_key: str - :returns: OK - :rtype: List[UnmanagedAccessCode]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -111,19 +98,15 @@ def update( """Updates a specified `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to update. - :type access_code_id: str :param is_managed: - :type is_managed: bool :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. - :type allow_external_modification: bool :param force: Indicates whether to force the unmanaged access code update. - :type force: bool :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. - :type is_external_modification_allowed: bool""" + """ raise NotImplementedError() @@ -147,16 +130,13 @@ def convert_to_managed( Note that not all device providers support converting an unmanaged access code to a managed access code. :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. - :type access_code_id: str :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. - :type allow_external_modification: bool :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. - :type force: bool :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. - :type is_external_modification_allowed: bool""" + """ json_payload = {} if access_code_id is not None: @@ -180,7 +160,7 @@ def delete(self, *, access_code_id: str) -> None: """Deletes an `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to delete. - :type access_code_id: str""" + """ json_payload = {} if access_code_id is not None: @@ -202,16 +182,12 @@ def get( You must specify either ``access_code_id`` or both ``device_id`` and ``code``. :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type access_code_id: str :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type code: str :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. - :type device_id: str - :returns: OK - :rtype: UnmanagedAccessCode""" + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -237,22 +213,16 @@ def list( """Returns a list of all `unmanaged access codes `_. :param device_id: ID of the device for which you want to list unmanaged access codes. - :type device_id: str :param limit: Numerical limit on the number of unmanaged access codes to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. - :type search: str :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. - :type user_identifier_key: str - :returns: OK - :rtype: List[UnmanagedAccessCode]""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -282,19 +252,15 @@ def update( """Updates a specified `unmanaged access code `_. :param access_code_id: ID of the unmanaged access code that you want to update. - :type access_code_id: str :param is_managed: - :type is_managed: bool :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. - :type allow_external_modification: bool :param force: Indicates whether to force the unmanaged access code update. - :type force: bool :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. - :type is_external_modification_allowed: bool""" + """ json_payload = {} if access_code_id is not None: diff --git a/seam/routes/access_grants.py b/seam/routes/access_grants.py index 3cbbc77..f6835eb 100644 --- a/seam/routes/access_grants.py +++ b/seam/routes/access_grants.py @@ -38,60 +38,43 @@ def create( """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. :param requested_access_methods: - :type requested_access_methods: List[Dict[str, Any]] :param user_identity_id: ID of user identity for whom access is being granted. - :type user_identity_id: str :param user_identity: When used, creates a new user identity with the given details, and grants them access. - :type user_identity: Dict[str, Any] :param access_grant_key: Unique key for the access grant within the workspace. - :type access_grant_key: str :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. - :type acs_entrance_ids: List[str] :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. - :type customization_profile_id: str :param device_ids: Set of IDs of the `devices `_ to which access is being granted. - :type device_ids: List[str] :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param location: Deprecated: Create a space first, then reference it using ``space_ids``. - :type location: Dict[str, Any] :param location_ids: Deprecated: Use ``space_ids``. - :type location_ids: List[str] :param name: Name for the access grant. - :type name: str :param reservation_key: Reservation key for the access grant. - :type reservation_key: str :param space_ids: Set of IDs of existing spaces to which access is being granted. - :type space_ids: List[str] :param space_keys: Set of keys of existing spaces to which access is being granted. - :type space_keys: List[str] :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. - :type starts_at: str - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_grant_id: str) -> None: """Delete an Access Grant. - :param access_grant_id: ID of Access Grant to delete. - :type access_grant_id: str""" + :param access_grant_id: ID of Access Grant to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -104,13 +87,10 @@ def get( """Get an Access Grant. :param access_grant_id: ID of Access Grant to get. - :type access_grant_id: str :param access_grant_key: Unique key of Access Grant to get. - :type access_grant_key: str - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -125,19 +105,14 @@ def get_related( """Gets all related resources for one or more Access Grants. :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. - :type access_grant_ids: List[str] :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. - :type access_grant_keys: List[str] :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -161,46 +136,32 @@ def list( """Gets an Access Grant. :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. - :type access_code_id: str :param access_grant_ids: IDs of the access grants to retrieve. - :type access_grant_ids: List[str] :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. - :type access_grant_key: str :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. - :type acs_entrance_id: str :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. - :type acs_system_id: str :param customer_key: Customer key for which you want to list access grants. - :type customer_key: str :param device_id: ID of the device by which you want to filter the list of Access Grants. - :type device_id: str :param limit: Numerical limit on the number of access grants to return. - :type limit: float :param location_id: Deprecated: Use ``space_id``. - :type location_id: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param reservation_key: Filter Access Grants by reservation_key. - :type reservation_key: str :param space_id: ID of the space by which you want to filter the list of Access Grants. - :type space_id: str :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. - :type user_identity_id: str - :returns: OK - :rtype: List[AccessGrant]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -210,13 +171,10 @@ def request_access_methods( """Adds additional requested access methods to an existing Access Grant. :param access_grant_id: ID of the Access Grant to add access methods to. - :type access_grant_id: str :param requested_access_methods: Array of requested access methods to add to the access grant. - :type requested_access_methods: List[Dict[str, Any]] - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -232,19 +190,15 @@ def update( """Updates an existing Access Grant's time window. :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. - :type access_grant_id: str :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. - :type access_grant_key: str :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param name: Display name for the access grant. - :type name: str :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ raise NotImplementedError() @@ -280,52 +234,36 @@ def create( """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. :param requested_access_methods: - :type requested_access_methods: List[Dict[str, Any]] :param user_identity_id: ID of user identity for whom access is being granted. - :type user_identity_id: str :param user_identity: When used, creates a new user identity with the given details, and grants them access. - :type user_identity: Dict[str, Any] :param access_grant_key: Unique key for the access grant within the workspace. - :type access_grant_key: str :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. - :type acs_entrance_ids: List[str] :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. - :type customization_profile_id: str :param device_ids: Set of IDs of the `devices `_ to which access is being granted. - :type device_ids: List[str] :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param location: Deprecated: Create a space first, then reference it using ``space_ids``. - :type location: Dict[str, Any] :param location_ids: Deprecated: Use ``space_ids``. - :type location_ids: List[str] :param name: Name for the access grant. - :type name: str :param reservation_key: Reservation key for the access grant. - :type reservation_key: str :param space_ids: Set of IDs of existing spaces to which access is being granted. - :type space_ids: List[str] :param space_keys: Set of keys of existing spaces to which access is being granted. - :type space_keys: List[str] :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. - :type starts_at: str - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" json_payload = {} if requested_access_methods is not None: @@ -366,8 +304,7 @@ def create( def delete(self, *, access_grant_id: str) -> None: """Delete an Access Grant. - :param access_grant_id: ID of Access Grant to delete. - :type access_grant_id: str""" + :param access_grant_id: ID of Access Grant to delete.""" json_payload = {} if access_grant_id is not None: @@ -386,13 +323,10 @@ def get( """Get an Access Grant. :param access_grant_id: ID of Access Grant to get. - :type access_grant_id: str :param access_grant_key: Unique key of Access Grant to get. - :type access_grant_key: str - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" json_payload = {} if access_grant_id is not None: @@ -415,19 +349,14 @@ def get_related( """Gets all related resources for one or more Access Grants. :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. - :type access_grant_ids: List[str] :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. - :type access_grant_keys: List[str] :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" json_payload = {} if access_grant_ids is not None: @@ -463,46 +392,32 @@ def list( """Gets an Access Grant. :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. - :type access_code_id: str :param access_grant_ids: IDs of the access grants to retrieve. - :type access_grant_ids: List[str] :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. - :type access_grant_key: str :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. - :type acs_entrance_id: str :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. - :type acs_system_id: str :param customer_key: Customer key for which you want to list access grants. - :type customer_key: str :param device_id: ID of the device by which you want to filter the list of Access Grants. - :type device_id: str :param limit: Numerical limit on the number of access grants to return. - :type limit: float :param location_id: Deprecated: Use ``space_id``. - :type location_id: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param reservation_key: Filter Access Grants by reservation_key. - :type reservation_key: str :param space_id: ID of the space by which you want to filter the list of Access Grants. - :type space_id: str :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. - :type user_identity_id: str - :returns: OK - :rtype: List[AccessGrant]""" + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -542,13 +457,10 @@ def request_access_methods( """Adds additional requested access methods to an existing Access Grant. :param access_grant_id: ID of the Access Grant to add access methods to. - :type access_grant_id: str :param requested_access_methods: Array of requested access methods to add to the access grant. - :type requested_access_methods: List[Dict[str, Any]] - :returns: OK - :rtype: AccessGrant""" + :returns: OK""" json_payload = {} if access_grant_id is not None: @@ -574,19 +486,15 @@ def update( """Updates an existing Access Grant's time window. :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. - :type access_grant_id: str :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. - :type access_grant_key: str :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param name: Display name for the access grant. - :type name: str :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_grants_unmanaged.py b/seam/routes/access_grants_unmanaged.py index 2560b4e..c12cc2b 100644 --- a/seam/routes/access_grants_unmanaged.py +++ b/seam/routes/access_grants_unmanaged.py @@ -9,8 +9,7 @@ class AbstractAccessGrantsUnmanaged(abc.ABC): def get(self, *, access_grant_id: str) -> None: """Get an unmanaged Access Grant (where is_managed = false). - :param access_grant_id: ID of unmanaged Access Grant to get. - :type access_grant_id: str""" + :param access_grant_id: ID of unmanaged Access Grant to get.""" raise NotImplementedError() @abc.abstractmethod @@ -27,22 +26,17 @@ def list( """Gets unmanaged Access Grants (where is_managed = false). :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. - :type acs_entrance_id: str :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. - :type acs_system_id: str :param limit: Numerical limit on the number of unmanaged access grants to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param reservation_key: Filter unmanaged Access Grants by reservation_key. - :type reservation_key: str :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -60,13 +54,11 @@ def update( When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. :param access_grant_id: ID of the unmanaged Access Grant to update. - :type access_grant_id: str :param is_managed: Must be set to true to convert the unmanaged access grant to managed. - :type is_managed: bool :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. - :type access_grant_key: str""" + """ raise NotImplementedError() @@ -78,8 +70,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def get(self, *, access_grant_id: str) -> None: """Get an unmanaged Access Grant (where is_managed = false). - :param access_grant_id: ID of unmanaged Access Grant to get. - :type access_grant_id: str""" + :param access_grant_id: ID of unmanaged Access Grant to get.""" json_payload = {} if access_grant_id is not None: @@ -102,22 +93,17 @@ def list( """Gets unmanaged Access Grants (where is_managed = false). :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. - :type acs_entrance_id: str :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. - :type acs_system_id: str :param limit: Numerical limit on the number of unmanaged access grants to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param reservation_key: Filter unmanaged Access Grants by reservation_key. - :type reservation_key: str :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. - :type user_identity_id: str""" + """ json_payload = {} if acs_entrance_id is not None: @@ -151,13 +137,11 @@ def update( When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. :param access_grant_id: ID of the unmanaged Access Grant to update. - :type access_grant_id: str :param is_managed: Must be set to true to convert the unmanaged access grant to managed. - :type is_managed: bool :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. - :type access_grant_key: str""" + """ json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_methods.py b/seam/routes/access_methods.py index 70c25ae..37e320b 100644 --- a/seam/routes/access_methods.py +++ b/seam/routes/access_methods.py @@ -27,16 +27,12 @@ def assign_card( """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. :param access_method_id: ID of the ``access_method`` to assign the credential to. - :type access_method_id: str :param card_number: Card number of the credential to assign. - :type card_number: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -50,13 +46,11 @@ def delete( """Deletes an access method. :param access_method_id: ID of access method to delete. - :type access_method_id: str :param access_grant_id: ID of access grant whose access methods should be deleted. - :type access_grant_id: str :param reservation_key: Reservation key of the access grant whose access methods should be deleted. - :type reservation_key: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -70,16 +64,12 @@ def encode( """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. :param access_method_id: ID of the ``access_method`` to encode onto a card. - :type access_method_id: str :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. - :type acs_encoder_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -87,10 +77,8 @@ def get(self, *, access_method_id: str) -> AccessMethod: """Gets an access method. :param access_method_id: ID of access method to get. - :type access_method_id: str - :returns: OK - :rtype: AccessMethod""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -104,16 +92,12 @@ def get_related( """Gets all related resources for one or more Access Methods. :param access_method_ids: IDs of the access methods that you want to get along with their related resources. - :type access_method_ids: List[str] :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -130,25 +114,18 @@ def list( """Lists all access methods, usually filtered by Access Grant. :param access_code_id: ID of the access code for which you want to retrieve all access methods. - :type access_code_id: str :param access_grant_id: ID of Access Grant to list access methods for. - :type access_grant_id: str :param access_grant_key: Key of Access Grant to list access methods for. - :type access_grant_key: str :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods. - :type acs_entrance_id: str :param device_id: ID of the device for which you want to retrieve all access methods. - :type device_id: str :param space_id: ID of the space for which you want to retrieve all access methods. - :type space_id: str - :returns: OK - :rtype: List[AccessMethod]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -162,16 +139,12 @@ def unlock_door( """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. - :type access_method_id: str :param acs_entrance_id: ID of the entrance to unlock. - :type acs_entrance_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -195,16 +168,12 @@ def assign_card( """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. :param access_method_id: ID of the ``access_method`` to assign the credential to. - :type access_method_id: str :param card_number: Card number of the credential to assign. - :type card_number: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -236,13 +205,11 @@ def delete( """Deletes an access method. :param access_method_id: ID of access method to delete. - :type access_method_id: str :param access_grant_id: ID of access grant whose access methods should be deleted. - :type access_grant_id: str :param reservation_key: Reservation key of the access grant whose access methods should be deleted. - :type reservation_key: str""" + """ json_payload = {} if access_method_id is not None: @@ -266,16 +233,12 @@ def encode( """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. :param access_method_id: ID of the ``access_method`` to encode onto a card. - :type access_method_id: str :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. - :type acs_encoder_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -301,10 +264,8 @@ def get(self, *, access_method_id: str) -> AccessMethod: """Gets an access method. :param access_method_id: ID of access method to get. - :type access_method_id: str - :returns: OK - :rtype: AccessMethod""" + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -324,16 +285,12 @@ def get_related( """Gets all related resources for one or more Access Methods. :param access_method_ids: IDs of the access methods that you want to get along with their related resources. - :type access_method_ids: List[str] :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" json_payload = {} if access_method_ids is not None: @@ -360,25 +317,18 @@ def list( """Lists all access methods, usually filtered by Access Grant. :param access_code_id: ID of the access code for which you want to retrieve all access methods. - :type access_code_id: str :param access_grant_id: ID of Access Grant to list access methods for. - :type access_grant_id: str :param access_grant_key: Key of Access Grant to list access methods for. - :type access_grant_key: str :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods. - :type acs_entrance_id: str :param device_id: ID of the device for which you want to retrieve all access methods. - :type device_id: str :param space_id: ID of the space for which you want to retrieve all access methods. - :type space_id: str - :returns: OK - :rtype: List[AccessMethod]""" + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -408,16 +358,12 @@ def unlock_door( """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. - :type access_method_id: str :param acs_entrance_id: ID of the entrance to unlock. - :type acs_entrance_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if access_method_id is not None: diff --git a/seam/routes/access_methods_unmanaged.py b/seam/routes/access_methods_unmanaged.py index 0a3c45e..6921115 100644 --- a/seam/routes/access_methods_unmanaged.py +++ b/seam/routes/access_methods_unmanaged.py @@ -9,8 +9,7 @@ class AbstractAccessMethodsUnmanaged(abc.ABC): def get(self, *, access_method_id: str) -> None: """Gets an unmanaged access method (where is_managed = false). - :param access_method_id: ID of unmanaged access method to get. - :type access_method_id: str""" + :param access_method_id: ID of unmanaged access method to get.""" raise NotImplementedError() @abc.abstractmethod @@ -25,16 +24,13 @@ def list( """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. :param access_grant_id: ID of Access Grant to list unmanaged access methods for. - :type access_grant_id: str :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. - :type acs_entrance_id: str :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. - :type device_id: str :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. - :type space_id: str""" + """ raise NotImplementedError() @@ -46,8 +42,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def get(self, *, access_method_id: str) -> None: """Gets an unmanaged access method (where is_managed = false). - :param access_method_id: ID of unmanaged access method to get. - :type access_method_id: str""" + :param access_method_id: ID of unmanaged access method to get.""" json_payload = {} if access_method_id is not None: @@ -68,16 +63,13 @@ def list( """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. :param access_grant_id: ID of Access Grant to list unmanaged access methods for. - :type access_grant_id: str :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. - :type acs_entrance_id: str :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. - :type device_id: str :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. - :type space_id: str""" + """ json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 51a75c2..11ce595 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -17,21 +17,18 @@ def add_user( """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_access_group_id: str) -> None: """Deletes a specified `access group `_. - :param acs_access_group_id: ID of the access group that you want to delete. - :type acs_access_group_id: str""" + :param acs_access_group_id: ID of the access group that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -39,10 +36,8 @@ def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: """Returns a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to get. - :type acs_access_group_id: str - :returns: OK - :rtype: AcsAccessGroup""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -57,19 +52,14 @@ def list( """Returns a list of all `access groups `_. :param acs_system_id: ID of the access system for which you want to retrieve all access groups. - :type acs_system_id: str :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. - :type acs_user_id: str :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. - :type search: str :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsAccessGroup]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -79,10 +69,8 @@ def list_accessible_entrances( """Returns a list of all accessible entrances for a specified `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. - :type acs_access_group_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -90,10 +78,8 @@ def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: """Returns a list of all `access system users `_ in an `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. - :type acs_access_group_id: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -107,13 +93,11 @@ def remove_user( """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to remove from an access group. - :type acs_user_id: str :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. - :type user_identity_id: str""" + """ raise NotImplementedError() @@ -132,13 +116,11 @@ def add_user( """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ json_payload = {} if acs_access_group_id is not None: @@ -155,8 +137,7 @@ def add_user( def delete(self, *, acs_access_group_id: str) -> None: """Deletes a specified `access group `_. - :param acs_access_group_id: ID of the access group that you want to delete. - :type acs_access_group_id: str""" + :param acs_access_group_id: ID of the access group that you want to delete.""" json_payload = {} if acs_access_group_id is not None: @@ -170,10 +151,8 @@ def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: """Returns a specified `access group `_. :param acs_access_group_id: ID of the access group that you want to get. - :type acs_access_group_id: str - :returns: OK - :rtype: AcsAccessGroup""" + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -194,19 +173,14 @@ def list( """Returns a list of all `access groups `_. :param acs_system_id: ID of the access system for which you want to retrieve all access groups. - :type acs_system_id: str :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. - :type acs_user_id: str :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. - :type search: str :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsAccessGroup]""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -228,10 +202,8 @@ def list_accessible_entrances( """Returns a list of all accessible entrances for a specified `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. - :type acs_access_group_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -247,10 +219,8 @@ def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: """Returns a list of all `access system users `_ in an `access group `_. :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. - :type acs_access_group_id: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -270,13 +240,11 @@ def remove_user( """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to remove from an access group. - :type acs_user_id: str :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. - :type user_identity_id: str""" + """ json_payload = {} if acs_access_group_id is not None: diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index d9437c2..c655973 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -17,13 +17,11 @@ def assign( """Assigns a specified `credential `_ to a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to assign to an access system user. - :type acs_credential_id: str :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -47,54 +45,39 @@ def create( """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. - :type access_method: str :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. - :type acs_system_id: str :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. - :type acs_user_id: str :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. - :type allowed_acs_entrance_ids: List[str] :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. - :type assa_abloy_vostio_metadata: Dict[str, Any] :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. - :type code: str :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. - :type credential_manager_acs_system_id: str :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. - :type is_multi_phone_sync_credential: bool :param salto_space_metadata: Salto Space-specific metadata for the new credential. - :type salto_space_metadata: Dict[str, Any] :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. - :type starts_at: str :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. - :type user_identity_id: str :param visionline_metadata: Visionline-specific metadata for the new credential. - :type visionline_metadata: Dict[str, Any] - :returns: OK - :rtype: AcsCredential""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_credential_id: str) -> None: """Deletes a specified `credential `_. - :param acs_credential_id: ID of the credential that you want to delete. - :type acs_credential_id: str""" + :param acs_credential_id: ID of the credential that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -102,10 +85,8 @@ def get(self, *, acs_credential_id: str) -> AcsCredential: """Returns a specified `credential `_. :param acs_credential_id: ID of the credential that you want to get. - :type acs_credential_id: str - :returns: OK - :rtype: AcsCredential""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -124,31 +105,22 @@ def list( """Returns a list of all `credentials `_. :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. - :type acs_user_id: str :param acs_system_id: ID of the access system for which you want to retrieve all credentials. - :type acs_system_id: str :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. - :type user_identity_id: str :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. - :type created_before: str :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. - :type is_multi_phone_sync_credential: bool :param limit: Number of credentials to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. - :type search: str - :returns: OK - :rtype: List[AcsCredential]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -156,10 +128,8 @@ def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntran """Returns a list of all `entrances `_ to which a `credential `_ grants access. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. - :type acs_credential_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -173,13 +143,11 @@ def unassign( """Unassigns a specified `credential `_ from a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to unassign from an access system user. - :type acs_credential_id: str :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -193,13 +161,11 @@ def update( """Updates the code and ends at date and time for a specified `credential `_. :param acs_credential_id: ID of the credential that you want to update. - :type acs_credential_id: str :param code: Replacement access (PIN) code for the credential that you want to update. - :type code: str :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. - :type ends_at: str""" + """ raise NotImplementedError() @@ -218,13 +184,11 @@ def assign( """Assigns a specified `credential `_ to a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to assign to an access system user. - :type acs_credential_id: str :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ json_payload = {} if acs_credential_id is not None: @@ -258,46 +222,32 @@ def create( """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. - :type access_method: str :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. - :type acs_system_id: str :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. - :type acs_user_id: str :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. - :type allowed_acs_entrance_ids: List[str] :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. - :type assa_abloy_vostio_metadata: Dict[str, Any] :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. - :type code: str :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. - :type credential_manager_acs_system_id: str :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. - :type ends_at: str :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. - :type is_multi_phone_sync_credential: bool :param salto_space_metadata: Salto Space-specific metadata for the new credential. - :type salto_space_metadata: Dict[str, Any] :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. - :type starts_at: str :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. - :type user_identity_id: str :param visionline_metadata: Visionline-specific metadata for the new credential. - :type visionline_metadata: Dict[str, Any] - :returns: OK - :rtype: AcsCredential""" + :returns: OK""" json_payload = {} if access_method is not None: @@ -338,8 +288,7 @@ def create( def delete(self, *, acs_credential_id: str) -> None: """Deletes a specified `credential `_. - :param acs_credential_id: ID of the credential that you want to delete. - :type acs_credential_id: str""" + :param acs_credential_id: ID of the credential that you want to delete.""" json_payload = {} if acs_credential_id is not None: @@ -353,10 +302,8 @@ def get(self, *, acs_credential_id: str) -> AcsCredential: """Returns a specified `credential `_. :param acs_credential_id: ID of the credential that you want to get. - :type acs_credential_id: str - :returns: OK - :rtype: AcsCredential""" + :returns: OK""" json_payload = {} if acs_credential_id is not None: @@ -381,31 +328,22 @@ def list( """Returns a list of all `credentials `_. :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. - :type acs_user_id: str :param acs_system_id: ID of the access system for which you want to retrieve all credentials. - :type acs_system_id: str :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. - :type user_identity_id: str :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. - :type created_before: str :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. - :type is_multi_phone_sync_credential: bool :param limit: Number of credentials to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. - :type search: str - :returns: OK - :rtype: List[AcsCredential]""" + :returns: OK""" json_payload = {} if acs_user_id is not None: @@ -435,10 +373,8 @@ def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntran """Returns a list of all `entrances `_ to which a `credential `_ grants access. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. - :type acs_credential_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" json_payload = {} if acs_credential_id is not None: @@ -460,13 +396,11 @@ def unassign( """Unassigns a specified `credential `_ from a specified `access system user `_. :param acs_credential_id: ID of the credential that you want to unassign from an access system user. - :type acs_credential_id: str :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_credential_id is not None: @@ -490,13 +424,11 @@ def update( """Updates the code and ends at date and time for a specified `credential `_. :param acs_credential_id: ID of the credential that you want to update. - :type acs_credential_id: str :param code: Replacement access (PIN) code for the credential that you want to update. - :type code: str :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. - :type ends_at: str""" + """ json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_encoders.py b/seam/routes/acs_encoders.py index 39b3d05..e537a0f 100644 --- a/seam/routes/acs_encoders.py +++ b/seam/routes/acs_encoders.py @@ -25,19 +25,14 @@ def encode_credential( """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. - :type acs_encoder_id: str :param access_method_id: ID of the ``access_method`` to encode onto a card. - :type access_method_id: str :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. - :type acs_credential_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -45,10 +40,8 @@ def get(self, *, acs_encoder_id: str) -> AcsEncoder: """Returns a specified `encoder `_. :param acs_encoder_id: ID of the encoder that you want to get. - :type acs_encoder_id: str - :returns: OK - :rtype: AcsEncoder""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -64,22 +57,16 @@ def list( """Returns a list of all `encoders `_. :param acs_system_id: ID of the access system for which you want to retrieve all encoders. - :type acs_system_id: str :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. - :type acs_system_ids: List[str] :param acs_encoder_ids: IDs of the encoders that you want to retrieve. - :type acs_encoder_ids: List[str] :param limit: Number of encoders to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str - :returns: OK - :rtype: List[AcsEncoder]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -93,16 +80,12 @@ def scan_credential( """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. :param acs_encoder_id: ID of the encoder to use for the scan. - :type acs_encoder_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. - :type salto_ks_metadata: Dict[str, Any] :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -118,22 +101,16 @@ def scan_to_assign_credential( """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. - :type acs_encoder_id: str :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. - :type acs_user_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. - :type salto_ks_metadata: Dict[str, Any] :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. - :type user_identity_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -158,19 +135,14 @@ def encode_credential( """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. - :type acs_encoder_id: str :param access_method_id: ID of the ``access_method`` to encode onto a card. - :type access_method_id: str :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. - :type acs_credential_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -198,10 +170,8 @@ def get(self, *, acs_encoder_id: str) -> AcsEncoder: """Returns a specified `encoder `_. :param acs_encoder_id: ID of the encoder that you want to get. - :type acs_encoder_id: str - :returns: OK - :rtype: AcsEncoder""" + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -223,22 +193,16 @@ def list( """Returns a list of all `encoders `_. :param acs_system_id: ID of the access system for which you want to retrieve all encoders. - :type acs_system_id: str :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. - :type acs_system_ids: List[str] :param acs_encoder_ids: IDs of the encoders that you want to retrieve. - :type acs_encoder_ids: List[str] :param limit: Number of encoders to return. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str - :returns: OK - :rtype: List[AcsEncoder]""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -266,16 +230,12 @@ def scan_credential( """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. :param acs_encoder_id: ID of the encoder to use for the scan. - :type acs_encoder_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. - :type salto_ks_metadata: Dict[str, Any] :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -309,22 +269,16 @@ def scan_to_assign_credential( """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. - :type acs_encoder_id: str :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. - :type acs_user_id: str :param salto_ks_metadata: Salto KS-specific metadata for the scan action. - :type salto_ks_metadata: Dict[str, Any] :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. - :type user_identity_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_encoders_simulate.py b/seam/routes/acs_encoders_simulate.py index 4731d0c..e08aaf1 100644 --- a/seam/routes/acs_encoders_simulate.py +++ b/seam/routes/acs_encoders_simulate.py @@ -16,13 +16,11 @@ def next_credential_encode_will_fail( """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. - :type acs_encoder_id: str :param error_code: Code of the error to simulate. - :type error_code: str :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. - :type acs_credential_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -32,10 +30,8 @@ def next_credential_encode_will_succeed( """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. - :type acs_encoder_id: str - :param scenario: Scenario to simulate. - :type scenario: str""" + :param scenario: Scenario to simulate.""" raise NotImplementedError() @abc.abstractmethod @@ -49,13 +45,10 @@ def next_credential_scan_will_fail( """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. - :type acs_encoder_id: str :param error_code: - :type error_code: str - :param acs_credential_id_on_seam: - :type acs_credential_id_on_seam: str""" + :param acs_credential_id_on_seam:""" raise NotImplementedError() @abc.abstractmethod @@ -69,13 +62,10 @@ def next_credential_scan_will_succeed( """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. - :type acs_encoder_id: str :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. - :type acs_credential_id_on_seam: str - :param scenario: Scenario to simulate. - :type scenario: str""" + :param scenario: Scenario to simulate.""" raise NotImplementedError() @@ -94,13 +84,11 @@ def next_credential_encode_will_fail( """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. - :type acs_encoder_id: str :param error_code: Code of the error to simulate. - :type error_code: str :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. - :type acs_credential_id: str""" + """ json_payload = {} if acs_encoder_id is not None: @@ -122,10 +110,8 @@ def next_credential_encode_will_succeed( """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. - :type acs_encoder_id: str - :param scenario: Scenario to simulate. - :type scenario: str""" + :param scenario: Scenario to simulate.""" json_payload = {} if acs_encoder_id is not None: @@ -150,13 +136,10 @@ def next_credential_scan_will_fail( """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. - :type acs_encoder_id: str :param error_code: - :type error_code: str - :param acs_credential_id_on_seam: - :type acs_credential_id_on_seam: str""" + :param acs_credential_id_on_seam:""" json_payload = {} if acs_encoder_id is not None: @@ -182,13 +165,10 @@ def next_credential_scan_will_succeed( """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. - :type acs_encoder_id: str :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. - :type acs_credential_id_on_seam: str - :param scenario: Scenario to simulate. - :type scenario: str""" + :param scenario: Scenario to simulate.""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_entrances.py b/seam/routes/acs_entrances.py index 8952874..97a5bba 100644 --- a/seam/routes/acs_entrances.py +++ b/seam/routes/acs_entrances.py @@ -12,10 +12,8 @@ def get(self, *, acs_entrance_id: str) -> AcsEntrance: """Returns a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance that you want to get. - :type acs_entrance_id: str - :returns: OK - :rtype: AcsEntrance""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -29,13 +27,11 @@ def grant_access( """Grants a specified `access system user `_ access to a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. - :type acs_entrance_id: str :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -56,37 +52,26 @@ def list( """Returns a list of all `access system entrances `_. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. - :type acs_credential_id: str :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. - :type acs_entrance_ids: List[str] :param acs_system_id: ID of the access system for which you want to retrieve all entrances. - :type acs_system_id: str :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. - :type connected_account_id: str :param customer_key: Customer key for which you want to list entrances. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: int :param location_id: Deprecated: Use ``space_id``. - :type location_id: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. - :type search: str :param space_id: ID of the space for which you want to list entrances. - :type space_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -96,13 +81,10 @@ def list_credentials_with_access( """Returns a list of all `credentials `_ with access to a specified `entrance `_. :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. - :type acs_entrance_id: str :param include_if: Conditions that credentials must meet to be included in the returned list. - :type include_if: List[str] - :returns: OK - :rtype: List[AcsCredential]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -116,16 +98,12 @@ def unlock( """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. - :type acs_credential_id: str :param acs_entrance_id: ID of the entrance to unlock. - :type acs_entrance_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -138,10 +116,8 @@ def get(self, *, acs_entrance_id: str) -> AcsEntrance: """Returns a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance that you want to get. - :type acs_entrance_id: str - :returns: OK - :rtype: AcsEntrance""" + :returns: OK""" json_payload = {} if acs_entrance_id is not None: @@ -161,13 +137,11 @@ def grant_access( """Grants a specified `access system user `_ access to a specified `access system entrance `_. :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. - :type acs_entrance_id: str :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. - :type user_identity_id: str""" + """ json_payload = {} if acs_entrance_id is not None: @@ -198,37 +172,26 @@ def list( """Returns a list of all `access system entrances `_. :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. - :type acs_credential_id: str :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. - :type acs_entrance_ids: List[str] :param acs_system_id: ID of the access system for which you want to retrieve all entrances. - :type acs_system_id: str :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. - :type connected_account_id: str :param customer_key: Customer key for which you want to list entrances. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: int :param location_id: Deprecated: Use ``space_id``. - :type location_id: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. - :type search: str :param space_id: ID of the space for which you want to list entrances. - :type space_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" json_payload = {} if acs_credential_id is not None: @@ -262,13 +225,10 @@ def list_credentials_with_access( """Returns a list of all `credentials `_ with access to a specified `entrance `_. :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. - :type acs_entrance_id: str :param include_if: Conditions that credentials must meet to be included in the returned list. - :type include_if: List[str] - :returns: OK - :rtype: List[AcsCredential]""" + :returns: OK""" json_payload = {} if acs_entrance_id is not None: @@ -292,16 +252,12 @@ def unlock( """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. - :type acs_credential_id: str :param acs_entrance_id: ID of the entrance to unlock. - :type acs_entrance_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index 0c4226d..b4ca7d3 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -11,10 +11,8 @@ def get(self, *, acs_system_id: str) -> AcsSystem: """Returns a specified `access system `_. :param acs_system_id: ID of the access system that you want to get. - :type acs_system_id: str - :returns: OK - :rtype: AcsSystem""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -30,16 +28,12 @@ def list( To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. - :type connected_account_id: str :param customer_key: Customer key for which you want to list access systems. - :type customer_key: str :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. - :type search: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -51,10 +45,8 @@ def list_compatible_credential_manager_acs_systems( Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. - :type acs_system_id: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -68,13 +60,10 @@ def report_devices( """Reports ACS system device status including encoders and entrances. :param acs_system_id: ID of the ACS system to report resources for - :type acs_system_id: str :param acs_encoders: Array of ACS encoders to report - :type acs_encoders: List[Dict[str, Any]] - :param acs_entrances: Array of ACS entrances to report - :type acs_entrances: List[Dict[str, Any]]""" + :param acs_entrances: Array of ACS entrances to report""" raise NotImplementedError() @@ -87,10 +76,8 @@ def get(self, *, acs_system_id: str) -> AcsSystem: """Returns a specified `access system `_. :param acs_system_id: ID of the access system that you want to get. - :type acs_system_id: str - :returns: OK - :rtype: AcsSystem""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -112,16 +99,12 @@ def list( To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. - :type connected_account_id: str :param customer_key: Customer key for which you want to list access systems. - :type customer_key: str :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. - :type search: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" json_payload = {} if connected_account_id is not None: @@ -143,10 +126,8 @@ def list_compatible_credential_manager_acs_systems( Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. - :type acs_system_id: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -169,13 +150,10 @@ def report_devices( """Reports ACS system device status including encoders and entrances. :param acs_system_id: ID of the ACS system to report resources for - :type acs_system_id: str :param acs_encoders: Array of ACS encoders to report - :type acs_encoders: List[Dict[str, Any]] - :param acs_entrances: Array of ACS entrances to report - :type acs_entrances: List[Dict[str, Any]]""" + :param acs_entrances: Array of ACS entrances to report""" json_payload = {} if acs_system_id is not None: diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index ac15053..7f59c38 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -13,10 +13,9 @@ def add_to_access_group( """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to add to an access group. - :type acs_user_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -35,31 +34,22 @@ def create( """Creates a new `access system user `_. :param acs_system_id: ID of the access system to which you want to add the new access system user. - :type acs_system_id: str :param full_name: Full name of the new access system user. - :type full_name: str :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. - :type access_schedule: Dict[str, Any] :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. - :type acs_access_group_ids: List[str] :param email: Deprecated: use email_address. - :type email: str :param email_address: Email address of the `access system user `_. - :type email_address: str :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). - :type phone_number: str :param user_identity_id: ID of the user identity with which you want to associate the new access system user. - :type user_identity_id: str - :returns: OK - :rtype: AcsUser""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -73,13 +63,11 @@ def delete( """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -93,16 +81,12 @@ def get( """Returns a specified `access system user `_. :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. - :type acs_system_id: str :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str - :returns: OK - :rtype: AcsUser""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -121,31 +105,22 @@ def list( """Returns a list of all `access system users `_. :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. - :type acs_system_id: str :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. - :type created_before: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :type search: str :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. - :type user_identity_email_address: str :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :type user_identity_id: str :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). - :type user_identity_phone_number: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -159,16 +134,12 @@ def list_accessible_entrances( """Lists the `entrances `_ to which a specified `access system user `_ has access. :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -182,13 +153,11 @@ def remove_from_access_group( """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -202,13 +171,11 @@ def revoke_access_to_all_entrances( """Revokes access to all `entrances `_ for a specified `access system user `_. :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -222,13 +189,11 @@ def suspend( """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -242,13 +207,11 @@ def unsuspend( """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -268,31 +231,23 @@ def update( """Updates the properties of a specified `access system user `_. :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. - :type access_schedule: Dict[str, Any] :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param email: Deprecated: use email_address. - :type email: str :param email_address: Email address of the `access system user `_. - :type email_address: str :param full_name: Full name of the `access system user `_. - :type full_name: str :param hid_acs_system_id: ID of the HID access control system associated with the user. - :type hid_acs_system_id: str :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). - :type phone_number: str :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. - :type user_identity_id: str""" + """ raise NotImplementedError() @@ -307,10 +262,9 @@ def add_to_access_group( """Adds a specified `access system user `_ to a specified `access group `_. :param acs_access_group_id: ID of the access group to which you want to add an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to add to an access group. - :type acs_user_id: str""" + """ json_payload = {} if acs_access_group_id is not None: @@ -337,31 +291,22 @@ def create( """Creates a new `access system user `_. :param acs_system_id: ID of the access system to which you want to add the new access system user. - :type acs_system_id: str :param full_name: Full name of the new access system user. - :type full_name: str :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. - :type access_schedule: Dict[str, Any] :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. - :type acs_access_group_ids: List[str] :param email: Deprecated: use email_address. - :type email: str :param email_address: Email address of the `access system user `_. - :type email_address: str :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). - :type phone_number: str :param user_identity_id: ID of the user identity with which you want to associate the new access system user. - :type user_identity_id: str - :returns: OK - :rtype: AcsUser""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -395,13 +340,11 @@ def delete( """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_system_id is not None: @@ -425,16 +368,12 @@ def get( """Returns a specified `access system user `_. :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. - :type acs_system_id: str :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str - :returns: OK - :rtype: AcsUser""" + :returns: OK""" json_payload = {} if acs_user_id is not None: @@ -463,31 +402,22 @@ def list( """Returns a list of all `access system users `_. :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. - :type acs_system_id: str :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. - :type created_before: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. - :type search: str :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. - :type user_identity_email_address: str :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :type user_identity_id: str :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). - :type user_identity_phone_number: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -521,16 +451,12 @@ def list_accessible_entrances( """Lists the `entrances `_ to which a specified `access system user `_ has access. :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -556,13 +482,11 @@ def remove_from_access_group( """Removes a specified `access system user `_ from a specified `access group `_. :param acs_access_group_id: ID of the access group from which you want to remove an access system user. - :type acs_access_group_id: str :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_access_group_id is not None: @@ -586,13 +510,11 @@ def revoke_access_to_all_entrances( """Revokes access to all `entrances `_ for a specified `access system user `_. :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_system_id is not None: @@ -616,13 +538,11 @@ def suspend( """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_system_id is not None: @@ -646,13 +566,11 @@ def unsuspend( """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type acs_user_id: str :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. - :type user_identity_id: str""" + """ json_payload = {} if acs_system_id is not None: @@ -682,31 +600,23 @@ def update( """Updates the properties of a specified `access system user `_. :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. - :type access_schedule: Dict[str, Any] :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. - :type acs_system_id: str :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. - :type acs_user_id: str :param email: Deprecated: use email_address. - :type email: str :param email_address: Email address of the `access system user `_. - :type email_address: str :param full_name: Full name of the `access system user `_. - :type full_name: str :param hid_acs_system_id: ID of the HID access control system associated with the user. - :type hid_acs_system_id: str :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). - :type phone_number: str :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. - :type user_identity_id: str""" + """ json_payload = {} if access_schedule is not None: diff --git a/seam/routes/action_attempts.py b/seam/routes/action_attempts.py index b4ea0fd..e14dfe8 100644 --- a/seam/routes/action_attempts.py +++ b/seam/routes/action_attempts.py @@ -17,13 +17,10 @@ def get( """Returns a specified `action attempt `_. :param action_attempt_id: ID of the action attempt that you want to get. - :type action_attempt_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -38,19 +35,14 @@ def list( """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. :param action_attempt_ids: IDs of the action attempts that you want to retrieve. - :type action_attempt_ids: List[str] :param device_id: ID of the device to filter action attempts by. - :type device_id: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str - :returns: OK - :rtype: List[ActionAttempt]""" + :returns: OK""" raise NotImplementedError() @@ -68,13 +60,10 @@ def get( """Returns a specified `action attempt `_. :param action_attempt_id: ID of the action attempt that you want to get. - :type action_attempt_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if action_attempt_id is not None: @@ -105,19 +94,14 @@ def list( """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. :param action_attempt_ids: IDs of the action attempts that you want to retrieve. - :type action_attempt_ids: List[str] :param device_id: ID of the device to filter action attempts by. - :type device_id: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str - :returns: OK - :rtype: List[ActionAttempt]""" + :returns: OK""" json_payload = {} if action_attempt_ids is not None: diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index 4df6be1..29f996a 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -22,39 +22,29 @@ def create( """Creates a new `client session `_. :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. - :type connected_account_ids: List[str] :param customer_id: Customer ID that you want to associate with the new client session. - :type customer_id: str :param customer_key: Customer key that you want to associate with the new client session. - :type customer_key: str :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. - :type expires_at: str :param user_identifier_key: Your user ID for the user for whom you want to create a client session. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str] - :returns: OK - :rtype: ClientSession""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, client_session_id: str) -> None: """Deletes a `client session `_. - :param client_session_id: ID of the client session that you want to delete. - :type client_session_id: str""" + :param client_session_id: ID of the client session that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -67,13 +57,10 @@ def get( """Returns a specified `client session `_. :param client_session_id: ID of the client session that you want to get. - :type client_session_id: str :param user_identifier_key: User identifier key associated with the client session that you want to get. - :type user_identifier_key: str - :returns: OK - :rtype: ClientSession""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -90,25 +77,18 @@ def get_or_create( """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type connected_account_ids: List[str] :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. - :type expires_at: str :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str] - :returns: OK - :rtype: ClientSession""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -125,22 +105,17 @@ def grant_access( """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. :param client_session_id: ID of the client session to which you want to grant access to resources. - :type client_session_id: str :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. - :type connected_account_ids: List[str] :param user_identifier_key: Your user ID for the user that you want to associate with the client session. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str]""" + """ raise NotImplementedError() @abc.abstractmethod @@ -156,22 +131,16 @@ def list( """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :type client_session_id: str :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. - :type connect_webview_id: str :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. - :type user_identity_id: str :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. - :type without_user_identifier_key: bool - :returns: OK - :rtype: List[ClientSession]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -180,8 +149,7 @@ def revoke(self, *, client_session_id: str) -> None: Note that `deleting a client session `_ is a separate action. - :param client_session_id: ID of the client session that you want to revoke. - :type client_session_id: str""" + :param client_session_id: ID of the client session that you want to revoke.""" raise NotImplementedError() @@ -205,31 +173,22 @@ def create( """Creates a new `client session `_. :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. - :type connected_account_ids: List[str] :param customer_id: Customer ID that you want to associate with the new client session. - :type customer_id: str :param customer_key: Customer key that you want to associate with the new client session. - :type customer_key: str :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. - :type expires_at: str :param user_identifier_key: Your user ID for the user for whom you want to create a client session. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str] - :returns: OK - :rtype: ClientSession""" + :returns: OK""" json_payload = {} if connect_webview_ids is not None: @@ -256,8 +215,7 @@ def create( def delete(self, *, client_session_id: str) -> None: """Deletes a `client session `_. - :param client_session_id: ID of the client session that you want to delete. - :type client_session_id: str""" + :param client_session_id: ID of the client session that you want to delete.""" json_payload = {} if client_session_id is not None: @@ -276,13 +234,10 @@ def get( """Returns a specified `client session `_. :param client_session_id: ID of the client session that you want to get. - :type client_session_id: str :param user_identifier_key: User identifier key associated with the client session that you want to get. - :type user_identifier_key: str - :returns: OK - :rtype: ClientSession""" + :returns: OK""" json_payload = {} if client_session_id is not None: @@ -307,25 +262,18 @@ def get_or_create( """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type connected_account_ids: List[str] :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. - :type expires_at: str :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str] - :returns: OK - :rtype: ClientSession""" + :returns: OK""" json_payload = {} if connect_webview_ids is not None: @@ -358,22 +306,17 @@ def grant_access( """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. :param client_session_id: ID of the client session to which you want to grant access to resources. - :type client_session_id: str :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. - :type connect_webview_ids: List[str] :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. - :type connected_account_ids: List[str] :param user_identifier_key: Your user ID for the user that you want to associate with the client session. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. - :type user_identity_id: str :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. - :type user_identity_ids: List[str]""" + """ json_payload = {} if client_session_id is not None: @@ -405,22 +348,16 @@ def list( """Returns a list of all `client sessions `_. :param client_session_id: ID of the client session that you want to retrieve. - :type client_session_id: str :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. - :type connect_webview_id: str :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. - :type user_identifier_key: str :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. - :type user_identity_id: str :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. - :type without_user_identifier_key: bool - :returns: OK - :rtype: List[ClientSession]""" + :returns: OK""" json_payload = {} if client_session_id is not None: @@ -443,8 +380,7 @@ def revoke(self, *, client_session_id: str) -> None: Note that `deleting a client session `_ is a separate action. - :param client_session_id: ID of the client session that you want to revoke. - :type client_session_id: str""" + :param client_session_id: ID of the client session that you want to revoke.""" json_payload = {} if client_session_id is not None: diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index 4b08c9b..d6b32d6 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -30,37 +30,26 @@ def create( See also: `Connect Webview Process `_. :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. - :type accepted_capabilities: List[str] :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. - :type accepted_providers: List[str] :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. - :type automatically_manage_new_devices: bool :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. - :type custom_metadata: Dict[str, Any] :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. - :type custom_redirect_failure_url: str :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. - :type custom_redirect_url: str :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. - :type customer_key: str :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. - :type excluded_providers: List[str] :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. - :type provider_category: str :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. - :type wait_for_device_creation: bool - :returns: OK - :rtype: ConnectWebview""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -69,8 +58,7 @@ def delete(self, *, connect_webview_id: str) -> None: You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. - :param connect_webview_id: ID of the Connect Webview that you want to delete. - :type connect_webview_id: str""" + :param connect_webview_id: ID of the Connect Webview that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -80,10 +68,8 @@ def get(self, *, connect_webview_id: str) -> ConnectWebview: Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. :param connect_webview_id: ID of the Connect Webview that you want to get. - :type connect_webview_id: str - :returns: OK - :rtype: ConnectWebview""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -100,25 +86,18 @@ def list( """Returns a list of all `Connect Webviews `_. :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list connect webviews. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. - :type search: str :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. - :type user_identifier_key: str - :returns: OK - :rtype: List[ConnectWebview]""" + :returns: OK""" raise NotImplementedError() @@ -150,37 +129,26 @@ def create( See also: `Connect Webview Process `_. :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. - :type accepted_capabilities: List[str] :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. - :type accepted_providers: List[str] :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. - :type automatically_manage_new_devices: bool :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. - :type custom_metadata: Dict[str, Any] :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. - :type custom_redirect_failure_url: str :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. - :type custom_redirect_url: str :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. - :type customer_key: str :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. - :type excluded_providers: List[str] :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. - :type provider_category: str :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. - :type wait_for_device_creation: bool - :returns: OK - :rtype: ConnectWebview""" + :returns: OK""" json_payload = {} if accepted_capabilities is not None: @@ -215,8 +183,7 @@ def delete(self, *, connect_webview_id: str) -> None: You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. - :param connect_webview_id: ID of the Connect Webview that you want to delete. - :type connect_webview_id: str""" + :param connect_webview_id: ID of the Connect Webview that you want to delete.""" json_payload = {} if connect_webview_id is not None: @@ -232,10 +199,8 @@ def get(self, *, connect_webview_id: str) -> ConnectWebview: Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. :param connect_webview_id: ID of the Connect Webview that you want to get. - :type connect_webview_id: str - :returns: OK - :rtype: ConnectWebview""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -258,25 +223,18 @@ def list( """Returns a list of all `Connect Webviews `_. :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list connect webviews. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. - :type search: str :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. - :type user_identifier_key: str - :returns: OK - :rtype: List[ConnectWebview]""" + :returns: OK""" json_payload = {} if custom_metadata_has is not None: diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 7e0e943..bcc979f 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -24,7 +24,7 @@ def delete(self, *, connected_account_id: str) -> None: For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. :param connected_account_id: ID of the connected account that you want to delete. - :type connected_account_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -34,13 +34,10 @@ def get( """Returns a specified `connected account `_. :param connected_account_id: ID of the connected account that you want to get. - :type connected_account_id: str :param email: Email address associated with the connected account that you want to get. - :type email: str - :returns: OK - :rtype: ConnectedAccount""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -58,28 +55,20 @@ def list( """Returns a list of all `connected accounts `_. :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key by which you want to filter connected accounts. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. - :type search: str :param space_id: ID of the space by which you want to filter connected accounts. - :type space_id: str :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. - :type user_identifier_key: str - :returns: OK - :rtype: List[ConnectedAccount]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -87,7 +76,7 @@ def sync(self, *, connected_account_id: str) -> None: """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. :param connected_account_id: ID of the connected account that you want to sync. - :type connected_account_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -104,22 +93,17 @@ def update( """Updates a `connected account `_. :param connected_account_id: ID of the connected account that you want to update. - :type connected_account_id: str :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. - :type accepted_capabilities: List[str] :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. - :type automatically_manage_new_devices: bool :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. - :type custom_metadata: Dict[str, Any] :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. - :type customer_key: str :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. - :type display_name: str""" + """ raise NotImplementedError() @@ -141,7 +125,7 @@ def delete(self, *, connected_account_id: str) -> None: For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. :param connected_account_id: ID of the connected account that you want to delete. - :type connected_account_id: str""" + """ json_payload = {} if connected_account_id is not None: @@ -157,13 +141,10 @@ def get( """Returns a specified `connected account `_. :param connected_account_id: ID of the connected account that you want to get. - :type connected_account_id: str :param email: Email address associated with the connected account that you want to get. - :type email: str - :returns: OK - :rtype: ConnectedAccount""" + :returns: OK""" json_payload = {} if connected_account_id is not None: @@ -189,28 +170,20 @@ def list( """Returns a list of all `connected accounts `_. :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key by which you want to filter connected accounts. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. - :type search: str :param space_id: ID of the space by which you want to filter connected accounts. - :type space_id: str :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. - :type user_identifier_key: str - :returns: OK - :rtype: List[ConnectedAccount]""" + :returns: OK""" json_payload = {} if custom_metadata_has is not None: @@ -236,7 +209,7 @@ def sync(self, *, connected_account_id: str) -> None: """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. :param connected_account_id: ID of the connected account that you want to sync. - :type connected_account_id: str""" + """ json_payload = {} if connected_account_id is not None: @@ -259,22 +232,17 @@ def update( """Updates a `connected account `_. :param connected_account_id: ID of the connected account that you want to update. - :type connected_account_id: str :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. - :type accepted_capabilities: List[str] :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. - :type automatically_manage_new_devices: bool :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. - :type custom_metadata: Dict[str, Any] :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. - :type customer_key: str :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. - :type display_name: str""" + """ json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/connected_accounts_simulate.py b/seam/routes/connected_accounts_simulate.py index 64fae4c..3766b03 100644 --- a/seam/routes/connected_accounts_simulate.py +++ b/seam/routes/connected_accounts_simulate.py @@ -10,7 +10,7 @@ def disconnect(self, *, connected_account_id: str) -> None: """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. :param connected_account_id: ID of the connected account you want to simulate as disconnected. - :type connected_account_id: str""" + """ raise NotImplementedError() @@ -23,7 +23,7 @@ def disconnect(self, *, connected_account_id: str) -> None: """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. :param connected_account_id: ID of the connected account you want to simulate as disconnected. - :type connected_account_id: str""" + """ json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/customers.py b/seam/routes/customers.py index 4260ece..bdbf4f5 100644 --- a/seam/routes/customers.py +++ b/seam/routes/customers.py @@ -25,40 +25,28 @@ def create_portal( """Creates a new customer portal magic link with configurable features. :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. - :type customer_resources_filters: List[Dict[str, Any]] :param customization_profile_id: The ID of the customization profile to use for the portal. - :type customization_profile_id: str :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. - :type deep_link: Dict[str, Any] :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. - :type exclude_locale_picker: bool :param features: - :type features: Dict[str, Any] :param is_embedded: Whether the portal is embedded in another application. - :type is_embedded: bool :param landing_page: Configuration for the landing page when the portal loads. - :type landing_page: Dict[str, Any] :param locale: The locale to use for the portal. - :type locale: str :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. - :type navigation_mode: str :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. - :type read_only: bool :param customer_data: - :type customer_data: Dict[str, Any] - :returns: OK - :rtype: CustomerPortal""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -89,61 +77,42 @@ def delete_data( This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). :param access_grant_keys: List of access grant keys to delete. - :type access_grant_keys: List[str] :param booking_keys: List of booking keys to delete. - :type booking_keys: List[str] :param building_keys: List of building keys to delete. - :type building_keys: List[str] :param common_area_keys: List of common area keys to delete. - :type common_area_keys: List[str] :param customer_keys: List of customer keys to delete all data for. - :type customer_keys: List[str] :param facility_keys: List of facility keys to delete. - :type facility_keys: List[str] :param guest_keys: List of guest keys to delete. - :type guest_keys: List[str] :param listing_keys: List of listing keys to delete. - :type listing_keys: List[str] :param property_keys: List of property keys to delete. - :type property_keys: List[str] :param property_listing_keys: List of property listing keys to delete. - :type property_listing_keys: List[str] :param reservation_keys: List of reservation keys to delete. - :type reservation_keys: List[str] :param resident_keys: List of resident keys to delete. - :type resident_keys: List[str] :param room_keys: List of room keys to delete. - :type room_keys: List[str] :param space_keys: List of space keys to delete. - :type space_keys: List[str] :param staff_member_keys: List of staff member keys to delete. - :type staff_member_keys: List[str] :param tenant_keys: List of tenant keys to delete. - :type tenant_keys: List[str] :param unit_keys: List of unit keys to delete. - :type unit_keys: List[str] :param user_identity_keys: List of user identity keys to delete. - :type user_identity_keys: List[str] - :param user_keys: List of user keys to delete. - :type user_keys: List[str]""" + :param user_keys: List of user keys to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -174,64 +143,44 @@ def push_data( """Pushes customer data including resources like spaces, properties, rooms, users, etc. :param customer_key: Your unique identifier for the customer. - :type customer_key: str :param access_grants: List of access grants. - :type access_grants: List[Dict[str, Any]] :param bookings: List of bookings. - :type bookings: List[Dict[str, Any]] :param buildings: List of buildings. - :type buildings: List[Dict[str, Any]] :param common_areas: List of shared common areas. - :type common_areas: List[Dict[str, Any]] :param facilities: List of gym or fitness facilities. - :type facilities: List[Dict[str, Any]] :param guests: List of guests. - :type guests: List[Dict[str, Any]] :param listings: List of property listings. - :type listings: List[Dict[str, Any]] :param properties: List of short-term rental properties. - :type properties: List[Dict[str, Any]] :param property_listings: List of property listings. - :type property_listings: List[Dict[str, Any]] :param reservations: List of reservations. - :type reservations: List[Dict[str, Any]] :param residents: List of residents. - :type residents: List[Dict[str, Any]] :param rooms: List of hotel or hospitality rooms. - :type rooms: List[Dict[str, Any]] :param sites: List of general sites or areas. - :type sites: List[Dict[str, Any]] :param spaces: List of general spaces or areas. - :type spaces: List[Dict[str, Any]] :param staff_members: List of staff members. - :type staff_members: List[Dict[str, Any]] :param tenants: List of tenants. - :type tenants: List[Dict[str, Any]] :param units: List of multi-family residential units. - :type units: List[Dict[str, Any]] :param user_identities: List of user identities. - :type user_identities: List[Dict[str, Any]] - :param users: List of users. - :type users: List[Dict[str, Any]]""" + :param users: List of users.""" raise NotImplementedError() @@ -258,40 +207,28 @@ def create_portal( """Creates a new customer portal magic link with configurable features. :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. - :type customer_resources_filters: List[Dict[str, Any]] :param customization_profile_id: The ID of the customization profile to use for the portal. - :type customization_profile_id: str :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. - :type deep_link: Dict[str, Any] :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. - :type exclude_locale_picker: bool :param features: - :type features: Dict[str, Any] :param is_embedded: Whether the portal is embedded in another application. - :type is_embedded: bool :param landing_page: Configuration for the landing page when the portal loads. - :type landing_page: Dict[str, Any] :param locale: The locale to use for the portal. - :type locale: str :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. - :type navigation_mode: str :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. - :type read_only: bool :param customer_data: - :type customer_data: Dict[str, Any] - :returns: OK - :rtype: CustomerPortal""" + :returns: OK""" json_payload = {} if customer_resources_filters is not None: @@ -348,61 +285,42 @@ def delete_data( This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). :param access_grant_keys: List of access grant keys to delete. - :type access_grant_keys: List[str] :param booking_keys: List of booking keys to delete. - :type booking_keys: List[str] :param building_keys: List of building keys to delete. - :type building_keys: List[str] :param common_area_keys: List of common area keys to delete. - :type common_area_keys: List[str] :param customer_keys: List of customer keys to delete all data for. - :type customer_keys: List[str] :param facility_keys: List of facility keys to delete. - :type facility_keys: List[str] :param guest_keys: List of guest keys to delete. - :type guest_keys: List[str] :param listing_keys: List of listing keys to delete. - :type listing_keys: List[str] :param property_keys: List of property keys to delete. - :type property_keys: List[str] :param property_listing_keys: List of property listing keys to delete. - :type property_listing_keys: List[str] :param reservation_keys: List of reservation keys to delete. - :type reservation_keys: List[str] :param resident_keys: List of resident keys to delete. - :type resident_keys: List[str] :param room_keys: List of room keys to delete. - :type room_keys: List[str] :param space_keys: List of space keys to delete. - :type space_keys: List[str] :param staff_member_keys: List of staff member keys to delete. - :type staff_member_keys: List[str] :param tenant_keys: List of tenant keys to delete. - :type tenant_keys: List[str] :param unit_keys: List of unit keys to delete. - :type unit_keys: List[str] :param user_identity_keys: List of user identity keys to delete. - :type user_identity_keys: List[str] - :param user_keys: List of user keys to delete. - :type user_keys: List[str]""" + :param user_keys: List of user keys to delete.""" json_payload = {} if access_grant_keys is not None: @@ -475,64 +393,44 @@ def push_data( """Pushes customer data including resources like spaces, properties, rooms, users, etc. :param customer_key: Your unique identifier for the customer. - :type customer_key: str :param access_grants: List of access grants. - :type access_grants: List[Dict[str, Any]] :param bookings: List of bookings. - :type bookings: List[Dict[str, Any]] :param buildings: List of buildings. - :type buildings: List[Dict[str, Any]] :param common_areas: List of shared common areas. - :type common_areas: List[Dict[str, Any]] :param facilities: List of gym or fitness facilities. - :type facilities: List[Dict[str, Any]] :param guests: List of guests. - :type guests: List[Dict[str, Any]] :param listings: List of property listings. - :type listings: List[Dict[str, Any]] :param properties: List of short-term rental properties. - :type properties: List[Dict[str, Any]] :param property_listings: List of property listings. - :type property_listings: List[Dict[str, Any]] :param reservations: List of reservations. - :type reservations: List[Dict[str, Any]] :param residents: List of residents. - :type residents: List[Dict[str, Any]] :param rooms: List of hotel or hospitality rooms. - :type rooms: List[Dict[str, Any]] :param sites: List of general sites or areas. - :type sites: List[Dict[str, Any]] :param spaces: List of general spaces or areas. - :type spaces: List[Dict[str, Any]] :param staff_members: List of staff members. - :type staff_members: List[Dict[str, Any]] :param tenants: List of tenants. - :type tenants: List[Dict[str, Any]] :param units: List of multi-family residential units. - :type units: List[Dict[str, Any]] :param user_identities: List of user identities. - :type user_identities: List[Dict[str, Any]] - :param users: List of users. - :type users: List[Dict[str, Any]]""" + :param users: List of users.""" json_payload = {} if customer_key is not None: diff --git a/seam/routes/devices.py b/seam/routes/devices.py index d692108..433a8d4 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -27,13 +27,10 @@ def get( You must specify either ``device_id`` or ``name``. :param device_id: ID of the device that you want to get. - :type device_id: str :param name: Name of the device that you want to get. - :type name: str - :returns: OK - :rtype: Device""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -60,55 +57,38 @@ def list( """Returns a list of all `devices `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type for which you want to list devices. - :type device_type: str :param device_types: Array of device types for which you want to list devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer for which you want to list devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -122,18 +102,15 @@ def list_device_providers( When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. :param provider_category: Category for which you want to list providers. - :type provider_category: str - :returns: OK - :rtype: List[DeviceProvider]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: """Updates provider-specific metadata for devices. - :param devices: Array of devices with provider metadata to update - :type devices: List[Dict[str, Any]]""" + :param devices: Array of devices with provider metadata to update""" raise NotImplementedError() @abc.abstractmethod @@ -152,22 +129,16 @@ def update( You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. :param device_id: ID of the device that you want to update. - :type device_id: str :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. - :type backup_access_code_pool_enabled: bool :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. - :type custom_metadata: Dict[str, Any] :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. - :type is_managed: bool :param name: Name for the device. - :type name: str - :param properties: - :type properties: Dict[str, Any]""" + :param properties:""" raise NotImplementedError() @@ -194,13 +165,10 @@ def get( You must specify either ``device_id`` or ``name``. :param device_id: ID of the device that you want to get. - :type device_id: str :param name: Name of the device that you want to get. - :type name: str - :returns: OK - :rtype: Device""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -235,55 +203,38 @@ def list( """Returns a list of all `devices `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type for which you want to list devices. - :type device_type: str :param device_types: Array of device types for which you want to list devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer for which you want to list devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -333,10 +284,8 @@ def list_device_providers( When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. :param provider_category: Category for which you want to list providers. - :type provider_category: str - :returns: OK - :rtype: List[DeviceProvider]""" + :returns: OK""" json_payload = {} if provider_category is not None: @@ -349,8 +298,7 @@ def list_device_providers( def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: """Updates provider-specific metadata for devices. - :param devices: Array of devices with provider metadata to update - :type devices: List[Dict[str, Any]]""" + :param devices: Array of devices with provider metadata to update""" json_payload = {} if devices is not None: @@ -375,22 +323,16 @@ def update( You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. :param device_id: ID of the device that you want to update. - :type device_id: str :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. - :type backup_access_code_pool_enabled: bool :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. - :type custom_metadata: Dict[str, Any] :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. - :type is_managed: bool :param name: Name for the device. - :type name: str - :param properties: - :type properties: Dict[str, Any]""" + :param properties:""" json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_simulate.py b/seam/routes/devices_simulate.py index 7a9fac0..2ebaa23 100644 --- a/seam/routes/devices_simulate.py +++ b/seam/routes/devices_simulate.py @@ -10,7 +10,7 @@ def connect(self, *, device_id: str) -> None: """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate connecting to Seam. - :type device_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -20,8 +20,7 @@ def connect_to_hub(self, *, device_id: str) -> None: implemented for August and TTLock locks. This will clear the ``hub_disconnected`` error on the device. - :param device_id: ID of the device whose hub you want to reconnect. - :type device_id: str""" + :param device_id: ID of the device whose hub you want to reconnect.""" raise NotImplementedError() @abc.abstractmethod @@ -29,7 +28,7 @@ def disconnect(self, *, device_id: str) -> None: """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate disconnecting from Seam. - :type device_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -40,8 +39,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: This will set the ``hub_disconnected`` error on the device, or mark the IglooHome bridge offline in sandbox. - :param device_id: ID of the device whose hub you want to disconnect. - :type device_id: str""" + :param device_id: ID of the device whose hub you want to disconnect.""" raise NotImplementedError() @abc.abstractmethod @@ -51,10 +49,8 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: The actual device error is created/cleared by the poller after this state change. :param device_id: - :type device_id: str - :param is_expired: - :type is_expired: bool""" + :param is_expired:""" raise NotImplementedError() @abc.abstractmethod @@ -62,7 +58,7 @@ def remove(self, *, device_id: str) -> None: """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate removing from Seam. - :type device_id: str""" + """ raise NotImplementedError() @@ -75,7 +71,7 @@ def connect(self, *, device_id: str) -> None: """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate connecting to Seam. - :type device_id: str""" + """ json_payload = {} if device_id is not None: @@ -91,8 +87,7 @@ def connect_to_hub(self, *, device_id: str) -> None: implemented for August and TTLock locks. This will clear the ``hub_disconnected`` error on the device. - :param device_id: ID of the device whose hub you want to reconnect. - :type device_id: str""" + :param device_id: ID of the device whose hub you want to reconnect.""" json_payload = {} if device_id is not None: @@ -106,7 +101,7 @@ def disconnect(self, *, device_id: str) -> None: """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate disconnecting from Seam. - :type device_id: str""" + """ json_payload = {} if device_id is not None: @@ -123,8 +118,7 @@ def disconnect_from_hub(self, *, device_id: str) -> None: This will set the ``hub_disconnected`` error on the device, or mark the IglooHome bridge offline in sandbox. - :param device_id: ID of the device whose hub you want to disconnect. - :type device_id: str""" + :param device_id: ID of the device whose hub you want to disconnect.""" json_payload = {} if device_id is not None: @@ -140,10 +134,8 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: The actual device error is created/cleared by the poller after this state change. :param device_id: - :type device_id: str - :param is_expired: - :type is_expired: bool""" + :param is_expired:""" json_payload = {} if device_id is not None: @@ -159,7 +151,7 @@ def remove(self, *, device_id: str) -> None: """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. :param device_id: ID of the device that you want to simulate removing from Seam. - :type device_id: str""" + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index 6e59288..9c0e865 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -17,13 +17,10 @@ def get( You must specify either ``device_id`` or ``name``. :param device_id: ID of the unmanaged device that you want to get. - :type device_id: str :param name: Name of the unmanaged device that you want to get. - :type name: str - :returns: OK - :rtype: UnmanagedDevice""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -52,55 +49,38 @@ def list( An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type for which you want to list devices. - :type device_type: str :param device_types: Array of device types for which you want to list devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer for which you want to list devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[UnmanagedDevice]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -116,13 +96,11 @@ def update( An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param device_id: ID of the unmanaged device that you want to update. - :type device_id: str :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. - :type custom_metadata: Dict[str, Any] :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. - :type is_managed: bool""" + """ raise NotImplementedError() @@ -141,13 +119,10 @@ def get( You must specify either ``device_id`` or ``name``. :param device_id: ID of the unmanaged device that you want to get. - :type device_id: str :param name: Name of the unmanaged device that you want to get. - :type name: str - :returns: OK - :rtype: UnmanagedDevice""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -184,55 +159,38 @@ def list( An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type for which you want to list devices. - :type device_type: str :param device_types: Array of device types for which you want to list devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer for which you want to list devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[UnmanagedDevice]""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -284,13 +242,11 @@ def update( An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. :param device_id: ID of the unmanaged device that you want to update. - :type device_id: str :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. - :type custom_metadata: Dict[str, Any] :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. - :type is_managed: bool""" + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/events.py b/seam/routes/events.py index 075b8ed..30ce08e 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -17,16 +17,12 @@ def get( """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. :param event_id: Unique identifier for the event that you want to get. - :type event_id: str :param device_id: Unique identifier for the device that triggered the event that you want to get. - :type device_id: str :param event_type: Type of the event that you want to get. - :type event_type: str - :returns: OK - :rtype: SeamEvent""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -65,91 +61,62 @@ def list( """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. :param access_code_id: ID of the access code for which you want to list events. - :type access_code_id: str :param access_code_ids: IDs of the access codes for which you want to list events. - :type access_code_ids: List[str] :param access_grant_id: ID of the access grant for which you want to list events. - :type access_grant_id: str :param access_grant_ids: IDs of the access grants for which you want to list events. - :type access_grant_ids: List[str] :param access_method_id: ID of the access method for which you want to list events. - :type access_method_id: str :param access_method_ids: IDs of the access methods for which you want to list events. - :type access_method_ids: List[str] :param acs_access_group_id: ID of the ACS access group for which you want to list events. - :type acs_access_group_id: str :param acs_credential_id: ID of the ACS credential for which you want to list events. - :type acs_credential_id: str :param acs_encoder_id: ID of the ACS encoder for which you want to list events. - :type acs_encoder_id: str :param acs_entrance_id: ID of the ACS entrance for which you want to list events. - :type acs_entrance_id: str :param acs_system_id: ID of the access system for which you want to list events. - :type acs_system_id: str :param acs_system_ids: IDs of the access systems for which you want to list events. - :type acs_system_ids: List[str] :param acs_user_id: ID of the ACS user for which you want to list events. - :type acs_user_id: str :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. - :type between: List[Dict[str, Any]] :param connect_webview_id: ID of the Connect Webview for which you want to list events. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list events. - :type connected_account_id: str :param customer_key: Customer key for which you want to list events. - :type customer_key: str :param device_id: ID of the device for which you want to list events. - :type device_id: str :param device_ids: IDs of the devices for which you want to list events. - :type device_ids: List[str] :param event_ids: IDs of the events that you want to list. - :type event_ids: List[str] :param event_type: Type of the events that you want to list. - :type event_type: str :param event_types: Types of the events that you want to list. - :type event_types: List[str] :param limit: Numerical limit on the number of events to return. - :type limit: float :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. - :type since: str :param space_id: ID of the space for which you want to list events. - :type space_id: str :param space_ids: IDs of the spaces for which you want to list events. - :type space_ids: List[str] :param unstable_offset: Offset for the events that you want to list. - :type unstable_offset: float :param user_identity_id: ID of the user identity for which you want to list events. - :type user_identity_id: str - :returns: OK - :rtype: List[SeamEvent]""" + :returns: OK""" raise NotImplementedError() @@ -168,16 +135,12 @@ def get( """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. :param event_id: Unique identifier for the event that you want to get. - :type event_id: str :param device_id: Unique identifier for the device that triggered the event that you want to get. - :type device_id: str :param event_type: Type of the event that you want to get. - :type event_type: str - :returns: OK - :rtype: SeamEvent""" + :returns: OK""" json_payload = {} if event_id is not None: @@ -226,91 +189,62 @@ def list( """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. :param access_code_id: ID of the access code for which you want to list events. - :type access_code_id: str :param access_code_ids: IDs of the access codes for which you want to list events. - :type access_code_ids: List[str] :param access_grant_id: ID of the access grant for which you want to list events. - :type access_grant_id: str :param access_grant_ids: IDs of the access grants for which you want to list events. - :type access_grant_ids: List[str] :param access_method_id: ID of the access method for which you want to list events. - :type access_method_id: str :param access_method_ids: IDs of the access methods for which you want to list events. - :type access_method_ids: List[str] :param acs_access_group_id: ID of the ACS access group for which you want to list events. - :type acs_access_group_id: str :param acs_credential_id: ID of the ACS credential for which you want to list events. - :type acs_credential_id: str :param acs_encoder_id: ID of the ACS encoder for which you want to list events. - :type acs_encoder_id: str :param acs_entrance_id: ID of the ACS entrance for which you want to list events. - :type acs_entrance_id: str :param acs_system_id: ID of the access system for which you want to list events. - :type acs_system_id: str :param acs_system_ids: IDs of the access systems for which you want to list events. - :type acs_system_ids: List[str] :param acs_user_id: ID of the ACS user for which you want to list events. - :type acs_user_id: str :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. - :type between: List[Dict[str, Any]] :param connect_webview_id: ID of the Connect Webview for which you want to list events. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list events. - :type connected_account_id: str :param customer_key: Customer key for which you want to list events. - :type customer_key: str :param device_id: ID of the device for which you want to list events. - :type device_id: str :param device_ids: IDs of the devices for which you want to list events. - :type device_ids: List[str] :param event_ids: IDs of the events that you want to list. - :type event_ids: List[str] :param event_type: Type of the events that you want to list. - :type event_type: str :param event_types: Types of the events that you want to list. - :type event_types: List[str] :param limit: Numerical limit on the number of events to return. - :type limit: float :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. - :type since: str :param space_id: ID of the space for which you want to list events. - :type space_id: str :param space_ids: IDs of the spaces for which you want to list events. - :type space_ids: List[str] :param unstable_offset: Offset for the events that you want to list. - :type unstable_offset: float :param user_identity_id: ID of the user identity for which you want to list events. - :type user_identity_id: str - :returns: OK - :rtype: List[SeamEvent]""" + :returns: OK""" json_payload = {} if access_code_id is not None: diff --git a/seam/routes/instant_keys.py b/seam/routes/instant_keys.py index 06e7907..b1c3bf2 100644 --- a/seam/routes/instant_keys.py +++ b/seam/routes/instant_keys.py @@ -10,8 +10,7 @@ class AbstractInstantKeys(abc.ABC): def delete(self, *, instant_key_id: str) -> None: """Deletes a specified `Instant Key `_. - :param instant_key_id: ID of the Instant Key that you want to delete. - :type instant_key_id: str""" + :param instant_key_id: ID of the Instant Key that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -24,13 +23,10 @@ def get( """Gets an `instant key `_. :param instant_key_id: ID of the instant key to get. - :type instant_key_id: str :param instant_key_url: URL of the instant key to get. - :type instant_key_url: str - :returns: OK - :rtype: InstantKey""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -38,10 +34,8 @@ def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: """Returns a list of all `instant keys `_. :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. - :type user_identity_id: str - :returns: OK - :rtype: List[InstantKey]""" + :returns: OK""" raise NotImplementedError() @@ -53,8 +47,7 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def delete(self, *, instant_key_id: str) -> None: """Deletes a specified `Instant Key `_. - :param instant_key_id: ID of the Instant Key that you want to delete. - :type instant_key_id: str""" + :param instant_key_id: ID of the Instant Key that you want to delete.""" json_payload = {} if instant_key_id is not None: @@ -73,13 +66,10 @@ def get( """Gets an `instant key `_. :param instant_key_id: ID of the instant key to get. - :type instant_key_id: str :param instant_key_url: URL of the instant key to get. - :type instant_key_url: str - :returns: OK - :rtype: InstantKey""" + :returns: OK""" json_payload = {} if instant_key_id is not None: @@ -95,10 +85,8 @@ def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: """Returns a list of all `instant keys `_. :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. - :type user_identity_id: str - :returns: OK - :rtype: List[InstantKey]""" + :returns: OK""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/locks.py b/seam/routes/locks.py index 35ee3bf..23a41b0 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -25,19 +25,14 @@ def configure_auto_lock( """Configures the auto-lock setting for a specified `lock `_. :param auto_lock_enabled: Whether to enable or disable auto-lock. - :type auto_lock_enabled: bool :param device_id: ID of the lock for which you want to configure the auto-lock. - :type device_id: str :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. - :type auto_lock_delay_seconds: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -47,13 +42,10 @@ def get( """Returns a specified `lock `_. :param device_id: ID of the lock that you want to get. - :type device_id: str :param name: Name of the lock that you want to get. - :type name: str :returns: OK - :rtype: Device .. deprecated:: Use ``/devices/get`` instead.""" @@ -83,55 +75,38 @@ def list( """Returns a list of all `locks `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type of the locks that you want to list. - :type device_type: str :param device_types: Device types of the locks that you want to list. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer of the locks that you want to list. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -144,13 +119,10 @@ def lock_door( """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to lock. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -163,13 +135,10 @@ def unlock_door( """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to unlock. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -194,19 +163,14 @@ def configure_auto_lock( """Configures the auto-lock setting for a specified `lock `_. :param auto_lock_enabled: Whether to enable or disable auto-lock. - :type auto_lock_enabled: bool :param device_id: ID of the lock for which you want to configure the auto-lock. - :type device_id: str :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. - :type auto_lock_delay_seconds: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if auto_lock_enabled is not None: @@ -236,13 +200,10 @@ def get( """Returns a specified `lock `_. :param device_id: ID of the lock that you want to get. - :type device_id: str :param name: Name of the lock that you want to get. - :type name: str :returns: OK - :rtype: Device .. deprecated:: Use ``/devices/get`` instead.""" @@ -280,55 +241,38 @@ def list( """Returns a list of all `locks `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type of the locks that you want to list. - :type device_type: str :param device_types: Device types of the locks that you want to list. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer of the locks that you want to list. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -377,13 +321,10 @@ def lock_door( """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to lock. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -412,13 +353,10 @@ def unlock_door( """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. :param device_id: ID of the lock that you want to unlock. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/locks_simulate.py b/seam/routes/locks_simulate.py index 2b1f993..937cb37 100644 --- a/seam/routes/locks_simulate.py +++ b/seam/routes/locks_simulate.py @@ -18,16 +18,12 @@ def keypad_code_entry( """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param code: Code that you want to simulate entering on a keypad. - :type code: str :param device_id: ID of the device for which you want to simulate a keypad code entry. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -40,13 +36,10 @@ def manual_lock_via_keypad( """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -65,16 +58,12 @@ def keypad_code_entry( """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param code: Code that you want to simulate entering on a keypad. - :type code: str :param device_id: ID of the device for which you want to simulate a keypad code entry. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if code is not None: @@ -105,13 +94,10 @@ def manual_lock_via_keypad( """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index 6d9f639..efd90f4 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -45,55 +45,38 @@ def list( """Returns a list of all `noise sensors `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type of the noise sensors that you want to list. - :type device_type: str :param device_types: Device types of the noise sensors that you want to list. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturers of the noise sensors that you want to list. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" raise NotImplementedError() @@ -137,55 +120,38 @@ def list( """Returns a list of all `noise sensors `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type of the noise sensors that you want to list. - :type device_type: str :param device_types: Device types of the noise sensors that you want to list. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturers of the noise sensors that you want to list. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: diff --git a/seam/routes/noise_sensors_noise_thresholds.py b/seam/routes/noise_sensors_noise_thresholds.py index 3a3c9de..8c5c9f0 100644 --- a/seam/routes/noise_sensors_noise_thresholds.py +++ b/seam/routes/noise_sensors_noise_thresholds.py @@ -20,25 +20,18 @@ def create( """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :param device_id: ID of the device for which you want to create a noise threshold. - :type device_id: str :param ends_daily_at: Time at which the new noise threshold should become inactive daily. - :type ends_daily_at: str :param starts_daily_at: Time at which the new noise threshold should become active daily. - :type starts_daily_at: str :param name: Name of the new noise threshold. - :type name: str :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. - :type noise_threshold_decibels: float :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. - :type noise_threshold_nrs: float - :returns: OK - :rtype: NoiseThreshold""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -46,10 +39,8 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: """Deletes a `noise threshold `_ from a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to delete. - :type device_id: str - :param noise_threshold_id: ID of the noise threshold that you want to delete. - :type noise_threshold_id: str""" + :param noise_threshold_id: ID of the noise threshold that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -57,10 +48,8 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: """Returns a specified `noise threshold `_ for a `noise sensor `_. :param noise_threshold_id: ID of the noise threshold that you want to get. - :type noise_threshold_id: str - :returns: OK - :rtype: NoiseThreshold""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -68,10 +57,8 @@ def list(self, *, device_id: str) -> List[NoiseThreshold]: """Returns a list of all `noise thresholds `_ for a `noise sensor `_. :param device_id: ID of the device for which you want to list noise thresholds. - :type device_id: str - :returns: OK - :rtype: List[NoiseThreshold]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -89,25 +76,19 @@ def update( """Updates a `noise threshold `_ for a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to update. - :type device_id: str :param noise_threshold_id: ID of the noise threshold that you want to update. - :type noise_threshold_id: str :param ends_daily_at: Time at which the noise threshold should become inactive daily. - :type ends_daily_at: str :param name: Name of the noise threshold that you want to update. - :type name: str :param noise_threshold_decibels: Noise level in decibels for the noise threshold. - :type noise_threshold_decibels: float :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. - :type noise_threshold_nrs: float :param starts_daily_at: Time at which the noise threshold should become active daily. - :type starts_daily_at: str""" + """ raise NotImplementedError() @@ -129,25 +110,18 @@ def create( """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. :param device_id: ID of the device for which you want to create a noise threshold. - :type device_id: str :param ends_daily_at: Time at which the new noise threshold should become inactive daily. - :type ends_daily_at: str :param starts_daily_at: Time at which the new noise threshold should become active daily. - :type starts_daily_at: str :param name: Name of the new noise threshold. - :type name: str :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. - :type noise_threshold_decibels: float :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. - :type noise_threshold_nrs: float - :returns: OK - :rtype: NoiseThreshold""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -173,10 +147,8 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: """Deletes a `noise threshold `_ from a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to delete. - :type device_id: str - :param noise_threshold_id: ID of the noise threshold that you want to delete. - :type noise_threshold_id: str""" + :param noise_threshold_id: ID of the noise threshold that you want to delete.""" json_payload = {} if device_id is not None: @@ -192,10 +164,8 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: """Returns a specified `noise threshold `_ for a `noise sensor `_. :param noise_threshold_id: ID of the noise threshold that you want to get. - :type noise_threshold_id: str - :returns: OK - :rtype: NoiseThreshold""" + :returns: OK""" json_payload = {} if noise_threshold_id is not None: @@ -209,10 +179,8 @@ def list(self, *, device_id: str) -> List[NoiseThreshold]: """Returns a list of all `noise thresholds `_ for a `noise sensor `_. :param device_id: ID of the device for which you want to list noise thresholds. - :type device_id: str - :returns: OK - :rtype: List[NoiseThreshold]""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -238,25 +206,19 @@ def update( """Updates a `noise threshold `_ for a `noise sensor `_. :param device_id: ID of the device that contains the noise threshold that you want to update. - :type device_id: str :param noise_threshold_id: ID of the noise threshold that you want to update. - :type noise_threshold_id: str :param ends_daily_at: Time at which the noise threshold should become inactive daily. - :type ends_daily_at: str :param name: Name of the noise threshold that you want to update. - :type name: str :param noise_threshold_decibels: Noise level in decibels for the noise threshold. - :type noise_threshold_decibels: float :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. - :type noise_threshold_nrs: float :param starts_daily_at: Time at which the noise threshold should become active daily. - :type starts_daily_at: str""" + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors_simulate.py b/seam/routes/noise_sensors_simulate.py index fac1c4f..1ce320f 100644 --- a/seam/routes/noise_sensors_simulate.py +++ b/seam/routes/noise_sensors_simulate.py @@ -10,7 +10,7 @@ def trigger_noise_threshold(self, *, device_id: str) -> None: """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. - :type device_id: str""" + """ raise NotImplementedError() @@ -23,7 +23,7 @@ def trigger_noise_threshold(self, *, device_id: str) -> None: """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. - :type device_id: str""" + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/phones.py b/seam/routes/phones.py index 149b261..2c19692 100644 --- a/seam/routes/phones.py +++ b/seam/routes/phones.py @@ -16,8 +16,7 @@ def simulate(self) -> AbstractPhonesSimulate: def deactivate(self, *, device_id: str) -> None: """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. - :param device_id: Device ID of the phone that you want to deactivate. - :type device_id: str""" + :param device_id: Device ID of the phone that you want to deactivate.""" raise NotImplementedError() @abc.abstractmethod @@ -25,10 +24,8 @@ def get(self, *, device_id: str) -> Phone: """Returns a specified `phone `_. :param device_id: Device ID of the phone that you want to get. - :type device_id: str - :returns: OK - :rtype: Phone""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -41,13 +38,10 @@ def list( """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. - :type acs_credential_id: str :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. - :type owner_user_identity_id: str - :returns: OK - :rtype: List[Phone]""" + :returns: OK""" raise NotImplementedError() @@ -64,8 +58,7 @@ def simulate(self) -> PhonesSimulate: def deactivate(self, *, device_id: str) -> None: """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. - :param device_id: Device ID of the phone that you want to deactivate. - :type device_id: str""" + :param device_id: Device ID of the phone that you want to deactivate.""" json_payload = {} if device_id is not None: @@ -79,10 +72,8 @@ def get(self, *, device_id: str) -> Phone: """Returns a specified `phone `_. :param device_id: Device ID of the phone that you want to get. - :type device_id: str - :returns: OK - :rtype: Phone""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -101,13 +92,10 @@ def list( """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. - :type acs_credential_id: str :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. - :type owner_user_identity_id: str - :returns: OK - :rtype: List[Phone]""" + :returns: OK""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/phones_simulate.py b/seam/routes/phones_simulate.py index 151efbe..3144dba 100644 --- a/seam/routes/phones_simulate.py +++ b/seam/routes/phones_simulate.py @@ -18,19 +18,14 @@ def create_sandbox_phone( """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. - :type user_identity_id: str :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. - :type assa_abloy_metadata: Dict[str, Any] :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. - :type custom_sdk_installation_id: str :param phone_metadata: Metadata that you want to associate with the simulated phone. - :type phone_metadata: Dict[str, Any] - :returns: OK - :rtype: Phone""" + :returns: OK""" raise NotImplementedError() @@ -50,19 +45,14 @@ def create_sandbox_phone( """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. - :type user_identity_id: str :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. - :type assa_abloy_metadata: Dict[str, Any] :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. - :type custom_sdk_installation_id: str :param phone_metadata: Metadata that you want to associate with the simulated phone. - :type phone_metadata: Dict[str, Any] - :returns: OK - :rtype: Phone""" + :returns: OK""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/spaces.py b/seam/routes/spaces.py index 49d9d19..4ebb7ed 100644 --- a/seam/routes/spaces.py +++ b/seam/routes/spaces.py @@ -11,10 +11,8 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No """Adds `entrances `_ to a specific space. :param acs_entrance_ids: IDs of the entrances that you want to add to the space. - :type acs_entrance_ids: List[str] - :param space_id: ID of the space to which you want to add entrances. - :type space_id: str""" + :param space_id: ID of the space to which you want to add entrances.""" raise NotImplementedError() @abc.abstractmethod @@ -24,10 +22,9 @@ def add_connected_account( """Adds a `connected account `_ to a specific space. :param connected_account_id: ID of the connected account that you want to add to the space. - :type connected_account_id: str :param space_id: ID of the space to which you want to add the connected account. - :type space_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -35,10 +32,8 @@ def add_devices(self, *, device_ids: List[str], space_id: str) -> None: """Adds devices to a specific space. :param device_ids: IDs of the devices that you want to add to the space. - :type device_ids: List[str] - :param space_id: ID of the space to which you want to add devices. - :type space_id: str""" + :param space_id: ID of the space to which you want to add devices.""" raise NotImplementedError() @abc.abstractmethod @@ -56,36 +51,27 @@ def create( """Creates a new space. :param name: Name of the space that you want to create. - :type name: str :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. - :type acs_entrance_ids: List[str] :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. - :type connected_account_ids: List[str] :param customer_data: Reservation/stay-related defaults for the space. - :type customer_data: Dict[str, Any] :param customer_key: Customer key for which you want to create the space. - :type customer_key: str :param device_ids: IDs of the devices that you want to add to the new space. - :type device_ids: List[str] :param space_key: Unique key for the space within the workspace. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, space_id: str) -> None: """Deletes a space. - :param space_id: ID of the space that you want to delete. - :type space_id: str""" + :param space_id: ID of the space that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -95,13 +81,10 @@ def get( """Gets a space. :param space_id: ID of the space that you want to get. - :type space_id: str :param space_key: Unique key of the space that you want to get. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -116,19 +99,14 @@ def get_related( """Gets all related resources for one or more Spaces. :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] :param space_ids: IDs of the spaces that you want to get along with their related resources. - :type space_ids: List[str] :param space_keys: Keys of the spaces that you want to get along with their related resources. - :type space_keys: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -144,22 +122,16 @@ def list( """Returns a list of all spaces. :param customer_key: Customer key for which you want to list spaces. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. - :type search: str :param space_key: Filter spaces by space_key. - :type space_key: str - :returns: OK - :rtype: List[Space]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -169,10 +141,8 @@ def remove_acs_entrances( """Removes `entrances `_ from a specific space. :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. - :type acs_entrance_ids: List[str] - :param space_id: ID of the space from which you want to remove entrances. - :type space_id: str""" + :param space_id: ID of the space from which you want to remove entrances.""" raise NotImplementedError() @abc.abstractmethod @@ -182,10 +152,9 @@ def remove_connected_account( """Removes a `connected account `_ from a specific space. :param connected_account_id: ID of the connected account that you want to remove from the space. - :type connected_account_id: str :param space_id: ID of the space from which you want to remove the connected account. - :type space_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -193,10 +162,8 @@ def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: """Removes devices from a specific space. :param device_ids: IDs of the devices that you want to remove from the space. - :type device_ids: List[str] - :param space_id: ID of the space from which you want to remove devices. - :type space_id: str""" + :param space_id: ID of the space from which you want to remove devices.""" raise NotImplementedError() @abc.abstractmethod @@ -213,25 +180,18 @@ def update( """Updates an existing space. :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. - :type acs_entrance_ids: List[str] :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. - :type customer_data: Dict[str, Any] :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. - :type device_ids: List[str] :param name: Name of the space. - :type name: str :param space_id: ID of the space that you want to update. - :type space_id: str :param space_key: Unique key of the space that you want to update. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" raise NotImplementedError() @@ -244,10 +204,8 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No """Adds `entrances `_ to a specific space. :param acs_entrance_ids: IDs of the entrances that you want to add to the space. - :type acs_entrance_ids: List[str] - :param space_id: ID of the space to which you want to add entrances. - :type space_id: str""" + :param space_id: ID of the space to which you want to add entrances.""" json_payload = {} if acs_entrance_ids is not None: @@ -265,10 +223,9 @@ def add_connected_account( """Adds a `connected account `_ to a specific space. :param connected_account_id: ID of the connected account that you want to add to the space. - :type connected_account_id: str :param space_id: ID of the space to which you want to add the connected account. - :type space_id: str""" + """ json_payload = {} if connected_account_id is not None: @@ -284,10 +241,8 @@ def add_devices(self, *, device_ids: List[str], space_id: str) -> None: """Adds devices to a specific space. :param device_ids: IDs of the devices that you want to add to the space. - :type device_ids: List[str] - :param space_id: ID of the space to which you want to add devices. - :type space_id: str""" + :param space_id: ID of the space to which you want to add devices.""" json_payload = {} if device_ids is not None: @@ -313,28 +268,20 @@ def create( """Creates a new space. :param name: Name of the space that you want to create. - :type name: str :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. - :type acs_entrance_ids: List[str] :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. - :type connected_account_ids: List[str] :param customer_data: Reservation/stay-related defaults for the space. - :type customer_data: Dict[str, Any] :param customer_key: Customer key for which you want to create the space. - :type customer_key: str :param device_ids: IDs of the devices that you want to add to the new space. - :type device_ids: List[str] :param space_key: Unique key for the space within the workspace. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" json_payload = {} if name is not None: @@ -359,8 +306,7 @@ def create( def delete(self, *, space_id: str) -> None: """Deletes a space. - :param space_id: ID of the space that you want to delete. - :type space_id: str""" + :param space_id: ID of the space that you want to delete.""" json_payload = {} if space_id is not None: @@ -376,13 +322,10 @@ def get( """Gets a space. :param space_id: ID of the space that you want to get. - :type space_id: str :param space_key: Unique key of the space that you want to get. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" json_payload = {} if space_id is not None: @@ -405,19 +348,14 @@ def get_related( """Gets all related resources for one or more Spaces. :param exclude: - :type exclude: List[str] :param include: - :type include: List[str] :param space_ids: IDs of the spaces that you want to get along with their related resources. - :type space_ids: List[str] :param space_keys: Keys of the spaces that you want to get along with their related resources. - :type space_keys: List[str] - :returns: OK - :rtype: Batch""" + :returns: OK""" json_payload = {} if exclude is not None: @@ -445,22 +383,16 @@ def list( """Returns a list of all spaces. :param customer_key: Customer key for which you want to list spaces. - :type customer_key: str :param limit: Maximum number of records to return per page. - :type limit: float :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. - :type search: str :param space_key: Filter spaces by space_key. - :type space_key: str - :returns: OK - :rtype: List[Space]""" + :returns: OK""" json_payload = {} if customer_key is not None: @@ -484,10 +416,8 @@ def remove_acs_entrances( """Removes `entrances `_ from a specific space. :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. - :type acs_entrance_ids: List[str] - :param space_id: ID of the space from which you want to remove entrances. - :type space_id: str""" + :param space_id: ID of the space from which you want to remove entrances.""" json_payload = {} if acs_entrance_ids is not None: @@ -505,10 +435,9 @@ def remove_connected_account( """Removes a `connected account `_ from a specific space. :param connected_account_id: ID of the connected account that you want to remove from the space. - :type connected_account_id: str :param space_id: ID of the space from which you want to remove the connected account. - :type space_id: str""" + """ json_payload = {} if connected_account_id is not None: @@ -524,10 +453,8 @@ def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: """Removes devices from a specific space. :param device_ids: IDs of the devices that you want to remove from the space. - :type device_ids: List[str] - :param space_id: ID of the space from which you want to remove devices. - :type space_id: str""" + :param space_id: ID of the space from which you want to remove devices.""" json_payload = {} if device_ids is not None: @@ -552,25 +479,18 @@ def update( """Updates an existing space. :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. - :type acs_entrance_ids: List[str] :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. - :type customer_data: Dict[str, Any] :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. - :type device_ids: List[str] :param name: Name of the space. - :type name: str :param space_id: ID of the space that you want to update. - :type space_id: str :param space_key: Unique key of the space that you want to update. - :type space_key: str - :returns: OK - :rtype: Space""" + :returns: OK""" json_payload = {} if acs_entrance_ids is not None: diff --git a/seam/routes/thermostats.py b/seam/routes/thermostats.py index 2bf1ac0..f074107 100644 --- a/seam/routes/thermostats.py +++ b/seam/routes/thermostats.py @@ -39,16 +39,12 @@ def activate_climate_preset( """Activates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to activate. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to activate a climate preset. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -63,19 +59,14 @@ def cool( """Sets a specified `thermostat `_ to `cool mode `_. :param device_id: ID of the thermostat device that you want to set to cool mode. - :type device_id: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -98,40 +89,29 @@ def create_climate_preset( """Creates a `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Unique key to identify the `climate preset `_. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want create a climate preset. - :type device_id: str :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. - :type climate_preset_mode: str :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. - :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. - :type ecobee_metadata: Dict[str, Any] :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. - :type fan_mode_setting: str :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. - :type heating_set_point_fahrenheit: float :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. - :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. - :type manual_override_allowed: bool :param name: User-friendly name to identify the `climate preset `_. - :type name: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -139,10 +119,9 @@ def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> N """Deletes a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to delete. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to delete a climate preset. - :type device_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -157,19 +136,14 @@ def heat( """Sets a specified `thermostat `_ to `heat mode `_. :param device_id: ID of the thermostat device that you want to set to heat mode. - :type device_id: str :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -186,25 +160,18 @@ def heat_cool( """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. :param device_id: ID of the thermostat device that you want to set to heat-cool mode. - :type device_id: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -231,55 +198,38 @@ def list( """Returns a list of all `thermostats `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type by which you want to filter thermostat devices. - :type device_type: str :param device_types: Array of device types by which you want to filter thermostat devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer by which you want to filter thermostat devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -292,13 +242,10 @@ def off( """Sets a specified `thermostat `_ to `"off" mode `_. :param device_id: ID of the thermostat device that you want to set to off mode. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -308,10 +255,9 @@ def set_fallback_climate_preset( """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. - :type device_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -326,19 +272,14 @@ def set_fan_mode( """Sets the `fan mode setting `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the fan mode. - :type device_id: str :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. - :type fan_mode: str :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. - :type fan_mode_setting: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -356,28 +297,20 @@ def set_hvac_mode( """Sets the `HVAC mode `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the HVAC mode. - :type device_id: str :param hvac_mode_setting: - :type hvac_mode_setting: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -393,19 +326,15 @@ def set_temperature_threshold( """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. :param device_id: ID of the thermostat device for which you want to set a temperature threshold. - :type device_id: str :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. - :type lower_limit_celsius: float :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. - :type lower_limit_fahrenheit: float :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. - :type upper_limit_celsius: float :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. - :type upper_limit_fahrenheit: float""" + """ raise NotImplementedError() @abc.abstractmethod @@ -428,40 +357,29 @@ def update_climate_preset( """Updates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Unique key to identify the `climate preset `_. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to update a climate preset. - :type device_id: str :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. - :type climate_preset_mode: str :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. - :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. - :type ecobee_metadata: Dict[str, Any] :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. - :type fan_mode_setting: str :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. - :type heating_set_point_fahrenheit: float :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. - :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. - :type manual_override_allowed: bool :param name: User-friendly name to identify the `climate preset `_. - :type name: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -481,34 +399,24 @@ def update_weekly_program( """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. :param device_id: ID of the thermostat device for which you want to update the weekly program. - :type device_id: str :param friday_program_id: ID of the thermostat daily program to run on Fridays. - :type friday_program_id: str :param monday_program_id: ID of the thermostat daily program to run on Mondays. - :type monday_program_id: str :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. - :type saturday_program_id: str :param sunday_program_id: ID of the thermostat daily program to run on Sundays. - :type sunday_program_id: str :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. - :type thursday_program_id: str :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. - :type tuesday_program_id: str :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. - :type wednesday_program_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -544,16 +452,12 @@ def activate_climate_preset( """Activates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to activate. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to activate a climate preset. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if climate_preset_key is not None: @@ -588,19 +492,14 @@ def cool( """Sets a specified `thermostat `_ to `cool mode `_. :param device_id: ID of the thermostat device that you want to set to cool mode. - :type device_id: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -643,40 +542,29 @@ def create_climate_preset( """Creates a `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Unique key to identify the `climate preset `_. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want create a climate preset. - :type device_id: str :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. - :type climate_preset_mode: str :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. - :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. - :type ecobee_metadata: Dict[str, Any] :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. - :type fan_mode_setting: str :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. - :type heating_set_point_fahrenheit: float :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. - :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. - :type manual_override_allowed: bool :param name: User-friendly name to identify the `climate preset `_. - :type name: str""" + """ json_payload = {} if climate_preset_key is not None: @@ -712,10 +600,9 @@ def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> N """Deletes a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to delete. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to delete a climate preset. - :type device_id: str""" + """ json_payload = {} if climate_preset_key is not None: @@ -738,19 +625,14 @@ def heat( """Sets a specified `thermostat `_ to `heat mode `_. :param device_id: ID of the thermostat device that you want to set to heat mode. - :type device_id: str :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -787,25 +669,18 @@ def heat_cool( """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. :param device_id: ID of the thermostat device that you want to set to heat-cool mode. - :type device_id: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -856,55 +731,38 @@ def list( """Returns a list of all `thermostats `_. :param connect_webview_id: ID of the Connect Webview for which you want to list devices. - :type connect_webview_id: str :param connected_account_id: ID of the connected account for which you want to list devices. - :type connected_account_id: str :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. - :type connected_account_ids: List[str] :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. - :type created_before: str :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. - :type custom_metadata_has: Dict[str, Any] :param customer_key: Customer key for which you want to list devices. - :type customer_key: str :param device_ids: Array of device IDs for which you want to list devices. - :type device_ids: List[str] :param device_type: Device type by which you want to filter thermostat devices. - :type device_type: str :param device_types: Array of device types by which you want to filter thermostat devices. - :type device_types: List[str] :param limit: Numerical limit on the number of devices to return. - :type limit: float :param manufacturer: Manufacturer by which you want to filter thermostat devices. - :type manufacturer: str :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. - :type search: str :param space_id: ID of the space for which you want to list devices. - :type space_id: str :param unstable_location_id: Deprecated: Use ``space_id``. - :type unstable_location_id: str :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. - :type user_identifier_key: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -953,13 +811,10 @@ def off( """Sets a specified `thermostat `_ to `"off" mode `_. :param device_id: ID of the thermostat device that you want to set to off mode. - :type device_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -985,10 +840,9 @@ def set_fallback_climate_preset( """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. - :type device_id: str""" + """ json_payload = {} if climate_preset_key is not None: @@ -1011,19 +865,14 @@ def set_fan_mode( """Sets the `fan mode setting `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the fan mode. - :type device_id: str :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. - :type fan_mode: str :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. - :type fan_mode_setting: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -1061,28 +910,20 @@ def set_hvac_mode( """Sets the `HVAC mode `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to set the HVAC mode. - :type device_id: str :param hvac_mode_setting: - :type hvac_mode_setting: str :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. - :type heating_set_point_fahrenheit: float :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -1124,19 +965,15 @@ def set_temperature_threshold( """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. :param device_id: ID of the thermostat device for which you want to set a temperature threshold. - :type device_id: str :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. - :type lower_limit_celsius: float :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. - :type lower_limit_fahrenheit: float :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. - :type upper_limit_celsius: float :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. - :type upper_limit_fahrenheit: float""" + """ json_payload = {} if device_id is not None: @@ -1173,40 +1010,29 @@ def update_climate_preset( """Updates a specified `climate preset `_ for a specified `thermostat `_. :param climate_preset_key: Unique key to identify the `climate preset `_. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to update a climate preset. - :type device_id: str :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. - :type climate_preset_mode: str :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. - :type cooling_set_point_fahrenheit: float :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. - :type ecobee_metadata: Dict[str, Any] :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. - :type fan_mode_setting: str :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. - :type heating_set_point_fahrenheit: float :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. - :type hvac_mode_setting: str :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. - :type manual_override_allowed: bool :param name: User-friendly name to identify the `climate preset `_. - :type name: str""" + """ json_payload = {} if climate_preset_key is not None: @@ -1254,34 +1080,24 @@ def update_weekly_program( """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. :param device_id: ID of the thermostat device for which you want to update the weekly program. - :type device_id: str :param friday_program_id: ID of the thermostat daily program to run on Fridays. - :type friday_program_id: str :param monday_program_id: ID of the thermostat daily program to run on Mondays. - :type monday_program_id: str :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. - :type saturday_program_id: str :param sunday_program_id: ID of the thermostat daily program to run on Sundays. - :type sunday_program_id: str :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. - :type thursday_program_id: str :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. - :type tuesday_program_id: str :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. - :type wednesday_program_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/thermostats_daily_programs.py b/seam/routes/thermostats_daily_programs.py index c9f478c..56e886d 100644 --- a/seam/routes/thermostats_daily_programs.py +++ b/seam/routes/thermostats_daily_programs.py @@ -14,16 +14,12 @@ def create( """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. :param device_id: ID of the thermostat device for which you want to create a daily program. - :type device_id: str :param name: Name of the thermostat daily program. - :type name: str :param periods: Array of thermostat daily program periods. - :type periods: List[Dict[str, Any]] - :returns: OK - :rtype: ThermostatDailyProgram""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -31,7 +27,7 @@ def delete(self, *, thermostat_daily_program_id: str) -> None: """Deletes a thermostat daily program. :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. - :type thermostat_daily_program_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -46,19 +42,14 @@ def update( """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. :param name: Name of the thermostat daily program that you want to update. - :type name: str :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. - :type periods: List[Dict[str, Any]] :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. - :type thermostat_daily_program_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @@ -73,16 +64,12 @@ def create( """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. :param device_id: ID of the thermostat device for which you want to create a daily program. - :type device_id: str :param name: Name of the thermostat daily program. - :type name: str :param periods: Array of thermostat daily program periods. - :type periods: List[Dict[str, Any]] - :returns: OK - :rtype: ThermostatDailyProgram""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -100,7 +87,7 @@ def delete(self, *, thermostat_daily_program_id: str) -> None: """Deletes a thermostat daily program. :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. - :type thermostat_daily_program_id: str""" + """ json_payload = {} if thermostat_daily_program_id is not None: @@ -121,19 +108,14 @@ def update( """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. :param name: Name of the thermostat daily program that you want to update. - :type name: str :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. - :type periods: List[Dict[str, Any]] :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. - :type thermostat_daily_program_id: str :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} if name is not None: diff --git a/seam/routes/thermostats_schedules.py b/seam/routes/thermostats_schedules.py index 6a1566e..24935b3 100644 --- a/seam/routes/thermostats_schedules.py +++ b/seam/routes/thermostats_schedules.py @@ -21,28 +21,20 @@ def create( """Creates a new `thermostat schedule `_ for a specified `thermostat `_. :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to create a schedule. - :type device_id: str :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. - :type ends_at: str :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. - :type starts_at: str :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. - :type is_override_allowed: bool :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. - :type max_override_period_minutes: int :param name: Name of the thermostat schedule. - :type name: str - :returns: OK - :rtype: ThermostatSchedule""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -50,7 +42,7 @@ def delete(self, *, thermostat_schedule_id: str) -> None: """Deletes a `thermostat schedule `_ for a specified `thermostat `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. - :type thermostat_schedule_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -58,10 +50,8 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: """Returns a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. - :type thermostat_schedule_id: str - :returns: OK - :rtype: ThermostatSchedule""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -71,13 +61,10 @@ def list( """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to list schedules. - :type device_id: str :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. - :type user_identifier_key: str - :returns: OK - :rtype: List[ThermostatSchedule]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -95,25 +82,19 @@ def update( """Updates a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. - :type thermostat_schedule_id: str :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. - :type climate_preset_key: str :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. - :type ends_at: str :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. - :type is_override_allowed: bool :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. - :type max_override_period_minutes: int :param name: Name of the thermostat schedule. - :type name: str :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ raise NotImplementedError() @@ -136,28 +117,20 @@ def create( """Creates a new `thermostat schedule `_ for a specified `thermostat `_. :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. - :type climate_preset_key: str :param device_id: ID of the thermostat device for which you want to create a schedule. - :type device_id: str :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. - :type ends_at: str :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. - :type starts_at: str :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. - :type is_override_allowed: bool :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. - :type max_override_period_minutes: int :param name: Name of the thermostat schedule. - :type name: str - :returns: OK - :rtype: ThermostatSchedule""" + :returns: OK""" json_payload = {} if climate_preset_key is not None: @@ -183,7 +156,7 @@ def delete(self, *, thermostat_schedule_id: str) -> None: """Deletes a `thermostat schedule `_ for a specified `thermostat `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. - :type thermostat_schedule_id: str""" + """ json_payload = {} if thermostat_schedule_id is not None: @@ -197,10 +170,8 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: """Returns a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. - :type thermostat_schedule_id: str - :returns: OK - :rtype: ThermostatSchedule""" + :returns: OK""" json_payload = {} if thermostat_schedule_id is not None: @@ -216,13 +187,10 @@ def list( """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. :param device_id: ID of the thermostat device for which you want to list schedules. - :type device_id: str :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. - :type user_identifier_key: str - :returns: OK - :rtype: List[ThermostatSchedule]""" + :returns: OK""" json_payload = {} if device_id is not None: @@ -250,25 +218,19 @@ def update( """Updates a specified `thermostat schedule `_. :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. - :type thermostat_schedule_id: str :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. - :type climate_preset_key: str :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. - :type ends_at: str :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. - :type is_override_allowed: bool :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. - :type max_override_period_minutes: int :param name: Name of the thermostat schedule. - :type name: str :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. - :type starts_at: str""" + """ json_payload = {} if thermostat_schedule_id is not None: diff --git a/seam/routes/thermostats_simulate.py b/seam/routes/thermostats_simulate.py index a43dab8..94d2a1b 100644 --- a/seam/routes/thermostats_simulate.py +++ b/seam/routes/thermostats_simulate.py @@ -19,22 +19,17 @@ def hvac_mode_adjusted( """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. - :type device_id: str :param hvac_mode: HVAC mode that you want to simulate. - :type hvac_mode: str :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. - :type heating_set_point_fahrenheit: float""" + """ raise NotImplementedError() @abc.abstractmethod @@ -48,13 +43,11 @@ def temperature_reached( """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. - :type device_id: str :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. - :type temperature_celsius: float :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. - :type temperature_fahrenheit: float""" + """ raise NotImplementedError() @@ -76,22 +69,17 @@ def hvac_mode_adjusted( """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. - :type device_id: str :param hvac_mode: HVAC mode that you want to simulate. - :type hvac_mode: str :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. - :type cooling_set_point_celsius: float :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. - :type cooling_set_point_fahrenheit: float :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. - :type heating_set_point_celsius: float :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. - :type heating_set_point_fahrenheit: float""" + """ json_payload = {} if device_id is not None: @@ -121,13 +109,11 @@ def temperature_reached( """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. - :type device_id: str :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. - :type temperature_celsius: float :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. - :type temperature_fahrenheit: float""" + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index 4748d88..819ddd9 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -37,13 +37,11 @@ def add_acs_user( If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. :param acs_user_id: ID of the access system user that you want to add to the user identity. - :type acs_user_id: str :param user_identity_id: ID of the user identity to which you want to add an access system user. - :type user_identity_id: str :param user_identity_key: Key of the user identity to which you want to add an access system user. - :type user_identity_key: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -59,30 +57,23 @@ def create( """Creates a new `user identity `_. :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. - :type acs_system_ids: List[str] :param email_address: Unique email address for the new user identity. - :type email_address: str :param full_name: Full name of the user associated with the new user identity. - :type full_name: str :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). - :type phone_number: str :param user_identity_key: Unique key for the new user identity. - :type user_identity_key: str - :returns: OK - :rtype: UserIdentity""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, user_identity_id: str) -> None: """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. - :param user_identity_id: ID of the user identity that you want to delete. - :type user_identity_id: str""" + :param user_identity_id: ID of the user identity that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -96,16 +87,12 @@ def generate_instant_key( """Generates a new `instant key `_ for a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to generate an instant key. - :type user_identity_id: str :param customization_profile_id: - :type customization_profile_id: str :param max_use_count: Maximum number of times the instant key can be used. Default: 1. - :type max_use_count: float - :returns: OK - :rtype: InstantKey""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -118,13 +105,10 @@ def get( """Returns a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to get. - :type user_identity_id: str :param user_identity_key: - :type user_identity_key: str - :returns: OK - :rtype: UserIdentity""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -132,10 +116,9 @@ def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> No """Grants a specified `user identity `_ access to a specified `device `_. :param device_id: ID of the managed device to which you want to grant access to the user identity. - :type device_id: str :param user_identity_id: ID of the user identity that you want to grant access to a device. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -152,25 +135,18 @@ def list( """Returns a list of all `user identities `_. :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. - :type created_before: str :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. - :type credential_manager_acs_system_id: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. - :type search: str :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. - :type user_identity_ids: List[str] - :returns: OK - :rtype: List[UserIdentity]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -178,10 +154,8 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. - :type user_identity_id: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -189,10 +163,8 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -200,10 +172,8 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: """Returns a list of all `access systems `_ associated with a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -211,10 +181,8 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: """Returns a list of all `access system users `_ assigned to a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -222,10 +190,9 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: """Removes a specified `access system user `_ from a specified `user identity `_. :param acs_user_id: ID of the access system user that you want to remove from the user identity.. - :type acs_user_id: str :param user_identity_id: ID of the user identity from which you want to remove an access system user. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -233,10 +200,9 @@ def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> N """Revokes access to a specified `device `_ from a specified `user identity `_. :param device_id: ID of the managed device to which you want to revoke access from the user identity. - :type device_id: str :param user_identity_id: ID of the user identity from which you want to revoke access to a device. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -252,19 +218,14 @@ def update( """Updates a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to update. - :type user_identity_id: str :param email_address: Unique email address for the user identity. - :type email_address: str :param full_name: Full name of the user associated with the user identity. - :type full_name: str :param phone_number: Unique phone number for the user identity. - :type phone_number: str - :param user_identity_key: Unique key for the user identity. - :type user_identity_key: str""" + :param user_identity_key: Unique key for the user identity.""" raise NotImplementedError() @@ -292,13 +253,11 @@ def add_acs_user( If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. :param acs_user_id: ID of the access system user that you want to add to the user identity. - :type acs_user_id: str :param user_identity_id: ID of the user identity to which you want to add an access system user. - :type user_identity_id: str :param user_identity_key: Key of the user identity to which you want to add an access system user. - :type user_identity_key: str""" + """ json_payload = {} if acs_user_id is not None: @@ -324,22 +283,16 @@ def create( """Creates a new `user identity `_. :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. - :type acs_system_ids: List[str] :param email_address: Unique email address for the new user identity. - :type email_address: str :param full_name: Full name of the user associated with the new user identity. - :type full_name: str :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). - :type phone_number: str :param user_identity_key: Unique key for the new user identity. - :type user_identity_key: str - :returns: OK - :rtype: UserIdentity""" + :returns: OK""" json_payload = {} if acs_system_ids is not None: @@ -360,8 +313,7 @@ def create( def delete(self, *, user_identity_id: str) -> None: """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. - :param user_identity_id: ID of the user identity that you want to delete. - :type user_identity_id: str""" + :param user_identity_id: ID of the user identity that you want to delete.""" json_payload = {} if user_identity_id is not None: @@ -381,16 +333,12 @@ def generate_instant_key( """Generates a new `instant key `_ for a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to generate an instant key. - :type user_identity_id: str :param customization_profile_id: - :type customization_profile_id: str :param max_use_count: Maximum number of times the instant key can be used. Default: 1. - :type max_use_count: float - :returns: OK - :rtype: InstantKey""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -415,13 +363,10 @@ def get( """Returns a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to get. - :type user_identity_id: str :param user_identity_key: - :type user_identity_key: str - :returns: OK - :rtype: UserIdentity""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -437,10 +382,9 @@ def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> No """Grants a specified `user identity `_ access to a specified `device `_. :param device_id: ID of the managed device to which you want to grant access to the user identity. - :type device_id: str :param user_identity_id: ID of the user identity that you want to grant access to a device. - :type user_identity_id: str""" + """ json_payload = {} if device_id is not None: @@ -465,25 +409,18 @@ def list( """Returns a list of all `user identities `_. :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. - :type created_before: str :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. - :type credential_manager_acs_system_id: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. - :type search: str :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. - :type user_identity_ids: List[str] - :returns: OK - :rtype: List[UserIdentity]""" + :returns: OK""" json_payload = {} if created_before is not None: @@ -509,10 +446,8 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. - :type user_identity_id: str - :returns: OK - :rtype: List[Device]""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -528,10 +463,8 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsEntrance]""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -547,10 +480,8 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: """Returns a list of all `access systems `_ associated with a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsSystem]""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -564,10 +495,8 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: """Returns a list of all `access system users `_ assigned to a specified `user identity `_. :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. - :type user_identity_id: str - :returns: OK - :rtype: List[AcsUser]""" + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -581,10 +510,9 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: """Removes a specified `access system user `_ from a specified `user identity `_. :param acs_user_id: ID of the access system user that you want to remove from the user identity.. - :type acs_user_id: str :param user_identity_id: ID of the user identity from which you want to remove an access system user. - :type user_identity_id: str""" + """ json_payload = {} if acs_user_id is not None: @@ -600,10 +528,9 @@ def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> N """Revokes access to a specified `device `_ from a specified `user identity `_. :param device_id: ID of the managed device to which you want to revoke access from the user identity. - :type device_id: str :param user_identity_id: ID of the user identity from which you want to revoke access to a device. - :type user_identity_id: str""" + """ json_payload = {} if device_id is not None: @@ -627,19 +554,14 @@ def update( """Updates a specified `user identity `_. :param user_identity_id: ID of the user identity that you want to update. - :type user_identity_id: str :param email_address: Unique email address for the user identity. - :type email_address: str :param full_name: Full name of the user associated with the user identity. - :type full_name: str :param phone_number: Unique phone number for the user identity. - :type phone_number: str - :param user_identity_key: Unique key for the user identity. - :type user_identity_key: str""" + :param user_identity_key: Unique key for the user identity.""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/user_identities_unmanaged.py b/seam/routes/user_identities_unmanaged.py index 67a2ca7..6325702 100644 --- a/seam/routes/user_identities_unmanaged.py +++ b/seam/routes/user_identities_unmanaged.py @@ -10,7 +10,7 @@ def get(self, *, user_identity_id: str) -> None: """Returns a specified unmanaged `user identity `_ (where is_managed = false). :param user_identity_id: ID of the unmanaged user identity that you want to get. - :type user_identity_id: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -25,16 +25,13 @@ def list( """Returns a list of all unmanaged `user identities `_ (where is_managed = false). :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. - :type created_before: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. - :type search: str""" + """ raise NotImplementedError() @abc.abstractmethod @@ -50,13 +47,11 @@ def update( This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. :param is_managed: Must be set to true to convert the unmanaged user identity to managed. - :type is_managed: bool :param user_identity_id: ID of the unmanaged user identity that you want to update. - :type user_identity_id: str :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. - :type user_identity_key: str""" + """ raise NotImplementedError() @@ -69,7 +64,7 @@ def get(self, *, user_identity_id: str) -> None: """Returns a specified unmanaged `user identity `_ (where is_managed = false). :param user_identity_id: ID of the unmanaged user identity that you want to get. - :type user_identity_id: str""" + """ json_payload = {} if user_identity_id is not None: @@ -90,16 +85,13 @@ def list( """Returns a list of all unmanaged `user identities `_ (where is_managed = false). :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. - :type created_before: str :param limit: Maximum number of records to return per page. - :type limit: int :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. - :type page_cursor: str :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. - :type search: str""" + """ json_payload = {} if created_before is not None: @@ -127,13 +119,11 @@ def update( This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. :param is_managed: Must be set to true to convert the unmanaged user identity to managed. - :type is_managed: bool :param user_identity_id: ID of the unmanaged user identity that you want to update. - :type user_identity_id: str :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. - :type user_identity_key: str""" + """ json_payload = {} if is_managed is not None: diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index cbcf11e..05b5d95 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -11,21 +11,17 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo """Creates a new `webhook `_. :param url: URL for the new webhook. - :type url: str :param event_types: Types of events that you want the new webhook to receive. - :type event_types: List[str] - :returns: OK - :rtype: Webhook""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, webhook_id: str) -> None: """Deletes a specified `webhook `_. - :param webhook_id: ID of the webhook that you want to delete. - :type webhook_id: str""" + :param webhook_id: ID of the webhook that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -33,10 +29,8 @@ def get(self, *, webhook_id: str) -> Webhook: """Gets a specified `webhook `_. :param webhook_id: ID of the webhook that you want to get. - :type webhook_id: str - :returns: OK - :rtype: Webhook""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -45,8 +39,7 @@ def list( ) -> List[Webhook]: """Returns a list of all `webhooks `_. - :returns: OK - :rtype: List[Webhook]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -54,10 +47,8 @@ def update(self, *, event_types: List[str], webhook_id: str) -> None: """Updates a specified `webhook `_. :param event_types: Types of events that you want the webhook to receive. - :type event_types: List[str] - :param webhook_id: ID of the webhook that you want to update. - :type webhook_id: str""" + :param webhook_id: ID of the webhook that you want to update.""" raise NotImplementedError() @@ -70,13 +61,10 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo """Creates a new `webhook `_. :param url: URL for the new webhook. - :type url: str :param event_types: Types of events that you want the new webhook to receive. - :type event_types: List[str] - :returns: OK - :rtype: Webhook""" + :returns: OK""" json_payload = {} if url is not None: @@ -91,8 +79,7 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo def delete(self, *, webhook_id: str) -> None: """Deletes a specified `webhook `_. - :param webhook_id: ID of the webhook that you want to delete. - :type webhook_id: str""" + :param webhook_id: ID of the webhook that you want to delete.""" json_payload = {} if webhook_id is not None: @@ -106,10 +93,8 @@ def get(self, *, webhook_id: str) -> Webhook: """Gets a specified `webhook `_. :param webhook_id: ID of the webhook that you want to get. - :type webhook_id: str - :returns: OK - :rtype: Webhook""" + :returns: OK""" json_payload = {} if webhook_id is not None: @@ -124,8 +109,7 @@ def list( ) -> List[Webhook]: """Returns a list of all `webhooks `_. - :returns: OK - :rtype: List[Webhook]""" + :returns: OK""" json_payload = {} res = self.client.post("/webhooks/list", json=json_payload) @@ -136,10 +120,8 @@ def update(self, *, event_types: List[str], webhook_id: str) -> None: """Updates a specified `webhook `_. :param event_types: Types of events that you want the webhook to receive. - :type event_types: List[str] - :param webhook_id: ID of the webhook that you want to update. - :type webhook_id: str""" + :param webhook_id: ID of the webhook that you want to update.""" json_payload = {} if event_types is not None: diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 593df41..85b0f01 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -25,37 +25,26 @@ def create( """Creates a new `workspace `_. :param name: Name of the new workspace. - :type name: str :param company_name: Company name for the new workspace. - :type company_name: str :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. - :type connect_partner_name: str :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. - :type connect_webview_customization: Dict[str, Any] :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. - :type is_sandbox: bool :param organization_id: ID of the organization to associate with the new workspace. - :type organization_id: str :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. - :type webview_logo_shape: str :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. - :type webview_primary_button_color: str :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. - :type webview_primary_button_text_color: str :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. - :type webview_success_message: str - :returns: OK - :rtype: Workspace""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -64,8 +53,7 @@ def get( ) -> Workspace: """Returns the `workspace `_ associated with the authentication value. - :returns: OK - :rtype: Workspace""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -74,8 +62,7 @@ def list( ) -> List[Workspace]: """Returns a list of `workspaces `_ associated with the authentication value. - :returns: OK - :rtype: List[Workspace]""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -85,10 +72,8 @@ def reset_sandbox( """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -105,22 +90,17 @@ def update( """Updates the `workspace `_ associated with the authentication value. :param connect_partner_name: Connect partner name for the workspace. - :type connect_partner_name: str :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. - :type connect_webview_customization: Dict[str, Any] :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. - :type is_publishable_key_auth_enabled: bool :param is_suspended: Indicates whether the workspace is suspended. - :type is_suspended: bool :param name: Name of the workspace. - :type name: str :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. - :type organization_id: str""" + """ raise NotImplementedError() @@ -146,37 +126,26 @@ def create( """Creates a new `workspace `_. :param name: Name of the new workspace. - :type name: str :param company_name: Company name for the new workspace. - :type company_name: str :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. - :type connect_partner_name: str :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. - :type connect_webview_customization: Dict[str, Any] :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. - :type is_sandbox: bool :param organization_id: ID of the organization to associate with the new workspace. - :type organization_id: str :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. - :type webview_logo_shape: str :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. - :type webview_primary_button_color: str :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. - :type webview_primary_button_text_color: str :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. - :type webview_success_message: str - :returns: OK - :rtype: Workspace""" + :returns: OK""" json_payload = {} if name is not None: @@ -213,8 +182,7 @@ def get( ) -> Workspace: """Returns the `workspace `_ associated with the authentication value. - :returns: OK - :rtype: Workspace""" + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/get", json=json_payload) @@ -226,8 +194,7 @@ def list( ) -> List[Workspace]: """Returns a list of `workspaces `_ associated with the authentication value. - :returns: OK - :rtype: List[Workspace]""" + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/list", json=json_payload) @@ -240,10 +207,8 @@ def reset_sandbox( """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. - :type wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] - :returns: OK - :rtype: ActionAttempt""" + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/reset_sandbox", json=json_payload) @@ -273,22 +238,17 @@ def update( """Updates the `workspace `_ associated with the authentication value. :param connect_partner_name: Connect partner name for the workspace. - :type connect_partner_name: str :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. - :type connect_webview_customization: Dict[str, Any] :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. - :type is_publishable_key_auth_enabled: bool :param is_suspended: Indicates whether the workspace is suspended. - :type is_suspended: bool :param name: Name of the workspace. - :type name: str :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. - :type organization_id: str""" + """ json_payload = {} if connect_partner_name is not None: From 988d24fc7c32b294ec019c71d5f50370d1b4820b Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Tue, 28 Jul 2026 16:10:32 +0000 Subject: [PATCH 4/8] ci: Generate code --- seam/resources/unmanaged_access_grant.py | 34 ++ seam/resources/unmanaged_access_method.py | 32 ++ seam/resources/unmanaged_user_identity.py | 22 + seam/routes/access_codes.py | 444 ++++++++++++++++++ seam/routes/access_codes_simulate.py | 18 + seam/routes/access_codes_unmanaged.py | 108 +++++ seam/routes/access_grants.py | 204 ++++++++ seam/routes/access_grants_unmanaged.py | 64 +++ seam/routes/access_methods.py | 136 ++++++ seam/routes/access_methods_unmanaged.py | 32 ++ seam/routes/acs_access_groups.py | 90 ++++ seam/routes/acs_credentials.py | 170 +++++++ seam/routes/acs_encoders.py | 102 ++++ seam/routes/acs_encoders_simulate.py | 54 +++ seam/routes/acs_entrances.py | 108 +++++ seam/routes/acs_systems.py | 60 +++ seam/routes/acs_users.py | 244 ++++++++++ seam/routes/action_attempts.py | 36 ++ seam/routes/client_sessions.py | 152 ++++++ seam/routes/connect_webviews.py | 112 +++++ seam/routes/connected_accounts.py | 100 ++++ seam/routes/connected_accounts_simulate.py | 8 + seam/routes/customers.py | 212 +++++++++ seam/routes/devices.py | 142 ++++++ seam/routes/devices_simulate.py | 64 +++ seam/routes/devices_unmanaged.py | 116 +++++ seam/routes/events.py | 136 ++++++ seam/routes/instant_keys.py | 30 ++ seam/routes/locks.py | 140 ++++++ seam/routes/locks_simulate.py | 32 ++ seam/routes/noise_sensors.py | 70 +++ seam/routes/noise_sensors_noise_thresholds.py | 92 ++++ seam/routes/noise_sensors_simulate.py | 8 + seam/routes/phones.py | 30 ++ seam/routes/phones_simulate.py | 22 + seam/routes/spaces.py | 196 ++++++++ seam/routes/thermostats.py | 426 +++++++++++++++++ seam/routes/thermostats_daily_programs.py | 48 ++ seam/routes/thermostats_schedules.py | 98 ++++ seam/routes/thermostats_simulate.py | 44 ++ seam/routes/user_identities.py | 216 +++++++++ seam/routes/user_identities_unmanaged.py | 52 ++ seam/routes/webhooks.py | 46 ++ seam/routes/workspaces.py | 96 ++++ 44 files changed, 4646 insertions(+) diff --git a/seam/resources/unmanaged_access_grant.py b/seam/resources/unmanaged_access_grant.py index 9a68bf8..9d2496d 100644 --- a/seam/resources/unmanaged_access_grant.py +++ b/seam/resources/unmanaged_access_grant.py @@ -5,6 +5,40 @@ @dataclass class UnmanagedAccessGrant: + """Represents an unmanaged Access Grant. Unmanaged Access Grants do not have client sessions, instant keys, customization profiles, or keys. + + :ivar access_grant_id: ID of the Access Grant. + + :ivar access_method_ids: IDs of the access methods created for the Access Grant. + + :ivar created_at: Date and time at which the Access Grant was created. + + :ivar display_name: Display name of the Access Grant. + + :ivar ends_at: Date and time at which the Access Grant ends. + + :ivar errors: Errors associated with the `access grant `_. + + :ivar location_ids: Deprecated: Use ``space_ids``. + + :ivar name: Name of the Access Grant. If not provided, the display name will be computed. + + :ivar pending_mutations: List of pending mutations for the access grant. This shows updates that are in progress. + + :ivar requested_access_methods: Access methods that the user requested for the Access Grant. + + :ivar reservation_key: Reservation key for the access grant. + + :ivar space_ids: IDs of the spaces to which the Access Grant gives access. + + :ivar starts_at: Date and time at which the Access Grant starts. + + :ivar user_identity_id: ID of user identity to which the Access Grant gives access. + + :ivar warnings: Warnings associated with the `access grant `_. + + :ivar workspace_id: ID of the Seam workspace associated with the Access Grant.""" + access_grant_id: str access_method_ids: List[str] created_at: str diff --git a/seam/resources/unmanaged_access_method.py b/seam/resources/unmanaged_access_method.py index 9beebf1..1ab0aa8 100644 --- a/seam/resources/unmanaged_access_method.py +++ b/seam/resources/unmanaged_access_method.py @@ -5,6 +5,38 @@ @dataclass class UnmanagedAccessMethod: + """Represents an unmanaged access method. Unmanaged access methods do not have client sessions, instant keys, customization profiles, or keys. + + :ivar access_method_id: ID of the access method. + + :ivar code: The actual PIN code for code access methods. + + :ivar created_at: Date and time at which the access method was created. + + :ivar display_name: Display name of the access method. + + :ivar errors: Errors associated with the `access method `_. + + :ivar is_assignment_required: Indicates whether an existing card credential must be assigned to this access method before it can be issued. Only applies to card-mode access methods on systems that support credential assignment. + + :ivar is_encoding_required: Indicates whether encoding with an card encoder is required to issue or reissue the plastic card associated with the access method. + + :ivar is_issued: Indicates whether the access method has been issued. + + :ivar is_ready_for_assignment: Indicates whether the access method is ready for card assignment. This is true when the access method is in card mode, has not yet been issued, and the system supports credential assignment. + + :ivar is_ready_for_encoding: Indicates whether the access method is ready to be encoded. This is true when the credential has been created and the card has not yet been issued. + + :ivar issued_at: Date and time at which the access method was issued. + + :ivar mode: Access method mode. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. + + :ivar pending_mutations: Pending mutations for the `access method `_. Indicates operations that are in progress. + + :ivar warnings: Warnings associated with the `access method `_. + + :ivar workspace_id: ID of the Seam workspace associated with the access method.""" + access_method_id: str code: str created_at: str diff --git a/seam/resources/unmanaged_user_identity.py b/seam/resources/unmanaged_user_identity.py index c661a14..6b41dd1 100644 --- a/seam/resources/unmanaged_user_identity.py +++ b/seam/resources/unmanaged_user_identity.py @@ -5,6 +5,28 @@ @dataclass class UnmanagedUserIdentity: + """Represents an unmanaged user identity. Unmanaged user identities do not have keys. + + :ivar acs_user_ids: Array of access system user IDs associated with the user identity. + + :ivar created_at: Date and time at which the user identity was created. + + :ivar display_name: Display name for the user identity. + + :ivar email_address: Unique email address for the user identity. + + :ivar errors: Array of errors associated with the user identity. Each error object within the array contains fields like "error_code" and "message." "error_code" is a string that uniquely identifies the type of error, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the error, offering insights into the issue and potentially how to rectify it. + + :ivar full_name: Full name of the user associated with the user identity. + + :ivar phone_number: Unique phone number for the user identity in `E.164 format `_ (for example, +15555550100). + + :ivar user_identity_id: ID of the user identity. + + :ivar warnings: Array of warnings associated with the user identity. Each warning object within the array contains two fields: "warning_code" and "message." "warning_code" is a string that uniquely identifies the type of warning, enabling quick recognition and categorization of the issue. "message" provides a more detailed description of the warning, offering insights into the issue and potentially how to rectify it. + + :ivar workspace_id: ID of the workspace that contains the user identity.""" + acs_user_ids: List[str] created_at: str display_name: str diff --git a/seam/routes/access_codes.py b/seam/routes/access_codes.py index cdfb8d1..a194118 100644 --- a/seam/routes/access_codes.py +++ b/seam/routes/access_codes.py @@ -39,6 +39,47 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: + """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + + :param device_id: ID of the device for which you want to create the new access code. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param code: Code to be used for access. + + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. + + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -58,14 +99,68 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: + """Creates new `access codes `_ that share a common code across multiple devices. + + Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. + + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a ``common_code_key``. That is, ``common_code_key`` remains null for these access codes. + + If you want to change these access codes that are not linked by a ``common_code_key``, you cannot use ``/access_codes/update_multiple``. However, you can update each of these access codes individually, using ``/access_codes/update``. + + See also `Creating and Updating Multiple Linked Access Codes `_. + + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + + :param device_ids: IDs of the devices for which you want to create the new access codes. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. + + :param code: Code to be used for access. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: + """Deletes an `access code `_. + + :param access_code_id: ID of the access code that you want to delete. + + :param device_id: ID of the device for which you want to delete the access code. + """ raise NotImplementedError() @abc.abstractmethod def generate_code(self, *, device_id: str) -> AccessCode: + """Generates a code for an `access code `_, given a device ID. + + :param device_id: ID of the device for which you want to generate a code. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -76,6 +171,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: + """Returns a specified `access code `_. + + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -93,10 +199,48 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: + """Returns a list of all `access codes `_. + + Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param customer_key: Customer key for which you want to list access codes. + + :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param limit: Numerical limit on the number of access codes to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. + + :param user_identifier_key: Your user ID for the user by which to filter access codes. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: + """Retrieves a backup access code for an `access code `_. See also `Managing Backup Access Codes `_. + + A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. + + You can pull a backup access code from the pool at any time. These backup codes are guaranteed to work immediately and automatically programmed to be removed from the device after the access code ends. + + You can only pull backup access codes for time-bound access codes. + + Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. + + :param access_code_id: ID of the access code for which you want to pull a backup access code. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -108,6 +252,18 @@ def report_device_constraints( min_code_length: Optional[int] = None, supported_code_lengths: Optional[List[float]] = None ) -> None: + """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. + + Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. + + :param device_id: ID of the device for which you want to report constraints. + + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. + + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. + + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. + """ raise NotImplementedError() @abc.abstractmethod @@ -133,6 +289,52 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: + """Updates a specified active or upcoming `access code `_. + + See also `Modifying Access Codes `_. + + :param access_code_id: ID of the access code that you want to update. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param code: Code to be used for access. + + :param device_id: ID of the device containing the access code that you want to update. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. + + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. + + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. + """ raise NotImplementedError() @abc.abstractmethod @@ -144,6 +346,26 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates `access codes `_ that share a common code across multiple devices. + + Specify the ``common_code_key`` to identify the set of access codes that you want to update. + + See also `Update Linked Access Codes `_. + + :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + """ raise NotImplementedError() @@ -182,6 +404,47 @@ def create( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> AccessCode: + """Creates a new `access code `_. For granting access, we recommend `Access Grants `_ instead: they work across both standalone smart locks and access control systems and manage the underlying codes for you. Use this low-level endpoint only when you need direct control over a code on a single device, such as setting a custom PIN value. + + :param device_id: ID of the device for which you want to create the new access code. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param code: Code to be used for access. + + :param common_code_key: Key to identify access codes that should have the same code. Any two access codes with the same ``common_code_key`` are guaranteed to have the same ``code``. See also `Creating and Updating Multiple Linked Access Codes `_. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. + + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -239,6 +502,49 @@ def create_multiple( starts_at: Optional[str] = None, use_backup_access_code_pool: Optional[bool] = None ) -> List[AccessCode]: + """Creates new `access codes `_ that share a common code across multiple devices. + + Users with more than one door lock in a property may want to create groups of linked access codes, all of which have the same code (PIN). For example, a short-term rental host may want to provide guests the same PIN for both a front door lock and a back door lock. + + If you specify a custom code, Seam assigns this custom code to each of the resulting access codes. However, in this case, Seam does not link these access codes together with a ``common_code_key``. That is, ``common_code_key`` remains null for these access codes. + + If you want to change these access codes that are not linked by a ``common_code_key``, you cannot use ``/access_codes/update_multiple``. However, you can update each of these access codes individually, using ``/access_codes/update``. + + See also `Creating and Updating Multiple Linked Access Codes `_. + + For granting a person access to a space, `Access Grants `_ are the default and recommended approach and work across both standalone smart locks and access systems. Use the lower-level Access Codes API directly only when you specifically need to manage individual PIN codes. + + :param device_ids: IDs of the devices for which you want to create the new access codes. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param behavior_when_code_cannot_be_shared: Desired behavior if any device cannot share a code. If ``throw`` (default), no access codes will be created if any device cannot share a code. If ``create_random_code``, a random code will be created on devices that cannot share a code. + + :param code: Code to be used for access. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. If the affected devices do not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :returns: OK""" json_payload = {} if device_ids is not None: @@ -275,6 +581,12 @@ def create_multiple( return [AccessCode.from_dict(item) for item in res["access_codes"]] def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> None: + """Deletes an `access code `_. + + :param access_code_id: ID of the access code that you want to delete. + + :param device_id: ID of the device for which you want to delete the access code. + """ json_payload = {} if access_code_id is not None: @@ -287,6 +599,11 @@ def delete(self, *, access_code_id: str, device_id: Optional[str] = None) -> Non return None def generate_code(self, *, device_id: str) -> AccessCode: + """Generates a code for an `access code `_, given a device ID. + + :param device_id: ID of the device for which you want to generate a code. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -303,6 +620,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> AccessCode: + """Returns a specified `access code `_. + + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param access_code_id: ID of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param code: Code of the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param device_id: ID of the device containing the access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -330,6 +658,31 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[AccessCode]: + """Returns a list of all `access codes `_. + + Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_code_ids: IDs of the access codes that you want to retrieve. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_grant_id: ID of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_grant_key: Key of the access grant for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param access_method_id: ID of the access method for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param customer_key: Customer key for which you want to list access codes. + + :param device_id: ID of the device for which you want to list access codes. Specify ``device_id``, ``access_code_ids``, ``access_method_id``, ``access_grant_id``, or ``access_grant_key``. + + :param limit: Numerical limit on the number of access codes to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. + + :param user_identifier_key: Your user ID for the user by which to filter access codes. + + :returns: OK""" json_payload = {} if access_code_ids is not None: @@ -358,6 +711,19 @@ def list( return [AccessCode.from_dict(item) for item in res["access_codes"]] def pull_backup_access_code(self, *, access_code_id: str) -> AccessCode: + """Retrieves a backup access code for an `access code `_. See also `Managing Backup Access Codes `_. + + A backup access code pool is a collection of pre-programmed access codes stored on a device, ready for use. These codes are programmed in addition to the regular access codes on Seam, serving as a safety net for any issues with the primary codes. If there's ever a complication with a primary access code—be it due to intermittent connectivity, manual removal from a device, or provider outages—a backup code can be retrieved. Its end time can then be adjusted to align with the original code, facilitating seamless and uninterrupted access. + + You can pull a backup access code from the pool at any time. These backup codes are guaranteed to work immediately and automatically programmed to be removed from the device after the access code ends. + + You can only pull backup access codes for time-bound access codes. + + Before pulling a backup access code, make sure that the device's ``properties.supports_backup_access_code_pool`` is ``true``. Then, to activate the backup pool, set ``use_backup_access_code_pool`` to ``true`` when creating an access code. + + :param access_code_id: ID of the access code for which you want to pull a backup access code. + + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -377,6 +743,18 @@ def report_device_constraints( min_code_length: Optional[int] = None, supported_code_lengths: Optional[List[float]] = None ) -> None: + """Enables you to report access code-related constraints for a device. Currently, supports reporting supported code length constraints for SmartThings devices. + + Specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. + + :param device_id: ID of the device for which you want to report constraints. + + :param max_code_length: Maximum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. + + :param min_code_length: Minimum supported code length as an integer between 4 and 20, inclusive. You can specify either ``min_code_length``/``max_code_length`` or ``supported_code_lengths``. + + :param supported_code_lengths: Array of supported code lengths as integers between 4 and 20, inclusive. You can specify either ``supported_code_lengths`` or ``min_code_length``/``max_code_length``. + """ json_payload = {} if device_id is not None: @@ -414,6 +792,52 @@ def update( use_backup_access_code_pool: Optional[bool] = None, use_offline_access_code: Optional[bool] = None ) -> None: + """Updates a specified active or upcoming `access code `_. + + See also `Modifying Access Codes `_. + + :param access_code_id: ID of the access code that you want to update. + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param attempt_for_offline_device: + + :param code: Code to be used for access. + + :param device_id: ID of the device containing the access code that you want to update. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. Default: ``false``. + + :param is_managed: Indicates whether the access code is managed through Seam. Note that to convert an unmanaged access code into a managed access code, use ``/access_codes/unmanaged/convert_to_managed``. + + :param is_offline_access_code: Indicates whether the access code is an `offline access code `_. + + :param is_one_time_use: Indicates whether the `offline access code `_ is a single-use access code. + + :param max_time_rounding: Maximum rounding adjustment. To create a daily-bound `offline access code `_ for devices that support this feature, set this parameter to ``1d``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param prefer_native_scheduling: Indicates whether `native scheduling `_ should be used for time-bound codes when supported by the provider. Default: ``true``. + + :param preferred_code_length: Preferred code length. Only applicable if you do not specify a ``code``. If the affected device does not support the preferred code length, Seam reverts to using the shortest supported code length. + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + + :param type: Type to which you want to convert the access code. To convert a time-bound access code to an ongoing access code, set ``type`` to ``ongoing``. See also `Changing a time-bound access code to permanent access `_. + + :param use_backup_access_code_pool: Indicates whether to use a `backup access code pool `_ provided by Seam. If ``true``, you can use ```/access_codes/pull_backup_access_code`` `_. + + :param use_offline_access_code: Deprecated: Use ``is_offline_access_code`` instead. + """ json_payload = {} if access_code_id is not None: @@ -467,6 +891,26 @@ def update_multiple( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates `access codes `_ that share a common code across multiple devices. + + Specify the ``common_code_key`` to identify the set of access codes that you want to update. + + See also `Update Linked Access Codes `_. + + :param common_code_key: Key that links the group of access codes, assigned on creation by ``/access_codes/create_multiple``. + + :param ends_at: Date and time at which the validity of the new access code ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param name: Name of the new access code. Enables administrators and users to identify the access code easily, especially when there are numerous access codes. + + Note that the name provided on Seam is used to identify the code on Seam and is not necessarily the name that will appear in the lock provider's app or on the device. This is because lock providers may have constraints on names, such as length, uniqueness, or characters that can be used. In addition, some lock providers may break down names into components such as ``first_name`` and ``last_name``. + + To provide a consistent experience, Seam identifies the code on Seam by its name but may modify the name that appears on the lock provider's app or on the device. For example, Seam may add additional characters or truncate the name to meet provider constraints. + + To help your users identify codes set by Seam, Seam provides the name exactly as it appears on the lock provider's app or on the device as a separate property called ``appearance``. This is an object with a ``name`` property and, optionally, ``first_name`` and ``last_name`` properties (for providers that break down a name into components). + + :param starts_at: Date and time at which the validity of the new access code starts, in `ISO 8601 `_ format. + """ json_payload = {} if common_code_key is not None: diff --git a/seam/routes/access_codes_simulate.py b/seam/routes/access_codes_simulate.py index 303c347..048c13f 100644 --- a/seam/routes/access_codes_simulate.py +++ b/seam/routes/access_codes_simulate.py @@ -10,6 +10,15 @@ class AbstractAccessCodesSimulate(abc.ABC): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: + """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. + + :param code: Code of the simulated unmanaged access code. + + :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. + + :param name: Name of the simulated unmanaged access code. + + :returns: OK""" raise NotImplementedError() @@ -21,6 +30,15 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def create_unmanaged_access_code( self, *, code: str, device_id: str, name: str ) -> UnmanagedAccessCode: + """Simulates the creation of an `unmanaged access code `_ in a `sandbox workspace `_. + + :param code: Code of the simulated unmanaged access code. + + :param device_id: ID of the device for which you want to simulate the creation of an unmanaged access code. + + :param name: Name of the simulated unmanaged access code. + + :returns: OK""" json_payload = {} if code is not None: diff --git a/seam/routes/access_codes_unmanaged.py b/seam/routes/access_codes_unmanaged.py index 3528666..ac90e4e 100644 --- a/seam/routes/access_codes_unmanaged.py +++ b/seam/routes/access_codes_unmanaged.py @@ -15,10 +15,28 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Converts an `unmanaged access code `_ to an `access code managed through Seam `_. + + An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. + + Note that not all device providers support converting an unmanaged access code to a managed access code. + + :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. + + :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. + + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. + """ raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_code_id: str) -> None: + """Deletes an `unmanaged access code `_. + + :param access_code_id: ID of the unmanaged access code that you want to delete. + """ raise NotImplementedError() @abc.abstractmethod @@ -29,6 +47,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: + """Returns a specified `unmanaged access code `_. + + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -41,6 +70,19 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: + """Returns a list of all `unmanaged access codes `_. + + :param device_id: ID of the device for which you want to list unmanaged access codes. + + :param limit: Numerical limit on the number of unmanaged access codes to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. + + :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +95,18 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Updates a specified `unmanaged access code `_. + + :param access_code_id: ID of the unmanaged access code that you want to update. + + :param is_managed: + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. + + :param force: Indicates whether to force the unmanaged access code update. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. + """ raise NotImplementedError() @@ -69,6 +123,20 @@ def convert_to_managed( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Converts an `unmanaged access code `_ to an `access code managed through Seam `_. + + An unmanaged access code has a limited set of operations that you can perform on it. Once you convert an unmanaged access code to a managed access code, the full set of access code operations and lifecycle events becomes available for it. + + Note that not all device providers support converting an unmanaged access code to a managed access code. + + :param access_code_id: ID of the unmanaged access code that you want to convert to a managed access code. + + :param allow_external_modification: Indicates whether `external modification `_ of the access code is allowed. + + :param force: Indicates whether to force the access code conversion. To switch management of an access code from one Seam workspace to another, set ``force`` to ``true``. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the access code is allowed. + """ json_payload = {} if access_code_id is not None: @@ -89,6 +157,10 @@ def convert_to_managed( return None def delete(self, *, access_code_id: str) -> None: + """Deletes an `unmanaged access code `_. + + :param access_code_id: ID of the unmanaged access code that you want to delete. + """ json_payload = {} if access_code_id is not None: @@ -105,6 +177,17 @@ def get( code: Optional[str] = None, device_id: Optional[str] = None ) -> UnmanagedAccessCode: + """Returns a specified `unmanaged access code `_. + + You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param access_code_id: ID of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param code: Code of the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :param device_id: ID of the device containing the unmanaged access code that you want to get. You must specify either ``access_code_id`` or both ``device_id`` and ``code``. + + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -127,6 +210,19 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedAccessCode]: + """Returns a list of all `unmanaged access codes `_. + + :param device_id: ID of the device for which you want to list unmanaged access codes. + + :param limit: Numerical limit on the number of unmanaged access codes to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access codes to include all records that satisfy a partial match using ``name``, ``code`` or ``access_code_id``. + + :param user_identifier_key: Your user ID for the user by which to filter unmanaged access codes. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -153,6 +249,18 @@ def update( force: Optional[bool] = None, is_external_modification_allowed: Optional[bool] = None ) -> None: + """Updates a specified `unmanaged access code `_. + + :param access_code_id: ID of the unmanaged access code that you want to update. + + :param is_managed: + + :param allow_external_modification: Indicates whether `external modification `_ of the code is allowed. + + :param force: Indicates whether to force the unmanaged access code update. + + :param is_external_modification_allowed: Indicates whether `external modification `_ of the code is allowed. + """ json_payload = {} if access_code_id is not None: diff --git a/seam/routes/access_grants.py b/seam/routes/access_grants.py index 722f733..f6835eb 100644 --- a/seam/routes/access_grants.py +++ b/seam/routes/access_grants.py @@ -35,10 +35,46 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: + """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. + + :param requested_access_methods: + + :param user_identity_id: ID of user identity for whom access is being granted. + + :param user_identity: When used, creates a new user identity with the given details, and grants them access. + + :param access_grant_key: Unique key for the access grant within the workspace. + + :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. + + :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. + + :param device_ids: Set of IDs of the `devices `_ to which access is being granted. + + :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param location: Deprecated: Create a space first, then reference it using ``space_ids``. + + :param location_ids: Deprecated: Use ``space_ids``. + + :param name: Name for the access grant. + + :param reservation_key: Reservation key for the access grant. + + :param space_ids: Set of IDs of existing spaces to which access is being granted. + + :param space_keys: Set of keys of existing spaces to which access is being granted. + + :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, access_grant_id: str) -> None: + """Delete an Access Grant. + + :param access_grant_id: ID of Access Grant to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +84,13 @@ def get( access_grant_id: Optional[str] = None, access_grant_key: Optional[str] = None ) -> AccessGrant: + """Get an Access Grant. + + :param access_grant_id: ID of Access Grant to get. + + :param access_grant_key: Unique key of Access Grant to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -59,6 +102,17 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Grants. + + :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. + + :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. + + :param exclude: + + :param include: + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -79,12 +133,48 @@ def list( space_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AccessGrant]: + """Gets an Access Grant. + + :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. + + :param access_grant_ids: IDs of the access grants to retrieve. + + :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. + + :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. + + :param customer_key: Customer key for which you want to list access grants. + + :param device_id: ID of the device by which you want to filter the list of Access Grants. + + :param limit: Numerical limit on the number of access grants to return. + + :param location_id: Deprecated: Use ``space_id``. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param reservation_key: Filter Access Grants by reservation_key. + + :param space_id: ID of the space by which you want to filter the list of Access Grants. + + :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def request_access_methods( self, *, access_grant_id: str, requested_access_methods: List[Dict[str, Any]] ) -> AccessGrant: + """Adds additional requested access methods to an existing Access Grant. + + :param access_grant_id: ID of the Access Grant to add access methods to. + + :param requested_access_methods: Array of requested access methods to add to the access grant. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -97,6 +187,18 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates an existing Access Grant's time window. + + :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. + + :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. + + :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param name: Display name for the access grant. + + :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. + """ raise NotImplementedError() @@ -129,6 +231,39 @@ def create( space_keys: Optional[List[str]] = None, starts_at: Optional[str] = None ) -> AccessGrant: + """Creates a new `Access Grant `_. Access Grants are the default and recommended way to grant a user access to any physical space, irrespective of the locking hardware. They work with both standalone smart locks (using ``device_ids``) and access control systems (using ``acs_entrance_ids`` or ``space_ids``), and can issue PIN codes, key cards, and mobile keys through a single request. + + :param requested_access_methods: + + :param user_identity_id: ID of user identity for whom access is being granted. + + :param user_identity: When used, creates a new user identity with the given details, and grants them access. + + :param access_grant_key: Unique key for the access grant within the workspace. + + :param acs_entrance_ids: Set of IDs of the `entrances `_ to which access is being granted. + + :param customization_profile_id: ID of the customization profile to apply to the Access Grant and its access methods. + + :param device_ids: Set of IDs of the `devices `_ to which access is being granted. + + :param ends_at: Date and time at which the validity of the new grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param location: Deprecated: Create a space first, then reference it using ``space_ids``. + + :param location_ids: Deprecated: Use ``space_ids``. + + :param name: Name for the access grant. + + :param reservation_key: Reservation key for the access grant. + + :param space_ids: Set of IDs of existing spaces to which access is being granted. + + :param space_keys: Set of keys of existing spaces to which access is being granted. + + :param starts_at: Date and time at which the validity of the new grant starts, in `ISO 8601 `_ format. + + :returns: OK""" json_payload = {} if requested_access_methods is not None: @@ -167,6 +302,9 @@ def create( return AccessGrant.from_dict(res["access_grant"]) def delete(self, *, access_grant_id: str) -> None: + """Delete an Access Grant. + + :param access_grant_id: ID of Access Grant to delete.""" json_payload = {} if access_grant_id is not None: @@ -182,6 +320,13 @@ def get( access_grant_id: Optional[str] = None, access_grant_key: Optional[str] = None ) -> AccessGrant: + """Get an Access Grant. + + :param access_grant_id: ID of Access Grant to get. + + :param access_grant_key: Unique key of Access Grant to get. + + :returns: OK""" json_payload = {} if access_grant_id is not None: @@ -201,6 +346,17 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Grants. + + :param access_grant_ids: IDs of the access grants that you want to get along with their related resources. + + :param access_grant_keys: Keys of the access grants that you want to get along with their related resources. + + :param exclude: + + :param include: + + :returns: OK""" json_payload = {} if access_grant_ids is not None: @@ -233,6 +389,35 @@ def list( space_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AccessGrant]: + """Gets an Access Grant. + + :param access_code_id: ID of the access code by which you want to filter the list of Access Grants. + + :param access_grant_ids: IDs of the access grants to retrieve. + + :param access_grant_key: Filter Access Grants by access_grant_key. Use null to filter for Access Grants without an access_grant_key. + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of Access Grants. + + :param acs_system_id: ID of the access system by which you want to filter the list of Access Grants. + + :param customer_key: Customer key for which you want to list access grants. + + :param device_id: ID of the device by which you want to filter the list of Access Grants. + + :param limit: Numerical limit on the number of access grants to return. + + :param location_id: Deprecated: Use ``space_id``. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param reservation_key: Filter Access Grants by reservation_key. + + :param space_id: ID of the space by which you want to filter the list of Access Grants. + + :param user_identity_id: ID of user identity by which you want to filter the list of Access Grants. + + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -269,6 +454,13 @@ def list( def request_access_methods( self, *, access_grant_id: str, requested_access_methods: List[Dict[str, Any]] ) -> AccessGrant: + """Adds additional requested access methods to an existing Access Grant. + + :param access_grant_id: ID of the Access Grant to add access methods to. + + :param requested_access_methods: Array of requested access methods to add to the access grant. + + :returns: OK""" json_payload = {} if access_grant_id is not None: @@ -291,6 +483,18 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates an existing Access Grant's time window. + + :param access_grant_id: ID of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. + + :param access_grant_key: Key of the Access Grant to update. Provide either ``access_grant_id`` or ``access_grant_key``. + + :param ends_at: Date and time at which the validity of the grant ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param name: Display name for the access grant. + + :param starts_at: Date and time at which the validity of the grant starts, in `ISO 8601 `_ format. + """ json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_grants_unmanaged.py b/seam/routes/access_grants_unmanaged.py index e676b5b..4378695 100644 --- a/seam/routes/access_grants_unmanaged.py +++ b/seam/routes/access_grants_unmanaged.py @@ -8,6 +8,11 @@ class AbstractAccessGrantsUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, access_grant_id: str) -> UnmanagedAccessGrant: + """Get an unmanaged Access Grant (where is_managed = false). + + :param access_grant_id: ID of unmanaged Access Grant to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -21,6 +26,21 @@ def list( reservation_key: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[UnmanagedAccessGrant]: + """Gets unmanaged Access Grants (where is_managed = false). + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. + + :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. + + :param limit: Numerical limit on the number of unmanaged access grants to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param reservation_key: Filter unmanaged Access Grants by reservation_key. + + :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -31,6 +51,18 @@ def update( is_managed: bool, access_grant_key: Optional[str] = None ) -> None: + """Updates an unmanaged Access Grant to make it managed. + + This endpoint can only be used to convert unmanaged access grants to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed access grants back to unmanaged. + + When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. + + :param access_grant_id: ID of the unmanaged Access Grant to update. + + :param is_managed: Must be set to true to convert the unmanaged access grant to managed. + + :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. + """ raise NotImplementedError() @@ -40,6 +72,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, access_grant_id: str) -> UnmanagedAccessGrant: + """Get an unmanaged Access Grant (where is_managed = false). + + :param access_grant_id: ID of unmanaged Access Grant to get. + + :returns: OK""" json_payload = {} if access_grant_id is not None: @@ -59,6 +96,21 @@ def list( reservation_key: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[UnmanagedAccessGrant]: + """Gets unmanaged Access Grants (where is_managed = false). + + :param acs_entrance_id: ID of the entrance by which you want to filter the list of unmanaged Access Grants. + + :param acs_system_id: ID of the access system by which you want to filter the list of unmanaged Access Grants. + + :param limit: Numerical limit on the number of unmanaged access grants to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param reservation_key: Filter unmanaged Access Grants by reservation_key. + + :param user_identity_id: ID of user identity by which you want to filter the list of unmanaged Access Grants. + + :returns: OK""" json_payload = {} if acs_entrance_id is not None: @@ -85,6 +137,18 @@ def update( is_managed: bool, access_grant_key: Optional[str] = None ) -> None: + """Updates an unmanaged Access Grant to make it managed. + + This endpoint can only be used to convert unmanaged access grants to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed access grants back to unmanaged. + + When converting an unmanaged access grant to managed, all associated access methods will also be converted to managed. + + :param access_grant_id: ID of the unmanaged Access Grant to update. + + :param is_managed: Must be set to true to convert the unmanaged access grant to managed. + + :param access_grant_key: Unique key for the access grant. If not provided, the existing key will be preserved. + """ json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/access_methods.py b/seam/routes/access_methods.py index c5e69e5..ffafd2d 100644 --- a/seam/routes/access_methods.py +++ b/seam/routes/access_methods.py @@ -24,6 +24,15 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + + :param access_method_id: ID of the ``access_method`` to assign the credential to. + + :param card_number: Card number of the credential to assign. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -34,6 +43,14 @@ def delete( access_grant_id: Optional[str] = None, reservation_key: Optional[str] = None ) -> None: + """Deletes an access method. + + :param access_method_id: ID of access method to delete. + + :param access_grant_id: ID of access grant whose access methods should be deleted. + + :param reservation_key: Reservation key of the access grant whose access methods should be deleted. + """ raise NotImplementedError() @abc.abstractmethod @@ -44,10 +61,24 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. + + :param access_method_id: ID of the ``access_method`` to encode onto a card. + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def get(self, *, access_method_id: str) -> AccessMethod: + """Gets an access method. + + :param access_method_id: ID of access method to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -58,6 +89,15 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Methods. + + :param access_method_ids: IDs of the access methods that you want to get along with their related resources. + + :param exclude: + + :param include: + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -73,6 +113,25 @@ def list( page_cursor: Optional[str] = None, space_id: Optional[str] = None ) -> List[AccessMethod]: + """Lists all access methods, usually filtered by Access Grant. + + :param access_code_id: ID of the access code by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :param access_grant_id: ID of Access Grant to list access methods for. + + :param access_grant_key: Key of Access Grant to list access methods for. + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods that grant access to it. + + :param device_id: ID of the device by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param space_id: ID of the space by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -83,6 +142,15 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + + :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. + + :param acs_entrance_id: ID of the entrance to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -103,6 +171,15 @@ def assign_card( card_number: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Assigns a pre-registered card credential, identified by ``card_number``, to a card-mode access method. Use this endpoint for access systems that use pre-registered cards, where a physical card must be associated with an access method before it can be used for access. Assigning a card credential also triggers issuance of the access method. + + :param access_method_id: ID of the ``access_method`` to assign the credential to. + + :param card_number: Card number of the credential to assign. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -131,6 +208,14 @@ def delete( access_grant_id: Optional[str] = None, reservation_key: Optional[str] = None ) -> None: + """Deletes an access method. + + :param access_method_id: ID of access method to delete. + + :param access_grant_id: ID of access grant whose access methods should be deleted. + + :param reservation_key: Reservation key of the access grant whose access methods should be deleted. + """ json_payload = {} if access_method_id is not None: @@ -151,6 +236,15 @@ def encode( acs_encoder_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing access method onto a plastic card placed on the specified `encoder `_. + + :param access_method_id: ID of the ``access_method`` to encode onto a card. + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``access_method``. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -173,6 +267,11 @@ def encode( ) def get(self, *, access_method_id: str) -> AccessMethod: + """Gets an access method. + + :param access_method_id: ID of access method to get. + + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -189,6 +288,15 @@ def get_related( exclude: Optional[List[str]] = None, include: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Access Methods. + + :param access_method_ids: IDs of the access methods that you want to get along with their related resources. + + :param exclude: + + :param include: + + :returns: OK""" json_payload = {} if access_method_ids is not None: @@ -214,6 +322,25 @@ def list( page_cursor: Optional[str] = None, space_id: Optional[str] = None ) -> List[AccessMethod]: + """Lists all access methods, usually filtered by Access Grant. + + :param access_code_id: ID of the access code by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :param access_grant_id: ID of Access Grant to list access methods for. + + :param access_grant_key: Key of Access Grant to list access methods for. + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all access methods that grant access to it. + + :param device_id: ID of the device by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param space_id: ID of the space by which to filter the returned access methods. Must be combined with ``access_grant_id``, ``access_grant_key``, or ``acs_entrance_id``. + + :returns: OK""" json_payload = {} if access_code_id is not None: @@ -244,6 +371,15 @@ def unlock_door( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified `entrance `_ using the cloud key credential associated with an access method. Returns an action attempt that tracks the progress of the unlock operation. + + :param access_method_id: ID of the cloud_key ``access_method`` to use for the unlock operation. + + :param acs_entrance_id: ID of the entrance to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if access_method_id is not None: diff --git a/seam/routes/access_methods_unmanaged.py b/seam/routes/access_methods_unmanaged.py index 987f067..44ad9c5 100644 --- a/seam/routes/access_methods_unmanaged.py +++ b/seam/routes/access_methods_unmanaged.py @@ -8,6 +8,11 @@ class AbstractAccessMethodsUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, access_method_id: str) -> UnmanagedAccessMethod: + """Gets an unmanaged access method (where is_managed = false). + + :param access_method_id: ID of unmanaged access method to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -19,6 +24,17 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> List[UnmanagedAccessMethod]: + """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. + + :param access_grant_id: ID of Access Grant to list unmanaged access methods for. + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. + + :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. + + :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. + + :returns: OK""" raise NotImplementedError() @@ -28,6 +44,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, access_method_id: str) -> UnmanagedAccessMethod: + """Gets an unmanaged access method (where is_managed = false). + + :param access_method_id: ID of unmanaged access method to get. + + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -45,6 +66,17 @@ def list( device_id: Optional[str] = None, space_id: Optional[str] = None ) -> List[UnmanagedAccessMethod]: + """Lists all unmanaged access methods (where is_managed = false), usually filtered by Access Grant. + + :param access_grant_id: ID of Access Grant to list unmanaged access methods for. + + :param acs_entrance_id: ID of the entrance for which you want to retrieve all unmanaged access methods. + + :param device_id: ID of the device for which you want to retrieve all unmanaged access methods. + + :param space_id: ID of the space for which you want to retrieve all unmanaged access methods. + + :returns: OK""" json_payload = {} if access_grant_id is not None: diff --git a/seam/routes/acs_access_groups.py b/seam/routes/acs_access_groups.py index 35c0cbd..11ce595 100644 --- a/seam/routes/acs_access_groups.py +++ b/seam/routes/acs_access_groups.py @@ -14,14 +14,30 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Adds a specified `access system user `_ to a specified `access group `_. + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + + :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_access_group_id: str) -> None: + """Deletes a specified `access group `_. + + :param acs_access_group_id: ID of the access group that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: + """Returns a specified `access group `_. + + :param acs_access_group_id: ID of the access group that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -33,16 +49,37 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: + """Returns a list of all `access groups `_. + + :param acs_system_id: ID of the access system for which you want to retrieve all access groups. + + :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. + + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: + """Returns a list of all accessible entrances for a specified `access group `_. + + :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: + """Returns a list of all `access system users `_ in an `access group `_. + + :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +90,14 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified `access system user `_ from a specified `access group `_. + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + + :param acs_user_id: ID of the access system user that you want to remove from an access group. + + :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. + """ raise NotImplementedError() @@ -68,6 +113,14 @@ def add_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Adds a specified `access system user `_ to a specified `access group `_. + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + + :param acs_user_id: ID of the access system user that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the desired user identity that you want to add to an access group. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ json_payload = {} if acs_access_group_id is not None: @@ -82,6 +135,9 @@ def add_user( return None def delete(self, *, acs_access_group_id: str) -> None: + """Deletes a specified `access group `_. + + :param acs_access_group_id: ID of the access group that you want to delete.""" json_payload = {} if acs_access_group_id is not None: @@ -92,6 +148,11 @@ def delete(self, *, acs_access_group_id: str) -> None: return None def get(self, *, acs_access_group_id: str) -> AcsAccessGroup: + """Returns a specified `access group `_. + + :param acs_access_group_id: ID of the access group that you want to get. + + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -109,6 +170,17 @@ def list( search: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsAccessGroup]: + """Returns a list of all `access groups `_. + + :param acs_system_id: ID of the access system for which you want to retrieve all access groups. + + :param acs_user_id: ID of the access system user for which you want to retrieve all access groups. + + :param search: String for which to search. Filters returned access groups to include all records that satisfy a partial match using ``name`` or ``acs_access_group_id``. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access groups. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -127,6 +199,11 @@ def list( def list_accessible_entrances( self, *, acs_access_group_id: str ) -> List[AcsEntrance]: + """Returns a list of all accessible entrances for a specified `access group `_. + + :param acs_access_group_id: ID of the access group for which you want to retrieve all accessible entrances. + + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -139,6 +216,11 @@ def list_accessible_entrances( return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_users(self, *, acs_access_group_id: str) -> List[AcsUser]: + """Returns a list of all `access system users `_ in an `access group `_. + + :param acs_access_group_id: ID of the access group for which you want to retrieve all access system users. + + :returns: OK""" json_payload = {} if acs_access_group_id is not None: @@ -155,6 +237,14 @@ def remove_user( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified `access system user `_ from a specified `access group `_. + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + + :param acs_user_id: ID of the access system user that you want to remove from an access group. + + :param user_identity_id: ID of the user identity associated with the user that you want to remove from an access group. + """ json_payload = {} if acs_access_group_id is not None: diff --git a/seam/routes/acs_credentials.py b/seam/routes/acs_credentials.py index 7946fed..c655973 100644 --- a/seam/routes/acs_credentials.py +++ b/seam/routes/acs_credentials.py @@ -14,6 +14,14 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Assigns a specified `credential `_ to a specified `access system user `_. + + :param acs_credential_id: ID of the credential that you want to assign to an access system user. + + :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ raise NotImplementedError() @abc.abstractmethod @@ -34,14 +42,51 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: + """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + + :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. + + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. + + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. + + :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. + + :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. + + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. + + :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. + + :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. + + :param salto_space_metadata: Salto Space-specific metadata for the new credential. + + :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. + + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + + :param visionline_metadata: Visionline-specific metadata for the new credential. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, acs_credential_id: str) -> None: + """Deletes a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_credential_id: str) -> AcsCredential: + """Returns a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -57,10 +102,34 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: + """Returns a list of all `credentials `_. + + :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. + + :param acs_system_id: ID of the access system for which you want to retrieve all credentials. + + :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. + + :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. + + :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. + + :param limit: Number of credentials to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + """Returns a list of all `entrances `_ to which a `credential `_ grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -71,6 +140,14 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Unassigns a specified `credential `_ from a specified `access system user `_. + + :param acs_credential_id: ID of the credential that you want to unassign from an access system user. + + :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -81,6 +158,14 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: + """Updates the code and ends at date and time for a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to update. + + :param code: Replacement access (PIN) code for the credential that you want to update. + + :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. + """ raise NotImplementedError() @@ -96,6 +181,14 @@ def assign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Assigns a specified `credential `_ to a specified `access system user `_. + + :param acs_credential_id: ID of the credential that you want to assign to an access system user. + + :param acs_user_id: ID of the access system user to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity to whom you want to assign a credential. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ json_payload = {} if acs_credential_id is not None: @@ -126,6 +219,35 @@ def create( user_identity_id: Optional[str] = None, visionline_metadata: Optional[Dict[str, Any]] = None ) -> AcsCredential: + """Creates a new `credential `_ for a specified `ACS user `_. For granting access, we recommend `Access Grants `_ instead: they create and manage the underlying credentials for you, across access systems and standalone smart locks alike. Use this low-level endpoint only when you need direct control over an individual ACS credential. + + :param access_method: Access method for the new credential. Supported values: ``code``, ``card``, ``mobile_key``, ``cloud_key``. + + :param acs_system_id: ID of the access system to which the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. + + :param acs_user_id: ID of the access system user to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. + + :param allowed_acs_entrance_ids: Set of IDs of the `entrances `_ for which the new credential grants access. + + :param assa_abloy_vostio_metadata: Vostio-specific metadata for the new credential. + + :param code: Access (PIN) code for the new credential. There may be manufacturer-specific code restrictions. For details, see the applicable `device or system integration guide `_. + + :param credential_manager_acs_system_id: ACS system ID of the credential manager for the new credential. + + :param ends_at: Date and time at which the validity of the new credential ends, in `ISO 8601 `_ format. Must be a time in the future and after ``starts_at``. + + :param is_multi_phone_sync_credential: Indicates whether the new credential is a `multi-phone sync credential `_. + + :param salto_space_metadata: Salto Space-specific metadata for the new credential. + + :param starts_at: Date and time at which the validity of the new credential starts, in `ISO 8601 `_ format. + + :param user_identity_id: ID of the user identity to whom the new credential belongs. You must provide either ``acs_user_id`` or the combination of ``user_identity_id`` and ``acs_system_id``. If the access system contains a user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the credential belongs to the access system user. If the access system does not have a corresponding user, one is created. + + :param visionline_metadata: Visionline-specific metadata for the new credential. + + :returns: OK""" json_payload = {} if access_method is not None: @@ -164,6 +286,9 @@ def create( return AcsCredential.from_dict(res["acs_credential"]) def delete(self, *, acs_credential_id: str) -> None: + """Deletes a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to delete.""" json_payload = {} if acs_credential_id is not None: @@ -174,6 +299,11 @@ def delete(self, *, acs_credential_id: str) -> None: return None def get(self, *, acs_credential_id: str) -> AcsCredential: + """Returns a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to get. + + :returns: OK""" json_payload = {} if acs_credential_id is not None: @@ -195,6 +325,25 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[AcsCredential]: + """Returns a list of all `credentials `_. + + :param acs_user_id: ID of the access system user for which you want to retrieve all credentials. + + :param acs_system_id: ID of the access system for which you want to retrieve all credentials. + + :param user_identity_id: ID of the user identity for which you want to retrieve all credentials. + + :param created_before: Date and time, in `ISO 8601 `_ format, before which events to return were created. + + :param is_multi_phone_sync_credential: Indicates whether you want to retrieve only multi-phone sync credentials or non-multi-phone sync credentials. + + :param limit: Number of credentials to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned credentials to include all records that satisfy a partial match using ``display_name``, ``code``, ``card_number``, ``acs_user_id`` or ``acs_credential_id``. + + :returns: OK""" json_payload = {} if acs_user_id is not None: @@ -221,6 +370,11 @@ def list( return [AcsCredential.from_dict(item) for item in res["acs_credentials"]] def list_accessible_entrances(self, *, acs_credential_id: str) -> List[AcsEntrance]: + """Returns a list of all `entrances `_ to which a `credential `_ grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances to which the credential grants access. + + :returns: OK""" json_payload = {} if acs_credential_id is not None: @@ -239,6 +393,14 @@ def unassign( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Unassigns a specified `credential `_ from a specified `access system user `_. + + :param acs_credential_id: ID of the credential that you want to unassign from an access system user. + + :param acs_user_id: ID of the access system user from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity from which you want to unassign a credential. You can only provide one of acs_user_id or user_identity_id. + """ json_payload = {} if acs_credential_id is not None: @@ -259,6 +421,14 @@ def update( code: Optional[str] = None, ends_at: Optional[str] = None ) -> None: + """Updates the code and ends at date and time for a specified `credential `_. + + :param acs_credential_id: ID of the credential that you want to update. + + :param code: Replacement access (PIN) code for the credential that you want to update. + + :param ends_at: Replacement date and time at which the validity of the credential ends, in `ISO 8601 `_ format. Must be a time in the future and after the ``starts_at`` value that you set when creating the credential. + """ json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_encoders.py b/seam/routes/acs_encoders.py index f14315c..e537a0f 100644 --- a/seam/routes/acs_encoders.py +++ b/seam/routes/acs_encoders.py @@ -22,10 +22,26 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. + + :param access_method_id: ID of the ``access_method`` to encode onto a card. + + :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def get(self, *, acs_encoder_id: str) -> AcsEncoder: + """Returns a specified `encoder `_. + + :param acs_encoder_id: ID of the encoder that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -38,6 +54,19 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: + """Returns a list of all `encoders `_. + + :param acs_system_id: ID of the access system for which you want to retrieve all encoders. + + :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. + + :param acs_encoder_ids: IDs of the encoders that you want to retrieve. + + :param limit: Number of encoders to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +77,15 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. + + :param acs_encoder_id: ID of the encoder to use for the scan. + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +98,19 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. + + :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + + :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -81,6 +132,17 @@ def encode_credential( acs_credential_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Encodes an existing `credential `_ onto a plastic card placed on the specified `encoder `_. Either provide an ``acs_credential_id`` or an ``access_method_id`` + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to encode the ``acs_credential``. + + :param access_method_id: ID of the ``access_method`` to encode onto a card. + + :param acs_credential_id: ID of the ``acs_credential`` to encode onto a card. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -105,6 +167,11 @@ def encode_credential( ) def get(self, *, acs_encoder_id: str) -> AcsEncoder: + """Returns a specified `encoder `_. + + :param acs_encoder_id: ID of the encoder that you want to get. + + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -123,6 +190,19 @@ def list( limit: Optional[float] = None, page_cursor: Optional[str] = None ) -> List[AcsEncoder]: + """Returns a list of all `encoders `_. + + :param acs_system_id: ID of the access system for which you want to retrieve all encoders. + + :param acs_system_ids: IDs of the access systems for which you want to retrieve all encoders. + + :param acs_encoder_ids: IDs of the encoders that you want to retrieve. + + :param limit: Number of encoders to return. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -147,6 +227,15 @@ def scan_credential( salto_ks_metadata: Optional[Dict[str, Any]] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans an encoded `acs_credential `_ from a plastic card placed on the specified `encoder `_. + + :param acs_encoder_id: ID of the encoder to use for the scan. + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if acs_encoder_id is not None: @@ -177,6 +266,19 @@ def scan_to_assign_credential( user_identity_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Scans a physical card placed on the specified `encoder `_ and assigns the scanned credential to an ACS user. Provide either an ``acs_user_id`` or a ``user_identity_id``. + + :param acs_encoder_id: ID of the ``acs_encoder`` to use to scan the credential. + + :param acs_user_id: ID of the ``acs_user`` to assign the scanned credential to. + + :param salto_ks_metadata: Salto KS-specific metadata for the scan action. + + :param user_identity_id: ID of the ``user_identity`` to assign the scanned credential to. If the ACS system contains an ACS user linked to this user identity, it is used. Otherwise, one is created. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_encoders_simulate.py b/seam/routes/acs_encoders_simulate.py index ea00fab..e08aaf1 100644 --- a/seam/routes/acs_encoders_simulate.py +++ b/seam/routes/acs_encoders_simulate.py @@ -13,12 +13,25 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. + + :param error_code: Code of the error to simulate. + + :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. + """ raise NotImplementedError() @abc.abstractmethod def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. + + :param scenario: Scenario to simulate.""" raise NotImplementedError() @abc.abstractmethod @@ -29,6 +42,13 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. + + :param error_code: + + :param acs_credential_id_on_seam:""" raise NotImplementedError() @abc.abstractmethod @@ -39,6 +59,13 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. + + :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. + + :param scenario: Scenario to simulate.""" raise NotImplementedError() @@ -54,6 +81,14 @@ def next_credential_encode_will_fail( error_code: Optional[str] = None, acs_credential_id: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. + + :param error_code: Code of the error to simulate. + + :param acs_credential_id: ID of the ``acs_credential`` that will fail to be encoded onto a card in the next request. + """ json_payload = {} if acs_encoder_id is not None: @@ -72,6 +107,11 @@ def next_credential_encode_will_fail( def next_credential_encode_will_succeed( self, *, acs_encoder_id: str, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to encode a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to encode the ``acs_credential``. + + :param scenario: Scenario to simulate.""" json_payload = {} if acs_encoder_id is not None: @@ -93,6 +133,13 @@ def next_credential_scan_will_fail( error_code: Optional[str] = None, acs_credential_id_on_seam: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will fail. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will fail to scan the ``acs_credential`` in the next request. + + :param error_code: + + :param acs_credential_id_on_seam:""" json_payload = {} if acs_encoder_id is not None: @@ -115,6 +162,13 @@ def next_credential_scan_will_succeed( acs_credential_id_on_seam: Optional[str] = None, scenario: Optional[str] = None ) -> None: + """Simulates that the next attempt to scan a `credential `_ using the specified `encoder `_ will succeed. You can only perform this action within a `sandbox workspace `_. + + :param acs_encoder_id: ID of the ``acs_encoder`` that will be used in the next request to scan the ``acs_credential``. + + :param acs_credential_id_on_seam: ID of the Seam ``acs_credential`` that matches the ``acs_credential`` on the encoder in this simulation. + + :param scenario: Scenario to simulate.""" json_payload = {} if acs_encoder_id is not None: diff --git a/seam/routes/acs_entrances.py b/seam/routes/acs_entrances.py index 98b66d8..104779c 100644 --- a/seam/routes/acs_entrances.py +++ b/seam/routes/acs_entrances.py @@ -9,6 +9,11 @@ class AbstractAcsEntrances(abc.ABC): @abc.abstractmethod def get(self, *, acs_entrance_id: str) -> AcsEntrance: + """Returns a specified `access system entrance `_. + + :param acs_entrance_id: ID of the entrance that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -19,6 +24,14 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Grants a specified `access system user `_ access to a specified `access system entrance `_. + + :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. + + :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ raise NotImplementedError() @abc.abstractmethod @@ -37,12 +50,44 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: + """Returns a list of all `access system entrances `_. + + :param access_method_id: ID of the access method for which you want to retrieve all entrances to which it grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. + + :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. + + :param acs_system_id: ID of the access system for which you want to retrieve all entrances. + + :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. + + :param customer_key: Customer key for which you want to list entrances. + + :param limit: Maximum number of records to return per page. + + :param location_id: Deprecated: Use ``space_id``. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. + + :param space_id: ID of the space for which you want to list entrances. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: + """Returns a list of all `credentials `_ with access to a specified `entrance `_. + + :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. + + :param include_if: Conditions that credentials must meet to be included in the returned list. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +98,15 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + + :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. + + :param acs_entrance_id: ID of the entrance to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -62,6 +116,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_entrance_id: str) -> AcsEntrance: + """Returns a specified `access system entrance `_. + + :param acs_entrance_id: ID of the entrance that you want to get. + + :returns: OK""" json_payload = {} if acs_entrance_id is not None: @@ -78,6 +137,14 @@ def grant_access( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Grants a specified `access system user `_ access to a specified `access system entrance `_. + + :param acs_entrance_id: ID of the entrance to which you want to grant an access system user access. + + :param acs_user_id: ID of the access system user to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity to whom you want to grant access to an entrance. You can only provide one of acs_user_id or user_identity_id. If the ACS system contains an ACS user with the same ``email_address`` or ``phone_number`` as the user identity that you specify, they are linked, and the access group membership belongs to the ACS user. If the ACS system does not have a corresponding ACS user, one is created. + """ json_payload = {} if acs_entrance_id is not None: @@ -106,6 +173,31 @@ def list( search: Optional[str] = None, space_id: Optional[str] = None ) -> List[AcsEntrance]: + """Returns a list of all `access system entrances `_. + + :param access_method_id: ID of the access method for which you want to retrieve all entrances to which it grants access. + + :param acs_credential_id: ID of the credential for which you want to retrieve all entrances. + + :param acs_entrance_ids: IDs of the entrances for which you want to retrieve all entrances. + + :param acs_system_id: ID of the access system for which you want to retrieve all entrances. + + :param connected_account_id: ID of the connected account for which you want to retrieve all entrances. + + :param customer_key: Customer key for which you want to list entrances. + + :param limit: Maximum number of records to return per page. + + :param location_id: Deprecated: Use ``space_id``. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned entrances to include all records that satisfy a partial match using ``display_name``. + + :param space_id: ID of the space for which you want to list entrances. + + :returns: OK""" json_payload = {} if access_method_id is not None: @@ -138,6 +230,13 @@ def list( def list_credentials_with_access( self, *, acs_entrance_id: str, include_if: Optional[List[str]] = None ) -> List[AcsCredential]: + """Returns a list of all `credentials `_ with access to a specified `entrance `_. + + :param acs_entrance_id: ID of the entrance for which you want to list all credentials that grant access. + + :param include_if: Conditions that credentials must meet to be included in the returned list. + + :returns: OK""" json_payload = {} if acs_entrance_id is not None: @@ -158,6 +257,15 @@ def unlock( acs_entrance_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Remotely unlocks a specified `entrance `_ using a cloud_key credential. Returns an action attempt that tracks the progress of the unlock operation. + + :param acs_credential_id: ID of the cloud_key credential to use for the unlock operation. + + :param acs_entrance_id: ID of the entrance to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/acs_systems.py b/seam/routes/acs_systems.py index 6e33bdd..b4ca7d3 100644 --- a/seam/routes/acs_systems.py +++ b/seam/routes/acs_systems.py @@ -8,6 +8,11 @@ class AbstractAcsSystems(abc.ABC): @abc.abstractmethod def get(self, *, acs_system_id: str) -> AcsSystem: + """Returns a specified `access system `_. + + :param acs_system_id: ID of the access system that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -18,12 +23,30 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: + """Returns a list of all `access systems `_. + + To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. + + :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. + + :param customer_key: Customer key for which you want to list access systems. + + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: + """Returns a list of all credential manager systems that are compatible with a specified `access system `_. + + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. + + :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -34,6 +57,13 @@ def report_devices( acs_encoders: Optional[List[Dict[str, Any]]] = None, acs_entrances: Optional[List[Dict[str, Any]]] = None ) -> None: + """Reports ACS system device status including encoders and entrances. + + :param acs_system_id: ID of the ACS system to report resources for + + :param acs_encoders: Array of ACS encoders to report + + :param acs_entrances: Array of ACS entrances to report""" raise NotImplementedError() @@ -43,6 +73,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, acs_system_id: str) -> AcsSystem: + """Returns a specified `access system `_. + + :param acs_system_id: ID of the access system that you want to get. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -59,6 +94,17 @@ def list( customer_key: Optional[str] = None, search: Optional[str] = None ) -> List[AcsSystem]: + """Returns a list of all `access systems `_. + + To filter the list of returned access systems by a specific connected account ID, include the ``connected_account_id`` in the request body. If you omit the ``connected_account_id`` parameter, the response includes all access systems connected to your workspace. + + :param connected_account_id: ID of the connected account by which you want to filter the list of access systems. + + :param customer_key: Customer key for which you want to list access systems. + + :param search: String for which to search. Filters returned access systems to include all records that satisfy a partial match using ``name`` or ``acs_system_id``. + + :returns: OK""" json_payload = {} if connected_account_id is not None: @@ -75,6 +121,13 @@ def list( def list_compatible_credential_manager_acs_systems( self, *, acs_system_id: str ) -> List[AcsSystem]: + """Returns a list of all credential manager systems that are compatible with a specified `access system `_. + + Specify the access system for which you want to retrieve all compatible credential manager systems by including the corresponding ``acs_system_id`` in the request body. + + :param acs_system_id: ID of the access system for which you want to retrieve all compatible credential manager systems. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -94,6 +147,13 @@ def report_devices( acs_encoders: Optional[List[Dict[str, Any]]] = None, acs_entrances: Optional[List[Dict[str, Any]]] = None ) -> None: + """Reports ACS system device status including encoders and entrances. + + :param acs_system_id: ID of the ACS system to report resources for + + :param acs_encoders: Array of ACS encoders to report + + :param acs_entrances: Array of ACS entrances to report""" json_payload = {} if acs_system_id is not None: diff --git a/seam/routes/acs_users.py b/seam/routes/acs_users.py index 082c08e..7f59c38 100644 --- a/seam/routes/acs_users.py +++ b/seam/routes/acs_users.py @@ -10,6 +10,12 @@ class AbstractAcsUsers(abc.ABC): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: + """Adds a specified `access system user `_ to a specified `access group `_. + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + + :param acs_user_id: ID of the access system user that you want to add to an access group. + """ raise NotImplementedError() @abc.abstractmethod @@ -25,6 +31,25 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Creates a new `access system user `_. + + :param acs_system_id: ID of the access system to which you want to add the new access system user. + + :param full_name: Full name of the new access system user. + + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. + + :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. + + :param email: Deprecated: use email_address. + + :param email_address: Email address of the `access system user `_. + + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). + + :param user_identity_id: ID of the user identity with which you want to associate the new access system user. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -35,6 +60,14 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. + + :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id + + :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -45,6 +78,15 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Returns a specified `access system user `_. + + :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. + + :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +102,25 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: + """Returns a list of all `access system users `_. + + :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. + + :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. + + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -70,6 +131,15 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: + """Lists the `entrances `_ to which a specified `access system user `_ has access. + + :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -80,6 +150,14 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified `access system user `_ from a specified `access group `_. + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + + :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -90,6 +168,14 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Revokes access to all `entrances `_ for a specified `access system user `_. + + :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -100,6 +186,14 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. + + :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -110,6 +204,14 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. + + :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + """ raise NotImplementedError() @abc.abstractmethod @@ -126,6 +228,26 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Updates the properties of a specified `access system user `_. + + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. + + :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. + + :param email: Deprecated: use email_address. + + :param email_address: Email address of the `access system user `_. + + :param full_name: Full name of the `access system user `_. + + :param hid_acs_system_id: ID of the HID access control system associated with the user. + + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). + + :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + """ raise NotImplementedError() @@ -137,6 +259,12 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def add_to_access_group( self, *, acs_access_group_id: str, acs_user_id: str ) -> None: + """Adds a specified `access system user `_ to a specified `access group `_. + + :param acs_access_group_id: ID of the access group to which you want to add an access system user. + + :param acs_user_id: ID of the access system user that you want to add to an access group. + """ json_payload = {} if acs_access_group_id is not None: @@ -160,6 +288,25 @@ def create( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Creates a new `access system user `_. + + :param acs_system_id: ID of the access system to which you want to add the new access system user. + + :param full_name: Full name of the new access system user. + + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the new access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. + + :param acs_access_group_ids: Array of access group IDs to indicate the access groups to which you want to add the new access system user. + + :param email: Deprecated: use email_address. + + :param email_address: Email address of the `access system user `_. + + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). + + :param user_identity_id: ID of the user identity with which you want to associate the new access system user. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -190,6 +337,14 @@ def delete( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Deletes a specified `access system user `_ and invalidates the access system user's `credentials `_. + + :param acs_system_id: ID of the access system that you want to delete. You must provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to delete. You must provide either acs_user_id or user_identity_id + + :param user_identity_id: ID of the user identity that you want to delete. You must provide either acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + """ json_payload = {} if acs_system_id is not None: @@ -210,6 +365,15 @@ def get( acs_system_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> AcsUser: + """Returns a specified `access system user `_. + + :param acs_user_id: ID of the access system user that you want to get. You can only provide acs_user_id or user_identity_id. + + :param acs_system_id: ID of the access system that you want to get. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity that you want to get. You can only provide acs_user_id or user_identity_id. + + :returns: OK""" json_payload = {} if acs_user_id is not None: @@ -235,6 +399,25 @@ def list( user_identity_id: Optional[str] = None, user_identity_phone_number: Optional[str] = None ) -> List[AcsUser]: + """Returns a list of all `access system users `_. + + :param acs_system_id: ID of the ``acs_system`` for which you want to retrieve all access system users. + + :param created_before: Timestamp by which to limit returned access system users. Returns users created before this timestamp. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned access system users to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``acs_user_id``, ``user_identity_id``, ``user_identity_full_name`` or ``user_identity_phone_number``. + + :param user_identity_email_address: Email address of the user identity for which you want to retrieve all access system users. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + + :param user_identity_phone_number: Phone number of the user identity for which you want to retrieve all access system users, in `E.164 format `_ (for example, ``+15555550100``). + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -265,6 +448,15 @@ def list_accessible_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> List[AcsEntrance]: + """Lists the `entrances `_ to which a specified `access system user `_ has access. + + :param acs_system_id: ID of the access system for which you want to list accessible entrances. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity for whom you want to list accessible entrances. You can only provide acs_user_id or user_identity_id. + + :returns: OK""" json_payload = {} if acs_system_id is not None: @@ -287,6 +479,14 @@ def remove_from_access_group( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Removes a specified `access system user `_ from a specified `access group `_. + + :param acs_access_group_id: ID of the access group from which you want to remove an access system user. + + :param acs_user_id: ID of the access system user that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity that you want to remove from an access group. You can only provide acs_user_id or user_identity_id. + """ json_payload = {} if acs_access_group_id is not None: @@ -307,6 +507,14 @@ def revoke_access_to_all_entrances( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Revokes access to all `entrances `_ for a specified `access system user `_. + + :param acs_system_id: ID of the access system for which you want to revoke access. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + + :param user_identity_id: ID of the user identity for whom you want to revoke access. You can only provide acs_user_id or user_identity_id. + """ json_payload = {} if acs_system_id is not None: @@ -327,6 +535,14 @@ def suspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """`Suspends `_ a specified `access system user `_. Suspending an access system user revokes their access temporarily. To restore an access system user's access, you can `unsuspend `_ them. + + :param acs_system_id: ID of the access system that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param acs_user_id: ID of the access system user that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param user_identity_id: ID of the user identity that you want to suspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + """ json_payload = {} if acs_system_id is not None: @@ -347,6 +563,14 @@ def unsuspend( acs_user_id: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """`Unsuspends `_ a specified suspended `access system user `_. While `suspending an access system user `_ revokes their access temporarily, unsuspending the access system user restores their access. + + :param acs_system_id: ID of the access system of the user that you want to unsuspend. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + + :param user_identity_id: ID of the user identity that you want to unsuspend. You can only provide acs_user_id or the combination of acs_system_id and user_identity_id. + """ json_payload = {} if acs_system_id is not None: @@ -373,6 +597,26 @@ def update( phone_number: Optional[str] = None, user_identity_id: Optional[str] = None ) -> None: + """Updates the properties of a specified `access system user `_. + + :param access_schedule: ``starts_at`` and ``ends_at`` timestamps for the access system user's access. If you specify an ``access_schedule``, you may include both ``starts_at`` and ``ends_at``. If you omit ``starts_at``, it defaults to the current time. ``ends_at`` is optional and must be a time in the future and after ``starts_at``. + + :param acs_system_id: ID of the access system that you want to update. You can only provide acs_system_id with user_identity_id. + + :param acs_user_id: ID of the access system user that you want to update. You can only provide acs_user_id or user_identity_id. + + :param email: Deprecated: use email_address. + + :param email_address: Email address of the `access system user `_. + + :param full_name: Full name of the `access system user `_. + + :param hid_acs_system_id: ID of the HID access control system associated with the user. + + :param phone_number: Phone number of the `access system user `_ in E.164 format (for example, ``+15555550100``). + + :param user_identity_id: ID of the user identity that you want to update. You can only provide acs_user_id or user_identity_id. If you provide user_identity_id, you must also provide acs_system_id. + """ json_payload = {} if access_schedule is not None: diff --git a/seam/routes/action_attempts.py b/seam/routes/action_attempts.py index 4b09607..e14dfe8 100644 --- a/seam/routes/action_attempts.py +++ b/seam/routes/action_attempts.py @@ -14,6 +14,13 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Returns a specified `action attempt `_. + + :param action_attempt_id: ID of the action attempt that you want to get. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -25,6 +32,17 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: + """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. + + :param action_attempt_ids: IDs of the action attempts that you want to retrieve. + + :param device_id: ID of the device to filter action attempts by. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :returns: OK""" raise NotImplementedError() @@ -39,6 +57,13 @@ def get( action_attempt_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Returns a specified `action attempt `_. + + :param action_attempt_id: ID of the action attempt that you want to get. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if action_attempt_id is not None: @@ -66,6 +91,17 @@ def list( limit: Optional[int] = None, page_cursor: Optional[str] = None ) -> List[ActionAttempt]: + """Returns a list of the `action attempts `_ that you specify as an array of ``action_attempt_id``s. + + :param action_attempt_ids: IDs of the action attempts that you want to retrieve. + + :param device_id: ID of the device to filter action attempts by. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :returns: OK""" json_payload = {} if action_attempt_ids is not None: diff --git a/seam/routes/client_sessions.py b/seam/routes/client_sessions.py index d3ff209..29f996a 100644 --- a/seam/routes/client_sessions.py +++ b/seam/routes/client_sessions.py @@ -19,10 +19,32 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Creates a new `client session `_. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. + + :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. + + :param customer_id: Customer ID that you want to associate with the new client session. + + :param customer_key: Customer key that you want to associate with the new client session. + + :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. + + :param user_identifier_key: Your user ID for the user for whom you want to create a client session. + + :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. + + :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, client_session_id: str) -> None: + """Deletes a `client session `_. + + :param client_session_id: ID of the client session that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -32,6 +54,13 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: + """Returns a specified `client session `_. + + :param client_session_id: ID of the client session that you want to get. + + :param user_identifier_key: User identifier key associated with the client session that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -45,6 +74,21 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). + + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -58,6 +102,20 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: + """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. + + :param client_session_id: ID of the client session to which you want to grant access to resources. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. + + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session. + + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. + + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. + """ raise NotImplementedError() @abc.abstractmethod @@ -70,10 +128,28 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: + """Returns a list of all `client sessions `_. + + :param client_session_id: ID of the client session that you want to retrieve. + + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + + :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. + + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + + :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def revoke(self, *, client_session_id: str) -> None: + """Revokes a `client session `_. + + Note that `deleting a client session `_ is a separate action. + + :param client_session_id: ID of the client session that you want to revoke.""" raise NotImplementedError() @@ -94,6 +170,25 @@ def create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Creates a new `client session `_. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ for which you want to create a client session. + + :param connected_account_ids: IDs of the `connected accounts `_ for which you want to create a client session. + + :param customer_id: Customer ID that you want to associate with the new client session. + + :param customer_key: Customer key that you want to associate with the new client session. + + :param expires_at: Date and time at which the client session should expire, in `ISO 8601 `_ format. + + :param user_identifier_key: Your user ID for the user for whom you want to create a client session. + + :param user_identity_id: ID of the `user identity `_ for which you want to create a client session. + + :param user_identity_ids: Deprecated: Use ``user_identity_id`` instead. IDs of the `user identities `_ that you want to associate with the client session. + + :returns: OK""" json_payload = {} if connect_webview_ids is not None: @@ -118,6 +213,9 @@ def create( return ClientSession.from_dict(res["client_session"]) def delete(self, *, client_session_id: str) -> None: + """Deletes a `client session `_. + + :param client_session_id: ID of the client session that you want to delete.""" json_payload = {} if client_session_id is not None: @@ -133,6 +231,13 @@ def get( client_session_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> ClientSession: + """Returns a specified `client session `_. + + :param client_session_id: ID of the client session that you want to get. + + :param user_identifier_key: User identifier key associated with the client session that you want to get. + + :returns: OK""" json_payload = {} if client_session_id is not None: @@ -154,6 +259,21 @@ def get_or_create( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> ClientSession: + """Returns a `client session `_ with specific characteristics or creates a new client session with these characteristics if it does not yet exist. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param expires_at: Date and time at which the client session should expire in `ISO 8601 `_ format. If the client session already exists, this will update the expiration before returning it. + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session (or that is already associated with the existing client session). + + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session (or that are already associated with the existing client session). + + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. + + :returns: OK""" json_payload = {} if connect_webview_ids is not None: @@ -183,6 +303,20 @@ def grant_access( user_identity_id: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> None: + """Grants a `client session `_ access to one or more resources, such as `Connect Webviews `_, `user identities `_, and so on. + + :param client_session_id: ID of the client session to which you want to grant access to resources. + + :param connect_webview_ids: IDs of the `Connect Webviews `_ that you want to associate with the client session. + + :param connected_account_ids: IDs of the `connected accounts `_ that you want to associate with the client session. + + :param user_identifier_key: Your user ID for the user that you want to associate with the client session. + + :param user_identity_id: ID of the `user identity `_ that you want to associate with the client session. + + :param user_identity_ids: Deprecated: Use ``user_identity_id``. IDs of the `user identities `_ that you want to associate with the client session. + """ json_payload = {} if client_session_id is not None: @@ -211,6 +345,19 @@ def list( user_identity_id: Optional[str] = None, without_user_identifier_key: Optional[bool] = None ) -> List[ClientSession]: + """Returns a list of all `client sessions `_. + + :param client_session_id: ID of the client session that you want to retrieve. + + :param connect_webview_id: ID of the `Connect Webview `_ for which you want to retrieve client sessions. + + :param user_identifier_key: Your user ID for the user by which you want to filter client sessions. + + :param user_identity_id: ID of the `user identity `_ for which you want to retrieve client sessions. + + :param without_user_identifier_key: Indicates whether to retrieve only client sessions without associated user identifier keys. + + :returns: OK""" json_payload = {} if client_session_id is not None: @@ -229,6 +376,11 @@ def list( return [ClientSession.from_dict(item) for item in res["client_sessions"]] def revoke(self, *, client_session_id: str) -> None: + """Revokes a `client session `_. + + Note that `deleting a client session `_ is a separate action. + + :param client_session_id: ID of the client session that you want to revoke.""" json_payload = {} if client_session_id is not None: diff --git a/seam/routes/connect_webviews.py b/seam/routes/connect_webviews.py index ff0db12..d6b32d6 100644 --- a/seam/routes/connect_webviews.py +++ b/seam/routes/connect_webviews.py @@ -21,14 +21,55 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: + """Creates a new `Connect Webview `_. + + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a ``connect_webview``. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + + You should make a new ``connect_webview`` for each unique login request. Each ``connect_webview`` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + + See also: `Connect Webview Process `_. + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. + + :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. + + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. + + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. + + :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. + + :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. + + :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. + + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. + + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, connect_webview_id: str) -> None: + """Deletes a `Connect Webview `_. + + You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. + + :param connect_webview_id: ID of the Connect Webview that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, connect_webview_id: str) -> ConnectWebview: + """Returns a specified `Connect Webview `_. + + Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. + + :param connect_webview_id: ID of the Connect Webview that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -42,6 +83,21 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: + """Returns a list of all `Connect Webviews `_. + + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. + + :param customer_key: Customer key for which you want to list connect webviews. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. + + :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. + + :returns: OK""" raise NotImplementedError() @@ -64,6 +120,35 @@ def create( provider_category: Optional[str] = None, wait_for_device_creation: Optional[bool] = None ) -> ConnectWebview: + """Creates a new `Connect Webview `_. + + To enable a user to connect their devices or systems to Seam, they must sign in to their device or system account. To enable a user to sign in, you create a ``connect_webview``. After creating the Connect Webview, you receive a URL that you can use to display the visual component of this Connect Webview for your user. You can open an iframe or new window to display the Connect Webview. + + You should make a new ``connect_webview`` for each unique login request. Each ``connect_webview`` tracks the user that signed in with it. You receive an error if you reuse a Connect Webview for the same user twice or if you use the same Connect Webview for multiple users. + + See also: `Connect Webview Process `_. + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through the Connect Webview. If not provided, defaults will be determined based on the accepted providers. + + :param accepted_providers: Accepted device provider keys as an alternative to ``provider_category``. Use this parameter to specify accepted providers explicitly. See `Customize the Brands to Display in Your Connect Webviews `_. To list all provider keys, use ```/devices/list_device_providers`` `_ with no filters. + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. See also: `Customize the Behavior Settings of Your Connect Webviews `_. + + :param custom_metadata: Custom metadata that you want to associate with the Connect Webview. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a Connect Webview `_ enables you to store custom information, like customer details or internal IDs from your application. The custom metadata is then transferred to any `connected accounts `_ that were connected using the Connect Webview, making it easy to find and filter these resources in your `workspace `_. You can also `filter Connect Webviews by custom metadata `_. + + :param custom_redirect_failure_url: Alternative URL that you want to redirect the user to on an error. If you do not set this parameter, the Connect Webview falls back to the ``custom_redirect_url``. + + :param custom_redirect_url: URL that you want to redirect the user to after the provider login is complete. + + :param customer_key: Associate the Connect Webview, the connected account, and all resources under the connected account with a customer. If the connected account already exists, it will be associated with the customer. If the connected account already exists, but is already associated with a customer, the Connect Webview will show an error. + + :param excluded_providers: List of provider keys to exclude from the Connect Webview. These providers will not be shown when the user tries to connect an account. + + :param provider_category: Specifies the category of providers that you want to include. To list all providers within a category, use ```/devices/list_device_providers`` `_ with the desired ``provider_category`` filter. + + :param wait_for_device_creation: Indicates whether Seam should finish syncing all devices in a newly-connected account before completing the associated Connect Webview. See also: `Customize the Behavior Settings of Your Connect Webviews `_. + + :returns: OK""" json_payload = {} if accepted_capabilities is not None: @@ -94,6 +179,11 @@ def create( return ConnectWebview.from_dict(res["connect_webview"]) def delete(self, *, connect_webview_id: str) -> None: + """Deletes a `Connect Webview `_. + + You do not need to delete a Connect Webview once a user completes it. Instead, you can simply ignore completed Connect Webviews. + + :param connect_webview_id: ID of the Connect Webview that you want to delete.""" json_payload = {} if connect_webview_id is not None: @@ -104,6 +194,13 @@ def delete(self, *, connect_webview_id: str) -> None: return None def get(self, *, connect_webview_id: str) -> ConnectWebview: + """Returns a specified `Connect Webview `_. + + Unless you're using a ``custom_redirect_url``, you should poll a newly-created ``connect_webview`` to find out if the user has signed in or to get details about what devices they've connected. + + :param connect_webview_id: ID of the Connect Webview that you want to get. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -123,6 +220,21 @@ def list( search: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectWebview]: + """Returns a list of all `Connect Webviews `_. + + :param custom_metadata_has: Custom metadata pairs by which you want to `filter Connect Webviews `_. Returns Connect Webviews with ``custom_metadata`` that contains all of the provided key:value pairs. + + :param customer_key: Customer key for which you want to list connect webviews. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned Connect Webviews to include all records that satisfy a partial match using ``connect_webview_id``, ``accepted_providers``, ``custom_metadata``, or ``customer_key``. + + :param user_identifier_key: Your user ID for the user by which you want to filter Connect Webviews. + + :returns: OK""" json_payload = {} if custom_metadata_has is not None: diff --git a/seam/routes/connected_accounts.py b/seam/routes/connected_accounts.py index 902cdfb..bcc979f 100644 --- a/seam/routes/connected_accounts.py +++ b/seam/routes/connected_accounts.py @@ -17,12 +17,27 @@ def simulate(self) -> AbstractConnectedAccountsSimulate: @abc.abstractmethod def delete(self, *, connected_account_id: str) -> None: + """Deletes a specified `connected account `_. + + Deleting a connected account triggers a ``connected_account.deleted`` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + + For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. + + :param connected_account_id: ID of the connected account that you want to delete. + """ raise NotImplementedError() @abc.abstractmethod def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: + """Returns a specified `connected account `_. + + :param connected_account_id: ID of the connected account that you want to get. + + :param email: Email address associated with the connected account that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -37,10 +52,31 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: + """Returns a list of all `connected accounts `_. + + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. + + :param customer_key: Customer key by which you want to filter connected accounts. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. + + :param space_id: ID of the space by which you want to filter connected accounts. + + :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def sync(self, *, connected_account_id: str) -> None: + """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. + + :param connected_account_id: ID of the connected account that you want to sync. + """ raise NotImplementedError() @abc.abstractmethod @@ -54,6 +90,20 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: + """Updates a `connected account `_. + + :param connected_account_id: ID of the connected account that you want to update. + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. + + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. + + :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. + + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. + """ raise NotImplementedError() @@ -68,6 +118,14 @@ def simulate(self) -> ConnectedAccountsSimulate: return self._simulate def delete(self, *, connected_account_id: str) -> None: + """Deletes a specified `connected account `_. + + Deleting a connected account triggers a ``connected_account.deleted`` event and removes the connected account and all data associated with the connected account from Seam, including devices, events, access codes, and so on. For every deleted resource, Seam sends a corresponding deleted event, but the resource is not deleted from the provider. + + For example, if you delete a connected account with a device that has an access code, Seam sends a ``connected_account.deleted`` event, a ``device.deleted`` event, and an ``access_code.deleted`` event, but Seam does not remove the access code from the device. + + :param connected_account_id: ID of the connected account that you want to delete. + """ json_payload = {} if connected_account_id is not None: @@ -80,6 +138,13 @@ def delete(self, *, connected_account_id: str) -> None: def get( self, *, connected_account_id: Optional[str] = None, email: Optional[str] = None ) -> ConnectedAccount: + """Returns a specified `connected account `_. + + :param connected_account_id: ID of the connected account that you want to get. + + :param email: Email address associated with the connected account that you want to get. + + :returns: OK""" json_payload = {} if connected_account_id is not None: @@ -102,6 +167,23 @@ def list( space_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[ConnectedAccount]: + """Returns a list of all `connected accounts `_. + + :param custom_metadata_has: Custom metadata pairs by which you want to filter connected accounts. Returns connected accounts with ``custom_metadata`` that contains all of the provided key:value pairs. + + :param customer_key: Customer key by which you want to filter connected accounts. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned connected accounts to include all records that satisfy a partial match using ``connected_account_id``, ``account_type``, ``customer_key``, ``custom_metadata``, ``user_identifier.username``, ``user_identifier.email`` or ``user_identifier.phone``. + + :param space_id: ID of the space by which you want to filter connected accounts. + + :param user_identifier_key: Your user ID for the user by which you want to filter connected accounts. + + :returns: OK""" json_payload = {} if custom_metadata_has is not None: @@ -124,6 +206,10 @@ def list( return [ConnectedAccount.from_dict(item) for item in res["connected_accounts"]] def sync(self, *, connected_account_id: str) -> None: + """Request a `connected account `_ sync attempt for the specified ``connected_account_id``. + + :param connected_account_id: ID of the connected account that you want to sync. + """ json_payload = {} if connected_account_id is not None: @@ -143,6 +229,20 @@ def update( customer_key: Optional[str] = None, display_name: Optional[str] = None ) -> None: + """Updates a `connected account `_. + + :param connected_account_id: ID of the connected account that you want to update. + + :param accepted_capabilities: List of accepted device capabilities that restrict the types of devices that can be connected through this connected account. Valid values are ``lock``, ``thermostat``, ``noise_sensor``, and ``access_control``. + + :param automatically_manage_new_devices: Indicates whether newly-added devices should appear as `managed devices `_. + + :param custom_metadata: Custom metadata that you want to associate with the connected account. Entirely replaces the existing custom metadata object. If a new Connect Webview contains custom metadata and is used to reconnect a connected account, the custom metadata from the Connect Webview will entirely replace the entire custom metadata object on the connected account. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a connected account `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter connected accounts by the desired metadata `_. + + :param customer_key: The customer key to associate with this connected account. If provided, the connected account and all resources under the connected account will be moved to this customer. May only be provided if the connected account is not already associated with a customer. + + :param display_name: Human-readable name for the connected account, shown in the dashboard. For example, ``Booking from Airbnb House 1``. + """ json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/connected_accounts_simulate.py b/seam/routes/connected_accounts_simulate.py index 9b797da..3766b03 100644 --- a/seam/routes/connected_accounts_simulate.py +++ b/seam/routes/connected_accounts_simulate.py @@ -7,6 +7,10 @@ class AbstractConnectedAccountsSimulate(abc.ABC): @abc.abstractmethod def disconnect(self, *, connected_account_id: str) -> None: + """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. + + :param connected_account_id: ID of the connected account you want to simulate as disconnected. + """ raise NotImplementedError() @@ -16,6 +20,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def disconnect(self, *, connected_account_id: str) -> None: + """Simulates a connected account becoming disconnected from Seam. Only applicable for `sandbox workspaces `_. + + :param connected_account_id: ID of the connected account you want to simulate as disconnected. + """ json_payload = {} if connected_account_id is not None: diff --git a/seam/routes/customers.py b/seam/routes/customers.py index 2b9d0c0..bdbf4f5 100644 --- a/seam/routes/customers.py +++ b/seam/routes/customers.py @@ -22,6 +22,31 @@ def create_portal( read_only: Optional[bool] = None, customer_data: Optional[Dict[str, Any]] = None ) -> CustomerPortal: + """Creates a new customer portal magic link with configurable features. + + :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. + + :param customization_profile_id: The ID of the customization profile to use for the portal. + + :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. + + :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. + + :param features: + + :param is_embedded: Whether the portal is embedded in another application. + + :param landing_page: Configuration for the landing page when the portal loads. + + :param locale: The locale to use for the portal. + + :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. + + :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. + + :param customer_data: + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -48,6 +73,46 @@ def delete_data( user_identity_keys: Optional[List[str]] = None, user_keys: Optional[List[str]] = None ) -> None: + """Deletes customer data including resources like spaces, properties, rooms, users, etc. + This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + + :param access_grant_keys: List of access grant keys to delete. + + :param booking_keys: List of booking keys to delete. + + :param building_keys: List of building keys to delete. + + :param common_area_keys: List of common area keys to delete. + + :param customer_keys: List of customer keys to delete all data for. + + :param facility_keys: List of facility keys to delete. + + :param guest_keys: List of guest keys to delete. + + :param listing_keys: List of listing keys to delete. + + :param property_keys: List of property keys to delete. + + :param property_listing_keys: List of property listing keys to delete. + + :param reservation_keys: List of reservation keys to delete. + + :param resident_keys: List of resident keys to delete. + + :param room_keys: List of room keys to delete. + + :param space_keys: List of space keys to delete. + + :param staff_member_keys: List of staff member keys to delete. + + :param tenant_keys: List of tenant keys to delete. + + :param unit_keys: List of unit keys to delete. + + :param user_identity_keys: List of user identity keys to delete. + + :param user_keys: List of user keys to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -75,6 +140,47 @@ def push_data( user_identities: Optional[List[Dict[str, Any]]] = None, users: Optional[List[Dict[str, Any]]] = None ) -> None: + """Pushes customer data including resources like spaces, properties, rooms, users, etc. + + :param customer_key: Your unique identifier for the customer. + + :param access_grants: List of access grants. + + :param bookings: List of bookings. + + :param buildings: List of buildings. + + :param common_areas: List of shared common areas. + + :param facilities: List of gym or fitness facilities. + + :param guests: List of guests. + + :param listings: List of property listings. + + :param properties: List of short-term rental properties. + + :param property_listings: List of property listings. + + :param reservations: List of reservations. + + :param residents: List of residents. + + :param rooms: List of hotel or hospitality rooms. + + :param sites: List of general sites or areas. + + :param spaces: List of general spaces or areas. + + :param staff_members: List of staff members. + + :param tenants: List of tenants. + + :param units: List of multi-family residential units. + + :param user_identities: List of user identities. + + :param users: List of users.""" raise NotImplementedError() @@ -98,6 +204,31 @@ def create_portal( read_only: Optional[bool] = None, customer_data: Optional[Dict[str, Any]] = None ) -> CustomerPortal: + """Creates a new customer portal magic link with configurable features. + + :param customer_resources_filters: Filter configuration for resources based on their custom_metadata. Each filter specifies a field, operation, and value to match against resource custom_metadata. + + :param customization_profile_id: The ID of the customization profile to use for the portal. + + :param deep_link: Deep link target resource for initial redirect. When set, the portal will navigate directly to the specified resource. + + :param exclude_locale_picker: Whether to exclude the option to select a locale within the portal UI. + + :param features: + + :param is_embedded: Whether the portal is embedded in another application. + + :param landing_page: Configuration for the landing page when the portal loads. + + :param locale: The locale to use for the portal. + + :param navigation_mode: Navigation mode for the portal. 'restricted' tells frontend to hide navigation UI, typically used for embedded deep links. + + :param read_only: Whether the portal is read-only. When true, the customer can browse the portal but cannot perform any mutating action; write requests made with the portal's client session are rejected. + + :param customer_data: + + :returns: OK""" json_payload = {} if customer_resources_filters is not None: @@ -150,6 +281,46 @@ def delete_data( user_identity_keys: Optional[List[str]] = None, user_keys: Optional[List[str]] = None ) -> None: + """Deletes customer data including resources like spaces, properties, rooms, users, etc. + This will delete the partner resources and any related Seam resources (user identities, access grants, spaces). + + :param access_grant_keys: List of access grant keys to delete. + + :param booking_keys: List of booking keys to delete. + + :param building_keys: List of building keys to delete. + + :param common_area_keys: List of common area keys to delete. + + :param customer_keys: List of customer keys to delete all data for. + + :param facility_keys: List of facility keys to delete. + + :param guest_keys: List of guest keys to delete. + + :param listing_keys: List of listing keys to delete. + + :param property_keys: List of property keys to delete. + + :param property_listing_keys: List of property listing keys to delete. + + :param reservation_keys: List of reservation keys to delete. + + :param resident_keys: List of resident keys to delete. + + :param room_keys: List of room keys to delete. + + :param space_keys: List of space keys to delete. + + :param staff_member_keys: List of staff member keys to delete. + + :param tenant_keys: List of tenant keys to delete. + + :param unit_keys: List of unit keys to delete. + + :param user_identity_keys: List of user identity keys to delete. + + :param user_keys: List of user keys to delete.""" json_payload = {} if access_grant_keys is not None: @@ -219,6 +390,47 @@ def push_data( user_identities: Optional[List[Dict[str, Any]]] = None, users: Optional[List[Dict[str, Any]]] = None ) -> None: + """Pushes customer data including resources like spaces, properties, rooms, users, etc. + + :param customer_key: Your unique identifier for the customer. + + :param access_grants: List of access grants. + + :param bookings: List of bookings. + + :param buildings: List of buildings. + + :param common_areas: List of shared common areas. + + :param facilities: List of gym or fitness facilities. + + :param guests: List of guests. + + :param listings: List of property listings. + + :param properties: List of short-term rental properties. + + :param property_listings: List of property listings. + + :param reservations: List of reservations. + + :param residents: List of residents. + + :param rooms: List of hotel or hospitality rooms. + + :param sites: List of general sites or areas. + + :param spaces: List of general spaces or areas. + + :param staff_members: List of staff members. + + :param tenants: List of tenants. + + :param units: List of multi-family residential units. + + :param user_identities: List of user identities. + + :param users: List of users.""" json_payload = {} if customer_key is not None: diff --git a/seam/routes/devices.py b/seam/routes/devices.py index 4d93a11..433a8d4 100644 --- a/seam/routes/devices.py +++ b/seam/routes/devices.py @@ -22,6 +22,15 @@ def unmanaged(self) -> AbstractDevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified `device `_. + + You must specify either ``device_id`` or ``name``. + + :param device_id: ID of the device that you want to get. + + :param name: Name of the device that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -45,16 +54,63 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `devices `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type for which you want to list devices. + + :param device_types: Array of device types for which you want to list devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer for which you want to list devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_device_providers( self, *, provider_category: Optional[str] = None ) -> List[DeviceProvider]: + """Returns a list of all device providers. + + The information that this endpoint returns for each provider includes a set of `capability flags `_, such as ``device_provider.can_remotely_unlock``. If at least one supported device from a provider has a specific capability, the corresponding capability flag is ``true``. + + When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. + + :param provider_category: Category for which you want to list providers. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: + """Updates provider-specific metadata for devices. + + :param devices: Array of devices with provider metadata to update""" raise NotImplementedError() @abc.abstractmethod @@ -68,6 +124,21 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: + """Updates a specified `device `_. + + You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. + + :param device_id: ID of the device that you want to update. + + :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. + + :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. + + :param name: Name for the device. + + :param properties:""" raise NotImplementedError() @@ -89,6 +160,15 @@ def unmanaged(self) -> DevicesUnmanaged: def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified `device `_. + + You must specify either ``device_id`` or ``name``. + + :param device_id: ID of the device that you want to get. + + :param name: Name of the device that you want to get. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -120,6 +200,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `devices `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type for which you want to list devices. + + :param device_types: Array of device types for which you want to list devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer for which you want to list devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -162,6 +277,15 @@ def list( def list_device_providers( self, *, provider_category: Optional[str] = None ) -> List[DeviceProvider]: + """Returns a list of all device providers. + + The information that this endpoint returns for each provider includes a set of `capability flags `_, such as ``device_provider.can_remotely_unlock``. If at least one supported device from a provider has a specific capability, the corresponding capability flag is ``true``. + + When you create a `Connect Webview `_, you can customize the providers—that is, the brands—that it displays. In the ``/connect_webviews/create`` request, include the desired set of device provider keys in the ``accepted_providers`` parameter. See also `Customize the Brands to Display in Your Connect Webviews `_. + + :param provider_category: Category for which you want to list providers. + + :returns: OK""" json_payload = {} if provider_category is not None: @@ -172,6 +296,9 @@ def list_device_providers( return [DeviceProvider.from_dict(item) for item in res["device_providers"]] def report_provider_metadata(self, *, devices: List[Dict[str, Any]]) -> None: + """Updates provider-specific metadata for devices. + + :param devices: Array of devices with provider metadata to update""" json_payload = {} if devices is not None: @@ -191,6 +318,21 @@ def update( name: Optional[str] = None, properties: Optional[Dict[str, Any]] = None ) -> None: + """Updates a specified `device `_. + + You can add or change `custom metadata `_ for a device, change the device's name, or `convert a managed device to unmanaged `_. + + :param device_id: ID of the device that you want to update. + + :param backup_access_code_pool_enabled: Indicates whether the device's `backup access code pool `_ is enabled. Set to ``false`` to disable the pool: Seam stops refilling it and removes any backup codes that have not yet been pulled into active use. + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. `Adding custom metadata to a device `_ enables you to store custom information, like customer details or internal IDs from your application. Then, you can `filter devices by the desired metadata `_. + + :param is_managed: Indicates whether the device is managed. To unmanage a device, set ``is_managed`` to ``false``. + + :param name: Name for the device. + + :param properties:""" json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_simulate.py b/seam/routes/devices_simulate.py index ca95994..2ebaa23 100644 --- a/seam/routes/devices_simulate.py +++ b/seam/routes/devices_simulate.py @@ -7,26 +7,58 @@ class AbstractDevicesSimulate(abc.ABC): @abc.abstractmethod def connect(self, *, device_id: str) -> None: + """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate connecting to Seam. + """ raise NotImplementedError() @abc.abstractmethod def connect_to_hub(self, *, device_id: str) -> None: + """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. + Only applicable for sandbox workspaces and currently + implemented for August and TTLock locks. + This will clear the ``hub_disconnected`` error on the device. + + :param device_id: ID of the device whose hub you want to reconnect.""" raise NotImplementedError() @abc.abstractmethod def disconnect(self, *, device_id: str) -> None: + """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate disconnecting from Seam. + """ raise NotImplementedError() @abc.abstractmethod def disconnect_from_hub(self, *, device_id: str) -> None: + """Simulates taking the Wi‑Fi hub (bridge) offline for a device. + Only applicable for sandbox workspaces and currently + implemented for August, TTLock, and IglooHome devices. + This will set the ``hub_disconnected`` error on the device, or mark the + IglooHome bridge offline in sandbox. + + :param device_id: ID of the device whose hub you want to disconnect.""" raise NotImplementedError() @abc.abstractmethod def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: + """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). + Send ``is_expired: true`` to simulate an expired subscription, or ``false`` to simulate an active subscription. + The actual device error is created/cleared by the poller after this state change. + + :param device_id: + + :param is_expired:""" raise NotImplementedError() @abc.abstractmethod def remove(self, *, device_id: str) -> None: + """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate removing from Seam. + """ raise NotImplementedError() @@ -36,6 +68,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def connect(self, *, device_id: str) -> None: + """Simulates connecting a device to Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate connecting to Seam. + """ json_payload = {} if device_id is not None: @@ -46,6 +82,12 @@ def connect(self, *, device_id: str) -> None: return None def connect_to_hub(self, *, device_id: str) -> None: + """Simulates bringing the Wi‑Fi hub (bridge) back online for a device. + Only applicable for sandbox workspaces and currently + implemented for August and TTLock locks. + This will clear the ``hub_disconnected`` error on the device. + + :param device_id: ID of the device whose hub you want to reconnect.""" json_payload = {} if device_id is not None: @@ -56,6 +98,10 @@ def connect_to_hub(self, *, device_id: str) -> None: return None def disconnect(self, *, device_id: str) -> None: + """Simulates disconnecting a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate disconnecting from Seam. + """ json_payload = {} if device_id is not None: @@ -66,6 +112,13 @@ def disconnect(self, *, device_id: str) -> None: return None def disconnect_from_hub(self, *, device_id: str) -> None: + """Simulates taking the Wi‑Fi hub (bridge) offline for a device. + Only applicable for sandbox workspaces and currently + implemented for August, TTLock, and IglooHome devices. + This will set the ``hub_disconnected`` error on the device, or mark the + IglooHome bridge offline in sandbox. + + :param device_id: ID of the device whose hub you want to disconnect.""" json_payload = {} if device_id is not None: @@ -76,6 +129,13 @@ def disconnect_from_hub(self, *, device_id: str) -> None: return None def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: + """Toggle the simulated Nuki Smart Hosting subscription for a device (sandbox only). + Send ``is_expired: true`` to simulate an expired subscription, or ``false`` to simulate an active subscription. + The actual device error is created/cleared by the poller after this state change. + + :param device_id: + + :param is_expired:""" json_payload = {} if device_id is not None: @@ -88,6 +148,10 @@ def paid_subscription(self, *, device_id: str, is_expired: bool) -> None: return None def remove(self, *, device_id: str) -> None: + """Simulates removing a device from Seam. Only applicable for `sandbox devices `_. See also `Testing Your App Against Device Disconnection and Removal `_. + + :param device_id: ID of the device that you want to simulate removing from Seam. + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/devices_unmanaged.py b/seam/routes/devices_unmanaged.py index efee558..9c0e865 100644 --- a/seam/routes/devices_unmanaged.py +++ b/seam/routes/devices_unmanaged.py @@ -10,6 +10,17 @@ class AbstractDevicesUnmanaged(abc.ABC): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: + """Returns a specified `unmanaged device `_. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + You must specify either ``device_id`` or ``name``. + + :param device_id: ID of the unmanaged device that you want to get. + + :param name: Name of the unmanaged device that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -33,6 +44,43 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: + """Returns a list of all `unmanaged devices `_. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type for which you want to list devices. + + :param device_types: Array of device types for which you want to list devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer for which you want to list devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -43,6 +91,16 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: + """Updates a specified `unmanaged device `_. To convert an unmanaged device to managed, set ``is_managed`` to ``true``. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + :param device_id: ID of the unmanaged device that you want to update. + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. + + :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. + """ raise NotImplementedError() @@ -54,6 +112,17 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> UnmanagedDevice: + """Returns a specified `unmanaged device `_. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + You must specify either ``device_id`` or ``name``. + + :param device_id: ID of the unmanaged device that you want to get. + + :param name: Name of the unmanaged device that you want to get. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -85,6 +154,43 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[UnmanagedDevice]: + """Returns a list of all `unmanaged devices `_. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type for which you want to list devices. + + :param device_types: Array of device types for which you want to list devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer for which you want to list devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -131,6 +237,16 @@ def update( custom_metadata: Optional[Dict[str, Any]] = None, is_managed: Optional[bool] = None ) -> None: + """Updates a specified `unmanaged device `_. To convert an unmanaged device to managed, set ``is_managed`` to ``true``. + + An unmanaged device has a limited set of visible properties and a subset of supported events. You cannot control an unmanaged device. Any `access codes `_ on an unmanaged device are unmanaged. To control an unmanaged device with Seam, `convert it to a managed device `_. + + :param device_id: ID of the unmanaged device that you want to update. + + :param custom_metadata: Custom metadata that you want to associate with the device. Supports up to 50 JSON key:value pairs. + + :param is_managed: Indicates whether the device is managed. Set this parameter to ``true`` to convert an unmanaged device to managed. + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/events.py b/seam/routes/events.py index cb35257..30ce08e 100644 --- a/seam/routes/events.py +++ b/seam/routes/events.py @@ -14,6 +14,15 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: + """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. + + :param event_id: Unique identifier for the event that you want to get. + + :param device_id: Unique identifier for the device that triggered the event that you want to get. + + :param event_type: Type of the event that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -49,6 +58,65 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: + """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. + + :param access_code_id: ID of the access code for which you want to list events. + + :param access_code_ids: IDs of the access codes for which you want to list events. + + :param access_grant_id: ID of the access grant for which you want to list events. + + :param access_grant_ids: IDs of the access grants for which you want to list events. + + :param access_method_id: ID of the access method for which you want to list events. + + :param access_method_ids: IDs of the access methods for which you want to list events. + + :param acs_access_group_id: ID of the ACS access group for which you want to list events. + + :param acs_credential_id: ID of the ACS credential for which you want to list events. + + :param acs_encoder_id: ID of the ACS encoder for which you want to list events. + + :param acs_entrance_id: ID of the ACS entrance for which you want to list events. + + :param acs_system_id: ID of the access system for which you want to list events. + + :param acs_system_ids: IDs of the access systems for which you want to list events. + + :param acs_user_id: ID of the ACS user for which you want to list events. + + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. + + :param connect_webview_id: ID of the Connect Webview for which you want to list events. + + :param connected_account_id: ID of the connected account for which you want to list events. + + :param customer_key: Customer key for which you want to list events. + + :param device_id: ID of the device for which you want to list events. + + :param device_ids: IDs of the devices for which you want to list events. + + :param event_ids: IDs of the events that you want to list. + + :param event_type: Type of the events that you want to list. + + :param event_types: Types of the events that you want to list. + + :param limit: Numerical limit on the number of events to return. + + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. + + :param space_id: ID of the space for which you want to list events. + + :param space_ids: IDs of the spaces for which you want to list events. + + :param unstable_offset: Offset for the events that you want to list. + + :param user_identity_id: ID of the user identity for which you want to list events. + + :returns: OK""" raise NotImplementedError() @@ -64,6 +132,15 @@ def get( device_id: Optional[str] = None, event_type: Optional[str] = None ) -> SeamEvent: + """Returns a specified event. This endpoint returns the same event that would be sent to a `webhook `_, but it enables you to retrieve an event that already took place. + + :param event_id: Unique identifier for the event that you want to get. + + :param device_id: Unique identifier for the device that triggered the event that you want to get. + + :param event_type: Type of the event that you want to get. + + :returns: OK""" json_payload = {} if event_id is not None: @@ -109,6 +186,65 @@ def list( unstable_offset: Optional[float] = None, user_identity_id: Optional[str] = None ) -> List[SeamEvent]: + """Returns a list of all events. This endpoint returns the same events that would be sent to a `webhook `_, but it enables you to filter or see events that already took place. + + :param access_code_id: ID of the access code for which you want to list events. + + :param access_code_ids: IDs of the access codes for which you want to list events. + + :param access_grant_id: ID of the access grant for which you want to list events. + + :param access_grant_ids: IDs of the access grants for which you want to list events. + + :param access_method_id: ID of the access method for which you want to list events. + + :param access_method_ids: IDs of the access methods for which you want to list events. + + :param acs_access_group_id: ID of the ACS access group for which you want to list events. + + :param acs_credential_id: ID of the ACS credential for which you want to list events. + + :param acs_encoder_id: ID of the ACS encoder for which you want to list events. + + :param acs_entrance_id: ID of the ACS entrance for which you want to list events. + + :param acs_system_id: ID of the access system for which you want to list events. + + :param acs_system_ids: IDs of the access systems for which you want to list events. + + :param acs_user_id: ID of the ACS user for which you want to list events. + + :param between: Lower and upper timestamps to define an exclusive interval containing the events that you want to list. You must include ``since`` or ``between``. + + :param connect_webview_id: ID of the Connect Webview for which you want to list events. + + :param connected_account_id: ID of the connected account for which you want to list events. + + :param customer_key: Customer key for which you want to list events. + + :param device_id: ID of the device for which you want to list events. + + :param device_ids: IDs of the devices for which you want to list events. + + :param event_ids: IDs of the events that you want to list. + + :param event_type: Type of the events that you want to list. + + :param event_types: Types of the events that you want to list. + + :param limit: Numerical limit on the number of events to return. + + :param since: Timestamp to indicate the beginning generation time for the events that you want to list. You must include ``since`` or ``between``. + + :param space_id: ID of the space for which you want to list events. + + :param space_ids: IDs of the spaces for which you want to list events. + + :param unstable_offset: Offset for the events that you want to list. + + :param user_identity_id: ID of the user identity for which you want to list events. + + :returns: OK""" json_payload = {} if access_code_id is not None: diff --git a/seam/routes/instant_keys.py b/seam/routes/instant_keys.py index e5ecaa8..b1c3bf2 100644 --- a/seam/routes/instant_keys.py +++ b/seam/routes/instant_keys.py @@ -8,6 +8,9 @@ class AbstractInstantKeys(abc.ABC): @abc.abstractmethod def delete(self, *, instant_key_id: str) -> None: + """Deletes a specified `Instant Key `_. + + :param instant_key_id: ID of the Instant Key that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -17,10 +20,22 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: + """Gets an `instant key `_. + + :param instant_key_id: ID of the instant key to get. + + :param instant_key_url: URL of the instant key to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: + """Returns a list of all `instant keys `_. + + :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. + + :returns: OK""" raise NotImplementedError() @@ -30,6 +45,9 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def delete(self, *, instant_key_id: str) -> None: + """Deletes a specified `Instant Key `_. + + :param instant_key_id: ID of the Instant Key that you want to delete.""" json_payload = {} if instant_key_id is not None: @@ -45,6 +63,13 @@ def get( instant_key_id: Optional[str] = None, instant_key_url: Optional[str] = None ) -> InstantKey: + """Gets an `instant key `_. + + :param instant_key_id: ID of the instant key to get. + + :param instant_key_url: URL of the instant key to get. + + :returns: OK""" json_payload = {} if instant_key_id is not None: @@ -57,6 +82,11 @@ def get( return InstantKey.from_dict(res["instant_key"]) def list(self, *, user_identity_id: Optional[str] = None) -> List[InstantKey]: + """Returns a list of all `instant keys `_. + + :param user_identity_id: ID of the user identity by which you want to filter the list of Instant Keys. + + :returns: OK""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/locks.py b/seam/routes/locks.py index c8ba40c..23a41b0 100644 --- a/seam/routes/locks.py +++ b/seam/routes/locks.py @@ -22,12 +22,33 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Configures the auto-lock setting for a specified `lock `_. + + :param auto_lock_enabled: Whether to enable or disable auto-lock. + + :param device_id: ID of the lock for which you want to configure the auto-lock. + + :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified `lock `_. + + :param device_id: ID of the lock that you want to get. + + :param name: Name of the lock that you want to get. + + :returns: OK + + .. deprecated:: + Use ``/devices/get`` instead.""" raise NotImplementedError() @abc.abstractmethod @@ -51,6 +72,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `locks `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type of the locks that you want to list. + + :param device_types: Device types of the locks that you want to list. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer of the locks that you want to list. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -60,6 +116,13 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. + + :param device_id: ID of the lock that you want to lock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -69,6 +132,13 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. + + :param device_id: ID of the lock that you want to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -90,6 +160,17 @@ def configure_auto_lock( auto_lock_delay_seconds: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Configures the auto-lock setting for a specified `lock `_. + + :param auto_lock_enabled: Whether to enable or disable auto-lock. + + :param device_id: ID of the lock for which you want to configure the auto-lock. + + :param auto_lock_delay_seconds: Delay in seconds before the lock automatically locks. Required when enabling auto-lock. Must be between 1 and 60. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if auto_lock_enabled is not None: @@ -116,6 +197,16 @@ def configure_auto_lock( def get( self, *, device_id: Optional[str] = None, name: Optional[str] = None ) -> Device: + """Returns a specified `lock `_. + + :param device_id: ID of the lock that you want to get. + + :param name: Name of the lock that you want to get. + + :returns: OK + + .. deprecated:: + Use ``/devices/get`` instead.""" json_payload = {} if device_id is not None: @@ -147,6 +238,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `locks `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type of the locks that you want to list. + + :param device_types: Device types of the locks that you want to list. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer of the locks that you want to list. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -192,6 +318,13 @@ def lock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Locks a `lock `_. See also `Locking and Unlocking Smart Locks `_. + + :param device_id: ID of the lock that you want to lock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -217,6 +350,13 @@ def unlock_door( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Unlocks a `lock `_. See also `Locking and Unlocking Smart Locks `_. + + :param device_id: ID of the lock that you want to unlock. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/locks_simulate.py b/seam/routes/locks_simulate.py index 6eeb24b..937cb37 100644 --- a/seam/routes/locks_simulate.py +++ b/seam/routes/locks_simulate.py @@ -15,6 +15,15 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. + + :param code: Code that you want to simulate entering on a keypad. + + :param device_id: ID of the device for which you want to simulate a keypad code entry. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -24,6 +33,13 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. + + :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -39,6 +55,15 @@ def keypad_code_entry( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates the entry of a code on a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. + + :param code: Code that you want to simulate entering on a keypad. + + :param device_id: ID of the device for which you want to simulate a keypad code entry. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if code is not None: @@ -66,6 +91,13 @@ def manual_lock_via_keypad( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Simulates a manual lock action using a keypad. You can only perform this action for `August `_ devices within `sandbox workspaces `_. + + :param device_id: ID of the device for which you want to simulate a manual lock action using a keypad. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors.py b/seam/routes/noise_sensors.py index ef307b9..efd90f4 100644 --- a/seam/routes/noise_sensors.py +++ b/seam/routes/noise_sensors.py @@ -42,6 +42,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `noise sensors `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type of the noise sensors that you want to list. + + :param device_types: Device types of the noise sensors that you want to list. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturers of the noise sensors that you want to list. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" raise NotImplementedError() @@ -82,6 +117,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `noise sensors `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type of the noise sensors that you want to list. + + :param device_types: Device types of the noise sensors that you want to list. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturers of the noise sensors that you want to list. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: diff --git a/seam/routes/noise_sensors_noise_thresholds.py b/seam/routes/noise_sensors_noise_thresholds.py index 034300a..8c5c9f0 100644 --- a/seam/routes/noise_sensors_noise_thresholds.py +++ b/seam/routes/noise_sensors_noise_thresholds.py @@ -17,18 +17,48 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: + """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + + :param device_id: ID of the device for which you want to create a noise threshold. + + :param ends_daily_at: Time at which the new noise threshold should become inactive daily. + + :param starts_daily_at: Time at which the new noise threshold should become active daily. + + :param name: Name of the new noise threshold. + + :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, device_id: str, noise_threshold_id: str) -> None: + """Deletes a `noise threshold `_ from a `noise sensor `_. + + :param device_id: ID of the device that contains the noise threshold that you want to delete. + + :param noise_threshold_id: ID of the noise threshold that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, noise_threshold_id: str) -> NoiseThreshold: + """Returns a specified `noise threshold `_ for a `noise sensor `_. + + :param noise_threshold_id: ID of the noise threshold that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list(self, *, device_id: str) -> List[NoiseThreshold]: + """Returns a list of all `noise thresholds `_ for a `noise sensor `_. + + :param device_id: ID of the device for which you want to list noise thresholds. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -43,6 +73,22 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: + """Updates a `noise threshold `_ for a `noise sensor `_. + + :param device_id: ID of the device that contains the noise threshold that you want to update. + + :param noise_threshold_id: ID of the noise threshold that you want to update. + + :param ends_daily_at: Time at which the noise threshold should become inactive daily. + + :param name: Name of the noise threshold that you want to update. + + :param noise_threshold_decibels: Noise level in decibels for the noise threshold. + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. + + :param starts_daily_at: Time at which the noise threshold should become active daily. + """ raise NotImplementedError() @@ -61,6 +107,21 @@ def create( noise_threshold_decibels: Optional[float] = None, noise_threshold_nrs: Optional[float] = None ) -> NoiseThreshold: + """Creates a new `noise threshold `_ for a `noise sensor `_. Thresholds represent the limits of noise tolerated at a property, which can be customized for each hour of the day. Each device has its own default thresholds, but you can use the Seam API to modify them. + + :param device_id: ID of the device for which you want to create a noise threshold. + + :param ends_daily_at: Time at which the new noise threshold should become inactive daily. + + :param starts_daily_at: Time at which the new noise threshold should become active daily. + + :param name: Name of the new noise threshold. + + :param noise_threshold_decibels: Noise level in decibels for the new noise threshold. + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the new noise threshold. This parameter is only relevant for `Noiseaware sensors `_. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -83,6 +144,11 @@ def create( return NoiseThreshold.from_dict(res["noise_threshold"]) def delete(self, *, device_id: str, noise_threshold_id: str) -> None: + """Deletes a `noise threshold `_ from a `noise sensor `_. + + :param device_id: ID of the device that contains the noise threshold that you want to delete. + + :param noise_threshold_id: ID of the noise threshold that you want to delete.""" json_payload = {} if device_id is not None: @@ -95,6 +161,11 @@ def delete(self, *, device_id: str, noise_threshold_id: str) -> None: return None def get(self, *, noise_threshold_id: str) -> NoiseThreshold: + """Returns a specified `noise threshold `_ for a `noise sensor `_. + + :param noise_threshold_id: ID of the noise threshold that you want to get. + + :returns: OK""" json_payload = {} if noise_threshold_id is not None: @@ -105,6 +176,11 @@ def get(self, *, noise_threshold_id: str) -> NoiseThreshold: return NoiseThreshold.from_dict(res["noise_threshold"]) def list(self, *, device_id: str) -> List[NoiseThreshold]: + """Returns a list of all `noise thresholds `_ for a `noise sensor `_. + + :param device_id: ID of the device for which you want to list noise thresholds. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -127,6 +203,22 @@ def update( noise_threshold_nrs: Optional[float] = None, starts_daily_at: Optional[str] = None ) -> None: + """Updates a `noise threshold `_ for a `noise sensor `_. + + :param device_id: ID of the device that contains the noise threshold that you want to update. + + :param noise_threshold_id: ID of the noise threshold that you want to update. + + :param ends_daily_at: Time at which the noise threshold should become inactive daily. + + :param name: Name of the noise threshold that you want to update. + + :param noise_threshold_decibels: Noise level in decibels for the noise threshold. + + :param noise_threshold_nrs: Noise level in Noiseaware Noise Risk Score (NRS) for the noise threshold. This parameter is only relevant for `Noiseaware sensors `_. + + :param starts_daily_at: Time at which the noise threshold should become active daily. + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/noise_sensors_simulate.py b/seam/routes/noise_sensors_simulate.py index 2c1a2cf..1ce320f 100644 --- a/seam/routes/noise_sensors_simulate.py +++ b/seam/routes/noise_sensors_simulate.py @@ -7,6 +7,10 @@ class AbstractNoiseSensorsSimulate(abc.ABC): @abc.abstractmethod def trigger_noise_threshold(self, *, device_id: str) -> None: + """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. + + :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. + """ raise NotImplementedError() @@ -16,6 +20,10 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def trigger_noise_threshold(self, *, device_id: str) -> None: + """Simulates the triggering of a `noise threshold `_ for a `noise sensor `_ in a `sandbox workspace `_. + + :param device_id: ID of the device for which you want to simulate the triggering of a noise threshold. + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/phones.py b/seam/routes/phones.py index 6b1896a..2c19692 100644 --- a/seam/routes/phones.py +++ b/seam/routes/phones.py @@ -14,10 +14,18 @@ def simulate(self) -> AbstractPhonesSimulate: @abc.abstractmethod def deactivate(self, *, device_id: str) -> None: + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. + + :param device_id: Device ID of the phone that you want to deactivate.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, device_id: str) -> Phone: + """Returns a specified `phone `_. + + :param device_id: Device ID of the phone that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -27,6 +35,13 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: + """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. + + :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. + + :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. + + :returns: OK""" raise NotImplementedError() @@ -41,6 +56,9 @@ def simulate(self) -> PhonesSimulate: return self._simulate def deactivate(self, *, device_id: str) -> None: + """Deactivates a phone, which is useful, for example, if a user has lost their phone. For more information, see `App User Lost Phone Process `_. + + :param device_id: Device ID of the phone that you want to deactivate.""" json_payload = {} if device_id is not None: @@ -51,6 +69,11 @@ def deactivate(self, *, device_id: str) -> None: return None def get(self, *, device_id: str) -> Phone: + """Returns a specified `phone `_. + + :param device_id: Device ID of the phone that you want to get. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -66,6 +89,13 @@ def list( acs_credential_id: Optional[str] = None, owner_user_identity_id: Optional[str] = None ) -> List[Phone]: + """Returns a list of all `phones `_. To filter the list of returned phones by a specific owner user identity or credential, include the ``owner_user_identity_id`` or ``acs_credential_id``, respectively, in the request body. + + :param acs_credential_id: ID of the `credential `_ by which you want to filter the list of returned phones. + + :param owner_user_identity_id: ID of the user identity that represents the owner by which you want to filter the list of returned phones. + + :returns: OK""" json_payload = {} if acs_credential_id is not None: diff --git a/seam/routes/phones_simulate.py b/seam/routes/phones_simulate.py index e5b3871..3144dba 100644 --- a/seam/routes/phones_simulate.py +++ b/seam/routes/phones_simulate.py @@ -15,6 +15,17 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: + """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. + + :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. + + :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. + + :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. + + :param phone_metadata: Metadata that you want to associate with the simulated phone. + + :returns: OK""" raise NotImplementedError() @@ -31,6 +42,17 @@ def create_sandbox_phone( custom_sdk_installation_id: Optional[str] = None, phone_metadata: Optional[Dict[str, Any]] = None ) -> Phone: + """Creates a new simulated phone in a `sandbox workspace `_. See also `Creating a Simulated Phone for a User Identity `_. + + :param user_identity_id: ID of the user identity that you want to associate with the simulated phone. + + :param assa_abloy_metadata: ASSA ABLOY metadata that you want to associate with the simulated phone. + + :param custom_sdk_installation_id: ID of the custom SDK installation that you want to use for the simulated phone. + + :param phone_metadata: Metadata that you want to associate with the simulated phone. + + :returns: OK""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/spaces.py b/seam/routes/spaces.py index 238f4ac..4ebb7ed 100644 --- a/seam/routes/spaces.py +++ b/seam/routes/spaces.py @@ -8,16 +8,32 @@ class AbstractSpaces(abc.ABC): @abc.abstractmethod def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: + """Adds `entrances `_ to a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the space. + + :param space_id: ID of the space to which you want to add entrances.""" raise NotImplementedError() @abc.abstractmethod def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Adds a `connected account `_ to a specific space. + + :param connected_account_id: ID of the connected account that you want to add to the space. + + :param space_id: ID of the space to which you want to add the connected account. + """ raise NotImplementedError() @abc.abstractmethod def add_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Adds devices to a specific space. + + :param device_ids: IDs of the devices that you want to add to the space. + + :param space_id: ID of the space to which you want to add devices.""" raise NotImplementedError() @abc.abstractmethod @@ -32,16 +48,43 @@ def create( device_ids: Optional[List[str]] = None, space_key: Optional[str] = None ) -> Space: + """Creates a new space. + + :param name: Name of the space that you want to create. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. + + :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. + + :param customer_data: Reservation/stay-related defaults for the space. + + :param customer_key: Customer key for which you want to create the space. + + :param device_ids: IDs of the devices that you want to add to the new space. + + :param space_key: Unique key for the space within the workspace. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, space_id: str) -> None: + """Deletes a space. + + :param space_id: ID of the space that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get( self, *, space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Gets a space. + + :param space_id: ID of the space that you want to get. + + :param space_key: Unique key of the space that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +96,17 @@ def get_related( space_ids: Optional[List[str]] = None, space_keys: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Spaces. + + :param exclude: + + :param include: + + :param space_ids: IDs of the spaces that you want to get along with their related resources. + + :param space_keys: Keys of the spaces that you want to get along with their related resources. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -65,22 +119,51 @@ def list( search: Optional[str] = None, space_key: Optional[str] = None ) -> List[Space]: + """Returns a list of all spaces. + + :param customer_key: Customer key for which you want to list spaces. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. + + :param space_key: Filter spaces by space_key. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: + """Removes `entrances `_ from a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove entrances.""" raise NotImplementedError() @abc.abstractmethod def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Removes a `connected account `_ from a specific space. + + :param connected_account_id: ID of the connected account that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove the connected account. + """ raise NotImplementedError() @abc.abstractmethod def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Removes devices from a specific space. + + :param device_ids: IDs of the devices that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove devices.""" raise NotImplementedError() @abc.abstractmethod @@ -94,6 +177,21 @@ def update( space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Updates an existing space. + + :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. + + :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. + + :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. + + :param name: Name of the space. + + :param space_id: ID of the space that you want to update. + + :param space_key: Unique key of the space that you want to update. + + :returns: OK""" raise NotImplementedError() @@ -103,6 +201,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> None: + """Adds `entrances `_ to a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the space. + + :param space_id: ID of the space to which you want to add entrances.""" json_payload = {} if acs_entrance_ids is not None: @@ -117,6 +220,12 @@ def add_acs_entrances(self, *, acs_entrance_ids: List[str], space_id: str) -> No def add_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Adds a `connected account `_ to a specific space. + + :param connected_account_id: ID of the connected account that you want to add to the space. + + :param space_id: ID of the space to which you want to add the connected account. + """ json_payload = {} if connected_account_id is not None: @@ -129,6 +238,11 @@ def add_connected_account( return None def add_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Adds devices to a specific space. + + :param device_ids: IDs of the devices that you want to add to the space. + + :param space_id: ID of the space to which you want to add devices.""" json_payload = {} if device_ids is not None: @@ -151,6 +265,23 @@ def create( device_ids: Optional[List[str]] = None, space_key: Optional[str] = None ) -> Space: + """Creates a new space. + + :param name: Name of the space that you want to create. + + :param acs_entrance_ids: IDs of the entrances that you want to add to the new space. + + :param connected_account_ids: IDs of connected accounts to associate with the new space. Persisted on seam.location_third_party_account so the UI can show which provider account(s) a space came from. + + :param customer_data: Reservation/stay-related defaults for the space. + + :param customer_key: Customer key for which you want to create the space. + + :param device_ids: IDs of the devices that you want to add to the new space. + + :param space_key: Unique key for the space within the workspace. + + :returns: OK""" json_payload = {} if name is not None: @@ -173,6 +304,9 @@ def create( return Space.from_dict(res["space"]) def delete(self, *, space_id: str) -> None: + """Deletes a space. + + :param space_id: ID of the space that you want to delete.""" json_payload = {} if space_id is not None: @@ -185,6 +319,13 @@ def delete(self, *, space_id: str) -> None: def get( self, *, space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Gets a space. + + :param space_id: ID of the space that you want to get. + + :param space_key: Unique key of the space that you want to get. + + :returns: OK""" json_payload = {} if space_id is not None: @@ -204,6 +345,17 @@ def get_related( space_ids: Optional[List[str]] = None, space_keys: Optional[List[str]] = None ) -> Batch: + """Gets all related resources for one or more Spaces. + + :param exclude: + + :param include: + + :param space_ids: IDs of the spaces that you want to get along with their related resources. + + :param space_keys: Keys of the spaces that you want to get along with their related resources. + + :returns: OK""" json_payload = {} if exclude is not None: @@ -228,6 +380,19 @@ def list( search: Optional[str] = None, space_key: Optional[str] = None ) -> List[Space]: + """Returns a list of all spaces. + + :param customer_key: Customer key for which you want to list spaces. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned spaces to include all records that satisfy a partial match using ``name``, ``space_key``, or ``customer_key``. + + :param space_key: Filter spaces by space_key. + + :returns: OK""" json_payload = {} if customer_key is not None: @@ -248,6 +413,11 @@ def list( def remove_acs_entrances( self, *, acs_entrance_ids: List[str], space_id: str ) -> None: + """Removes `entrances `_ from a specific space. + + :param acs_entrance_ids: IDs of the entrances that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove entrances.""" json_payload = {} if acs_entrance_ids is not None: @@ -262,6 +432,12 @@ def remove_acs_entrances( def remove_connected_account( self, *, connected_account_id: str, space_id: str ) -> None: + """Removes a `connected account `_ from a specific space. + + :param connected_account_id: ID of the connected account that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove the connected account. + """ json_payload = {} if connected_account_id is not None: @@ -274,6 +450,11 @@ def remove_connected_account( return None def remove_devices(self, *, device_ids: List[str], space_id: str) -> None: + """Removes devices from a specific space. + + :param device_ids: IDs of the devices that you want to remove from the space. + + :param space_id: ID of the space from which you want to remove devices.""" json_payload = {} if device_ids is not None: @@ -295,6 +476,21 @@ def update( space_id: Optional[str] = None, space_key: Optional[str] = None ) -> Space: + """Updates an existing space. + + :param acs_entrance_ids: IDs of the entrances that you want to set for the space. If specified, this will replace all existing entrances. + + :param customer_data: Reservation/stay-related defaults for the space. Only the keys you provide are updated; omit a key to leave it unchanged. Pass null on a key to clear it. + + :param device_ids: IDs of the devices that you want to set for the space. If specified, this will replace all existing devices. + + :param name: Name of the space. + + :param space_id: ID of the space that you want to update. + + :param space_key: Unique key of the space that you want to update. + + :returns: OK""" json_payload = {} if acs_entrance_ids is not None: diff --git a/seam/routes/thermostats.py b/seam/routes/thermostats.py index d1eb2d1..f074107 100644 --- a/seam/routes/thermostats.py +++ b/seam/routes/thermostats.py @@ -36,6 +36,15 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Activates a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to activate. + + :param device_id: ID of the thermostat device for which you want to activate a climate preset. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -47,6 +56,17 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `cool mode `_. + + :param device_id: ID of the thermostat device that you want to set to cool mode. + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -66,10 +86,42 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Creates a `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Unique key to identify the `climate preset `_. + + :param device_id: ID of the thermostat device for which you want create a climate preset. + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. + + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. + + :param name: User-friendly name to identify the `climate preset `_. + """ raise NotImplementedError() @abc.abstractmethod def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: + """Deletes a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to delete. + + :param device_id: ID of the thermostat device for which you want to delete a climate preset. + """ raise NotImplementedError() @abc.abstractmethod @@ -81,6 +133,17 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `heat mode `_. + + :param device_id: ID of the thermostat device that you want to set to heat mode. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -94,6 +157,21 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. + + :param device_id: ID of the thermostat device that you want to set to heat-cool mode. + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -117,6 +195,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `thermostats `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type by which you want to filter thermostat devices. + + :param device_types: Array of device types by which you want to filter thermostat devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer by which you want to filter thermostat devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -126,12 +239,25 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `"off" mode `_. + + :param device_id: ID of the thermostat device that you want to set to off mode. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: + """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. + + :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. + """ raise NotImplementedError() @abc.abstractmethod @@ -143,6 +269,17 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the `fan mode setting `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to set the fan mode. + + :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. + + :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -157,6 +294,23 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the `HVAC mode `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to set the HVAC mode. + + :param hvac_mode_setting: + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -169,6 +323,18 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: + """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + + :param device_id: ID of the thermostat device for which you want to set a temperature threshold. + + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. + + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. + + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. + + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. + """ raise NotImplementedError() @abc.abstractmethod @@ -188,6 +354,32 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Updates a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Unique key to identify the `climate preset `_. + + :param device_id: ID of the thermostat device for which you want to update a climate preset. + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. + + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. + + :param name: User-friendly name to identify the `climate preset `_. + """ raise NotImplementedError() @abc.abstractmethod @@ -204,6 +396,27 @@ def update_weekly_program( wednesday_program_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. + + :param device_id: ID of the thermostat device for which you want to update the weekly program. + + :param friday_program_id: ID of the thermostat daily program to run on Fridays. + + :param monday_program_id: ID of the thermostat daily program to run on Mondays. + + :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. + + :param sunday_program_id: ID of the thermostat daily program to run on Sundays. + + :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. + + :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. + + :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -236,6 +449,15 @@ def activate_climate_preset( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Activates a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to activate. + + :param device_id: ID of the thermostat device for which you want to activate a climate preset. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if climate_preset_key is not None: @@ -267,6 +489,17 @@ def cool( cooling_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `cool mode `_. + + :param device_id: ID of the thermostat device that you want to set to cool mode. + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -306,6 +539,32 @@ def create_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Creates a `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Unique key to identify the `climate preset `_. + + :param device_id: ID of the thermostat device for which you want create a climate preset. + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. + + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat or using the API can change the thermostat's settings. + + :param name: User-friendly name to identify the `climate preset `_. + """ json_payload = {} if climate_preset_key is not None: @@ -338,6 +597,12 @@ def create_climate_preset( return None def delete_climate_preset(self, *, climate_preset_key: str, device_id: str) -> None: + """Deletes a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to delete. + + :param device_id: ID of the thermostat device for which you want to delete a climate preset. + """ json_payload = {} if climate_preset_key is not None: @@ -357,6 +622,17 @@ def heat( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `heat mode `_. + + :param device_id: ID of the thermostat device that you want to set to heat mode. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -390,6 +666,21 @@ def heat_cool( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `heat-cool ("auto") mode `_. + + :param device_id: ID of the thermostat device that you want to set to heat-cool mode. + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -437,6 +728,41 @@ def list( unstable_location_id: Optional[str] = None, user_identifier_key: Optional[str] = None ) -> List[Device]: + """Returns a list of all `thermostats `_. + + :param connect_webview_id: ID of the Connect Webview for which you want to list devices. + + :param connected_account_id: ID of the connected account for which you want to list devices. + + :param connected_account_ids: Array of IDs of the connected accounts for which you want to list devices. + + :param created_before: Timestamp by which to limit returned devices. Returns devices created before this timestamp. + + :param custom_metadata_has: Set of key:value `custom metadata `_ pairs for which you want to list devices. + + :param customer_key: Customer key for which you want to list devices. + + :param device_ids: Array of device IDs for which you want to list devices. + + :param device_type: Device type by which you want to filter thermostat devices. + + :param device_types: Array of device types by which you want to filter thermostat devices. + + :param limit: Numerical limit on the number of devices to return. + + :param manufacturer: Manufacturer by which you want to filter thermostat devices. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned devices to include all records that satisfy a partial match using ``device_id`` (full or partial UUID prefix, minimum 4 characters), ``connected_account_id``, ``display_name``, ``custom_metadata`` or ``location.location_name``. + + :param space_id: ID of the space for which you want to list devices. + + :param unstable_location_id: Deprecated: Use ``space_id``. + + :param user_identifier_key: Your own internal user ID for the user for which you want to list devices. + + :returns: OK""" json_payload = {} if connect_webview_id is not None: @@ -482,6 +808,13 @@ def off( device_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets a specified `thermostat `_ to `"off" mode `_. + + :param device_id: ID of the thermostat device that you want to set to off mode. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -504,6 +837,12 @@ def off( def set_fallback_climate_preset( self, *, climate_preset_key: str, device_id: str ) -> None: + """Sets a specified `climate preset `_ as the `"fallback" `_ preset for a specified `thermostat `_. + + :param climate_preset_key: Climate preset key of the climate preset that you want to set as the fallback climate preset. + + :param device_id: ID of the thermostat device for which you want to set the fallback climate preset. + """ json_payload = {} if climate_preset_key is not None: @@ -523,6 +862,17 @@ def set_fan_mode( fan_mode_setting: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the `fan mode setting `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to set the fan mode. + + :param fan_mode: Deprecated: Use ``fan_mode_setting`` instead. Fan mode setting for the thermostat, such as ``auto``, ``on``, or ``circulate``. + + :param fan_mode_setting: `Fan mode setting `_ that you want to set for the thermostat. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -557,6 +907,23 @@ def set_hvac_mode( heating_set_point_fahrenheit: Optional[float] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Sets the `HVAC mode `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to set the HVAC mode. + + :param hvac_mode_setting: + + :param cooling_set_point_celsius: `Cooling set point `_ in °C that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param cooling_set_point_fahrenheit: `Cooling set point `_ in °F that you want to set for the thermostat. You must set one of the ``cooling_set_point`` parameters. + + :param heating_set_point_celsius: `Heating set point `_ in °C that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param heating_set_point_fahrenheit: `Heating set point `_ in °F that you want to set for the thermostat. You must set one of the ``heating_set_point`` parameters. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -595,6 +962,18 @@ def set_temperature_threshold( upper_limit_celsius: Optional[float] = None, upper_limit_fahrenheit: Optional[float] = None ) -> None: + """Sets a `temperature threshold `_ for a specified thermostat. Seam emits a ``thermostat.temperature_threshold_exceeded`` event and adds a warning on a thermostat if it reports a temperature outside the threshold range. + + :param device_id: ID of the thermostat device for which you want to set a temperature threshold. + + :param lower_limit_celsius: Lower temperature limit in in °C. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. + + :param lower_limit_fahrenheit: Lower temperature limit in in °F. Seam alerts you if the reported temperature is lower than this value. You can specify either ``lower_limit`` but not both. + + :param upper_limit_celsius: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. + + :param upper_limit_fahrenheit: Upper temperature limit in in °C. Seam alerts you if the reported temperature is higher than this value. You can specify either ``upper_limit`` but not both. + """ json_payload = {} if device_id is not None: @@ -628,6 +1007,32 @@ def update_climate_preset( manual_override_allowed: Optional[bool] = None, name: Optional[str] = None ) -> None: + """Updates a specified `climate preset `_ for a specified `thermostat `_. + + :param climate_preset_key: Unique key to identify the `climate preset `_. + + :param device_id: ID of the thermostat device for which you want to update a climate preset. + + :param climate_preset_mode: The climate preset mode for the thermostat, based on the available climate preset modes reported by the device. + + :param cooling_set_point_celsius: Temperature to which the thermostat should cool (in °C). See also `Set Points `_. + + :param cooling_set_point_fahrenheit: Temperature to which the thermostat should cool (in °F). See also `Set Points `_. + + :param ecobee_metadata: Metadata specific to the Ecobee climate, if applicable. + + :param fan_mode_setting: Desired `fan mode setting `_, such as ``on``, ``auto``, or ``circulate``. + + :param heating_set_point_celsius: Temperature to which the thermostat should heat (in °C). See also `Set Points `_. + + :param heating_set_point_fahrenheit: Temperature to which the thermostat should heat (in °F). See also `Set Points `_. + + :param hvac_mode_setting: Desired `HVAC mode `_ setting, such as ``heat``, ``cool``, ``heat_cool``, or ``off``. + + :param manual_override_allowed: Deprecated: Use 'thermostat_schedule.is_override_allowed' Indicates whether a person at the thermostat can change the thermostat's settings. See `Specifying Manual Override Permissions `_. + + :param name: User-friendly name to identify the `climate preset `_. + """ json_payload = {} if climate_preset_key is not None: @@ -672,6 +1077,27 @@ def update_weekly_program( wednesday_program_id: Optional[str] = None, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates the thermostat weekly program for a thermostat device. To configure a weekly program, specify the ID of the daily program that you want to use for each day of the week. When you update a weekly program, the set of programs that you specify overwrites any previous weekly program for the thermostat. + + :param device_id: ID of the thermostat device for which you want to update the weekly program. + + :param friday_program_id: ID of the thermostat daily program to run on Fridays. + + :param monday_program_id: ID of the thermostat daily program to run on Mondays. + + :param saturday_program_id: ID of the thermostat daily program to run on Saturdays. + + :param sunday_program_id: ID of the thermostat daily program to run on Sundays. + + :param thursday_program_id: ID of the thermostat daily program to run on Thursdays. + + :param tuesday_program_id: ID of the thermostat daily program to run on Tuesdays. + + :param wednesday_program_id: ID of the thermostat daily program to run on Wednesdays. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if device_id is not None: diff --git a/seam/routes/thermostats_daily_programs.py b/seam/routes/thermostats_daily_programs.py index dbe80dd..56e886d 100644 --- a/seam/routes/thermostats_daily_programs.py +++ b/seam/routes/thermostats_daily_programs.py @@ -11,10 +11,23 @@ class AbstractThermostatsDailyPrograms(abc.ABC): def create( self, *, device_id: str, name: str, periods: List[Dict[str, Any]] ) -> ThermostatDailyProgram: + """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. + + :param device_id: ID of the thermostat device for which you want to create a daily program. + + :param name: Name of the thermostat daily program. + + :param periods: Array of thermostat daily program periods. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, thermostat_daily_program_id: str) -> None: + """Deletes a thermostat daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. + """ raise NotImplementedError() @abc.abstractmethod @@ -26,6 +39,17 @@ def update( thermostat_daily_program_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. + + :param name: Name of the thermostat daily program that you want to update. + + :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @@ -37,6 +61,15 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): def create( self, *, device_id: str, name: str, periods: List[Dict[str, Any]] ) -> ThermostatDailyProgram: + """Creates a new thermostat daily program. A daily program consists of a set of periods, where each period includes a start time and the key of a configured climate preset. Once you have defined a daily program, you can assign it to one or more days within a weekly program. + + :param device_id: ID of the thermostat device for which you want to create a daily program. + + :param name: Name of the thermostat daily program. + + :param periods: Array of thermostat daily program periods. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -51,6 +84,10 @@ def create( return ThermostatDailyProgram.from_dict(res["thermostat_daily_program"]) def delete(self, *, thermostat_daily_program_id: str) -> None: + """Deletes a thermostat daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to delete. + """ json_payload = {} if thermostat_daily_program_id is not None: @@ -68,6 +105,17 @@ def update( thermostat_daily_program_id: str, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Updates a specified thermostat daily program. The periods that you specify overwrite any existing periods for the daily program. + + :param name: Name of the thermostat daily program that you want to update. + + :param periods: Array of thermostat daily program periods. The periods that you specify overwrite any existing periods for the daily program. + + :param thermostat_daily_program_id: ID of the thermostat daily program that you want to update. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} if name is not None: diff --git a/seam/routes/thermostats_schedules.py b/seam/routes/thermostats_schedules.py index e6fcb8a..24935b3 100644 --- a/seam/routes/thermostats_schedules.py +++ b/seam/routes/thermostats_schedules.py @@ -18,20 +18,53 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: + """Creates a new `thermostat schedule `_ for a specified `thermostat `_. + + :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. + + :param device_id: ID of the thermostat device for which you want to create a schedule. + + :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. + + :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. + + :param name: Name of the thermostat schedule. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, thermostat_schedule_id: str) -> None: + """Deletes a `thermostat schedule `_ for a specified `thermostat `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. + """ raise NotImplementedError() @abc.abstractmethod def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: + """Returns a specified `thermostat schedule `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: + """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to list schedules. + + :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -46,6 +79,22 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates a specified `thermostat schedule `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. + + :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. + + :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. + + :param name: Name of the thermostat schedule. + + :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. + """ raise NotImplementedError() @@ -65,6 +114,23 @@ def create( max_override_period_minutes: Optional[int] = None, name: Optional[str] = None ) -> ThermostatSchedule: + """Creates a new `thermostat schedule `_ for a specified `thermostat `_. + + :param climate_preset_key: Key of the `climate preset `_ to use for the new thermostat schedule. + + :param device_id: ID of the thermostat device for which you want to create a schedule. + + :param ends_at: Date and time at which the new thermostat schedule ends, in `ISO 8601 `_ format. + + :param starts_at: Date and time at which the new thermostat schedule starts, in `ISO 8601 `_ format. + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the new schedule is active. See also `Specifying Manual Override Permissions `_. + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. + + :param name: Name of the thermostat schedule. + + :returns: OK""" json_payload = {} if climate_preset_key is not None: @@ -87,6 +153,10 @@ def create( return ThermostatSchedule.from_dict(res["thermostat_schedule"]) def delete(self, *, thermostat_schedule_id: str) -> None: + """Deletes a `thermostat schedule `_ for a specified `thermostat `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to delete. + """ json_payload = {} if thermostat_schedule_id is not None: @@ -97,6 +167,11 @@ def delete(self, *, thermostat_schedule_id: str) -> None: return None def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: + """Returns a specified `thermostat schedule `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to get. + + :returns: OK""" json_payload = {} if thermostat_schedule_id is not None: @@ -109,6 +184,13 @@ def get(self, *, thermostat_schedule_id: str) -> ThermostatSchedule: def list( self, *, device_id: str, user_identifier_key: Optional[str] = None ) -> List[ThermostatSchedule]: + """Returns a list of all `thermostat schedules `_ for a specified `thermostat `_. + + :param device_id: ID of the thermostat device for which you want to list schedules. + + :param user_identifier_key: User identifier key by which to filter the list of returned thermostat schedules. + + :returns: OK""" json_payload = {} if device_id is not None: @@ -133,6 +215,22 @@ def update( name: Optional[str] = None, starts_at: Optional[str] = None ) -> None: + """Updates a specified `thermostat schedule `_. + + :param thermostat_schedule_id: ID of the thermostat schedule that you want to update. + + :param climate_preset_key: Key of the `climate preset `_ to use for the thermostat schedule. + + :param ends_at: Date and time at which the thermostat schedule ends, in `ISO 8601 `_ format. + + :param is_override_allowed: Indicates whether a person at the thermostat or using the API can change the thermostat's settings while the schedule is active. See also `Specifying Manual Override Permissions `_. + + :param max_override_period_minutes: Number of minutes for which a person at the thermostat or using the API can change the thermostat's settings after the activation of the scheduled climate preset. See also `Specifying Manual Override Permissions `_. + + :param name: Name of the thermostat schedule. + + :param starts_at: Date and time at which the thermostat schedule starts, in `ISO 8601 `_ format. + """ json_payload = {} if thermostat_schedule_id is not None: diff --git a/seam/routes/thermostats_simulate.py b/seam/routes/thermostats_simulate.py index b1155f9..94d2a1b 100644 --- a/seam/routes/thermostats_simulate.py +++ b/seam/routes/thermostats_simulate.py @@ -16,6 +16,20 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: + """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. + + :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. + + :param hvac_mode: HVAC mode that you want to simulate. + + :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. + + :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. + + :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. + + :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. + """ raise NotImplementedError() @abc.abstractmethod @@ -26,6 +40,14 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: + """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. + + :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. + + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. + + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. + """ raise NotImplementedError() @@ -44,6 +66,20 @@ def hvac_mode_adjusted( heating_set_point_celsius: Optional[float] = None, heating_set_point_fahrenheit: Optional[float] = None ) -> None: + """Simulates having adjusted the `HVAC mode `_ for a `thermostat `_. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. + + :param device_id: ID of the thermostat device for which you want to simulate having adjusted the HVAC mode. + + :param hvac_mode: HVAC mode that you want to simulate. + + :param cooling_set_point_celsius: Cooling `set point `_ in °C that you want to simulate. You must set ``cooling_set_point_celsius`` or ``cooling_set_point_fahrenheit``. + + :param cooling_set_point_fahrenheit: Cooling `set point `_ in °F that you want to simulate. You must set ``cooling_set_point_fahrenheit`` or ``cooling_set_point_celsius``. + + :param heating_set_point_celsius: Heating `set point `_ in °C that you want to simulate. You must set ``heating_set_point_celsius`` or ``heating_set_point_fahrenheit``. + + :param heating_set_point_fahrenheit: Heating `set point `_ in °F that you want to simulate. You must set ``heating_set_point_fahrenheit`` or ``heating_set_point_celsius``. + """ json_payload = {} if device_id is not None: @@ -70,6 +106,14 @@ def temperature_reached( temperature_celsius: Optional[float] = None, temperature_fahrenheit: Optional[float] = None ) -> None: + """Simulates a `thermostat `_ reaching a specified temperature. Only applicable for `sandbox devices `_. See also `Testing Your Thermostat App with Simulate Endpoints `_. + + :param device_id: ID of the thermostat device that you want to simulate reaching a specified temperature. + + :param temperature_celsius: Temperature in °C that you want simulate the thermostat reaching. You must set ``temperature_celsius`` or ``temperature_fahrenheit``. + + :param temperature_fahrenheit: Temperature in °F that you want simulate the thermostat reaching. You must set ``temperature_fahrenheit`` or ``temperature_celsius``. + """ json_payload = {} if device_id is not None: diff --git a/seam/routes/user_identities.py b/seam/routes/user_identities.py index d906c60..819ddd9 100644 --- a/seam/routes/user_identities.py +++ b/seam/routes/user_identities.py @@ -30,6 +30,18 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Adds a specified `access system user `_ to a specified `user identity `_. + + You must specify either ``user_identity_id`` or ``user_identity_key`` to identify the user identity. + + If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + + :param acs_user_id: ID of the access system user that you want to add to the user identity. + + :param user_identity_id: ID of the user identity to which you want to add an access system user. + + :param user_identity_key: Key of the user identity to which you want to add an access system user. + """ raise NotImplementedError() @abc.abstractmethod @@ -42,10 +54,26 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Creates a new `user identity `_. + + :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. + + :param email_address: Unique email address for the new user identity. + + :param full_name: Full name of the user associated with the new user identity. + + :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). + + :param user_identity_key: Unique key for the new user identity. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, user_identity_id: str) -> None: + """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. + + :param user_identity_id: ID of the user identity that you want to delete.""" raise NotImplementedError() @abc.abstractmethod @@ -56,6 +84,15 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: + """Generates a new `instant key `_ for a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to generate an instant key. + + :param customization_profile_id: + + :param max_use_count: Maximum number of times the instant key can be used. Default: 1. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -65,10 +102,23 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Returns a specified `user identity `_. + + :param user_identity_id: ID of the user identity that you want to get. + + :param user_identity_key: + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Grants a specified `user identity `_ access to a specified `device `_. + + :param device_id: ID of the managed device to which you want to grant access to the user identity. + + :param user_identity_id: ID of the user identity that you want to grant access to a device. + """ raise NotImplementedError() @abc.abstractmethod @@ -82,30 +132,77 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: + """Returns a list of all `user identities `_. + + :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. + + :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. + + :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: + """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: + """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: + """Returns a list of all `access systems `_ associated with a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: + """Returns a list of all `access system users `_ assigned to a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: + """Removes a specified `access system user `_ from a specified `user identity `_. + + :param acs_user_id: ID of the access system user that you want to remove from the user identity.. + + :param user_identity_id: ID of the user identity from which you want to remove an access system user. + """ raise NotImplementedError() @abc.abstractmethod def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Revokes access to a specified `device `_ from a specified `user identity `_. + + :param device_id: ID of the managed device to which you want to revoke access from the user identity. + + :param user_identity_id: ID of the user identity from which you want to revoke access to a device. + """ raise NotImplementedError() @abc.abstractmethod @@ -118,6 +215,17 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Updates a specified `user identity `_. + + :param user_identity_id: ID of the user identity that you want to update. + + :param email_address: Unique email address for the user identity. + + :param full_name: Full name of the user associated with the user identity. + + :param phone_number: Unique phone number for the user identity. + + :param user_identity_key: Unique key for the user identity.""" raise NotImplementedError() @@ -138,6 +246,18 @@ def add_acs_user( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Adds a specified `access system user `_ to a specified `user identity `_. + + You must specify either ``user_identity_id`` or ``user_identity_key`` to identify the user identity. + + If ``user_identity_key`` is provided, but the user identity doesn't exist, a new user identity will be created automatically using information from the ACS user. + + :param acs_user_id: ID of the access system user that you want to add to the user identity. + + :param user_identity_id: ID of the user identity to which you want to add an access system user. + + :param user_identity_key: Key of the user identity to which you want to add an access system user. + """ json_payload = {} if acs_user_id is not None: @@ -160,6 +280,19 @@ def create( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Creates a new `user identity `_. + + :param acs_system_ids: List of access system IDs to associate with the new user identity through access system users. If there's no user with the same email address or phone number in the specified access systems, a new access system user is created. If there is an existing user with the same email or phone number in the specified access systems, the user is linked to the user identity. + + :param email_address: Unique email address for the new user identity. + + :param full_name: Full name of the user associated with the new user identity. + + :param phone_number: Unique phone number for the new user identity in E.164 format (for example, +15555550100). + + :param user_identity_key: Unique key for the new user identity. + + :returns: OK""" json_payload = {} if acs_system_ids is not None: @@ -178,6 +311,9 @@ def create( return UserIdentity.from_dict(res["user_identity"]) def delete(self, *, user_identity_id: str) -> None: + """Deletes a specified `user identity `_. This deletes the user identity and all associated resources, including any `credentials `_, `acs users `_ and `client sessions `_. + + :param user_identity_id: ID of the user identity that you want to delete.""" json_payload = {} if user_identity_id is not None: @@ -194,6 +330,15 @@ def generate_instant_key( customization_profile_id: Optional[str] = None, max_use_count: Optional[float] = None ) -> InstantKey: + """Generates a new `instant key `_ for a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to generate an instant key. + + :param customization_profile_id: + + :param max_use_count: Maximum number of times the instant key can be used. Default: 1. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -215,6 +360,13 @@ def get( user_identity_id: Optional[str] = None, user_identity_key: Optional[str] = None ) -> UserIdentity: + """Returns a specified `user identity `_. + + :param user_identity_id: ID of the user identity that you want to get. + + :param user_identity_key: + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -227,6 +379,12 @@ def get( return UserIdentity.from_dict(res["user_identity"]) def grant_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Grants a specified `user identity `_ access to a specified `device `_. + + :param device_id: ID of the managed device to which you want to grant access to the user identity. + + :param user_identity_id: ID of the user identity that you want to grant access to a device. + """ json_payload = {} if device_id is not None: @@ -248,6 +406,21 @@ def list( search: Optional[str] = None, user_identity_ids: Optional[List[str]] = None ) -> List[UserIdentity]: + """Returns a list of all `user identities `_. + + :param created_before: Timestamp by which to limit returned user identities. Returns user identities created before this timestamp. + + :param credential_manager_acs_system_id: ``acs_system_id`` of the credential manager by which you want to filter the list of user identities. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address`` or ``user_identity_id``. + + :param user_identity_ids: Array of user identity IDs by which to filter the list of user identities. + + :returns: OK""" json_payload = {} if created_before is not None: @@ -270,6 +443,11 @@ def list( return [UserIdentity.from_dict(item) for item in res["user_identities"]] def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: + """Returns a list of all `devices `_ associated with a specified `user identity `_. This includes devices derived from the access grants assigned to the user identity and devices directly linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible devices. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -282,6 +460,11 @@ def list_accessible_devices(self, *, user_identity_id: str) -> List[Device]: return [Device.from_dict(item) for item in res["devices"]] def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntrance]: + """Returns a list of all `ACS entrances `_ accessible to a specified `user identity `_. This includes entrances derived from the access grants assigned to the user identity and entrances accessible through ACS users linked to the user identity. + + :param user_identity_id: ID of the user identity for which you want to retrieve all accessible entrances. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -294,6 +477,11 @@ def list_accessible_entrances(self, *, user_identity_id: str) -> List[AcsEntranc return [AcsEntrance.from_dict(item) for item in res["acs_entrances"]] def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: + """Returns a list of all `access systems `_ associated with a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access systems. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -304,6 +492,11 @@ def list_acs_systems(self, *, user_identity_id: str) -> List[AcsSystem]: return [AcsSystem.from_dict(item) for item in res["acs_systems"]] def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: + """Returns a list of all `access system users `_ assigned to a specified `user identity `_. + + :param user_identity_id: ID of the user identity for which you want to retrieve all access system users. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -314,6 +507,12 @@ def list_acs_users(self, *, user_identity_id: str) -> List[AcsUser]: return [AcsUser.from_dict(item) for item in res["acs_users"]] def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: + """Removes a specified `access system user `_ from a specified `user identity `_. + + :param acs_user_id: ID of the access system user that you want to remove from the user identity.. + + :param user_identity_id: ID of the user identity from which you want to remove an access system user. + """ json_payload = {} if acs_user_id is not None: @@ -326,6 +525,12 @@ def remove_acs_user(self, *, acs_user_id: str, user_identity_id: str) -> None: return None def revoke_access_to_device(self, *, device_id: str, user_identity_id: str) -> None: + """Revokes access to a specified `device `_ from a specified `user identity `_. + + :param device_id: ID of the managed device to which you want to revoke access from the user identity. + + :param user_identity_id: ID of the user identity from which you want to revoke access to a device. + """ json_payload = {} if device_id is not None: @@ -346,6 +551,17 @@ def update( phone_number: Optional[str] = None, user_identity_key: Optional[str] = None ) -> None: + """Updates a specified `user identity `_. + + :param user_identity_id: ID of the user identity that you want to update. + + :param email_address: Unique email address for the user identity. + + :param full_name: Full name of the user associated with the user identity. + + :param phone_number: Unique phone number for the user identity. + + :param user_identity_key: Unique key for the user identity.""" json_payload = {} if user_identity_id is not None: diff --git a/seam/routes/user_identities_unmanaged.py b/seam/routes/user_identities_unmanaged.py index 7d3d0f2..bc5df14 100644 --- a/seam/routes/user_identities_unmanaged.py +++ b/seam/routes/user_identities_unmanaged.py @@ -8,6 +8,11 @@ class AbstractUserIdentitiesUnmanaged(abc.ABC): @abc.abstractmethod def get(self, *, user_identity_id: str) -> UnmanagedUserIdentity: + """Returns a specified unmanaged `user identity `_ (where is_managed = false). + + :param user_identity_id: ID of the unmanaged user identity that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -19,6 +24,17 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[UnmanagedUserIdentity]: + """Returns a list of all unmanaged `user identities `_ (where is_managed = false). + + :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -29,6 +45,16 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: + """Updates an unmanaged `user identity `_ to make it managed. + + This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. + + :param is_managed: Must be set to true to convert the unmanaged user identity to managed. + + :param user_identity_id: ID of the unmanaged user identity that you want to update. + + :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. + """ raise NotImplementedError() @@ -38,6 +64,11 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def get(self, *, user_identity_id: str) -> UnmanagedUserIdentity: + """Returns a specified unmanaged `user identity `_ (where is_managed = false). + + :param user_identity_id: ID of the unmanaged user identity that you want to get. + + :returns: OK""" json_payload = {} if user_identity_id is not None: @@ -55,6 +86,17 @@ def list( page_cursor: Optional[str] = None, search: Optional[str] = None ) -> List[UnmanagedUserIdentity]: + """Returns a list of all unmanaged `user identities `_ (where is_managed = false). + + :param created_before: Timestamp by which to limit returned unmanaged user identities. Returns user identities created before this timestamp. + + :param limit: Maximum number of records to return per page. + + :param page_cursor: Identifies the specific page of results to return, obtained from the previous page's ``next_page_cursor``. + + :param search: String for which to search. Filters returned unmanaged user identities to include all records that satisfy a partial match using ``full_name``, ``phone_number``, ``email_address``, ``user_identity_id`` or ``acs_system_id``. + + :returns: OK""" json_payload = {} if created_before is not None: @@ -79,6 +121,16 @@ def update( user_identity_id: str, user_identity_key: Optional[str] = None ) -> None: + """Updates an unmanaged `user identity `_ to make it managed. + + This endpoint can only be used to convert unmanaged user identities to managed ones by setting ``is_managed`` to ``true``. It cannot be used to convert managed user identities back to unmanaged. + + :param is_managed: Must be set to true to convert the unmanaged user identity to managed. + + :param user_identity_id: ID of the unmanaged user identity that you want to update. + + :param user_identity_key: Unique key for the user identity. If not provided, the existing key will be preserved. + """ json_payload = {} if is_managed is not None: diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index 4d11eff..05b5d95 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -8,24 +8,47 @@ class AbstractWebhooks(abc.ABC): @abc.abstractmethod def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: + """Creates a new `webhook `_. + + :param url: URL for the new webhook. + + :param event_types: Types of events that you want the new webhook to receive. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def delete(self, *, webhook_id: str) -> None: + """Deletes a specified `webhook `_. + + :param webhook_id: ID of the webhook that you want to delete.""" raise NotImplementedError() @abc.abstractmethod def get(self, *, webhook_id: str) -> Webhook: + """Gets a specified `webhook `_. + + :param webhook_id: ID of the webhook that you want to get. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list( self, ) -> List[Webhook]: + """Returns a list of all `webhooks `_. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def update(self, *, event_types: List[str], webhook_id: str) -> None: + """Updates a specified `webhook `_. + + :param event_types: Types of events that you want the webhook to receive. + + :param webhook_id: ID of the webhook that you want to update.""" raise NotImplementedError() @@ -35,6 +58,13 @@ def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.defaults = defaults def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhook: + """Creates a new `webhook `_. + + :param url: URL for the new webhook. + + :param event_types: Types of events that you want the new webhook to receive. + + :returns: OK""" json_payload = {} if url is not None: @@ -47,6 +77,9 @@ def create(self, *, url: str, event_types: Optional[List[str]] = None) -> Webhoo return Webhook.from_dict(res["webhook"]) def delete(self, *, webhook_id: str) -> None: + """Deletes a specified `webhook `_. + + :param webhook_id: ID of the webhook that you want to delete.""" json_payload = {} if webhook_id is not None: @@ -57,6 +90,11 @@ def delete(self, *, webhook_id: str) -> None: return None def get(self, *, webhook_id: str) -> Webhook: + """Gets a specified `webhook `_. + + :param webhook_id: ID of the webhook that you want to get. + + :returns: OK""" json_payload = {} if webhook_id is not None: @@ -69,6 +107,9 @@ def get(self, *, webhook_id: str) -> Webhook: def list( self, ) -> List[Webhook]: + """Returns a list of all `webhooks `_. + + :returns: OK""" json_payload = {} res = self.client.post("/webhooks/list", json=json_payload) @@ -76,6 +117,11 @@ def list( return [Webhook.from_dict(item) for item in res["webhooks"]] def update(self, *, event_types: List[str], webhook_id: str) -> None: + """Updates a specified `webhook `_. + + :param event_types: Types of events that you want the webhook to receive. + + :param webhook_id: ID of the webhook that you want to update.""" json_payload = {} if event_types is not None: diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 75ecded..85b0f01 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -22,24 +22,58 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: + """Creates a new `workspace `_. + + :param name: Name of the new workspace. + + :param company_name: Company name for the new workspace. + + :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + + :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. + + :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. + + :param organization_id: ID of the organization to associate with the new workspace. + + :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. + + :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. + + :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. + + :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def get( self, ) -> Workspace: + """Returns the `workspace `_ associated with the authentication value. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def list( self, ) -> List[Workspace]: + """Returns a list of `workspaces `_ associated with the authentication value. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" raise NotImplementedError() @abc.abstractmethod @@ -53,6 +87,20 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: + """Updates the `workspace `_ associated with the authentication value. + + :param connect_partner_name: Connect partner name for the workspace. + + :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. + + :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. + + :param is_suspended: Indicates whether the workspace is suspended. + + :param name: Name of the workspace. + + :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. + """ raise NotImplementedError() @@ -75,6 +123,29 @@ def create( webview_primary_button_text_color: Optional[str] = None, webview_success_message: Optional[str] = None ) -> Workspace: + """Creates a new `workspace `_. + + :param name: Name of the new workspace. + + :param company_name: Company name for the new workspace. + + :param connect_partner_name: Deprecated: Use ``company_name`` instead. Connect partner name for the new workspace. + + :param connect_webview_customization: `Connect Webview `_ customizations for the new workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. + + :param is_sandbox: Indicates whether the new workspace is a `sandbox workspace `_. + + :param organization_id: ID of the organization to associate with the new workspace. + + :param webview_logo_shape: Deprecated: Use ``connect_webview_customization.webview_logo_shape`` instead. + + :param webview_primary_button_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_color`` instead. + + :param webview_primary_button_text_color: Deprecated: Use ``connect_webview_customization.webview_primary_button_text_color`` instead. + + :param webview_success_message: Deprecated: Use ``connect_webview_customization.webview_success_message`` instead. + + :returns: OK""" json_payload = {} if name is not None: @@ -109,6 +180,9 @@ def create( def get( self, ) -> Workspace: + """Returns the `workspace `_ associated with the authentication value. + + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/get", json=json_payload) @@ -118,6 +192,9 @@ def get( def list( self, ) -> List[Workspace]: + """Returns a list of `workspaces `_ associated with the authentication value. + + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/list", json=json_payload) @@ -127,6 +204,11 @@ def list( def reset_sandbox( self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: + """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish. + + :returns: OK""" json_payload = {} res = self.client.post("/workspaces/reset_sandbox", json=json_payload) @@ -153,6 +235,20 @@ def update( name: Optional[str] = None, organization_id: Optional[str] = None ) -> None: + """Updates the `workspace `_ associated with the authentication value. + + :param connect_partner_name: Connect partner name for the workspace. + + :param connect_webview_customization: `Connect Webview `_ customizations for the workspace. See also `Customize the Look and Feel of Your Connect Webviews `_. + + :param is_publishable_key_auth_enabled: Indicates whether publishable key authentication is enabled for this workspace. + + :param is_suspended: Indicates whether the workspace is suspended. + + :param name: Name of the workspace. + + :param organization_id: ID of the organization to assign the workspace to. The authenticated user must be the owner of the workspace and an admin of the target organization. + """ json_payload = {} if connect_partner_name is not None: From 7b91684d14d4366580def27e1c21e056ba086f66 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 12:16:27 -0500 Subject: [PATCH 5/8] Move more layout logic to hbs --- .../layouts/partials/abstract-route-class.hbs | 9 +- codegen/layouts/partials/method-docstring.hbs | 10 + codegen/layouts/partials/method-signature.hbs | 1 + .../layouts/partials/resource-dataclass.hbs | 11 +- codegen/layouts/partials/route-method.hbs | 16 +- codegen/layouts/route.hbs | 9 +- codegen/lib/class-model.ts | 2 +- codegen/lib/handlebars-helpers.ts | 57 ++++++ codegen/lib/layouts/resources.ts | 101 ++-------- codegen/lib/layouts/route.ts | 184 +++++------------- codegen/lib/python-docstring.ts | 9 - 11 files changed, 160 insertions(+), 249 deletions(-) create mode 100644 codegen/layouts/partials/method-docstring.hbs create mode 100644 codegen/layouts/partials/method-signature.hbs delete mode 100644 codegen/lib/python-docstring.ts diff --git a/codegen/layouts/partials/abstract-route-class.hbs b/codegen/layouts/partials/abstract-route-class.hbs index 25e7513..ec969fd 100644 --- a/codegen/layouts/partials/abstract-route-class.hbs +++ b/codegen/layouts/partials/abstract-route-class.hbs @@ -1,6 +1,7 @@ class {{className}}(abc.ABC): -{{#if docstring}} - """{{{docstring}}}""" +{{#if isDeprecated}} + """.. deprecated:: + This route is deprecated.""" {{/if}} {{#if showPass}} pass @@ -15,7 +16,7 @@ class {{className}}(abc.ABC): {{#each methods}} @abc.abstractmethod - def {{name}}(self,{{#if hasParams}} *,{{/if}} {{signatureParams}}) -> {{returnType}}: - """{{{docstring}}}""" + def {{> method-signature}}: + """{{> method-docstring}}""" raise NotImplementedError() {{/each}} diff --git a/codegen/layouts/partials/method-docstring.hbs b/codegen/layouts/partials/method-docstring.hbs new file mode 100644 index 0000000..1484936 --- /dev/null +++ b/codegen/layouts/partials/method-docstring.hbs @@ -0,0 +1,10 @@ +{{{indent (pythonDoc description) 8}}}{{#each params}} + + :param {{name}}: {{#if isDeprecated}}Deprecated{{#if deprecationMessage}}: {{{indent (pythonDoc deprecationMessage) 8}}}{{else}}.{{/if}}{{#if (pythonDoc description)}} {{/if}}{{/if}}{{{indent (pythonDoc description) 8}}}{{/each}}{{#if (eq returnType "ActionAttempt")}} + + :param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish.{{/if}}{{#unless (eq returnType "None")}} + + :returns: {{{indent (pythonDoc responseDescription) 8}}}{{/unless}}{{#if isDeprecated}} + + .. deprecated:: + {{#if (pythonDoc deprecationMessage)}}{{{indent (pythonDoc deprecationMessage) 8}}}{{else}}This method is deprecated.{{/if}}{{/if}} \ No newline at end of file diff --git a/codegen/layouts/partials/method-signature.hbs b/codegen/layouts/partials/method-signature.hbs new file mode 100644 index 0000000..10977db --- /dev/null +++ b/codegen/layouts/partials/method-signature.hbs @@ -0,0 +1 @@ +{{name}}(self{{#if params}}, *{{else}}{{#if (eq returnType "ActionAttempt")}}, *{{/if}}{{/if}}{{#each params}}, {{name}}: {{#if required}}{{type}}{{else}}Optional[{{type}}] = None{{/if}}{{/each}}{{#if (eq returnType "ActionAttempt")}}, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None{{/if}}) -> {{returnType}} \ No newline at end of file diff --git a/codegen/layouts/partials/resource-dataclass.hbs b/codegen/layouts/partials/resource-dataclass.hbs index f856b1e..9ea2715 100644 --- a/codegen/layouts/partials/resource-dataclass.hbs +++ b/codegen/layouts/partials/resource-dataclass.hbs @@ -1,14 +1,19 @@ @dataclass class {{className}}: - """{{{docstring}}}""" + """{{{indent (pythonDoc description) 4}}}{{#each properties}} + + :ivar {{pythonIdentifier name}}: {{#if isDeprecated}}Deprecated{{#if deprecationMessage}}: {{{indent (pythonDoc deprecationMessage) 4}}}{{else}}.{{/if}}{{#if (pythonDoc description)}} {{/if}}{{/if}}{{{indent (pythonDoc description) 4}}}{{/each}}{{#if isDeprecated}} + + .. deprecated:: + {{#if (pythonDoc deprecationMessage)}}{{{indent (pythonDoc deprecationMessage) 4}}}{{else}}This resource is deprecated.{{/if}}{{/if}}""" {{#each properties}} - {{safeName}}: {{type}} + {{pythonIdentifier name}}: {{type}} {{/each}} @staticmethod def from_dict(d: Dict[str, Any]): return {{className}}( {{#each properties}} - {{safeName}}={{#if isDictParam}}DeepAttrDict({{/if}}d.get("{{name}}", None){{#if isDictParam}}){{/if}}, + {{pythonIdentifier name}}={{#if isDictParam}}DeepAttrDict({{/if}}d.get("{{name}}", None){{#if isDictParam}}){{/if}}, {{/each}} ) diff --git a/codegen/layouts/partials/route-method.hbs b/codegen/layouts/partials/route-method.hbs index 746c824..c009161 100644 --- a/codegen/layouts/partials/route-method.hbs +++ b/codegen/layouts/partials/route-method.hbs @@ -1,5 +1,5 @@ - def {{name}}(self,{{#if hasParams}} *,{{/if}} {{signatureParams}}) -> {{returnType}}: - """{{{docstring}}}""" + def {{> method-signature}}: + """{{> method-docstring}}""" json_payload = {} {{#each params}} @@ -7,8 +7,8 @@ json_payload["{{name}}"] = {{name}} {{/each}} - {{#unless returnsNone}}res = {{/unless}}self.client.post("{{path}}", json=json_payload) -{{#if pollsActionAttempt}} + {{#unless (eq returnType "None")}}res = {{/unless}}self.client.post("{{path}}", json=json_payload) +{{#if (eq returnType "ActionAttempt")}} wait_for_action_attempt = ( self.defaults.get("wait_for_action_attempt") @@ -21,13 +21,13 @@ action_attempt=ActionAttempt.from_dict(res["action_attempt"]), wait_for_action_attempt=wait_for_action_attempt ) -{{else if returnsNone}} +{{else if (eq returnType "None")}} return None -{{else if isList}} +{{else if (isListType returnType)}} - return [{{itemType}}.from_dict(item) for item in {{resAccessor}}] + return [{{listItemType returnType}}.from_dict(item) for item in res{{#each returnPath}}["{{this}}"]{{/each}}] {{else}} - return {{returnType}}.from_dict({{resAccessor}}) + return {{returnType}}.from_dict(res{{#each returnPath}}["{{this}}"]{{/each}}) {{/if}} diff --git a/codegen/layouts/route.hbs b/codegen/layouts/route.hbs index 79e4150..1793adf 100644 --- a/codegen/layouts/route.hbs +++ b/codegen/layouts/route.hbs @@ -1,8 +1,8 @@ from typing import Optional, Any, List, Dict, Union import abc from ..client import SeamHttpClient -{{#if resourceImportList}} -from ..resources import ({{resourceImportList}}) +{{#if resourceClasses}} +from ..resources import ({{#each resourceClasses}}{{this}}{{#unless @last}},{{/unless}}{{/each}}) {{/if}} {{#each childClasses}} from .{{module}} import {{abstractClassName}}, {{className}} @@ -16,8 +16,9 @@ from ..modules.action_attempts import resolve_action_attempt class {{className}}({{abstractClassName}}): -{{#if docstring}} - """{{{docstring}}}""" +{{#if isDeprecated}} + """.. deprecated:: + This route is deprecated.""" {{/if}} def __init__(self, client: SeamHttpClient, defaults: Dict[str, Any]): self.client = client diff --git a/codegen/lib/class-model.ts b/codegen/lib/class-model.ts index 464803d..9937221 100644 --- a/codegen/lib/class-model.ts +++ b/codegen/lib/class-model.ts @@ -1,5 +1,5 @@ // Holds the class and method data assembled by the routes plugin; all string -// serialization lives in the Handlebars layouts and their context builders. +// serialization lives in the Handlebars layouts and helpers. export interface ClassMethodParameter { name: string diff --git a/codegen/lib/handlebars-helpers.ts b/codegen/lib/handlebars-helpers.ts index dac2bee..dd4abed 100644 --- a/codegen/lib/handlebars-helpers.ts +++ b/codegen/lib/handlebars-helpers.ts @@ -1 +1,58 @@ +const PYTHON_KEYWORDS = new Set([ + 'False', + 'None', + 'True', + 'and', + 'as', + 'assert', + 'async', + 'await', + 'break', + 'class', + 'continue', + 'def', + 'del', + 'elif', + 'else', + 'except', + 'finally', + 'for', + 'from', + 'global', + 'if', + 'import', + 'in', + 'is', + 'lambda', + 'nonlocal', + 'not', + 'or', + 'pass', + 'raise', + 'return', + 'try', + 'while', + 'with', + 'yield', +]) + export const identity = (x: unknown): unknown => x + +// Blueprint descriptions use Markdown, while Python docstrings use +// Sphinx/reStructuredText fields. +export const pythonDoc = (value: string): string => + value + .trim() + .replaceAll('"""', '\\"\\"\\"') + .replaceAll(/(?`_') + +export const indent = (value: string, spaces: number): string => + value.replaceAll('\n', `\n${' '.repeat(spaces)}`) + +export const pythonIdentifier = (name: string): string => + PYTHON_KEYWORDS.has(name) ? `${name}_` : name + +export const isListType = (type: string): boolean => type.startsWith('List[') + +export const listItemType = (type: string): string => type.slice(5, -1) diff --git a/codegen/lib/layouts/resources.ts b/codegen/lib/layouts/resources.ts index 8cc9d8a..bda6835 100644 --- a/codegen/lib/layouts/resources.ts +++ b/codegen/lib/layouts/resources.ts @@ -6,100 +6,24 @@ import type { Blueprint, Property, Resource } from '@seamapi/blueprint' import { pascalCase, snakeCase } from 'change-case' import { convertCustomResourceName } from '../custom-resource-name-conversions.js' -import { formatPythonDoc } from '../python-docstring.js' import { mapPropertyToPythonType } from '../python-type.js' -// Python hard keywords cannot be used as identifiers. When a property name -// collides with one (e.g. "from"), the dataclass field and keyword argument -// are suffixed with an underscore while the original name is preserved as the -// dict key. -const PYTHON_KEYWORDS = new Set([ - 'False', - 'None', - 'True', - 'and', - 'as', - 'assert', - 'async', - 'await', - 'break', - 'class', - 'continue', - 'def', - 'del', - 'elif', - 'else', - 'except', - 'finally', - 'for', - 'from', - 'global', - 'if', - 'import', - 'in', - 'is', - 'lambda', - 'nonlocal', - 'not', - 'or', - 'pass', - 'raise', - 'return', - 'try', - 'while', - 'with', - 'yield', -]) - -const toSafeIdentifier = (name: string): string => - PYTHON_KEYWORDS.has(name) ? `${name}_` : name - export interface ResourceLayoutContext { className: string moduleName: string - docstring: string + description: string + isDeprecated: boolean + deprecationMessage: string properties: Array<{ name: string - safeName: string + description: string + isDeprecated: boolean + deprecationMessage: string type: string isDictParam: boolean }> } -const createResourceDocstring = ( - description: string, - isDeprecated: boolean, - deprecationMessage: string, - properties: Property[], -): string => { - const lines = [formatPythonDoc(description)] - for (const property of properties) { - const deprecated = property.isDeprecated - ? `Deprecated${property.deprecationMessage === '' ? '.' : `: ${formatPythonDoc(property.deprecationMessage)}`}` - : '' - lines.push( - '', - `:ivar ${toSafeIdentifier(property.name)}: ${[ - deprecated, - formatPythonDoc(property.description), - ] - .filter(Boolean) - .join(' ')}`, - ) - } - if (isDeprecated) { - lines.push( - '', - '.. deprecated::', - ` ${formatPythonDoc(deprecationMessage) || 'This resource is deprecated.'}`, - ) - } - return lines - .filter((line, index) => line !== '' || index !== 0) - .join('\n') - .replaceAll('\n', '\n ') -} - export interface ResourcesIndexLayoutContext { resources: Array<{ className: string; moduleName: string }> } @@ -169,12 +93,9 @@ export const getResourceLayoutContexts = ( const className = pascalCase(convertCustomResourceName(name)) return { className, - docstring: createResourceDocstring( - description, - isDeprecated, - deprecationMessage, - properties, - ), + description, + isDeprecated, + deprecationMessage, // Derived from the class name rather than the resource type so the // module always matches the dataclass it exports (e.g. the "event" // resource becomes SeamEvent in seam_event.py). @@ -183,7 +104,9 @@ export const getResourceLayoutContexts = ( const type = mapPropertyToPythonType(property) return { name: property.name, - safeName: toSafeIdentifier(property.name), + description: property.description, + isDeprecated: property.isDeprecated, + deprecationMessage: property.deprecationMessage, type, isDictParam: type.startsWith('Dict') || property.name === 'properties', diff --git a/codegen/lib/layouts/route.ts b/codegen/lib/layouts/route.ts index d664cc9..8e57326 100644 --- a/codegen/lib/layouts/route.ts +++ b/codegen/lib/layouts/route.ts @@ -1,50 +1,46 @@ // Builds the template context for route class files (seam/routes/{namespace}.py). -// Each module holds the abstract route class alongside its concrete -// implementation. The context mirrors the output of the nextlove -// ClassFile#serializeToClass. +// The context contains semantic route data; Handlebars templates own all Python +// and docstring serialization. import { type ClassMethod, type ClassModel, sortClassMethodParameters, } from '../class-model.js' -import { formatPythonDoc } from '../python-docstring.js' export interface MethodLayoutContext { name: string path: string - docstring: string - hasParams: boolean - signatureParams: string - params: Array<{ name: string }> + description: string + responseDescription: string + isDeprecated: boolean + deprecationMessage: string + params: Array<{ + name: string + type: string + description: string + isDeprecated: boolean + deprecationMessage: string + required: boolean + }> + returnPath: string[] returnType: string - returnsNone: boolean - pollsActionAttempt: boolean - isList: boolean - itemType: string - resAccessor: string } export interface AbstractClassLayoutContext { className: string - docstring: string + isDeprecated: boolean showPass: boolean childProperties: Array<{ namespace: string; abstractClassName: string }> - methods: Array<{ - name: string - hasParams: boolean - signatureParams: string - returnType: string - docstring: string - }> + methods: MethodLayoutContext[] } export interface RouteLayoutContext { className: string abstractClassName: string - docstring: string + isDeprecated: boolean abstractClass: AbstractClassLayoutContext - resourceImportList: string + resourceClasses: string[] childClasses: Array<{ namespace: string className: string @@ -55,100 +51,32 @@ export interface RouteLayoutContext { methods: MethodLayoutContext[] } -const waitForActionAttemptParameter = - 'wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None' - -const indentDoc = (value: string, spaces: number): string => - value.replaceAll('\n', `\n${' '.repeat(spaces)}`) - -const methodDocstring = ( - method: ClassMethod, - sortedParameters: ClassMethod['parameters'], -): string => { - const lines = [formatPythonDoc(method.description)] - - for (const parameter of sortedParameters) { - const deprecated = parameter.isDeprecated - ? `Deprecated${parameter.deprecationMessage === '' ? '.' : `: ${formatPythonDoc(parameter.deprecationMessage)}`}` - : '' - const description = formatPythonDoc(parameter.description) - lines.push( - '', - `:param ${parameter.name}: ${[deprecated, description].filter(Boolean).join(' ')}`, - ) - } - - if (method.returnResource === 'ActionAttempt') { - lines.push( - '', - ':param wait_for_action_attempt: Whether, and for how long, to wait for the action attempt to finish.', - ) - } - - if (method.returnResource !== 'None') { - lines.push('', `:returns: ${formatPythonDoc(method.responseDescription)}`) - } - - if (method.isDeprecated) { - lines.push( - '', - '.. deprecated::', - ` ${formatPythonDoc(method.deprecationMessage) || 'This method is deprecated.'}`, - ) - } - - return lines.filter((line, index) => line !== '' || index !== 0).join('\n') -} - export const getMethodLayoutContext = ( method: ClassMethod, -): MethodLayoutContext => { - const { methodName, path, parameters, returnPath, returnResource } = method - - let returnResourceItem = returnResource - const isList = returnResourceItem.startsWith('List[') - - if (isList) { - returnResourceItem = returnResource.slice(5, -1) - } - - const pollsActionAttempt = returnResource === 'ActionAttempt' - const returnsNone = returnResourceItem === 'None' - const hasParams = parameters.length > 0 - - const sortedParameters = sortClassMethodParameters(parameters) - - const signatureParams = sortedParameters - .map(({ name, type, required }) => - (required ?? false) - ? `${name}: ${type}` - : `${name}: Optional[${type}] = None`, - ) - .concat(pollsActionAttempt ? [waitForActionAttemptParameter] : []) - .join(', ') - - return { - name: methodName, - path, - docstring: indentDoc(methodDocstring(method, sortedParameters), 8), - hasParams, - signatureParams, - params: sortedParameters.map(({ name }) => ({ name })), - returnType: returnResource, - returnsNone, - pollsActionAttempt, - isList, - itemType: returnResourceItem, - resAccessor: - returnPath.length > 0 ? `res["${returnPath.join('"]["')}"]` : '', - } -} +): MethodLayoutContext => ({ + name: method.methodName, + path: method.path, + description: method.description, + responseDescription: method.responseDescription, + isDeprecated: method.isDeprecated, + deprecationMessage: method.deprecationMessage, + params: sortClassMethodParameters(method.parameters).map((parameter) => ({ + name: parameter.name, + type: parameter.type, + description: parameter.description, + isDeprecated: parameter.isDeprecated, + deprecationMessage: parameter.deprecationMessage, + required: parameter.required ?? false, + })), + returnPath: method.returnPath, + returnType: method.returnResource, +}) export const setRouteLayoutContext = (cls: ClassModel): RouteLayoutContext => { const resourceClasses = Array.from( new Set( - cls.methods.map((m) => - m.returnResource.replace(/^List\[/, '').replace(/\]$/, ''), + cls.methods.map((method) => + method.returnResource.replace(/^List\[/, '').replace(/\]$/, ''), ), ), ).filter((className) => className !== '' && className !== 'None') @@ -158,37 +86,31 @@ export const setRouteLayoutContext = (cls: ClassModel): RouteLayoutContext => { ) const abstractClassName = `Abstract${cls.name}` - const classDocstring = cls.isDeprecated - ? indentDoc('.. deprecated::\n This route is deprecated.', 4) - : '' + const methods = cls.methods.map(getMethodLayoutContext) return { className: cls.name, abstractClassName, - docstring: classDocstring, + isDeprecated: cls.isDeprecated, abstractClass: { className: abstractClassName, - docstring: classDocstring, + isDeprecated: cls.isDeprecated, showPass: cls.methods.length === 0 && cls.childClassIdentifiers.length === 0, - childProperties: cls.childClassIdentifiers.map((i) => ({ - namespace: i.namespace, - abstractClassName: `Abstract${i.className}`, + childProperties: cls.childClassIdentifiers.map((identifier) => ({ + namespace: identifier.namespace, + abstractClassName: `Abstract${identifier.className}`, })), - methods: cls.methods.map((method) => { - const { name, hasParams, signatureParams, returnType, docstring } = - getMethodLayoutContext(method) - return { name, hasParams, signatureParams, returnType, docstring } - }), + methods, }, - resourceImportList: resourceClasses.join(','), - childClasses: cls.childClassIdentifiers.map((i) => ({ - namespace: i.namespace, - className: i.className, - abstractClassName: `Abstract${i.className}`, - module: `${cls.namespace}_${i.namespace}`, + resourceClasses, + childClasses: cls.childClassIdentifiers.map((identifier) => ({ + namespace: identifier.namespace, + className: identifier.className, + abstractClassName: `Abstract${identifier.className}`, + module: `${cls.namespace}_${identifier.namespace}`, })), importResolveActionAttempt, - methods: cls.methods.map(getMethodLayoutContext), + methods, } } diff --git a/codegen/lib/python-docstring.ts b/codegen/lib/python-docstring.ts deleted file mode 100644 index f5dad2f..0000000 --- a/codegen/lib/python-docstring.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Blueprint descriptions use Markdown, while the generated Python docstrings -// use Sphinx/reStructuredText fields. Normalize the Markdown constructs that -// would otherwise be displayed literally (or interpreted as invalid roles). -export const formatPythonDoc = (value: string): string => - value - .trim() - .replaceAll('"""', '\\"\\"\\"') - .replaceAll(/(?`_') From 35957e20d88fdc898954cae1faedbd8c39feb7ba Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 12:16:54 -0500 Subject: [PATCH 6/8] Fix lockfile --- package-lock.json | 466 ---------------------------------------------- 1 file changed, 466 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66624ab..b82e2e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,294 +14,6 @@ "prettier": "^3.2.5" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", - "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", - "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", - "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", - "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", - "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", - "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", - "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", - "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", - "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", - "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", - "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", - "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", - "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", - "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", - "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", - "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/linux-x64": { "version": "0.28.1", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", @@ -320,168 +32,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", - "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", - "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", - "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", - "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", - "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", - "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", - "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", - "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", - "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", @@ -2766,22 +2316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", From 4681904fcda1f6e3d0c90b5b09fcd3ec8a7e7362 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Tue, 28 Jul 2026 17:17:44 +0000 Subject: [PATCH 7/8] ci: Generate code --- seam/resources/device_provider.py | 1 + seam/resources/seam_event.py | 1 + seam/routes/webhooks.py | 8 ++------ seam/routes/workspaces.py | 20 ++++++-------------- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/seam/resources/device_provider.py b/seam/resources/device_provider.py index b1fe461..1097d96 100644 --- a/seam/resources/device_provider.py +++ b/seam/resources/device_provider.py @@ -6,6 +6,7 @@ @dataclass class DeviceProvider: """ + :ivar can_configure_auto_lock: Indicates whether the lock supports configuring automatic locking. :ivar can_hvac_cool: Indicates whether the thermostat supports cooling. diff --git a/seam/resources/seam_event.py b/seam/resources/seam_event.py index e0b14e2..6d85198 100644 --- a/seam/resources/seam_event.py +++ b/seam/resources/seam_event.py @@ -6,6 +6,7 @@ @dataclass class SeamEvent: """ + :ivar access_code_id: ID of the affected access code. :ivar connected_account_custom_metadata: Custom metadata of the connected account, present when connected_account_id is provided. diff --git a/seam/routes/webhooks.py b/seam/routes/webhooks.py index 05b5d95..444bed4 100644 --- a/seam/routes/webhooks.py +++ b/seam/routes/webhooks.py @@ -34,9 +34,7 @@ def get(self, *, webhook_id: str) -> Webhook: raise NotImplementedError() @abc.abstractmethod - def list( - self, - ) -> List[Webhook]: + def list(self) -> List[Webhook]: """Returns a list of all `webhooks `_. :returns: OK""" @@ -104,9 +102,7 @@ def get(self, *, webhook_id: str) -> Webhook: return Webhook.from_dict(res["webhook"]) - def list( - self, - ) -> List[Webhook]: + def list(self) -> List[Webhook]: """Returns a list of all `webhooks `_. :returns: OK""" diff --git a/seam/routes/workspaces.py b/seam/routes/workspaces.py index 85b0f01..9b9b919 100644 --- a/seam/routes/workspaces.py +++ b/seam/routes/workspaces.py @@ -48,18 +48,14 @@ def create( raise NotImplementedError() @abc.abstractmethod - def get( - self, - ) -> Workspace: + def get(self) -> Workspace: """Returns the `workspace `_ associated with the authentication value. :returns: OK""" raise NotImplementedError() @abc.abstractmethod - def list( - self, - ) -> List[Workspace]: + def list(self) -> List[Workspace]: """Returns a list of `workspaces `_ associated with the authentication value. :returns: OK""" @@ -67,7 +63,7 @@ def list( @abc.abstractmethod def reset_sandbox( - self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None + self, *, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. @@ -177,9 +173,7 @@ def create( return Workspace.from_dict(res["workspace"]) - def get( - self, - ) -> Workspace: + def get(self) -> Workspace: """Returns the `workspace `_ associated with the authentication value. :returns: OK""" @@ -189,9 +183,7 @@ def get( return Workspace.from_dict(res["workspace"]) - def list( - self, - ) -> List[Workspace]: + def list(self) -> List[Workspace]: """Returns a list of `workspaces `_ associated with the authentication value. :returns: OK""" @@ -202,7 +194,7 @@ def list( return [Workspace.from_dict(item) for item in res["workspaces"]] def reset_sandbox( - self, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None + self, *, wait_for_action_attempt: Optional[Union[bool, Dict[str, float]]] = None ) -> ActionAttempt: """Resets the `sandbox workspace `_ associated with the authentication value. Note that this endpoint is only available for sandbox workspaces. From 7628208957d794b639b99d81849d3d58f18150e3 Mon Sep 17 00:00:00 2001 From: Evan Sosenko Date: Tue, 28 Jul 2026 12:51:56 -0500 Subject: [PATCH 8/8] Add resources to gitattributes --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index e8f8a51..0ecb1ab 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ +seam/resources/** linguist-generated seam/routes/** linguist-generated