From 9f3436acbaf894baf46583f9db81f902b4bc1c7f Mon Sep 17 00:00:00 2001 From: Sy Bohy Date: Fri, 5 Jun 2026 16:05:19 -0700 Subject: [PATCH 1/6] feat: make Access Grants the front door for granting access Access Grants are GA and are now the default, recommended way to grant access to any physical space, irrespective of locking hardware. The docs previously framed Access Grants as ACS-only (entrances/spaces), which led developers and AI assistants (including the Seam MCP) to wrongly steer standalone-smart-lock users to the legacy Access Codes API. - Add new top-level "Use Cases" nav section with a "Granting Access" decision page (which API to use, with the recommended ladder: one device -> multiple devices/spaces -> ACS entrances) - Move Access Grants guides under use-cases/granting-access/ with .gitbook.yaml redirects for all old URLs - Rewrite Access Grants overview: universal framing, device_ids first in the "Where" table, devices-first teaching order - Add "Creating an Access Grant Using Devices" guide (device_ids + code access method, capability checks) - Rewrite Quick Start step 3 around access_grants.create with a code access method instead of lock/unlock - Lead the access_grants/create API reference with a devices-only code sample (new sample in code-sample-definitions) - Add "Grant Access" card first on the docs landing page - Teach validate-links to accept URLs covered by .gitbook.yaml redirects (upstream @seamapi/types still links old URLs; resolved via redirects until the upstream descriptions are updated) Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitbook.yaml | 10 + .../access_grants.yaml | 32 + codegen/validate-links.ts | 37 + docs/api-reference/_blueprint.json | 632 +++++++++------ docs/api-reference/access_grants/create.md | 616 ++++++++++---- .../README.md | 2 +- .../README.md | 2 +- docs/guides/README.md | 4 +- docs/guides/SUMMARY.md | 25 +- .../capability-guides/access-grants/README.md | 45 - ...eating-and-encoding-card-access-methods.md | 4 +- .../seam-api-overview.md | 2 +- docs/guides/quickstart.md | 236 +++--- .../use-cases/granting-access/README.md | 61 ++ .../granting-access/access-grants/README.md | 79 ++ .../access-grants/access-grant-quick-start.md | 18 +- .../creating-an-access-grant-using-devices.md | 767 ++++++++++++++++++ ...reating-an-access-grant-using-entrances.md | 4 +- .../creating-an-access-grant-using-spaces.md | 4 +- .../access-grants/deleting-an-access-grant.md | 0 .../delivering-access-methods.md | 6 +- .../reservation-access-grants.md | 0 ...ieving-access-grants-and-access-methods.md | 0 .../revoking-an-access-method.md | 0 .../access-grants/updating-an-access-grant.md | 2 +- 25 files changed, 1975 insertions(+), 613 deletions(-) delete mode 100644 docs/guides/capability-guides/access-grants/README.md create mode 100644 docs/guides/use-cases/granting-access/README.md create mode 100644 docs/guides/use-cases/granting-access/access-grants/README.md rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/access-grant-quick-start.md (89%) create mode 100644 docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/creating-an-access-grant-using-entrances.md (97%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/creating-an-access-grant-using-spaces.md (97%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/deleting-an-access-grant.md (100%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/delivering-access-methods.md (95%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/reservation-access-grants.md (100%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/retrieving-access-grants-and-access-methods.md (100%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/revoking-an-access-method.md (100%) rename docs/guides/{capability-guides => use-cases/granting-access}/access-grants/updating-an-access-grant.md (90%) diff --git a/.gitbook.yaml b/.gitbook.yaml index b6d017bf6..8d8cd782f 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -23,3 +23,13 @@ redirects: core-concepts/connect-webviews: core-concepts/connect-webviews/README.md capability-guides/access-systems/understanding-acs-differences: capability-guides/access-systems/README.md capability-guides/thermostats/creating-and-managing-climate-schedules: capability-guides/thermostats/creating-and-managing-thermostat-schedules.md + capability-guides/access-grants: use-cases/granting-access/access-grants/README.md + capability-guides/access-grants/access-grant-quick-start: use-cases/granting-access/access-grants/access-grant-quick-start.md + capability-guides/access-grants/creating-an-access-grant-using-entrances: use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md + capability-guides/access-grants/creating-an-access-grant-using-spaces: use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md + capability-guides/access-grants/delivering-access-methods: use-cases/granting-access/access-grants/delivering-access-methods.md + capability-guides/access-grants/reservation-access-grants: use-cases/granting-access/access-grants/reservation-access-grants.md + capability-guides/access-grants/retrieving-access-grants-and-access-methods: use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md + capability-guides/access-grants/updating-an-access-grant: use-cases/granting-access/access-grants/updating-an-access-grant.md + capability-guides/access-grants/revoking-an-access-method: use-cases/granting-access/access-grants/revoking-an-access-method.md + capability-guides/access-grants/deleting-an-access-grant: use-cases/granting-access/access-grants/deleting-an-access-grant.md diff --git a/codegen/data/code-sample-definitions/access_grants.yaml b/codegen/data/code-sample-definitions/access_grants.yaml index 1305d3064..d9b0b41ab 100644 --- a/codegen/data/code-sample-definitions/access_grants.yaml +++ b/codegen/data/code-sample-definitions/access_grants.yaml @@ -1,4 +1,36 @@ --- +- title: Create an Access Grant for devices + description: + Creates a new Access Grant that gives a user identity a PIN code on one + or more devices, such as standalone smart locks. + request: + path: /access_grants/create + parameters: + user_identity_id: e3d736c1-540d-4d10-83e5-9a4e135453b4 + device_ids: + - 6ba7b811-9dad-11d1-80b4-00c04fd430c8 + requested_access_methods: + - mode: code + starts_at: '2025-06-16T16:54:17.946606Z' + ends_at: '2025-06-18T16:54:17.946606Z' + response: + body: + access_grant: + access_grant_id: ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b + access_method_ids: + - a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d + created_at: '2025-06-16T16:54:17.946606Z' + display_name: My Access Grant + ends_at: '2025-06-18T16:54:17.946606Z' + requested_access_methods: + - display_name: PIN Code Credential + mode: code + created_at: '2025-06-16T16:54:17.946606Z' + created_access_method_ids: + - a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d + starts_at: '2025-06-16T16:54:17.946606Z' + user_identity_id: e3d736c1-540d-4d10-83e5-9a4e135453b4 + workspace_id: 750fc0bc-4450-4356-8d9f-18c6a3a6b2c7 - title: Create an Access Grant using spaces description: Creates a new Access Grant using space IDs and an existing user identity. request: diff --git a/codegen/validate-links.ts b/codegen/validate-links.ts index 45d54169e..fff7b3000 100644 --- a/codegen/validate-links.ts +++ b/codegen/validate-links.ts @@ -1,6 +1,8 @@ import { existsSync, readdirSync, readFileSync } from 'node:fs' import { dirname, join, resolve } from 'node:path' +import YAML from 'yaml' + import { baseUrl, type SiteSection, @@ -12,6 +14,36 @@ function findSiteSection(filePath: string): SiteSection | undefined { return siteSections.find(({ root }) => filePath.startsWith(root + '/')) } +// Each site section has its own .gitbook.yaml with a redirects map. +// A URL covered by a redirect is not broken: GitBook resolves it. +// (validate-redirects separately ensures every redirect target exists.) +const sectionConfigPaths: Record = { + Guides: '.gitbook.yaml', + 'API Reference': join('docs', 'api-reference', '.gitbook.yaml'), + 'Brand Guides': join('docs', 'brand-guides', '.gitbook.yaml'), +} + +const sectionRedirects = new Map>() + +function getSectionRedirects(sectionName: string): Set { + const cached = sectionRedirects.get(sectionName) + if (cached != null) return cached + + const redirectPaths = new Set() + const configPath = sectionConfigPaths[sectionName] + if (configPath != null && existsSync(configPath)) { + const config = YAML.parse(readFileSync(configPath, 'utf-8')) as { + redirects?: Record + } + for (const key of Object.keys(config.redirects ?? {})) { + redirectPaths.add(key.replace(/^\//, '')) + } + } + + sectionRedirects.set(sectionName, redirectPaths) + return redirectPaths +} + const absoluteUrlPattern = new RegExp( `${baseUrl.replaceAll('.', '\\.')}[^)"<>\\s]+`, 'g', @@ -83,6 +115,11 @@ function checkAbsoluteUrl(file: string, line: number, rawUrl: string): void { const targetMd = `${targetRoot}.md` const targetReadme = join(targetRoot, 'README.md') + // A URL covered by a .gitbook.yaml redirect resolves on the published site. + if (getSectionRedirects(section.name).has(pagePath.replace(/^\//, ''))) { + return + } + if (!existsSync(targetMd) && !existsSync(targetReadme)) { brokenLinks.push({ file, diff --git a/docs/api-reference/_blueprint.json b/docs/api-reference/_blueprint.json index 7f636bdbd..42762f147 100644 --- a/docs/api-reference/_blueprint.json +++ b/docs/api-reference/_blueprint.json @@ -407,7 +407,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Ongoing Online Access Code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Ongoing Online Access Code\"),\nCode: api.String(\"1234\"),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Ongoing Online Access Code\", PulledBackupAccessCodeId: nil, Status: \"set\", Type: \"ongoing\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -523,7 +523,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Online Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Online Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nCode: api.String(\"1234\"),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Online Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -643,7 +643,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Offline Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tAttemptForOfflineDevice: api.Bool(true),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tUseOfflineAccessCode: api.Bool(true),\n\t\t\tIsOfflineAccessCode: api.Bool(true),\n\t\t\tMaxTimeRounding: api.String(\"1h\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Offline Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nAttemptForOfflineDevice: api.Bool(true),\nPreferredCodeLength: api.Float64(4),\nUseOfflineAccessCode: api.Bool(true),\nIsOfflineAccessCode: api.Bool(true),\nMaxTimeRounding: api.String(\"1h\"),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: true, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Offline Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -763,7 +763,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My One-Time-Use Offline Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tAttemptForOfflineDevice: api.Bool(true),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tUseOfflineAccessCode: api.Bool(true),\n\t\t\tIsOfflineAccessCode: api.Bool(true),\n\t\t\tIsOneTimeUse: api.Bool(true),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My One-Time-Use Offline Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nAttemptForOfflineDevice: api.Bool(true),\nPreferredCodeLength: api.Float64(4),\nUseOfflineAccessCode: api.Bool(true),\nIsOfflineAccessCode: api.Bool(true),\nIsOneTimeUse: api.Bool(true),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: true, IsOneTimeUse: true, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My One-Time-Use Offline Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -880,7 +880,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t\tUseBackupAccessCodePool: api.Bool(true),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nCode: api.String(\"1234\"),\nUseBackupAccessCodePool: api.Bool(true),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: true, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -1235,7 +1235,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.CreateMultiple(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateMultipleRequest{\n\t\t\tDeviceIds: [2]string{api.String(\"d9717800-fa73-401a-b66b-03f0ef950e2a\"), api.String(\"550e8400-e29b-41d4-a716-446655440000\")},\n\t\t\tBehaviorWhenCodeCannotBeShared: api.String(\"throw\"),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tName: api.String(\"My Linked Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-19T01:41:56.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T16:40:40.000Z\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.CreateMultiple(\ncontext.Background(),\napi.AccessCodesCreateMultipleRequest{\nDeviceIds: [2]string{api.String(\"d9717800-fa73-401a-b66b-03f0ef950e2a\"), api.String(\"550e8400-e29b-41d4-a716-446655440000\")},\nBehaviorWhenCodeCannotBeShared: api.String(\"throw\"),\nPreferredCodeLength: api.Float64(4),\nName: api.String(\"My Linked Access Code\"),\nStartsAt: api.String(\"2025-06-19T01:41:56.000Z\"),\nEndsAt: api.String(\"2025-06-22T16:40:40.000Z\"),\n},\n)\n }", "response": "[]api.AccessCode{api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: \"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\", CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"c9cd621d-ef0c-45c8-b608-026ebdb74615\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Linked Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -1402,7 +1402,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Delete(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesDeleteRequest{\n\t\t\tDeviceId: api.String(\"d33f4cc7-2b6a-41a4-ad30-c372ee493589\"),\n\t\t\tAccessCodeId: api.String(\"275b40a3-6b0b-4c51-8fd2-aafd3de2195c\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Delete(\ncontext.Background(),\napi.AccessCodesDeleteRequest{\nDeviceId: api.String(\"d33f4cc7-2b6a-41a4-ad30-c372ee493589\"),\nAccessCodeId: api.String(\"275b40a3-6b0b-4c51-8fd2-aafd3de2195c\"),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -1548,7 +1548,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.GenerateCode(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesGenerateCodeRequest{\n\t\t\tDeviceId: api.String(\"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.GenerateCode(\ncontext.Background(),\napi.AccessCodesGenerateCodeRequest{\nDeviceId: api.String(\"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\"),\n},\n)\n }", "response": "api.AccessCode{DeviceId: \"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\", Code: \"1234\"}", "request_syntax": "go", "response_syntax": "go" @@ -1741,7 +1741,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Get(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesGetRequest{\n\t\t\tAccessCodeId: api.String(\"90a114dc-48b5-4b8b-a3d3-972344594401\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Get(\ncontext.Background(),\napi.AccessCodesGetRequest{\nAccessCodeId: api.String(\"90a114dc-48b5-4b8b-a3d3-972344594401\"),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"90a114dc-48b5-4b8b-a3d3-972344594401\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"7bce4bcc-6c35-4cc0-bbae-1c8bc5b4a5b5\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -2312,7 +2312,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.List(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesListRequest{\n\t\t\tDeviceId: api.String(\"f5197f50-839b-4a8e-82f3-e9ef06af93ae\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.List(\ncontext.Background(),\napi.AccessCodesListRequest{\nDeviceId: api.String(\"f5197f50-839b-4a8e-82f3-e9ef06af93ae\"),\nLimit: api.Float64(10),\n},\n)\n }", "response": "[]api.AccessCode{api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"f5197f50-839b-4a8e-82f3-e9ef06af93ae\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -2501,7 +2501,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.PullBackupAccessCode(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesPullBackupAccessCodeRequest{\n\t\t\tAccessCodeId: api.String(\"8e525b87-5e4b-48a5-a322-5d45262a735f\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.PullBackupAccessCode(\ncontext.Background(),\napi.AccessCodesPullBackupAccessCodeRequest{\nAccessCodeId: api.String(\"8e525b87-5e4b-48a5-a322-5d45262a735f\"),\n},\n)\n }", "response": "api.AccessCode{AccessCodeId: \"8e525b87-5e4b-48a5-a322-5d45262a735f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"c9cd621d-ef0c-45c8-b608-026ebdb74615\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: true, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"unset\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -2687,7 +2687,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.ReportDeviceConstraints(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesReportDeviceConstraintsRequest{\n\t\t\tDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\n\t\t\tSupportedCodeLengths: [3]float64{api.Float64(4), api.Float64(5), api.Float64(6)},\n\t\t\tMinCodeLength: api.Float64(42),\n\t\t\tMaxCodeLength: api.Float64(42),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.ReportDeviceConstraints(\ncontext.Background(),\napi.AccessCodesReportDeviceConstraintsRequest{\nDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\nSupportedCodeLengths: [3]float64{api.Float64(4), api.Float64(5), api.Float64(6)},\nMinCodeLength: api.Float64(42),\nMaxCodeLength: api.Float64(42),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -2776,7 +2776,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.ReportDeviceConstraints(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesReportDeviceConstraintsRequest{\n\t\t\tDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\n\t\t\tMinCodeLength: api.Float64(4),\n\t\t\tMaxCodeLength: api.Float64(6),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.ReportDeviceConstraints(\ncontext.Background(),\napi.AccessCodesReportDeviceConstraintsRequest{\nDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\nMinCodeLength: api.Float64(4),\nMaxCodeLength: api.Float64(6),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3237,7 +3237,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Update(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesUpdateRequest{\n\t\t\tAccessCodeId: api.String(\"b854d7c9-d0d8-40a7-8a7c-cd3d167a6ce5\"),\n\t\t\tName: api.String(\"My Updated Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-19T08:26:41.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-21T17:38:07.000Z\"),\n\t\t\tCode: api.String(\"4444\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Update(\ncontext.Background(),\napi.AccessCodesUpdateRequest{\nAccessCodeId: api.String(\"b854d7c9-d0d8-40a7-8a7c-cd3d167a6ce5\"),\nName: api.String(\"My Updated Access Code\"),\nStartsAt: api.String(\"2025-06-19T08:26:41.000Z\"),\nEndsAt: api.String(\"2025-06-21T17:38:07.000Z\"),\nCode: api.String(\"4444\"),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3419,7 +3419,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.UpdateMultiple(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesUpdateMultipleRequest{\n\t\t\tEndsAt: api.String(\"2025-06-22T05:05:47.000Z\"),\n\t\t\tStartsAt: api.String(\"2025-06-18T19:14:13.000Z\"),\n\t\t\tName: api.String(\"My Updated Linked Access Code\"),\n\t\t\tCommonCodeKey: api.String(\"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.UpdateMultiple(\ncontext.Background(),\napi.AccessCodesUpdateMultipleRequest{\nEndsAt: api.String(\"2025-06-22T05:05:47.000Z\"),\nStartsAt: api.String(\"2025-06-18T19:14:13.000Z\"),\nName: api.String(\"My Updated Linked Access Code\"),\nCommonCodeKey: api.String(\"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\"),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3616,7 +3616,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.AccessCodes.Simulate.CreateUnmanagedAccessCode(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateCreateUnmanagedAccessCodeRequest{\n\t\t\tDeviceId: api.String(\"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\"),\n\t\t\tName: api.String(\"My Access Code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.AccessCodes.Simulate.CreateUnmanagedAccessCode(\ncontext.Background(),\nsimulate.SimulateCreateUnmanagedAccessCodeRequest{\nDeviceId: api.String(\"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\"),\nName: api.String(\"My Access Code\"),\nCode: api.String(\"1234\"),\n},\n)\n }", "response": "api.UnmanagedAccessCode{AccessCodeId: \"88fa1812-bef8-4108-9fb4-4855376c3edf\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -3823,7 +3823,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.ConvertToManaged(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedConvertToManagedRequest{\n\t\t\tAccessCodeId: api.String(\"9ef2af02-e335-4b49-bd51-00e851a83ef6\"),\n\t\t\tIsExternalModificationAllowed: api.Bool(true),\n\t\t\tForce: api.Bool(true),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.ConvertToManaged(\ncontext.Background(),\nunmanaged.UnmanagedConvertToManagedRequest{\nAccessCodeId: api.String(\"9ef2af02-e335-4b49-bd51-00e851a83ef6\"),\nIsExternalModificationAllowed: api.Bool(true),\nForce: api.Bool(true),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3975,7 +3975,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Delete(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedDeleteRequest{\n\t\t\tAccessCodeId: api.String(\"95d54d42-477b-49d6-bd3a-5e8a40a5a78f\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Delete(\ncontext.Background(),\nunmanaged.UnmanagedDeleteRequest{\nAccessCodeId: api.String(\"95d54d42-477b-49d6-bd3a-5e8a40a5a78f\"),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -4160,7 +4160,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedGetRequest{\n\t\t\tAccessCodeId: api.String(\"41b984ec-1b74-48cd-ba68-16660cd792b6\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Get(\ncontext.Background(),\nunmanaged.UnmanagedGetRequest{\nAccessCodeId: api.String(\"41b984ec-1b74-48cd-ba68-16660cd792b6\"),\n},\n)\n }", "response": "api.UnmanagedAccessCode{AccessCodeId: \"41b984ec-1b74-48cd-ba68-16660cd792b6\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"6047cb40-73e5-4517-85c2-2664c2e4eca1\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Unmanaged Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -4376,7 +4376,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tDeviceId: api.String(\"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\"),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nDeviceId: api.String(\"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\"),\n},\n)\n }", "response": "[]api.UnmanagedAccessCode{api.UnmanagedAccessCode{AccessCodeId: \"88fa1812-bef8-4108-9fb4-4855376c3edf\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Unmanaged Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -4572,7 +4572,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Update(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedUpdateRequest{\n\t\t\tAccessCodeId: api.String(\"ebd8e488-db1b-4f4b-9d02-489fbfa6829a\"),\n\t\t\tIsManaged: api.Bool(true),\n\t\t\tIsExternalModificationAllowed: api.Bool(true),\n\t\t\tForce: api.Bool(true),\n\t\t},\n\t)\n}", + "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Update(\ncontext.Background(),\nunmanaged.UnmanagedUpdateRequest{\nAccessCodeId: api.String(\"ebd8e488-db1b-4f4b-9d02-489fbfa6829a\"),\nIsManaged: api.Bool(true),\nIsExternalModificationAllowed: api.Bool(true),\nForce: api.Bool(true),\n},\n)\n }", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -5064,6 +5064,126 @@ ], "workspaceScope": "required", "codeSamples": [ + { + "title": "Create an Access Grant for devices", + "description": "Creates a new Access Grant that gives a user identity a PIN code on one or more devices, such as standalone smart locks.", + "request": { + "path": "/access_grants/create", + "parameters": { + "user_identity_id": "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "device_ids": [ + "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + ], + "requested_access_methods": [ + { + "mode": "code" + } + ], + "starts_at": "2025-06-16T16:54:17.946606Z", + "ends_at": "2025-06-18T16:54:17.946606Z" + } + }, + "response": { + "body": { + "access_grant": { + "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "access_method_ids": [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d" + ], + "created_at": "2025-06-16T16:54:17.946606Z", + "display_name": "My Access Grant", + "ends_at": "2025-06-18T16:54:17.946606Z", + "requested_access_methods": [ + { + "display_name": "PIN Code Credential", + "mode": "code", + "created_at": "2025-06-16T16:54:17.946606Z", + "created_access_method_ids": [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d" + ] + } + ], + "starts_at": "2025-06-16T16:54:17.946606Z", + "user_identity_id": "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "workspace_id": "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7" + } + } + }, + "code": { + "javascript": { + "title": "JavaScript", + "sdkName": "javascript", + "request": "await seam.accessGrants.create({\n user_identity_id: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n device_ids: [\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"],\n requested_access_methods: [{ mode: \"code\" }],\n starts_at: \"2025-06-16T16:54:17.946606Z\",\n ends_at: \"2025-06-18T16:54:17.946606Z\",\n});", + "response": "{\n \"access_grant_id\": \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"display_name\": \"My Access Grant\",\n \"ends_at\": \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\": [\n {\n \"display_name\": \"PIN Code Credential\",\n \"mode\": \"code\",\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"]\n }\n ],\n \"starts_at\": \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\": \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\": \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"\n}", + "request_syntax": "javascript", + "response_syntax": "json" + }, + "python": { + "title": "Python", + "sdkName": "python", + "request": "seam.access_grants.create(\n user_identity_id=\"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n device_ids=[\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"],\n requested_access_methods=[{\"mode\": \"code\"}],\n starts_at=\"2025-06-16T16:54:17.946606Z\",\n ends_at=\"2025-06-18T16:54:17.946606Z\",\n)", + "response": "AccessGrant(\n access_grant_id=\"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n access_method_ids=[\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n created_at=\"2025-06-16T16:54:17.946606Z\",\n display_name=\"My Access Grant\",\n ends_at=\"2025-06-18T16:54:17.946606Z\",\n requested_access_methods=[\n {\n \"display_name\": \"PIN Code Credential\",\n \"mode\": \"code\",\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n }\n ],\n starts_at=\"2025-06-16T16:54:17.946606Z\",\n user_identity_id=\"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n workspace_id=\"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\",\n)", + "request_syntax": "python", + "response_syntax": "python" + }, + "ruby": { + "title": "Ruby", + "sdkName": "ruby", + "request": "seam.access_grants.create(\n user_identity_id: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n device_ids: [\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"],\n requested_access_methods: [{ mode: \"code\" }],\n starts_at: \"2025-06-16T16:54:17.946606Z\",\n ends_at: \"2025-06-18T16:54:17.946606Z\",\n)", + "response": "{\n \"access_grant_id\" => \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\" => [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\" => \"2025-06-16T16:54:17.946606Z\",\n \"display_name\" => \"My Access Grant\",\n \"ends_at\" => \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\" => [\n {\n display_name: \"PIN Code Credential\",\n mode: \"code\",\n created_at: \"2025-06-16T16:54:17.946606Z\",\n created_access_method_ids: [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n },\n ],\n \"starts_at\" => \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\" => \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\" => \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\",\n}", + "request_syntax": "ruby", + "response_syntax": "ruby" + }, + "php": { + "title": "PHP", + "sdkName": "php", + "request": "$seam->access_grants->create(\n user_identity_id: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n device_ids: [\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"],\n requested_access_methods: [[\"mode\" => \"code\"]],\n starts_at: \"2025-06-16T16:54:17.946606Z\",\n ends_at: \"2025-06-18T16:54:17.946606Z\",\n);", + "response": "[\n \"access_grant_id\" => \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\" => [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\" => \"2025-06-16T16:54:17.946606Z\",\n \"display_name\" => \"My Access Grant\",\n \"ends_at\" => \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\" => [\n [\n \"display_name\" => \"PIN Code Credential\",\n \"mode\" => \"code\",\n \"created_at\" => \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\" => [\n \"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\",\n ],\n ],\n ],\n \"starts_at\" => \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\" => \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\" => \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\",\n];", + "request_syntax": "php", + "response_syntax": "php" + }, + "seam_cli": { + "title": "Seam CLI", + "sdkName": "seam_cli", + "request": "seam access-grants create --user_identity_id \"e3d736c1-540d-4d10-83e5-9a4e135453b4\" --device_ids [\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"] --requested_access_methods [{\"mode\":\"code\"}] --starts_at \"2025-06-16T16:54:17.946606Z\" --ends_at \"2025-06-18T16:54:17.946606Z\"", + "response": "{\n \"access_grant_id\": \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"display_name\": \"My Access Grant\",\n \"ends_at\": \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\": [\n {\n \"display_name\": \"PIN Code Credential\",\n \"mode\": \"code\",\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"]\n }\n ],\n \"starts_at\": \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\": \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\": \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"\n}", + "request_syntax": "bash", + "response_syntax": "json" + }, + "go": { + "title": "Go", + "sdkName": "go", + "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Create(\ncontext.Background(),\napi.AccessGrantsCreateRequest{\nUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\nDeviceIds: [1]string{api.String(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\")},\nRequestedAccessMethods: [1]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}},\nStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\nEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n},\n)\n }", + "response": "api.AccessGrant{AccessGrantId: \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", RequestedAccessMethods: []AccessGrantRequestedAccessMethods{api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", + "request_syntax": "go", + "response_syntax": "go" + }, + "java": { + "title": "Java", + "sdkName": "java", + "request": "seam.accessGrants().create(AccessGrantsCreateRequest.builder().userIdentityId(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\")\n.deviceIds(List.of(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"))\n.requestedAccessMethods(List.of(Map.of(\"mode\", \"code\")))\n.startsAt(\"2025-06-16T16:54:17.946606Z\")\n.endsAt(\"2025-06-18T16:54:17.946606Z\").build());", + "response": "{\n \"access_grant_id\": \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"display_name\": \"My Access Grant\",\n \"ends_at\": \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\": [\n {\n \"display_name\": \"PIN Code Credential\",\n \"mode\": \"code\",\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"]\n }\n ],\n \"starts_at\": \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\": \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\": \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"\n}", + "request_syntax": "java", + "response_syntax": "json" + }, + "csharp": { + "title": "C#", + "sdkName": "csharp", + "request": "seam.AccessGrants.Create(userIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", deviceIds: new string[] { \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"} , requestedAccessMethods: new object[] { new { mode = \"code\" }} , startsAt: \"2025-06-16T16:54:17.946606Z\", endsAt: \"2025-06-18T16:54:17.946606Z\")", + "response": "{\n \"access_grant_id\": \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\",\n \"access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"],\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"display_name\": \"My Access Grant\",\n \"ends_at\": \"2025-06-18T16:54:17.946606Z\",\n \"requested_access_methods\": [\n {\n \"display_name\": \"PIN Code Credential\",\n \"mode\": \"code\",\n \"created_at\": \"2025-06-16T16:54:17.946606Z\",\n \"created_access_method_ids\": [\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"]\n }\n ],\n \"starts_at\": \"2025-06-16T16:54:17.946606Z\",\n \"user_identity_id\": \"e3d736c1-540d-4d10-83e5-9a4e135453b4\",\n \"workspace_id\": \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"\n}", + "request_syntax": "csharp", + "response_syntax": "json" + }, + "curl": { + "title": "cURL", + "sdkName": "curl", + "request": "curl --include --request POST \"https://connect.getseam.com/access_grants/create\" \\\n --header \"Authorization: Bearer $SEAM_API_KEY\" \\\n --json @- < "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", - "access_method_ids" => %w[ - a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d - 5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f - c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f - ], + "access_method_ids" => ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"], "created_at" => "2025-06-16T16:54:17.946606Z", "display_name" => "My Access Grant", "ends_at" => "2025-06-18T16:54:17.946606Z", - "instant_key_url" => "https://ik.seam.co/ABCXYZ", "requested_access_methods" => [ { display_name: "PIN Code Credential", @@ -261,20 +172,7 @@ seam.access_grants.create( created_at: "2025-06-16T16:54:17.946606Z", created_access_method_ids: ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"], }, - { - display_name: "Card Credential", - mode: "card", - created_at: "2025-06-16T16:54:19.946606Z", - created_access_method_ids: ["5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f"], - }, - { - display_name: "Mobile Key Credential", - mode: "mobile_key", - created_at: "2025-06-16T16:54:21.946606Z", - created_access_method_ids: ["c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f"], - }, ], - "space_ids" => %w[1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d 7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a], "starts_at" => "2025-06-16T16:54:17.946606Z", "user_identity_id" => "e3d736c1-540d-4d10-83e5-9a4e135453b4", "workspace_id" => "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7", @@ -284,22 +182,15 @@ seam.access_grants.create( {% tab title="PHP" %} -Creates a new Access Grant using space IDs and an existing user identity. +Creates a new Access Grant that gives a user identity a PIN code on one or more devices, such as standalone smart locks. #### Code: ```php $seam->access_grants->create( user_identity_id: "e3d736c1-540d-4d10-83e5-9a4e135453b4", - space_ids: [ - "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", - "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a", - ], - requested_access_methods: [ - ["mode" => "code"], - ["mode" => "card"], - ["mode" => "mobile_key"], - ], + device_ids: ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"], + requested_access_methods: [["mode" => "code"]], starts_at: "2025-06-16T16:54:17.946606Z", ends_at: "2025-06-18T16:54:17.946606Z", ); @@ -310,15 +201,10 @@ $seam->access_grants->create( ```php [ "access_grant_id" => "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", - "access_method_ids" => [ - "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", - "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", - "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f", - ], + "access_method_ids" => ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"], "created_at" => "2025-06-16T16:54:17.946606Z", "display_name" => "My Access Grant", "ends_at" => "2025-06-18T16:54:17.946606Z", - "instant_key_url" => "https://ik.seam.co/ABCXYZ", "requested_access_methods" => [ [ "display_name" => "PIN Code Credential", @@ -328,26 +214,6 @@ $seam->access_grants->create( "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", ], ], - [ - "display_name" => "Card Credential", - "mode" => "card", - "created_at" => "2025-06-16T16:54:19.946606Z", - "created_access_method_ids" => [ - "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", - ], - ], - [ - "display_name" => "Mobile Key Credential", - "mode" => "mobile_key", - "created_at" => "2025-06-16T16:54:21.946606Z", - "created_access_method_ids" => [ - "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f", - ], - ], - ], - "space_ids" => [ - "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", - "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a", ], "starts_at" => "2025-06-16T16:54:17.946606Z", "user_identity_id" => "e3d736c1-540d-4d10-83e5-9a4e135453b4", @@ -358,12 +224,12 @@ $seam->access_grants->create( {% tab title="Seam CLI" %} -Creates a new Access Grant using space IDs and an existing user identity. +Creates a new Access Grant that gives a user identity a PIN code on one or more devices, such as standalone smart locks. #### Code: ```seam_cli -seam access-grants create --user_identity_id "e3d736c1-540d-4d10-83e5-9a4e135453b4" --space_ids ["1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d","7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a"] --requested_access_methods [{"mode":"code"},{"mode":"card"},{"mode":"mobile_key"}] --starts_at "2025-06-16T16:54:17.946606Z" --ends_at "2025-06-18T16:54:17.946606Z" +seam access-grants create --user_identity_id "e3d736c1-540d-4d10-83e5-9a4e135453b4" --device_ids ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"] --requested_access_methods [{"mode":"code"}] --starts_at "2025-06-16T16:54:17.946606Z" --ends_at "2025-06-18T16:54:17.946606Z" ``` #### Output: @@ -371,39 +237,18 @@ seam access-grants create --user_identity_id "e3d736c1-540d-4d10-83e5-9a4e135453 ```seam_cli { "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", - "access_method_ids": [ - "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", - "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", - "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f" - ], + "access_method_ids": ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"], "created_at": "2025-06-16T16:54:17.946606Z", "display_name": "My Access Grant", "ends_at": "2025-06-18T16:54:17.946606Z", - "instant_key_url": "https://ik.seam.co/ABCXYZ", "requested_access_methods": [ { "display_name": "PIN Code Credential", "mode": "code", "created_at": "2025-06-16T16:54:17.946606Z", "created_access_method_ids": ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"] - }, - { - "display_name": "Card Credential", - "mode": "card", - "created_at": "2025-06-16T16:54:19.946606Z", - "created_access_method_ids": ["5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f"] - }, - { - "display_name": "Mobile Key Credential", - "mode": "mobile_key", - "created_at": "2025-06-16T16:54:21.946606Z", - "created_access_method_ids": ["c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f"] } ], - "space_ids": [ - "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", - "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a" - ], "starts_at": "2025-06-16T16:54:17.946606Z", "user_identity_id": "e3d736c1-540d-4d10-83e5-9a4e135453b4", "workspace_id": "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7" @@ -702,6 +547,419 @@ Returns: ## Examples +### Create an Access Grant using spaces + +Creates a new Access Grant using space IDs and an existing user identity. + +{% tabs %} +{% tab title="JavaScript" %} + + + +#### Code: + +```javascript +await seam.accessGrants.create({ + user_identity_id: "e3d736c1-540d-4d10-83e5-9a4e135453b4", + space_ids: [ + "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", + "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a", + ], + requested_access_methods: [ + { mode: "code" }, + { mode: "card" }, + { mode: "mobile_key" }, + ], + starts_at: "2025-06-16T16:54:17.946606Z", + ends_at: "2025-06-18T16:54:17.946606Z", +}); +``` + +#### Output: + +```javascript +{ + "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "access_method_ids": [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", + "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", + "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f" + ], + "created_at": "2025-06-16T16:54:17.946606Z", + "display_name": "My Access Grant", + "ends_at": "2025-06-18T16:54:17.946606Z", + "instant_key_url": "https://ik.seam.co/ABCXYZ", + "requested_access_methods": [ + { + "display_name": "PIN Code Credential", + "mode": "code", + "created_at": "2025-06-16T16:54:17.946606Z", + "created_access_method_ids": ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"] + }, + { + "display_name": "Card Credential", + "mode": "card", + "created_at": "2025-06-16T16:54:19.946606Z", + "created_access_method_ids": ["5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f"] + }, + { + "display_name": "Mobile Key Credential", + "mode": "mobile_key", + "created_at": "2025-06-16T16:54:21.946606Z", + "created_access_method_ids": ["c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f"] + } + ], + "space_ids": [ + "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", + "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a" + ], + "starts_at": "2025-06-16T16:54:17.946606Z", + "user_identity_id": "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "workspace_id": "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7" +} +``` +{% endtab %} + +{% tab title="cURL" %} + + + +#### Code: + +```curl +curl --include --request POST "https://connect.getseam.com/access_grants/create" \ + --header "Authorization: Bearer $SEAM_API_KEY" \ + --json @- < "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "access_method_ids" => %w[ + a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d + 5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f + c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f + ], + "created_at" => "2025-06-16T16:54:17.946606Z", + "display_name" => "My Access Grant", + "ends_at" => "2025-06-18T16:54:17.946606Z", + "instant_key_url" => "https://ik.seam.co/ABCXYZ", + "requested_access_methods" => [ + { + display_name: "PIN Code Credential", + mode: "code", + created_at: "2025-06-16T16:54:17.946606Z", + created_access_method_ids: ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"], + }, + { + display_name: "Card Credential", + mode: "card", + created_at: "2025-06-16T16:54:19.946606Z", + created_access_method_ids: ["5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f"], + }, + { + display_name: "Mobile Key Credential", + mode: "mobile_key", + created_at: "2025-06-16T16:54:21.946606Z", + created_access_method_ids: ["c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f"], + }, + ], + "space_ids" => %w[1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d 7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a], + "starts_at" => "2025-06-16T16:54:17.946606Z", + "user_identity_id" => "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "workspace_id" => "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7", +} +``` +{% endtab %} + +{% tab title="PHP" %} + + + +#### Code: + +```php +$seam->access_grants->create( + user_identity_id: "e3d736c1-540d-4d10-83e5-9a4e135453b4", + space_ids: [ + "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", + "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a", + ], + requested_access_methods: [ + ["mode" => "code"], + ["mode" => "card"], + ["mode" => "mobile_key"], + ], + starts_at: "2025-06-16T16:54:17.946606Z", + ends_at: "2025-06-18T16:54:17.946606Z", +); +``` + +#### Output: + +```php +[ + "access_grant_id" => "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "access_method_ids" => [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", + "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", + "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f", + ], + "created_at" => "2025-06-16T16:54:17.946606Z", + "display_name" => "My Access Grant", + "ends_at" => "2025-06-18T16:54:17.946606Z", + "instant_key_url" => "https://ik.seam.co/ABCXYZ", + "requested_access_methods" => [ + [ + "display_name" => "PIN Code Credential", + "mode" => "code", + "created_at" => "2025-06-16T16:54:17.946606Z", + "created_access_method_ids" => [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", + ], + ], + [ + "display_name" => "Card Credential", + "mode" => "card", + "created_at" => "2025-06-16T16:54:19.946606Z", + "created_access_method_ids" => [ + "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", + ], + ], + [ + "display_name" => "Mobile Key Credential", + "mode" => "mobile_key", + "created_at" => "2025-06-16T16:54:21.946606Z", + "created_access_method_ids" => [ + "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f", + ], + ], + ], + "space_ids" => [ + "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", + "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a", + ], + "starts_at" => "2025-06-16T16:54:17.946606Z", + "user_identity_id" => "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "workspace_id" => "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7", +]; +``` +{% endtab %} + +{% tab title="Seam CLI" %} + + + +#### Code: + +```seam_cli +seam access-grants create --user_identity_id "e3d736c1-540d-4d10-83e5-9a4e135453b4" --space_ids ["1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d","7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a"] --requested_access_methods [{"mode":"code"},{"mode":"card"},{"mode":"mobile_key"}] --starts_at "2025-06-16T16:54:17.946606Z" --ends_at "2025-06-18T16:54:17.946606Z" +``` + +#### Output: + +```seam_cli +{ + "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "access_method_ids": [ + "a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d", + "5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f", + "c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f" + ], + "created_at": "2025-06-16T16:54:17.946606Z", + "display_name": "My Access Grant", + "ends_at": "2025-06-18T16:54:17.946606Z", + "instant_key_url": "https://ik.seam.co/ABCXYZ", + "requested_access_methods": [ + { + "display_name": "PIN Code Credential", + "mode": "code", + "created_at": "2025-06-16T16:54:17.946606Z", + "created_access_method_ids": ["a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d"] + }, + { + "display_name": "Card Credential", + "mode": "card", + "created_at": "2025-06-16T16:54:19.946606Z", + "created_access_method_ids": ["5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f"] + }, + { + "display_name": "Mobile Key Credential", + "mode": "mobile_key", + "created_at": "2025-06-16T16:54:21.946606Z", + "created_access_method_ids": ["c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f"] + } + ], + "space_ids": [ + "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", + "7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a" + ], + "starts_at": "2025-06-16T16:54:17.946606Z", + "user_identity_id": "e3d736c1-540d-4d10-83e5-9a4e135453b4", + "workspace_id": "750fc0bc-4450-4356-8d9f-18c6a3a6b2c7" +} +``` +{% endtab %} + +{% endtabs %} + +--- + + ### Create an Access Grant using entrances and devices Creates a new Access Grant using entrance IDs and device IDs and an existing user identity. diff --git a/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md b/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md index c4b360e5f..982975037 100644 --- a/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md +++ b/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md @@ -40,7 +40,7 @@ This integration supports all wireless locks and readers connected to the Dormak ## Related Features -* [**Access Grants**](https://docs.seam.co/latest/capability-guides/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Ambiance. For advanced, low-level control, you can still work directly with the ACS API. +* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Ambiance. For advanced, low-level control, you can still work directly with the ACS API. * [**Mobile Keys**](https://docs.seam.co/latest/capability-guides/mobile-access) – Provision and revoke Bluetooth and wallet-based credentials directly from your PMS or app. * [**Instant Keys**](https://docs.seam.co/latest/capability-guides/instant-keys) - Instantly issue temporary mobile pass that is shareable via an email or text. * [**Plastic Card Encoding**](https://docs.seam.co/latest/api/acs/encoders/encode_credential) – Encode and issue physical access cards using Seam’s card management API. diff --git a/docs/brand-guides/dormakaba-community-access-control-system/README.md b/docs/brand-guides/dormakaba-community-access-control-system/README.md index e9db8e09b..6868a16c9 100644 --- a/docs/brand-guides/dormakaba-community-access-control-system/README.md +++ b/docs/brand-guides/dormakaba-community-access-control-system/README.md @@ -40,7 +40,7 @@ This integration supports all wireless locks and readers connected to the Dormak ## Related Features -* [**Access Grants**](https://docs.seam.co/latest/capability-guides/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Community. For advanced, low-level control, you can still work directly with the ACS API. +* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Community. For advanced, low-level control, you can still work directly with the ACS API. * [**Mobile Keys**](https://docs.seam.co/latest/capability-guides/mobile-access) – Provision and revoke Bluetooth and wallet-based credentials directly from your PMS or app. * [**Instant Keys**](https://docs.seam.co/latest/capability-guides/instant-keys) - Instantly issue temporary mobile pass that is shareable via an email or text. * [**Plastic Card Encoding**](https://docs.seam.co/latest/api/acs/encoders/encode_credential) – Encode and issue physical access cards using Seam’s card management API. diff --git a/docs/guides/README.md b/docs/guides/README.md index b01ae4caf..f72a4f0de 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -8,7 +8,7 @@ description: >- Connect your IoT devices and systems using Seam! From smart locks and thermostats, to whole building access control systems, Seam integrates hundreds of device types and puts them behind a standardized, intuitive API. -Unlock doors. Create access codes. Set temperatures. Grant access. Get started with Seam! +Grant access. Unlock doors. Set temperatures. Monitor noise. Get started with Seam! {% embed url="https://youtu.be/99ZpSq2Z1-8" %} You can control your smart locks easily with the Seam API. In this video, learn how to get started! @@ -34,7 +34,7 @@ With the Seam API, you can grant users access to entrances controlled by a varie Explore our device API guides to start connecting and controlling specific device and system categories. -
Door Locks APIGet started →smart-locks-16-9.pngsmart-locks
Thermostats APIGet started →thermostats-cover.pngthermostats
Noise Sensors APIGet started →sensors-16-9.pngnoise-sensors
Access Control Systems APIGet started →acs-cover.pngaccess-systems
+
Grant AccessGrant access to any space with Access Grants →access-grant-using-spaces.pnguse-cases/granting-access/README.md
Door Locks APIGet started →smart-locks-16-9.pngsmart-locks
Thermostats APIGet started →thermostats-cover.pngthermostats
Noise Sensors APIGet started →sensors-16-9.pngnoise-sensors
Access Control Systems APIGet started →acs-cover.pngaccess-systems
*** diff --git a/docs/guides/SUMMARY.md b/docs/guides/SUMMARY.md index a65268b53..b6c1c2ac7 100644 --- a/docs/guides/SUMMARY.md +++ b/docs/guides/SUMMARY.md @@ -4,6 +4,21 @@ * [Quick Start](quickstart.md) * [Go Live!](go-live.md) +## Use Cases + +* [Granting Access](use-cases/granting-access/README.md) + * [Access Grants](use-cases/granting-access/access-grants/README.md) + * [Access Grant Quick Start](use-cases/granting-access/access-grants/access-grant-quick-start.md) + * [Creating an Access Grant Using Devices](use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md) + * [Creating an Access Grant Using Spaces](use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md) + * [Creating an Access Grant Using Entrances](use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) + * [Delivering Access Methods](use-cases/granting-access/access-grants/delivering-access-methods.md) + * [Reservation Access Grants](use-cases/granting-access/access-grants/reservation-access-grants.md) + * [Retrieving Access Grants and Access Methods](use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md) + * [Updating an Access Grant](use-cases/granting-access/access-grants/updating-an-access-grant.md) + * [Revoking an Access Method](use-cases/granting-access/access-grants/revoking-an-access-method.md) + * [Deleting an Access Grant](use-cases/granting-access/access-grants/deleting-an-access-grant.md) + ## Core Concepts * [Overview](core-concepts/overview.md) @@ -91,16 +106,6 @@ * [Initializing the Seam Mobile SDK](capability-guides/mobile-access/mobile-device-sdks/initializing-the-seam-mobile-sdk.md) * [Handling System Permissions](capability-guides/mobile-access/mobile-device-sdks/handling-system-permissions.md) * [Using Unlock With Tap](capability-guides/mobile-access/mobile-device-sdks/using-unlock-with-tap.md) -* [Access Grants](capability-guides/access-grants/README.md) - * [Access Grant Quick Start](capability-guides/access-grants/access-grant-quick-start.md) - * [Creating an Access Grant Using Entrances](capability-guides/access-grants/creating-an-access-grant-using-entrances.md) - * [Creating an Access Grant Using Spaces](capability-guides/access-grants/creating-an-access-grant-using-spaces.md) - * [Delivering Access Methods](capability-guides/access-grants/delivering-access-methods.md) - * [Reservation Access Grants](capability-guides/access-grants/reservation-access-grants.md) - * [Retrieving Access Grants and Access Methods](capability-guides/access-grants/retrieving-access-grants-and-access-methods.md) - * [Updating an Access Grant](capability-guides/access-grants/updating-an-access-grant.md) - * [Revoking an Access Method](capability-guides/access-grants/revoking-an-access-method.md) - * [Deleting an Access Grant](capability-guides/access-grants/deleting-an-access-grant.md) * [Instant Keys](capability-guides/instant-keys/README.md) * [How Instant Keys Work](capability-guides/instant-keys/how-instant-keys-work.md) * [Setting Up Your Site for Instant Keys](capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) diff --git a/docs/guides/capability-guides/access-grants/README.md b/docs/guides/capability-guides/access-grants/README.md deleted file mode 100644 index 696406127..000000000 --- a/docs/guides/capability-guides/access-grants/README.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -description: >- - Learn how to grant users access to entrances using intuitive and efficient - Access Grants. ---- - -# Access Grants - -Seam Access Grants provide a unified, intuitive, and streamlined way to grant and manage user access across multiple access system providers. With a single command you can define the "who, where, when, and how" for assigning a user access to entrances and other access points. Access Grants support plastic cards, PIN codes, and mobile keys, including Instant Keys. You can even create multiple access methods using a single command. - -
Use Access Grants to specify the characteristics of access.

Use Access Grants to specify the characteristics of access.

- -An Access Grant includes the following characteristics: - -
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Whereacs_entrance_ids or space_idsThe entrances to which to grant access. You can specify one or more entrances by ID. Alternately, you can define spaces (currently in Alpha and available as an early access preview) that contain groups of related entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
- -*** - -## Access Grant Process - -The Access Grant process consists of the following steps: - -
StepDescription
  1. Set up your site for Access Grants.
This step includes confirming hardware capabilities and making sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. Connect your access system to Seam.
To connect your access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process. For on-premises access systems, use Seam Bridge to connect the access system securely to Seam.
For details, see Connect an Access System to Seam.
  1. (Optional) Set up spaces to organize entrances into logical groups.
You can use spaces to create groups of entrances for efficiency. For example, a user staying in Room 101 may need access to both the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these three access points and then use this space when creating an Access Grant.
For details, see spaces.
Note: Spaces are currently in Alpha. We're actively developing this feature and seeking early feedback at support@seam.co. Expect breaking changes as we refine the design.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of entrances or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Entrances and Creating an Access Grant Using Spaces.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as plastic key card, PIN code, or mobile key.

  • If you have created an access grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

- -*** - -## Using Reservations - -Some access control systems (such as Dormakaba Ambiance, Dormakaba Community, Visionline, Salto Space, and Vostio) rely on offline override behavior for guest and resident credentials. - -When issuing Access Grants for these systems, you’ll need to use reservations to ensure credentials override and join correctly. - -👉 [Learn how to use reservations with Access Grants →](reservation-access-grants.md) - -*** - -## Get Started - -To create your first Access Grant, see the [Access Grant Quick Start](access-grant-quick-start.md). Then, learn more in the following topics: - -* [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md) -* [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md) -* [Delivering Access Methods](delivering-access-methods.md) -* [Access Grants API Reference](https://docs.seam.co/latest/api/access_grants/) -* [Access Methods API Reference](https://docs.seam.co/latest/api/access_methods/) diff --git a/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md b/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md index 16114a976..eac2cfb2f 100644 --- a/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md +++ b/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md @@ -16,7 +16,7 @@ Some access control systems require encoding a plastic card with the data necess This process consists of the following basic steps: -1. Create an [Access Grant](../../access-grants/) that includes a request for a card access method and identify the ID of the resulting access method. +1. Create an [Access Grant](../../../use-cases/granting-access/access-grants/) that includes a request for a card access method and identify the ID of the resulting access method. See [Create an Access Grant](creating-and-encoding-card-access-methods.md#id-1.-create-an-access-grant). 2. Use the `/acs/encoders/list` endpoint to retrieve a list of available encoders. Then, choose the encoder that you want to use to write the access method onto the card.\ @@ -34,7 +34,7 @@ Once you have written an access method to a card, you cannot reuse the access me This example shows how to create a card access method as part of an Access Grant. Note that the `is_encoding_required` property of the resulting access method is `true`, which means that the access method must be encoded onto a card. Further, once you've encoded the access method on to the card, the `is_issued` property changes to `true`, and the `issued_at` property indicates the date and time at which the encoding occurred. -For more details about creating Access Grants, see [Creating an Access Grant Using Entrances](../../access-grants/creating-an-access-grant-using-entrances.md) and [Creating an Access Grant Using Spaces](../../access-grants/creating-an-access-grant-using-spaces.md). +For more details about creating Access Grants, see [Creating an Access Grant Using Entrances](../../../use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) and [Creating an Access Grant Using Spaces](../../../use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md). {% tabs %} {% tab title="JavaScript" %} diff --git a/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md b/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md index 6bbf62bff..3d77172a1 100644 --- a/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md +++ b/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md @@ -2,7 +2,7 @@ Seam provides a single unified API to grant and manage access across all supported hotel access systems. Intuitive and flexible, the Seam API makes it easy to grant access, no matter what type of device or system controls this access. -If you want the easiest, most efficient way to grant access, use the [Access Grants](../../capability-guides/access-grants/) API. This powerful API enables you to grant hotel guests access with a single call—for any access method. With this single API, you can… +If you want the easiest, most efficient way to grant access, use the [Access Grants](../../use-cases/granting-access/access-grants/README.md) API. This powerful API enables you to grant hotel guests access with a single call—for any access method. With this single API, you can… * Grant access to the desired set of guest rooms and relevant common areas. * Support mixed hardware environments without extra logic. diff --git a/docs/guides/quickstart.md b/docs/guides/quickstart.md index 0093d96da..c8a160f7c 100644 --- a/docs/guides/quickstart.md +++ b/docs/guides/quickstart.md @@ -1,8 +1,8 @@ --- description: >- Seam provides a unified API to connect and control IoT devices, such as smart - locks, thermostats, cameras, and sensors. This guide walks you through issuing - your first device API call. + locks, thermostats, cameras, and sensors. This guide walks you through + granting your first access with the Seam API. --- # Quick Start @@ -86,9 +86,9 @@ Install using [nuget](https://www.nuget.org/packages/Seam). {% endtab %} {% endtabs %} -## Step 3 — Unlock a Door +## Step 3 — Grant Access -Unlock your first door! +Grant your first access! You'll create an [Access Grant](use-cases/granting-access/access-grants/README.md)—the default and recommended way to grant a person access to any physical space through Seam—and get back a PIN code that your user could enter on the lock's keypad. To start, open a terminal window and export your API key as an environment variable. @@ -98,7 +98,7 @@ $ export SEAM_API_KEY=seam_test2bMS_94SrGUXuNR2JmJkjtvBQDg5c The Seam SDK that you have installed automatically uses this API key once you have exported it. -Next, use the following code to retrieve one of the devices that you connected in [Step 1](quickstart.md#step-1-connect-devices), inspect the supported capabilities of the device, and use the Seam API to unlock the door: +Next, use the following code to retrieve one of the devices that you connected in [Step 1](quickstart.md#step-1-connect-devices), inspect the supported capabilities of the device, and create an Access Grant that issues a PIN code on the lock: {% tabs %} {% tab title="JavaScript" %} @@ -112,34 +112,41 @@ const seam = new Seam(); // Seam automatically uses your exported SEAM_API_KEY. // Retrieve all devices, filtered by manufacturer, // which is one of several filters that list() supports. -const allAugustLocks = await seam.devices.list({manufacturer: "august"}); +const allAugustLocks = await seam.devices.list({ manufacturer: "august" }); // Select the first device as an example. const frontDoor = allAugustLocks[0]; -// Confirm that the device can remotely unlock. +// Confirm that the device can program access codes. // You're using a capability flag here! -if (frontDoor.can_remotely_unlock) { - // Perform the unlock operation - // and return an action attempt. - const actionAttempt = await seam.locks.unlockDoor({ - device_id: frontDoor.device_id +if (frontDoor.can_program_online_access_codes) { + // Grant your user access to the device + // for a specific time window. + const accessGrant = await seam.accessGrants.create({ + user_identity: { + full_name: "Jane Doe", + email_address: "jane.doe@example.com", + }, + device_ids: [frontDoor.device_id], + requested_access_methods: [{ mode: "code" }], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z", }); -}; + + // Retrieve the issued access method to get the PIN code. + const accessMethod = await seam.accessMethods.get({ + access_method_id: + accessGrant.requested_access_methods[0].created_access_method_ids[0], + }); + + console.log(accessMethod.code); +} ``` **Output:** ```json -{ - actionAttempt: { - status: 'success', - action_attempt_id: '11111111-2222-3333-4444-555555555555', - action_type: 'UNLOCK_DOOR', - result: {}, - error: null - } -} +"1234" ``` {% endtab %} @@ -151,8 +158,7 @@ if (frontDoor.can_remotely_unlock) { # Retrieve all devices, filtered by manufacturer, which is # one of several filters that the list endpoint supports. all_august_locks=$( - # Use GET or POST. - curl -X 'GET' \ + curl -X 'POST' \ 'https://connect.getseam.com/devices/list' \ -H 'accept: application/json' \ -H "Authorization: Bearer ${SEAM_API_KEY}" \ @@ -164,35 +170,44 @@ all_august_locks=$( # Select the first device as an example. front_door=$(jq -r '.devices[0]' <<< ${all_august_locks}) -# Confirm that the device can remotely unlock. +# Confirm that the device can program access codes. # You're using a capability flag here! -if $(jq -r '.can_remotely_unlock' <<< ${front_door}); then \ - # Perform the unlock operation - # and return an action attempt. +if $(jq -r '.can_program_online_access_codes' <<< ${front_door}); then \ + # Grant your user access to the device + # for a specific time window. + access_grant=$(curl -X 'POST' \ + 'https://connect.getseam.com/access_grants/create' \ + -H 'accept: application/json' \ + -H "Authorization: Bearer ${SEAM_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d "{ + \"user_identity\": { + \"full_name\": \"Jane Doe\", + \"email_address\": \"jane.doe@example.com\" + }, + \"device_ids\": [\"$(jq -r '.device_id' <<< ${front_door})\"], + \"requested_access_methods\": [{\"mode\": \"code\"}], + \"starts_at\": \"2025-07-13T15:00:00.000Z\", + \"ends_at\": \"2025-07-16T11:00:00.000Z\" + }"); + + # Retrieve the issued access method to get the PIN code. + access_method_id=$(jq -r '.access_grant.requested_access_methods[0].created_access_method_ids[0]' <<< ${access_grant}); curl -X 'POST' \ - 'https://connect.getseam.com/locks/unlock_door' \ + 'https://connect.getseam.com/access_methods/get' \ -H 'accept: application/json' \ -H "Authorization: Bearer ${SEAM_API_KEY}" \ -H 'Content-Type: application/json' \ -d "{ - \"device_id\": \"$(jq -r '.device_id' <<< ${front_door})\" - }"; + \"access_method_id\": \"${access_method_id}\" + }" | jq -r '.access_method.code'; fi ``` **Output:** ```json -{ - "action_attempt": { - "status":"pending", - "action_type":"UNLOCK_DOOR", - "action_attempt_id":"11111111-2222-3333-4444-555555555555", - "result":null, - "error":null - }, - "ok":true -} +"1234" ``` {% endtab %} @@ -212,24 +227,34 @@ all_august_locks = seam.devices.list(manufacturer="august") # Select the first device as an example. front_door = all_august_locks[0] -# Confirm that the device can remotely unlock. +# Confirm that the device can program access codes. # You're using a capability flag here! -if front_door.can_remotely_unlock: - # Perform the unlock operation - # and return an action attempt. - action_attempt=seam.locks.unlock_door(device_id=front_door.device_id) +if front_door.can_program_online_access_codes: + # Grant your user access to the device + # for a specific time window. + access_grant = seam.access_grants.create( + user_identity={ + "full_name": "Jane Doe", + "email_address": "jane.doe@example.com" + }, + device_ids=[front_door.device_id], + requested_access_methods=[{"mode": "code"}], + starts_at="2025-07-13T15:00:00.000Z", + ends_at="2025-07-16T11:00:00.000Z" + ) + + # Retrieve the issued access method to get the PIN code. + access_method = seam.access_methods.get( + access_method_id=access_grant.requested_access_methods[0].created_access_method_ids[0] + ) + + print(access_method.code) ``` **Output:** ``` -ActionAttempt( - status='pending', - action_type='UNLOCK_DOOR', - action_attempt_id='11111111-2222-3333-4444-555555555555', - result=None, - error={} -) +1234 ``` {% endtab %} @@ -249,23 +274,35 @@ all_august_locks = seam.devices.list(manufacturer: "august") # Select the first device as an example. front_door = all_august_locks[0] -# Confirm that the device can remotely unlock. +# Confirm that the device can program access codes. # You're using a capability flag here! -if (front_door.can_remotely_unlock) - # Perform the unlock operation - # and return an action attempt. - action_attempt = seam.locks.unlock_door(device_id: front_door.device_id) +if (front_door.can_program_online_access_codes) + # Grant your user access to the device + # for a specific time window. + access_grant = seam.access_grants.create( + user_identity: { + full_name: "Jane Doe", + email_address: "jane.doe@example.com", + }, + device_ids: [front_door.device_id], + requested_access_methods: [{"mode": "code"}], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z" + ) + + # Retrieve the issued access method to get the PIN code. + access_method = seam.access_methods.get( + access_method_id: access_grant.requested_access_methods[0].created_access_method_ids[0] + ) + + puts access_method.code end ``` **Output:** ``` - +1234 ``` {% endtab %} @@ -286,25 +323,35 @@ $all_august_locks = $seam->devices->list(manufacturer: "august"); // Select the first device as an example. $front_door = $all_august_locks[0]; -// Confirm that the device can remotely unlock. +// Confirm that the device can program access codes. // You're using a capability flag here! -if ($front_door->can_remotely_unlock) { - // Perform the unlock operation - // and return an action attempt. - $action_attempt = $seam->locks->unlock_door(device_id: $front_door->device_id); +if ($front_door->can_program_online_access_codes) { + // Grant your user access to the device + // for a specific time window. + $access_grant = $seam->access_grants->create( + user_identity: [ + "full_name" => "Jane Doe", + "email_address" => "jane.doe@example.com", + ], + device_ids: [$front_door->device_id], + requested_access_methods: [["mode" => "code"]], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z" + ); + + // Retrieve the issued access method to get the PIN code. + $access_method = $seam->access_methods->get( + access_method_id: $access_grant->requested_access_methods[0]->created_access_method_ids[0] + ); + + echo $access_method->code; } ``` **Output:** -```json -{ - "action_attempt_id":"11111111-2222-3333-4444-555555555555", - "action_type":"UNLOCK_DOOR", - "error":null, - "result":{}, - "status":"success" -} +``` +1234 ``` {% endtab %} @@ -313,46 +360,33 @@ if ($front_door->can_remotely_unlock) { **Code:** ```csharp -using Seam.Client; - -var seam = new SeamClient(apiToken: SEAM_API_KEY); - -// Retrieve all devices, filtered by manufacturer, -// which is one of several filters that list() supports. -var allAugustLocks = seam.Devices.List( - manufacturer: Seam.Api.Devices.ListRequest.ManufacturerEnum.August -); - -// Select the first device as an example. -Device frontDoor = allAugustLocks[0]; - -// Confirm that the device can remotely unlock. -// You're using a capability flag here! -if (frontDoor.CanRemotelyUnlock == true) { - // Perform the unlock operation - // and return an action attempt. - ActionAttempt actionAttempt = seam.Locks.UnlockDoor(deviceId: frontDoor.DeviceId); -} +// Coming Soon! ``` **Output:** ```json -{ - "status": "pending", - "action_type": "UNLOCK_DOOR", - "action_attempt_id": "11111111-2222-3333-4444-555555555555" -} +// Coming Soon! ``` {% endtab %} {% endtabs %} +{% hint style="info" %} +In a sandbox workspace, the access method is issued almost instantly. On real devices, issuance can take a few moments—poll the access method until `is_issued` is `true` or watch for the `access_method.issued` event before reading the `code`. +{% endhint %} + ## Congrats! :tada: Now that you have completed the Seam API Quick Start, you are well on your way to writing code that can actually control the physical world! :sunglasses: Here are some ideas of what you can do next... +### Go Deeper on Granting Access + +You just created your first Access Grant. The same API issues mobile keys, [Instant Keys](capability-guides/instant-keys/README.md), and plastic cards, grants access to multiple devices and [access system entrances](use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) in one call, and manages the full credential lifecycle. See [Granting Access](use-cases/granting-access/README.md) and the [Access Grants capability guide](use-cases/granting-access/access-grants/README.md). + +You can also control devices directly—for example, [lock and unlock doors](capability-guides/smart-locks/lock-and-unlock.md) remotely. + ### Connect a Real Device If you have a real device, you can try to control it using the steps in this Quick Start. Note that you must first [create a production workspace](go-live.md#create-a-production-workspace) because sandbox workspaces only enable you to connect test accounts and devices. For more information, see [Workspaces](core-concepts/workspaces/). diff --git a/docs/guides/use-cases/granting-access/README.md b/docs/guides/use-cases/granting-access/README.md new file mode 100644 index 000000000..0444c8629 --- /dev/null +++ b/docs/guides/use-cases/granting-access/README.md @@ -0,0 +1,61 @@ +--- +description: >- + Use Access Grants to grant access to any physical space, irrespective of the + locking hardware. Learn which Seam API to use for granting access. +--- + +# Granting Access + +Use **[Access Grants](access-grants/README.md)** to grant a person access to a physical space. Access Grants are the default and recommended way to grant access on Seam—for any kind of space (a home, a building, a locker, a parking structure) and irrespective of the locking hardware (standalone smart locks, access control systems, and more). + +With one API call, you tell Seam *who* should have access, *where*, *when*, and *how*. Seam creates the credential, attaches it to a user identity, encodes the time window, propagates it to every relevant device, and re-materializes it as devices come online, get added to spaces, or change ownership. PIN codes, mobile keys, and plastic cards—all through the same request. + +```javascript +await seam.accessGrants.create({ + user_identity: { + full_name: "Jane Doe", + email_address: "jane@example.com", + }, + device_ids: [front_door_lock_id], + requested_access_methods: [{ mode: "code" }], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z", +}); +``` + +*** + +## Start Simple, Then Scale Up + +1. **One device.** Grant access to a single smart lock with a `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](access-grants/creating-an-access-grant-using-devices.md). +2. **Multiple devices and spaces.** Pass several `device_ids` in one call, or organize access points into [spaces](https://docs.seam.co/latest/api/spaces) (Alpha) and grant access by `space_id`. See [Creating an Access Grant Using Spaces](access-grants/creating-an-access-grant-using-spaces.md). +3. **Access control systems.** Grant access to ACS entrances with `acs_entrance_ids`, including mobile keys, card encoding, and reservations. See [Creating an Access Grant Using Entrances](access-grants/creating-an-access-grant-using-entrances.md). + +*** + +## Which API Should I Use to Grant Access? + +**Use Access Grants.** The lower-level APIs remain available for a small set of specific scenarios: + +| Scenario | API to use | +| --- | --- | +| Grant a person access to one or more smart locks | [Access Grants](access-grants/README.md) (`device_ids`) | +| Grant a person access to ACS entrances | [Access Grants](access-grants/README.md) (`acs_entrance_ids`) | +| Grant a person access to a group of access points | [Access Grants](access-grants/README.md) + [spaces](https://docs.seam.co/latest/api/spaces) (`space_ids`) | +| Issue a mobile key or Instant Key | [Access Grants](access-grants/README.md) (`mode: "mobile_key"`) | +| Set a PIN with a specific custom code value on a single lock | [Access Codes API](../../capability-guides/smart-locks/access-codes/README.md) (low-level) | +| Manage offline or backup PIN code pools on a single lock | [Access Codes API](../../capability-guides/smart-locks/access-codes/README.md) (low-level) | +| Directly manage ACS users, credentials, and access groups | [ACS API](../../capability-guides/access-systems/README.md) (low-level) | +| Lock or unlock a door remotely | [Smart Locks API](../../capability-guides/smart-locks/README.md) (not a granting workflow) | + +{% hint style="warning" %} +The low-level [Access Codes](../../capability-guides/smart-locks/access-codes/README.md) and [ACS](../../capability-guides/access-systems/README.md) granting workflows are no longer recommended for granting access. For new development, use Access Grants—they cover the same providers through one consistent, future-proof interface. +{% endhint %} + +*** + +## Get Started + +* [Access Grant Quick Start](access-grants/access-grant-quick-start.md) +* [Access Grants Capability Guide](access-grants/README.md) +* [Access Grants API Reference](https://docs.seam.co/latest/api/access_grants/) diff --git a/docs/guides/use-cases/granting-access/access-grants/README.md b/docs/guides/use-cases/granting-access/access-grants/README.md new file mode 100644 index 000000000..2636f7dd2 --- /dev/null +++ b/docs/guides/use-cases/granting-access/access-grants/README.md @@ -0,0 +1,79 @@ +--- +description: >- + Access Grants are the default and recommended way to grant access to any + physical space, across smart locks and access control systems. +--- + +# Access Grants + +Access Grants are the default and recommended way to grant a person access to any physical space—a home, a building, a locker, a parking structure—irrespective of the locking hardware that secures it. With a single API call, you define the "who, where, when, and how" of access, and Seam takes care of creating and managing the underlying credentials on every device and access system involved. + +Access Grants work across the entire Seam provider lineup: + +* **Standalone smart locks**, such as August, Yale, Schlage, Lockly, TTLock, Tedee, and igloohome devices. Specify the locks directly with `device_ids`. +* **Access control systems (ACS)**, such as Salto KS, Salto Space, ASSA ABLOY Visionline and Vostio, dormakaba, Brivo, and Avigilon Alta. Specify entrances with `acs_entrance_ids`. +* **Mixed estates.** Combine `device_ids` and `acs_entrance_ids` in the same Access Grant, or group access points into [spaces](https://docs.seam.co/latest/api/spaces) and grant access to the whole group with `space_ids`. + +Access Grants support PIN codes, plastic cards, and mobile keys, including [Instant Keys](../../../capability-guides/instant-keys/). You can request multiple access methods in a single call, and Seam issues each credential on the right hardware. + +```javascript +await seam.accessGrants.create({ + user_identity: { + full_name: "Jane Doe", + email_address: "jane@example.com", + }, + device_ids: [front_door_lock_id], + requested_access_methods: [{ mode: "code" }], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z", +}); +``` + +{% hint style="success" %} +Access Grants supersede the lower-level [access codes](../../../capability-guides/smart-locks/access-codes/README.md) and [ACS credential](../../../capability-guides/access-systems/README.md) granting workflows. For new development, grant access with Access Grants. To understand when you might still drop down to the lower-level APIs, see the characteristics and process below, as well as the per-system integration guides. +{% endhint %} + +An Access Grant includes the following characteristics: + +
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Wheredevice_ids, space_ids, or acs_entrance_idsThe access points to which to grant access. Specify one or more devices (such as standalone smart locks) by ID, one or more access system entrances by ID, or both. Alternately, you can define spaces (currently in Alpha and available as an early access preview) that contain groups of related devices and entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
+ +*** + +## Start Simple, Then Scale Up + +We recommend learning Access Grants in three steps, from the simplest setup to the most advanced: + +1. **One device.** Connect a smart lock and create an Access Grant with a single `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). +2. **Multiple devices and spaces.** Pass several `device_ids` in one call to grant access to a set of locks at once. To manage groups of access points by name—for example, everything a guest in Unit 101 needs—organize them into [spaces](creating-an-access-grant-using-spaces.md) and grant access by `space_id`. Note that spaces are currently in Alpha. +3. **Access control systems.** Connect an ACS, such as Salto, Visionline, or Brivo, and grant access to entrances with `acs_entrance_ids`. This path can involve additional setup, such as licenses, on-premises connections through Seam Bridge, mobile key configuration, and [reservations](reservation-access-grants.md) for offline-override systems. See [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md). + +*** + +## Access Grant Process + +The Access Grant process consists of the following steps: + +
StepDescription
  1. Connect your devices or access system to Seam.
To connect your devices or access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process.
For standalone smart locks, this is all the setup you need.
For on-premises access systems, use Seam Bridge to connect the access system securely to Seam. For details, see Connect an Access System to Seam.
  1. (Access systems only) Set up your site.
If you are granting access to access system entrances, confirm hardware capabilities and make sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. (Optional) Set up spaces to organize access points into logical groups.
You can use spaces to create groups of devices and entrances for efficiency. For example, a user staying in Room 101 may need access to the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these access points and then use this space when creating an Access Grant.
For details, see spaces.
Note: Spaces are currently in Alpha. We're actively developing this feature and seeking early feedback at support@seam.co. Expect breaking changes as we refine the design.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of devices, entrances, or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Devices, Creating an Access Grant Using Spaces, and Creating an Access Grant Using Entrances.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as PIN code, plastic key card, or mobile key.

  • If you have created an Access Grant that includes a code access method, retrieve the access method to get the PIN code and share it with your user.
  • If you have created an Access Grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

+ +*** + +## Using Reservations + +Some access control systems (such as Dormakaba Ambiance, Dormakaba Community, Visionline, Salto Space, and Vostio) rely on offline override behavior for guest and resident credentials. + +When issuing Access Grants for these systems, you’ll need to use reservations to ensure credentials override and join correctly. + +👉 [Learn how to use reservations with Access Grants →](reservation-access-grants.md) + +*** + +## Get Started + +To create your first Access Grant, see the [Access Grant Quick Start](access-grant-quick-start.md). Then, learn more in the following topics: + +* [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md) +* [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md) +* [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md) +* [Delivering Access Methods](delivering-access-methods.md) +* [Access Grants API Reference](https://docs.seam.co/latest/api/access_grants/) +* [Access Methods API Reference](https://docs.seam.co/latest/api/access_methods/) diff --git a/docs/guides/capability-guides/access-grants/access-grant-quick-start.md b/docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md similarity index 89% rename from docs/guides/capability-guides/access-grants/access-grant-quick-start.md rename to docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md index d7558f67c..4514335a5 100644 --- a/docs/guides/capability-guides/access-grants/access-grant-quick-start.md +++ b/docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md @@ -1,17 +1,21 @@ --- description: >- Create your first Access Grant to give a user scheduled access to a set of - entrances with Seam. + access points with Seam. --- # Access Grant Quick Start -In this quick start, create an Access Grant to give a user access to a set of entrances. Access Grants provide a unified, intuitive, and streamlined way to grant and manage user access across multiple access system providers. With a single command you can define the "who, where, when, and how" for assigning a user access to entrances and other access points. +In this quick start, create an Access Grant to give a user access to a set of access points. Access Grants are the default and recommended way to grant access to any physical space, irrespective of the locking hardware—standalone smart locks, access control systems, or a mix of both. With a single command you can define the "who, where, when, and how" for assigning a user access. + +{% hint style="success" %} +**Starting with a standalone smart lock?** The fastest first success is a single device and a PIN code: see the [Seam Quick Start](../../../quickstart.md), which creates an Access Grant on a sandbox August lock, or [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). This quick start walks through the more advanced access system (ACS) path, including key cards, mobile keys, and Instant Keys. +{% endhint %} In addition, this quick start shows you that, with Access Grants, it's easy to issue users access through multiple types of access methods, such as key cards, PIN codes, mobile keys, and Instant Keys. {% hint style="info" %} -Seam Instant Keys are the fastest way to share access. You can send them as links through text or email, with no app download required. For details, see [Instant Keys](../instant-keys/). +Seam Instant Keys are the fastest way to share access. You can send them as links through text or email, with no app download required. For details, see [Instant Keys](../../../capability-guides/instant-keys/). {% endhint %} *** @@ -20,14 +24,14 @@ Seam Instant Keys are the fastest way to share access. You can send them as link Before you begin this quick start, perform the following steps: -1. [Connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. +1. [Connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. In this quick start, you can use a Seam virtual access system in a sandbox workspace, for example, the [virtual Salto Space access system](https://docs.seam.co/latest/device-and-system-integration-guides/salto-proaccess-space-access-system/sandbox-salto-space-access-control-system). - For instructions, see [Connect an Access System to Seam](../access-systems/connect-an-acs-to-seam/). + For instructions, see [Connect an Access System to Seam](../../../capability-guides/access-systems/connect-an-acs-to-seam/). 2. Install a Seam SDK and create an API key. - For instructions, see [Installation](https://docs.seam.co/latest/api/installation) and [API Keys](../../core-concepts/authentication/api-keys.md). + For instructions, see [Installation](https://docs.seam.co/latest/api/installation) and [API Keys](../../../core-concepts/authentication/api-keys.md). *** @@ -806,7 +810,7 @@ $seam->access_methods->get( The way in which you deliver an access method depends on the mode of access. The following table describes the delivery mechanisms: -
Access Method ModeDelivery Mechanism
PIN codeYou can retrieve the access method by ID. The returned access method resource includes the code that you can share with your user.
Plastic key cardSome access systems require you to encode plastic key cards. In this case, the access method's is_encoding_required property is true. You can use the Seam API or Seam Console to encode and scan the cards. For details, see Working with Card Encoders and Scanners.
Once you've encoded the card, the access method's is_encoding_required property changes to false, and its is_issued property changes to true. The card is ready to be delivered to your user.
Mobile keyYou deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a client_session_token property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see Mobile Access.
Instant KeyEach mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the instant_key_url property. You deliver this URL to your user by sending it through text or email. There's no app download required. You can also embed an Instant Key in your own app. For details, see Instant Keys and Delivering Instant Keys.
+
Access Method ModeDelivery Mechanism
PIN codeYou can retrieve the access method by ID. The returned access method resource includes the code that you can share with your user.
Plastic key cardSome access systems require you to encode plastic key cards. In this case, the access method's is_encoding_required property is true. You can use the Seam API or Seam Console to encode and scan the cards. For details, see Working with Card Encoders and Scanners.
Once you've encoded the card, the access method's is_encoding_required property changes to false, and its is_issued property changes to true. The card is ready to be delivered to your user.
Mobile keyYou deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a client_session_token property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see Mobile Access.
Instant KeyEach mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the instant_key_url property. You deliver this URL to your user by sending it through text or email. There's no app download required. You can also embed an Instant Key in your own app. For details, see Instant Keys and Delivering Instant Keys.
*** diff --git a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md new file mode 100644 index 000000000..40c9e1ff0 --- /dev/null +++ b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md @@ -0,0 +1,767 @@ +--- +description: >- + Learn how to create an Access Grant to give a user access to one or more + devices, such as standalone smart locks. +--- + +# Creating an Access Grant Using Devices + +Granting access to a device is the simplest form of an Access Grant. You specify the user, one or more device IDs, the access schedule, and the desired access methods, and Seam takes care of creating and managing the underlying credentials on each device. + +This path works for standalone smart locks—such as August, Yale, Schlage, igloohome, and TTLock devices—that are connected to Seam through a [Connect Webview](../../../core-concepts/connect-webviews/). The devices do not need to be part of an access control system. + +An Access Grant defines the following characteristics: + +* User identity: The user to whom you want to grant access. +* Devices: The set of devices to which you want to grant the user access. +* Access schedule: The starting and ending times for access. +* Access methods: The modes of access, such as PIN codes and mobile keys. + +This topic describes how to create an Access Grant using device IDs. To learn how to organize devices and entrances into spaces and grant access to a whole space, see [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md). To learn how to grant access to access system entrances, see [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md). + +*** + +## Access Grant Creation Process + +To create an Access Grant: + +1. [Identify the devices](creating-an-access-grant-using-devices.md#identify-devices) to which you want to grant the user access. +2. [Create a user identity](creating-an-access-grant-using-devices.md#create-a-user-identity) for the user to whom you want to grant access. Alternately, you can create a new user identity as part of the Access Grant creation action. +3. [Create an Access Grant](creating-an-access-grant-using-devices.md#create-an-access-grant) for the user identity to define the devices to which the user should have access, the starting and ending times for this access, and the requested access methods, such as `code`. + + The action returns the created Access Grant. +4. [Retrieve the resulting access methods](creating-an-access-grant-using-devices.md#retrieve-the-access-methods) once they are issued. For a `code` access method, the returned access method includes the PIN code that you can deliver to your user. + +*** + +## Before You Begin + +To create an Access Grant for a device, first [connect](../../../core-concepts/connect-webviews/) the device account to Seam. Then, confirm that the device supports access codes by checking its `can_program_online_access_codes` capability flag. + +{% hint style="info" %} +You can try this entire flow in a [sandbox workspace](../../../core-concepts/workspaces/#sandbox-workspaces) using sandbox devices, such as the August sandbox locks. +{% endhint %} + +*** + +## Identify Devices + +List your devices and identify the ones to which you want to grant the user access. Check the `can_program_online_access_codes` capability flag for each device. + +{% tabs %} +{% tab title="JavaScript" %} + +**Code:** + +```javascript +const devices = await seam.devices.list(); + +const lock = devices.find( + (device) => device.can_program_online_access_codes +); +``` + +**Output:** + +```json +[ + { + "device_id": "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + "display_name": "Front Door", + "can_program_online_access_codes": true, + ... + }, + ... +] +``` +{% endtab %} + +{% tab title="cURL" %} + +**Code:** + +```bash +curl -X 'POST' \ + 'https://connect.getseam.com/devices/list' \ + -H 'accept: application/json' \ + -H "Authorization: Bearer ${SEAM_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d '{}' +``` + +**Output:** + +```json +{ + "devices": [ + { + "device_id": "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + "display_name": "Front Door", + "can_program_online_access_codes": true, + ... + }, + ... + ] +} +``` +{% endtab %} + +{% tab title="Python" %} + +**Code:** + +```python +devices = seam.devices.list() + +lock = next( + device for device in devices + if device.can_program_online_access_codes +) +``` + +**Output:** + +```python +[ + Device( + device_id="6ba7b811-9dad-11d1-80b4-00c04fd430c8", + display_name="Front Door", + can_program_online_access_codes=true, + ... + ), + ... +] +``` +{% endtab %} + +{% tab title="Ruby" %} + +**Code:** + +```ruby +devices = seam.devices.list + +lock = devices.find(&:can_program_online_access_codes) +``` + +**Output:** + +```ruby +[ + { + "device_id" => "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + "display_name" => "Front Door", + "can_program_online_access_codes" => true, + ... + }, + ... +] +``` +{% endtab %} + +{% tab title="PHP" %} + +**Code:** + +```php +$devices = $seam->devices->list(); +``` + +**Output:** + +```php +[ + [ + "device_id" => "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + "display_name" => "Front Door", + "can_program_online_access_codes" => true, + ... + ], + ... +]; +``` +{% endtab %} + +{% tab title="C#" %} + +**Code:** + +```csharp +// Coming Soon! +``` + +**Output:** + +```json +// Coming Soon! +``` +{% endtab %} +{% endtabs %} + +*** + +## Create a User Identity + +You can create a user identity before creating the Access Grant, you can retrieve an existing user identity, or you can skip this step and create a new user identity as part of the Access Grant creation action. + +To create a user identity, specify the unique `user_identity_key`, `email_address`, or `phone_number` of the user. + +{% tabs %} +{% tab title="JavaScript" %} + +**Code:** + +```javascript +await seam.userIdentities.create({ + full_name: "Jane Doe", + email_address: "jane@example.com", +}); +``` + +**Output:** + +```json +{ + "user_identity_id": "43947360-cdc8-4db6-8b22-e079416d1d8b", + "full_name": "Jane Doe", + "email_address": "jane@example.com", + ... +} +``` +{% endtab %} + +{% tab title="cURL" %} + +**Code:** + +```bash +curl -X 'POST' \ + 'https://connect.getseam.com/user_identities/create' \ + -H 'accept: application/json' \ + -H "Authorization: Bearer ${SEAM_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d '{ + "full_name": "Jane Doe", + "email_address": "jane@example.com" +}' +``` + +**Output:** + +```json +{ + "user_identity": { + "user_identity_id": "43947360-cdc8-4db6-8b22-e079416d1d8b", + "full_name": "Jane Doe", + "email_address": "jane@example.com", + ... + } +} +``` +{% endtab %} + +{% tab title="Python" %} + +**Code:** + +```python +seam.user_identities.create( + full_name="Jane Doe", + email_address="jane@example.com" +) +``` + +**Output:** + +```python +UserIdentity( + user_identity_id="43947360-cdc8-4db6-8b22-e079416d1d8b", + full_name="Jane Doe", + email_address="jane@example.com", + ... +) +``` +{% endtab %} + +{% tab title="Ruby" %} + +**Code:** + +```ruby +seam.user_identities.create( + full_name: "Jane Doe", + email_address: "jane@example.com", +) +``` + +**Output:** + +```ruby +{ + "user_identity_id" => "43947360-cdc8-4db6-8b22-e079416d1d8b", + "full_name" => "Jane Doe", + "email_address" => "jane@example.com", + ... +} +``` +{% endtab %} + +{% tab title="PHP" %} + +**Code:** + +```php +$seam->user_identities->create( + full_name: "Jane Doe", + email_address: "jane@example.com" +); +``` + +**Output:** + +```php +[ + "user_identity_id" => "43947360-cdc8-4db6-8b22-e079416d1d8b", + "full_name" => "Jane Doe", + "email_address" => "jane@example.com", + ... +]; +``` +{% endtab %} + +{% tab title="C#" %} + +**Code:** + +```csharp +// Coming Soon! +``` + +**Output:** + +```json +// Coming Soon! +``` +{% endtab %} +{% endtabs %} + +*** + +## Create an Access Grant + +To create an Access Grant, specify the user identity, device IDs, starting and ending times, and requested access methods, such as `code`. + +To grant access to multiple devices at the same time, include all the desired device IDs in the `device_ids` array. Seam creates the requested access methods on each device. + +{% tabs %} +{% tab title="JavaScript" %} + +**Code:** + +```javascript +await seam.accessGrants.create({ + user_identity_id: "43947360-cdc8-4db6-8b22-e079416d1d8b", + // Alternately, to create a new user identity, use the + // following parameter instead of user_identity_id: + // user_identity: { + // full_name: "Jane Doe", + // email_address: "jane.doe@example.com", + // }, + device_ids: [ + "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + ], + requested_access_methods: [ + {"mode": "code"} + ], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z" +}); +``` + +**Output:** + +```json +{ + "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "display_name": "My Access Grant", + "user_identity_id": "43947360-cdc8-4db6-8b22-e079416d1d8b", + "starts_at": "2025-07-13T15:00:00.000Z", + "ends_at": "2025-07-16T11:00:00.000Z", + "requested_access_methods": [ + { + "display_name": "PIN Code", + "mode": "code", + "created_access_method_ids": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], + ... + } + ], + ... +} +``` +{% endtab %} + +{% tab title="cURL" %} + +**Code:** + +```bash +# Alternately, to create a new user identity, use the +# following parameter instead of user_identity_id: +# user_identity={ +# "full_name": "Jane Doe", +# "email_address": "jane.doe@example.com", +# }, +curl -X 'POST' \ + 'https://connect.getseam.com/access_grants/create' \ + -H 'accept: application/json' \ + -H "Authorization: Bearer ${SEAM_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d '{ + "user_identity_id": "43947360-cdc8-4db6-8b22-e079416d1d8b", + "device_ids": [ + "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + ], + "requested_access_methods": [ + {"mode": "code"} + ], + "starts_at": "2025-07-13T15:00:00.000Z", + "ends_at": "2025-07-16T11:00:00.000Z" +}' +``` + +**Output:** + +```json +{ + "access_grant": { + "access_grant_id": "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "display_name": "My Access Grant", + "user_identity_id": "43947360-cdc8-4db6-8b22-e079416d1d8b", + "starts_at": "2025-07-13T15:00:00.000Z", + "ends_at": "2025-07-16T11:00:00.000Z", + "requested_access_methods": [ + { + "display_name": "PIN Code", + "mode": "code", + "created_access_method_ids": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], + ... + } + ], + ... + } +} +``` +{% endtab %} + +{% tab title="Python" %} + +**Code:** + +```python +seam.access_grants.create( + user_identity_id="43947360-cdc8-4db6-8b22-e079416d1d8b", + # Alternately, to create a new user identity, use the + # following parameter instead of user_identity_id: + # user_identity={ + # "full_name": "Jane Doe", + # "email_address": "jane.doe@example.com", + # }, + device_ids=[ + "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + ], + requested_access_methods=[ + {"mode": "code"} + ], + starts_at="2025-07-13T15:00:00.000Z", + ends_at="2025-07-16T11:00:00.000Z" +) +``` + +**Output:** + +```python +AccessGrant( + access_grant_id="ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + display_name="My Access Grant", + user_identity_id="43947360-cdc8-4db6-8b22-e079416d1d8b", + starts_at="2025-07-13T15:00:00.000Z", + ends_at="2025-07-16T11:00:00.000Z", + requested_access_methods=[ + { + "display_name": "PIN Code", + "mode": "code", + "created_access_method_ids": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], + ... + } + ], + ... +) +``` +{% endtab %} + +{% tab title="Ruby" %} + +**Code:** + +```ruby +seam.access_grants.create( + user_identity_id: "43947360-cdc8-4db6-8b22-e079416d1d8b", + # Alternately, to create a new user identity, use the + # following parameter instead of user_identity_id: + # user_identity: { + # full_name: "Jane Doe", + # email_address: "jane.doe@example.com", + # }, + device_ids: %w[6ba7b811-9dad-11d1-80b4-00c04fd430c8], + requested_access_methods: [ + {"mode": "code"} + ], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z" +) +``` + +**Output:** + +```ruby +{ + "access_grant_id" => "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "display_name" => "My Access Grant", + "user_identity_id" => "43947360-cdc8-4db6-8b22-e079416d1d8b", + "starts_at" => "2025-07-13T15:00:00.000Z", + "ends_at" => "2025-07-16T11:00:00.000Z", + "requested_access_methods" => [ + { + "display_name": "PIN Code", + "mode": "code", + "created_access_method_ids": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], + ... + } + ], + ... +} +``` +{% endtab %} + +{% tab title="PHP" %} + +**Code:** + +```php +$seam->access_grants->create( + user_identity_id: "43947360-cdc8-4db6-8b22-e079416d1d8b", + // Alternately, to create a new user identity, use the + // following parameter instead of user_identity_id: + // user_identity: { + // full_name: "Jane Doe", + // email_address: "jane.doe@example.com", + // }, + device_ids: [ + "6ba7b811-9dad-11d1-80b4-00c04fd430c8", + ], + requested_access_methods: [ + ["mode" => "code"], + ], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z" +); +``` + +**Output:** + +```php +[ + "access_grant_id" => "ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b", + "display_name" => "My Access Grant", + "user_identity_id" => "43947360-cdc8-4db6-8b22-e079416d1d8b", + "starts_at" => "2025-07-13T15:00:00.000Z", + "ends_at" => "2025-07-16T11:00:00.000Z", + "requested_access_methods" => [ + { + "display_name": "PIN Code", + "mode": "code", + "created_access_method_ids": ["f47ac10b-58cc-4372-a567-0e02b2c3d479"], + ... + } + ], + ... +]; +``` +{% endtab %} + +{% tab title="C#" %} + +**Code:** + +```csharp +// Coming Soon! +``` + +**Output:** + +```json +// Coming Soon! +``` +{% endtab %} +{% endtabs %} + +*** + +## Retrieve the Access Methods + +Once an access method has been issued, retrieve it by ID. For a `code` access method, the returned access method includes the `code` that you can deliver to your user. + +You can poll the access method for the `is_issued` status change or watch for the `access_method.issued` event. + +{% tabs %} +{% tab title="JavaScript" %} + +**Code:** + +```javascript +await seam.accessMethods.get({ + access_method_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479" +}); +``` + +**Output:** + +```json +{ + "access_method_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "display_name": "PIN Code", + "mode": "code", + "is_issued": true, + "code": "1234", + ... +} +``` +{% endtab %} + +{% tab title="cURL" %} + +**Code:** + +```bash +curl -X 'POST' \ + 'https://connect.getseam.com/access_methods/get' \ + -H 'accept: application/json' \ + -H "Authorization: Bearer ${SEAM_API_KEY}" \ + -H 'Content-Type: application/json' \ + -d '{ + "access_method_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479" +}' +``` + +**Output:** + +```json +{ + "access_method": { + "access_method_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "display_name": "PIN Code", + "mode": "code", + "is_issued": true, + "code": "1234", + ... + }, + "ok": true +} +``` +{% endtab %} + +{% tab title="Python" %} + +**Code:** + +```python +seam.access_methods.get( + access_method_id="f47ac10b-58cc-4372-a567-0e02b2c3d479" +) +``` + +**Output:** + +```python +AccessMethod( + access_method_id="f47ac10b-58cc-4372-a567-0e02b2c3d479", + display_name="PIN Code", + mode="code", + is_issued=true, + code="1234", + ... +) +``` +{% endtab %} + +{% tab title="Ruby" %} + +**Code:** + +```ruby +seam.access_methods.get( + access_method_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479" +) +``` + +**Output:** + +```ruby +{ + "access_method_id" => "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "display_name" => "PIN Code", + "mode" => "code", + "is_issued" => true, + "code" => "1234", + ... +} +``` +{% endtab %} + +{% tab title="PHP" %} + +**Code:** + +```php +$seam->access_methods->get( + access_method_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479" +); +``` + +**Output:** + +```php +[ + "access_method_id" => "f47ac10b-58cc-4372-a567-0e02b2c3d479", + "display_name" => "PIN Code", + "mode" => "code", + "is_issued" => true, + "code" => "1234", + ... +]; +``` +{% endtab %} + +{% tab title="C#" %} + +**Code:** + +```csharp +// Coming Soon! +``` + +**Output:** + +```json +// Coming Soon! +``` +{% endtab %} +{% endtabs %} + +*** + +## Next Steps + +Once you've created the Access Grant and the resulting access methods have been issued, you can deliver the access methods to your user. For details, see [Delivering Access Methods](delivering-access-methods.md). + +To organize devices into logical groups—for example, all the locks that a guest staying in Unit 101 needs—and grant access to the whole group with a single ID, see [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md). diff --git a/docs/guides/capability-guides/access-grants/creating-an-access-grant-using-entrances.md b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md similarity index 97% rename from docs/guides/capability-guides/access-grants/creating-an-access-grant-using-entrances.md rename to docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md index 847783431..948a63ea1 100644 --- a/docs/guides/capability-guides/access-grants/creating-an-access-grant-using-entrances.md +++ b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md @@ -11,7 +11,7 @@ An Access Grant defines the following characteristics: * User identity: The user to whom you want to grant access. * Entrances: The set of entrances or other access points to which you want to grant the user access. * Access schedule: The starting and ending times for access. -* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../instant-keys/). +* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../../capability-guides/instant-keys/). It is important to note that you can specify the set of entrances to which you want to grant access using the IDs of the entrances themselves. Alternately, before creating an Access Grant, you can organize sets of entrances into spaces. Then, when you create an Access Grant, you specify the IDs of the spaces to which you want to grant access. Seam grants the user access to all entrances included in these spaces. @@ -38,7 +38,7 @@ If you've created an Access Grant that includes an mobile key, the returned Acce ## Before You Begin -To create an Access Grant, first [connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. +To create an Access Grant, first [connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. *** diff --git a/docs/guides/capability-guides/access-grants/creating-an-access-grant-using-spaces.md b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md similarity index 97% rename from docs/guides/capability-guides/access-grants/creating-an-access-grant-using-spaces.md rename to docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md index 3c94b0c06..1e344a95f 100644 --- a/docs/guides/capability-guides/access-grants/creating-an-access-grant-using-spaces.md +++ b/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md @@ -11,7 +11,7 @@ An Access Grant defines the following characteristics: * User identity: The user to whom you want to grant access. * Entrances or spaces: The sets of entrances or other access points to which you want to grant the user access. * Access schedule: The starting and ending times for access. -* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../instant-keys/). +* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../../capability-guides/instant-keys/). Before creating an Access Grant, you can organize sets of entrances into [spaces](https://docs.seam.co/latest/api/spaces/). Then, when you create an Access Grant, you specify the IDs of the spaces to which you want to grant access. Seam grants the user access to all entrances included in these spaces. Alternately, you can specify the set of entrances to which you want to grant access using the IDs of the entrances themselves. @@ -38,7 +38,7 @@ If you've created an Access Grant that includes an mobile key, the returned Acce ## Before You Begin -To create an Access Grant, first [connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. +To create an Access Grant, first [connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. Create one or more spaces to group the entrances to which you want to grant access. For details, see [Spaces](https://docs.seam.co/latest/api/spaces/) and [Create a Space](https://docs.seam.co/latest/api/spaces/create). diff --git a/docs/guides/capability-guides/access-grants/deleting-an-access-grant.md b/docs/guides/use-cases/granting-access/access-grants/deleting-an-access-grant.md similarity index 100% rename from docs/guides/capability-guides/access-grants/deleting-an-access-grant.md rename to docs/guides/use-cases/granting-access/access-grants/deleting-an-access-grant.md diff --git a/docs/guides/capability-guides/access-grants/delivering-access-methods.md b/docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md similarity index 95% rename from docs/guides/capability-guides/access-grants/delivering-access-methods.md rename to docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md index b8b3cd089..5a772120a 100644 --- a/docs/guides/capability-guides/access-grants/delivering-access-methods.md +++ b/docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md @@ -179,7 +179,7 @@ $seam->access_methods->get( ## Plastic Key Cards -Some access systems require you to encode plastic key cards. In this case, the access method's `is_encoding_required` property is `true`. You can use the Seam API or Seam Console to encode and scan the cards. For details, see [Working with Card Encoders and Scanners](../access-systems/working-with-card-encoders-and-scanners/). +Some access systems require you to encode plastic key cards. In this case, the access method's `is_encoding_required` property is `true`. You can use the Seam API or Seam Console to encode and scan the cards. For details, see [Working with Card Encoders and Scanners](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/). Once you've encoded the card, the access method's `is_encoding_required` property changes to `false`, and its `is_issued` property changes to `true`. The card is ready to be delivered to your user. @@ -187,7 +187,7 @@ Once you've encoded the card, the access method's `is_encoding_required` propert ## Mobile Keys -You deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a `client_session_id` property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see [Mobile Access](../mobile-access/). +You deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a `client_session_id` property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see [Mobile Access](../../../capability-guides/mobile-access/). {% tabs %} {% tab title="JavaScript" %} @@ -353,4 +353,4 @@ $seam->access_methods->get( ## Instant Keys -Each mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the `instant_key_url` property. You deliver this URL to your user by sending it through text or email. No app download is required. You can also embed an Instant Key in your own app. For details, see [Instant Keys](../instant-keys/) and [Delivering Instant Keys](../instant-keys/delivering-instant-keys.md). +Each mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the `instant_key_url` property. You deliver this URL to your user by sending it through text or email. No app download is required. You can also embed an Instant Key in your own app. For details, see [Instant Keys](../../../capability-guides/instant-keys/) and [Delivering Instant Keys](../../../capability-guides/instant-keys/delivering-instant-keys.md). diff --git a/docs/guides/capability-guides/access-grants/reservation-access-grants.md b/docs/guides/use-cases/granting-access/access-grants/reservation-access-grants.md similarity index 100% rename from docs/guides/capability-guides/access-grants/reservation-access-grants.md rename to docs/guides/use-cases/granting-access/access-grants/reservation-access-grants.md diff --git a/docs/guides/capability-guides/access-grants/retrieving-access-grants-and-access-methods.md b/docs/guides/use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md similarity index 100% rename from docs/guides/capability-guides/access-grants/retrieving-access-grants-and-access-methods.md rename to docs/guides/use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md diff --git a/docs/guides/capability-guides/access-grants/revoking-an-access-method.md b/docs/guides/use-cases/granting-access/access-grants/revoking-an-access-method.md similarity index 100% rename from docs/guides/capability-guides/access-grants/revoking-an-access-method.md rename to docs/guides/use-cases/granting-access/access-grants/revoking-an-access-method.md diff --git a/docs/guides/capability-guides/access-grants/updating-an-access-grant.md b/docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md similarity index 90% rename from docs/guides/capability-guides/access-grants/updating-an-access-grant.md rename to docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md index 951ff6423..8a5c6fefc 100644 --- a/docs/guides/capability-guides/access-grants/updating-an-access-grant.md +++ b/docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md @@ -127,7 +127,7 @@ $seam->access_grants->update( ## Updating Cards -If you update an Access Grant that includes a card access method, the `access_method.card_encoding_required` event indicates that you must [re-encode the card](../access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md) using the same access method. After you re-encode the card, Seam emits an `access_method.reissued` event. +If you update an Access Grant that includes a card access method, the `access_method.card_encoding_required` event indicates that you must [re-encode the card](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md) using the same access method. After you re-encode the card, Seam emits an `access_method.reissued` event. You can also view the `is_encoding_required`, `is_issued`, and `issued_at` properties of the affected access method. From 4dfb609efa1e2fe45447df46269044cc77cf157c Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Fri, 5 Jun 2026 23:07:21 +0000 Subject: [PATCH 2/6] ci: Generate docs --- docs/api-reference/_blueprint.json | 514 ++++++++++++++--------------- 1 file changed, 257 insertions(+), 257 deletions(-) diff --git a/docs/api-reference/_blueprint.json b/docs/api-reference/_blueprint.json index 42762f147..d973eaf19 100644 --- a/docs/api-reference/_blueprint.json +++ b/docs/api-reference/_blueprint.json @@ -407,7 +407,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Ongoing Online Access Code\"),\nCode: api.String(\"1234\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Ongoing Online Access Code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Ongoing Online Access Code\", PulledBackupAccessCodeId: nil, Status: \"set\", Type: \"ongoing\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -523,7 +523,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Online Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nCode: api.String(\"1234\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Online Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Online Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -643,7 +643,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Offline Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nAttemptForOfflineDevice: api.Bool(true),\nPreferredCodeLength: api.Float64(4),\nUseOfflineAccessCode: api.Bool(true),\nIsOfflineAccessCode: api.Bool(true),\nMaxTimeRounding: api.String(\"1h\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Offline Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tAttemptForOfflineDevice: api.Bool(true),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tUseOfflineAccessCode: api.Bool(true),\n\t\t\tIsOfflineAccessCode: api.Bool(true),\n\t\t\tMaxTimeRounding: api.String(\"1h\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: true, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Offline Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -763,7 +763,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My One-Time-Use Offline Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nAttemptForOfflineDevice: api.Bool(true),\nPreferredCodeLength: api.Float64(4),\nUseOfflineAccessCode: api.Bool(true),\nIsOfflineAccessCode: api.Bool(true),\nIsOneTimeUse: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My One-Time-Use Offline Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tAttemptForOfflineDevice: api.Bool(true),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tUseOfflineAccessCode: api.Bool(true),\n\t\t\tIsOfflineAccessCode: api.Bool(true),\n\t\t\tIsOneTimeUse: api.Bool(true),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: true, IsOneTimeUse: true, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My One-Time-Use Offline Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -880,7 +880,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Create(\ncontext.Background(),\napi.AccessCodesCreateRequest{\nDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\nName: api.String(\"My Time-Bound Access Code\"),\nStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\nEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\nCode: api.String(\"1234\"),\nUseBackupAccessCodePool: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateRequest{\n\t\t\tDeviceId: api.String(\"a5036385-adcb-41b5-88c2-dd8a702a0730\"),\n\t\t\tName: api.String(\"My Time-Bound Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-20T06:49:21.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T12:08:26.000Z\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t\tUseBackupAccessCodePool: api.Bool(true),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"a5036385-adcb-41b5-88c2-dd8a702a0730\", EndsAt: \"2025-06-22T12:08:26.000Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: true, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Time-Bound Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-06-20T06:49:21.000Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -1235,7 +1235,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.CreateMultiple(\ncontext.Background(),\napi.AccessCodesCreateMultipleRequest{\nDeviceIds: [2]string{api.String(\"d9717800-fa73-401a-b66b-03f0ef950e2a\"), api.String(\"550e8400-e29b-41d4-a716-446655440000\")},\nBehaviorWhenCodeCannotBeShared: api.String(\"throw\"),\nPreferredCodeLength: api.Float64(4),\nName: api.String(\"My Linked Access Code\"),\nStartsAt: api.String(\"2025-06-19T01:41:56.000Z\"),\nEndsAt: api.String(\"2025-06-22T16:40:40.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.CreateMultiple(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesCreateMultipleRequest{\n\t\t\tDeviceIds: [2]string{api.String(\"d9717800-fa73-401a-b66b-03f0ef950e2a\"), api.String(\"550e8400-e29b-41d4-a716-446655440000\")},\n\t\t\tBehaviorWhenCodeCannotBeShared: api.String(\"throw\"),\n\t\t\tPreferredCodeLength: api.Float64(4),\n\t\t\tName: api.String(\"My Linked Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-19T01:41:56.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T16:40:40.000Z\"),\n\t\t},\n\t)\n}", "response": "[]api.AccessCode{api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: \"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\", CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"c9cd621d-ef0c-45c8-b608-026ebdb74615\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Linked Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -1402,7 +1402,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Delete(\ncontext.Background(),\napi.AccessCodesDeleteRequest{\nDeviceId: api.String(\"d33f4cc7-2b6a-41a4-ad30-c372ee493589\"),\nAccessCodeId: api.String(\"275b40a3-6b0b-4c51-8fd2-aafd3de2195c\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Delete(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesDeleteRequest{\n\t\t\tDeviceId: api.String(\"d33f4cc7-2b6a-41a4-ad30-c372ee493589\"),\n\t\t\tAccessCodeId: api.String(\"275b40a3-6b0b-4c51-8fd2-aafd3de2195c\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -1548,7 +1548,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.GenerateCode(\ncontext.Background(),\napi.AccessCodesGenerateCodeRequest{\nDeviceId: api.String(\"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.GenerateCode(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesGenerateCodeRequest{\n\t\t\tDeviceId: api.String(\"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{DeviceId: \"02cd5099-d9f8-45a1-a9c0-f2ecbd334792\", Code: \"1234\"}", "request_syntax": "go", "response_syntax": "go" @@ -1741,7 +1741,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Get(\ncontext.Background(),\napi.AccessCodesGetRequest{\nAccessCodeId: api.String(\"90a114dc-48b5-4b8b-a3d3-972344594401\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Get(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesGetRequest{\n\t\t\tAccessCodeId: api.String(\"90a114dc-48b5-4b8b-a3d3-972344594401\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"90a114dc-48b5-4b8b-a3d3-972344594401\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"7bce4bcc-6c35-4cc0-bbae-1c8bc5b4a5b5\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -2312,7 +2312,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.List(\ncontext.Background(),\napi.AccessCodesListRequest{\nDeviceId: api.String(\"f5197f50-839b-4a8e-82f3-e9ef06af93ae\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.List(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesListRequest{\n\t\t\tDeviceId: api.String(\"f5197f50-839b-4a8e-82f3-e9ef06af93ae\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.AccessCode{api.AccessCode{AccessCodeId: \"e9cf6dd6-89aa-477f-a701-c08f3de13c1f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"f5197f50-839b-4a8e-82f3-e9ef06af93ae\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: false, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: nil, StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -2501,7 +2501,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.PullBackupAccessCode(\ncontext.Background(),\napi.AccessCodesPullBackupAccessCodeRequest{\nAccessCodeId: api.String(\"8e525b87-5e4b-48a5-a322-5d45262a735f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.PullBackupAccessCode(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesPullBackupAccessCodeRequest{\n\t\t\tAccessCodeId: api.String(\"8e525b87-5e4b-48a5-a322-5d45262a735f\"),\n\t\t},\n\t)\n}", "response": "api.AccessCode{AccessCodeId: \"8e525b87-5e4b-48a5-a322-5d45262a735f\", Code: \"1234\", CommonCodeKey: nil, CreatedAt: \"2025-06-14T16:54:17.946242Z\", DeviceId: \"c9cd621d-ef0c-45c8-b608-026ebdb74615\", EndsAt: \"2025-07-04T16:54:17.946049Z\", Errors: nil, IsBackup: false, IsBackupAccessCodeAvailable: true, IsExternalModificationAllowed: false, IsManaged: true, IsOfflineAccessCode: false, IsOneTimeUse: false, IsScheduledOnDevice: true, IsWaitingForCodeAssignment: false, Name: \"My Access Code\", PulledBackupAccessCodeId: \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", StartsAt: \"2025-07-02T16:54:17.946049Z\", Status: \"unset\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -2687,7 +2687,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.ReportDeviceConstraints(\ncontext.Background(),\napi.AccessCodesReportDeviceConstraintsRequest{\nDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\nSupportedCodeLengths: [3]float64{api.Float64(4), api.Float64(5), api.Float64(6)},\nMinCodeLength: api.Float64(42),\nMaxCodeLength: api.Float64(42),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.ReportDeviceConstraints(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesReportDeviceConstraintsRequest{\n\t\t\tDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\n\t\t\tSupportedCodeLengths: [3]float64{api.Float64(4), api.Float64(5), api.Float64(6)},\n\t\t\tMinCodeLength: api.Float64(42),\n\t\t\tMaxCodeLength: api.Float64(42),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -2776,7 +2776,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.ReportDeviceConstraints(\ncontext.Background(),\napi.AccessCodesReportDeviceConstraintsRequest{\nDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\nMinCodeLength: api.Float64(4),\nMaxCodeLength: api.Float64(6),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.ReportDeviceConstraints(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesReportDeviceConstraintsRequest{\n\t\t\tDeviceId: api.String(\"cd17e797-e952-47a1-ba47-46bf72934181\"),\n\t\t\tMinCodeLength: api.Float64(4),\n\t\t\tMaxCodeLength: api.Float64(6),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3237,7 +3237,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.Update(\ncontext.Background(),\napi.AccessCodesUpdateRequest{\nAccessCodeId: api.String(\"b854d7c9-d0d8-40a7-8a7c-cd3d167a6ce5\"),\nName: api.String(\"My Updated Access Code\"),\nStartsAt: api.String(\"2025-06-19T08:26:41.000Z\"),\nEndsAt: api.String(\"2025-06-21T17:38:07.000Z\"),\nCode: api.String(\"4444\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.Update(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesUpdateRequest{\n\t\t\tAccessCodeId: api.String(\"b854d7c9-d0d8-40a7-8a7c-cd3d167a6ce5\"),\n\t\t\tName: api.String(\"My Updated Access Code\"),\n\t\t\tStartsAt: api.String(\"2025-06-19T08:26:41.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-21T17:38:07.000Z\"),\n\t\t\tCode: api.String(\"4444\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3419,7 +3419,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessCodes.UpdateMultiple(\ncontext.Background(),\napi.AccessCodesUpdateMultipleRequest{\nEndsAt: api.String(\"2025-06-22T05:05:47.000Z\"),\nStartsAt: api.String(\"2025-06-18T19:14:13.000Z\"),\nName: api.String(\"My Updated Linked Access Code\"),\nCommonCodeKey: api.String(\"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessCodes.UpdateMultiple(\n\t\tcontext.Background(),\n\t\tapi.AccessCodesUpdateMultipleRequest{\n\t\t\tEndsAt: api.String(\"2025-06-22T05:05:47.000Z\"),\n\t\t\tStartsAt: api.String(\"2025-06-18T19:14:13.000Z\"),\n\t\t\tName: api.String(\"My Updated Linked Access Code\"),\n\t\t\tCommonCodeKey: api.String(\"auto_set_by_create_multiple_550e8400-e29b-41d4-a716-446655440000\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3616,7 +3616,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.AccessCodes.Simulate.CreateUnmanagedAccessCode(\ncontext.Background(),\nsimulate.SimulateCreateUnmanagedAccessCodeRequest{\nDeviceId: api.String(\"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\"),\nName: api.String(\"My Access Code\"),\nCode: api.String(\"1234\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.AccessCodes.Simulate.CreateUnmanagedAccessCode(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateCreateUnmanagedAccessCodeRequest{\n\t\t\tDeviceId: api.String(\"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\"),\n\t\t\tName: api.String(\"My Access Code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedAccessCode{AccessCodeId: \"88fa1812-bef8-4108-9fb4-4855376c3edf\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"5db6ef75-2e0d-4491-bf7e-c3eb01d5c963\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -3823,7 +3823,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.ConvertToManaged(\ncontext.Background(),\nunmanaged.UnmanagedConvertToManagedRequest{\nAccessCodeId: api.String(\"9ef2af02-e335-4b49-bd51-00e851a83ef6\"),\nIsExternalModificationAllowed: api.Bool(true),\nForce: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.ConvertToManaged(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedConvertToManagedRequest{\n\t\t\tAccessCodeId: api.String(\"9ef2af02-e335-4b49-bd51-00e851a83ef6\"),\n\t\t\tIsExternalModificationAllowed: api.Bool(true),\n\t\t\tForce: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -3975,7 +3975,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Delete(\ncontext.Background(),\nunmanaged.UnmanagedDeleteRequest{\nAccessCodeId: api.String(\"95d54d42-477b-49d6-bd3a-5e8a40a5a78f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Delete(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedDeleteRequest{\n\t\t\tAccessCodeId: api.String(\"95d54d42-477b-49d6-bd3a-5e8a40a5a78f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -4160,7 +4160,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Get(\ncontext.Background(),\nunmanaged.UnmanagedGetRequest{\nAccessCodeId: api.String(\"41b984ec-1b74-48cd-ba68-16660cd792b6\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedGetRequest{\n\t\t\tAccessCodeId: api.String(\"41b984ec-1b74-48cd-ba68-16660cd792b6\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedAccessCode{AccessCodeId: \"41b984ec-1b74-48cd-ba68-16660cd792b6\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"6047cb40-73e5-4517-85c2-2664c2e4eca1\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Unmanaged Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -4376,7 +4376,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nDeviceId: api.String(\"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tDeviceId: api.String(\"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAccessCode{api.UnmanagedAccessCode{AccessCodeId: \"88fa1812-bef8-4108-9fb4-4855376c3edf\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946283Z\", DeviceId: \"d885a24c-5741-49b1-85dc-ff6d5cf2f1b1\", EndsAt: \"2025-06-23T16:54:17.946261Z\", Errors: nil, IsManaged: false, Name: \"My Unmanaged Access Code\", StartsAt: \"2025-06-21T16:54:17.946261Z\", Status: \"set\", Type: \"time_bound\", Warnings: nil, WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}", "request_syntax": "go", "response_syntax": "go" @@ -4572,7 +4572,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.AccessCodes.Unmanaged.Update(\ncontext.Background(),\nunmanaged.UnmanagedUpdateRequest{\nAccessCodeId: api.String(\"ebd8e488-db1b-4f4b-9d02-489fbfa6829a\"),\nIsManaged: api.Bool(true),\nIsExternalModificationAllowed: api.Bool(true),\nForce: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.AccessCodes.Unmanaged.Update(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedUpdateRequest{\n\t\t\tAccessCodeId: api.String(\"ebd8e488-db1b-4f4b-9d02-489fbfa6829a\"),\n\t\t\tIsManaged: api.Bool(true),\n\t\t\tIsExternalModificationAllowed: api.Bool(true),\n\t\t\tForce: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -5153,7 +5153,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Create(\ncontext.Background(),\napi.AccessGrantsCreateRequest{\nUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\nDeviceIds: [1]string{api.String(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\")},\nRequestedAccessMethods: [1]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}},\nStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\nEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsCreateRequest{\n\t\t\tUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\n\t\t\tDeviceIds: [1]string{api.String(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\")},\n\t\t\tRequestedAccessMethods: [1]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}},\n\t\t\tStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n\t\t},\n\t)\n}", "response": "api.AccessGrant{AccessGrantId: \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", RequestedAccessMethods: []AccessGrantRequestedAccessMethods{api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -5303,7 +5303,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Create(\ncontext.Background(),\napi.AccessGrantsCreateRequest{\nUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\nSpaceIds: [2]string{api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\"), api.String(\"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\")},\nRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\nStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\nEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsCreateRequest{\n\t\t\tUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\n\t\t\tSpaceIds: [2]string{api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\"), api.String(\"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\")},\n\t\t\tRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\n\t\t\tStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n\t\t},\n\t)\n}", "response": "api.AccessGrant{AccessGrantId: \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", RequestedAccessMethods: []AccessGrantRequestedAccessMethods{api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Card Credential\", Mode: \"card\", CreatedAt: \"2025-06-16T16:54:19.946606Z\", CreatedAccessMethodIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Mobile Key Credential\", Mode: \"mobile_key\", CreatedAt: \"2025-06-16T16:54:21.946606Z\", CreatedAccessMethodIds: []string{\"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}}}, SpaceIds: []string{\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\", \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\"}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -5453,7 +5453,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Create(\ncontext.Background(),\napi.AccessGrantsCreateRequest{\nUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\nAcsEntranceIds: [2]string{api.String(\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"), api.String(\"550e8400-e29b-41d4-a716-446655440001\")},\nDeviceIds: [2]string{api.String(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"), api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\")},\nRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\nStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\nEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsCreateRequest{\n\t\t\tUserIdentityId: api.String(\"e3d736c1-540d-4d10-83e5-9a4e135453b4\"),\n\t\t\tAcsEntranceIds: [2]string{api.String(\"f47ac10b-58cc-4372-a567-0e02b2c3d479\"), api.String(\"550e8400-e29b-41d4-a716-446655440001\")},\n\t\t\tDeviceIds: [2]string{api.String(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\"), api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\")},\n\t\t\tRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\n\t\t\tStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n\t\t},\n\t)\n}", "response": "api.AccessGrant{AccessGrantId: \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -5607,7 +5607,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Create(\ncontext.Background(),\napi.AccessGrantsCreateRequest{\nUserIdentity: api.AccessGrantsCreateRequestUserIdentity{FullName: api.String(\"Jane Doe\"), EmailAddress: api.String(\"jane.doe@example.com\"), PhoneNumber: api.String(\"+1555551003\")},\nSpaceIds: [2]string{api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\"), api.String(\"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\")},\nRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\nStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\nEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Create(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsCreateRequest{\n\t\t\tUserIdentity: api.AccessGrantsCreateRequestUserIdentity{FullName: api.String(\"Jane Doe\"), EmailAddress: api.String(\"jane.doe@example.com\"), PhoneNumber: api.String(\"+1555551003\")},\n\t\t\tSpaceIds: [2]string{api.String(\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\"), api.String(\"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\")},\n\t\t\tRequestedAccessMethods: [3]api.AccessGrantsCreateRequestRequestedAccessMethodsItem{api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"code\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"card\")}, api.AccessGrantsCreateRequestRequestedAccessMethods{Mode: api.String(\"mobile_key\")}},\n\t\t\tStartsAt: api.String(\"2025-06-16T16:54:17.946606Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-18T16:54:17.946606Z\"),\n\t\t},\n\t)\n}", "response": "api.AccessGrant{AccessGrantId: \"ef83cca9-5fdf-4ac2-93f3-c21c5a8be54b\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", RequestedAccessMethods: []AccessGrantRequestedAccessMethods{api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Card Credential\", Mode: \"card\", CreatedAt: \"2025-06-16T16:54:19.946606Z\", CreatedAccessMethodIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Mobile Key Credential\", Mode: \"mobile_key\", CreatedAt: \"2025-06-16T16:54:21.946606Z\", CreatedAccessMethodIds: []string{\"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}}}, SpaceIds: []string{\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\", \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\"}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -5744,7 +5744,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Delete(\ncontext.Background(),\napi.AccessGrantsDeleteRequest{\nAccessGrantId: api.String(\"403ea27b-af76-4a48-ace9-8f9498f4c25c\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Delete(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsDeleteRequest{\n\t\t\tAccessGrantId: api.String(\"403ea27b-af76-4a48-ace9-8f9498f4c25c\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -5945,7 +5945,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Get(\ncontext.Background(),\napi.AccessGrantsGetRequest{\nAccessGrantId: api.String(\"704eadf0-a0a2-4715-b0e1-2f002dc1b6e0\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Get(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsGetRequest{\n\t\t\tAccessGrantId: api.String(\"704eadf0-a0a2-4715-b0e1-2f002dc1b6e0\"),\n\t\t},\n\t)\n}", "response": "api.AccessGrant{AccessGrantId: \"704eadf0-a0a2-4715-b0e1-2f002dc1b6e0\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", RequestedAccessMethods: []AccessGrantRequestedAccessMethods{api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Card Credential\", Mode: \"card\", CreatedAt: \"2025-06-16T16:54:19.946606Z\", CreatedAccessMethodIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}}, api.AccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Mobile Key Credential\", Mode: \"mobile_key\", CreatedAt: \"2025-06-16T16:54:21.946606Z\", CreatedAccessMethodIds: []string{\"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}}}, SpaceIds: []string{\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\", \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\"}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"e3d736c1-540d-4d10-83e5-9a4e135453b4\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}", "request_syntax": "go", "response_syntax": "go" @@ -6590,7 +6590,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.List(\ncontext.Background(),\napi.AccessGrantsListRequest{\nUserIdentityId: api.String(\"f7620fcf-d92f-471e-b97e-3806daeebd40\"),\nAcsSystemId: api.String(\"9f169742-048a-4105-84e3-bd1e0f9dc790\"),\nAcsEntranceId: api.String(\"2673b363-4748-4a64-8075-f669c862ec74\"),\nSpaceId: api.String(\"1d20c47d-3cc0-41ca-9917-bc798d071543\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.List(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsListRequest{\n\t\t\tUserIdentityId: api.String(\"f7620fcf-d92f-471e-b97e-3806daeebd40\"),\n\t\t\tAcsSystemId: api.String(\"9f169742-048a-4105-84e3-bd1e0f9dc790\"),\n\t\t\tAcsEntranceId: api.String(\"2673b363-4748-4a64-8075-f669c862ec74\"),\n\t\t\tSpaceId: api.String(\"1d20c47d-3cc0-41ca-9917-bc798d071543\"),\n\t\t},\n\t)\n}", "response": "[]api.AccessGrant{api.AccessGrant{AccessGrant: api.AccessGrantAccessGrant{AccessGrantId: \"704eadf0-a0a2-4715-b0e1-2f002dc1b6e0\", AccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}, CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"My Access Grant\", EndsAt: \"2025-06-18T16:54:17.946606Z\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", RequestedAccessMethods: []AccessGrantAccessGrantRequestedAccessMethods{api.AccessGrantAccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"PIN Code Credential\", Mode: \"code\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", CreatedAccessMethodIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}}, api.AccessGrantAccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Card Credential\", Mode: \"card\", CreatedAt: \"2025-06-16T16:54:19.946606Z\", CreatedAccessMethodIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}}, api.AccessGrantAccessGrantRequestedAccessMethodsRequestedAccessMethods{DisplayName: \"Mobile Key Credential\", Mode: \"mobile_key\", CreatedAt: \"2025-06-16T16:54:21.946606Z\", CreatedAccessMethodIds: []string{\"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}}}, SpaceIds: []string{\"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\", \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\"}, StartsAt: \"2025-06-16T16:54:17.946606Z\", UserIdentityId: \"f7620fcf-d92f-471e-b97e-3806daeebd40\", WorkspaceId: \"750fc0bc-4450-4356-8d9f-18c6a3a6b2c7\"}}}", "request_syntax": "go", "response_syntax": "go" @@ -6969,7 +6969,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessGrants.Update(\ncontext.Background(),\napi.AccessGrantsUpdateRequest{\nAccessGrantId: api.String(\"4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1\"),\nStartsAt: api.String(\"2025-06-19T18:01:32.000Z\"),\nEndsAt: api.String(\"2025-06-22T13:24:50.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessGrants.Update(\n\t\tcontext.Background(),\n\t\tapi.AccessGrantsUpdateRequest{\n\t\t\tAccessGrantId: api.String(\"4ec65722-bf38-4b2f-b4c8-f488aa6ba3f1\"),\n\t\t\tStartsAt: api.String(\"2025-06-19T18:01:32.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T13:24:50.000Z\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -7410,7 +7410,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessMethods.Delete(\ncontext.Background(),\napi.AccessMethodsDeleteRequest{\nAccessMethodId: api.String(\"3f10d86c-526b-4b85-8788-cc1a74411b71\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessMethods.Delete(\n\t\tcontext.Background(),\n\t\tapi.AccessMethodsDeleteRequest{\n\t\t\tAccessMethodId: api.String(\"3f10d86c-526b-4b85-8788-cc1a74411b71\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -7625,7 +7625,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessMethods.Get(\ncontext.Background(),\napi.AccessMethodsGetRequest{\nAccessMethodId: api.String(\"7410aea4-6bed-490c-a602-dd417d9cd075\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessMethods.Get(\n\t\tcontext.Background(),\n\t\tapi.AccessMethodsGetRequest{\n\t\t\tAccessMethodId: api.String(\"7410aea4-6bed-490c-a602-dd417d9cd075\"),\n\t\t},\n\t)\n}", "response": "api.AccessMethod{AccessMethodId: \"7410aea4-6bed-490c-a602-dd417d9cd075\", CreatedAt: \"2025-06-14T16:54:17.946612Z\", DisplayName: \"My Mobile Key\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", IsCardEncodingRequired: false, Mode: \"mobile_key\", WorkspaceId: \"661025d3-c1d2-403c-83a8-af153aaedfbc\"}", "request_syntax": "go", "response_syntax": "go" @@ -8145,7 +8145,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.AccessMethods.List(\ncontext.Background(),\napi.AccessMethodsListRequest{\nAccessGrantId: api.String(\"9072ebcd-95f3-4e4b-8f2f-10053911533b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.AccessMethods.List(\n\t\tcontext.Background(),\n\t\tapi.AccessMethodsListRequest{\n\t\t\tAccessGrantId: api.String(\"9072ebcd-95f3-4e4b-8f2f-10053911533b\"),\n\t\t},\n\t)\n}", "response": "[]api.AccessMethod{api.AccessMethod{AccessMethodId: \"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", CreatedAt: \"2025-06-16T16:54:17.946606Z\", DisplayName: \"PIN Code Credential\", IsCardEncodingRequired: false, Mode: \"code\", WorkspaceId: \"661025d3-c1d2-403c-83a8-af153aaedfbc\"}, api.AccessMethod{AccessMethodId: \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", CreatedAt: \"2025-06-16T16:54:19.946606Z\", DisplayName: \"Card Credential\", IsCardEncodingRequired: true, Mode: \"card\", WorkspaceId: \"661025d3-c1d2-403c-83a8-af153aaedfbc\"}, api.AccessMethod{AccessMethodId: \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\", CreatedAt: \"2025-06-16T16:54:21.946606Z\", DisplayName: \"Mobile Key Credential\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", IsCardEncodingRequired: false, Mode: \"mobile_key\", WorkspaceId: \"661025d3-c1d2-403c-83a8-af153aaedfbc\"}}", "request_syntax": "go", "response_syntax": "go" @@ -8479,7 +8479,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.AddUser(\ncontext.Background(),\naccessgroups.AccessGroupsAddUserRequest{\nAcsAccessGroupId: api.String(\"55efa954-2b84-42af-8d05-fc1f892df51c\"),\nAcsUserId: api.String(\"ebf54c67-746c-471f-a03f-86665148a84c\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.AddUser(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsAddUserRequest{\n\t\t\tAcsAccessGroupId: api.String(\"55efa954-2b84-42af-8d05-fc1f892df51c\"),\n\t\t\tAcsUserId: api.String(\"ebf54c67-746c-471f-a03f-86665148a84c\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -8567,7 +8567,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.AddUser(\ncontext.Background(),\naccessgroups.AccessGroupsAddUserRequest{\nAcsAccessGroupId: api.String(\"55efa954-2b84-42af-8d05-fc1f892df51c\"),\nUserIdentityId: api.String(\"522d1368-973f-430f-92df-4ff3583ebccf\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.AddUser(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsAddUserRequest{\n\t\t\tAcsAccessGroupId: api.String(\"55efa954-2b84-42af-8d05-fc1f892df51c\"),\n\t\t\tUserIdentityId: api.String(\"522d1368-973f-430f-92df-4ff3583ebccf\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -8773,7 +8773,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.Get(\ncontext.Background(),\naccessgroups.AccessGroupsGetRequest{\nAcsAccessGroupId: api.String(\"09eb5265-6e3b-4e6d-bf96-736171c547ae\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.Get(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsGetRequest{\n\t\t\tAcsAccessGroupId: api.String(\"09eb5265-6e3b-4e6d-bf96-736171c547ae\"),\n\t\t},\n\t)\n}", "response": "api.AcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"09eb5265-6e3b-4e6d-bf96-736171c547ae\", AcsSystemId: \"045baa77-6d06-40fe-a2cd-b82eef688f4a\", ConnectedAccountId: \"daba7bd0-edb6-4bb9-a70b-f9ae08a0e301\", CreatedAt: \"2025-06-15T16:54:17.946453Z\", DisplayName: \"Main Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: true, Name: \"My Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"ac19352c-869a-4209-9ce7-44c740a8b5d0\"}", "request_syntax": "go", "response_syntax": "go" @@ -8976,7 +8976,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.List(\ncontext.Background(),\naccessgroups.AccessGroupsListRequest{\nAcsSystemId: api.String(\"1b529056-1b04-450b-b3da-016b65a5017f\"),\nAcsUserId: api.String(\"ebe506e1-33ba-44e8-892b-2d12c1709cd8\"),\nUserIdentityId: api.String(\"9b1deda4-07e2-4e90-acde-5724b6ab7305\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.List(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsListRequest{\n\t\t\tAcsSystemId: api.String(\"1b529056-1b04-450b-b3da-016b65a5017f\"),\n\t\t\tAcsUserId: api.String(\"ebe506e1-33ba-44e8-892b-2d12c1709cd8\"),\n\t\t\tUserIdentityId: api.String(\"9b1deda4-07e2-4e90-acde-5724b6ab7305\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsAccessGroup{api.AcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"3f448826-9875-4947-9519-e468090a4f7d\", AcsSystemId: \"1b529056-1b04-450b-b3da-016b65a5017f\", ConnectedAccountId: \"daba7bd0-edb6-4bb9-a70b-f9ae08a0e301\", CreatedAt: \"2025-06-15T16:54:17.946453Z\", DisplayName: \"Main Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: true, Name: \"My Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"ac19352c-869a-4209-9ce7-44c740a8b5d0\"}}", "request_syntax": "go", "response_syntax": "go" @@ -9083,7 +9083,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.List(\ncontext.Background(),\naccessgroups.AccessGroupsListRequest{\nAcsSystemId: api.String(\"1b529056-1b04-450b-b3da-016b65a5017f\"),\nAcsUserId: api.String(\"ebe506e1-33ba-44e8-892b-2d12c1709cd8\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.List(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsListRequest{\n\t\t\tAcsSystemId: api.String(\"1b529056-1b04-450b-b3da-016b65a5017f\"),\n\t\t\tAcsUserId: api.String(\"ebe506e1-33ba-44e8-892b-2d12c1709cd8\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsAccessGroup{api.AcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"3f448826-9875-4947-9519-e468090a4f7d\", AcsSystemId: \"1b529056-1b04-450b-b3da-016b65a5017f\", ConnectedAccountId: \"daba7bd0-edb6-4bb9-a70b-f9ae08a0e301\", CreatedAt: \"2025-06-15T16:54:17.946453Z\", DisplayName: \"Main Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: true, Name: \"My Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"ac19352c-869a-4209-9ce7-44c740a8b5d0\"}}", "request_syntax": "go", "response_syntax": "go" @@ -9244,7 +9244,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.ListAccessibleEntrances(\ncontext.Background(),\naccessgroups.AccessGroupsListAccessibleEntrancesRequest{\nAcsAccessGroupId: api.String(\"1b02a29f-effd-4ce6-8a58-16ec09fd9b50\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.ListAccessibleEntrances(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsListAccessibleEntrancesRequest{\n\t\t\tAcsAccessGroupId: api.String(\"1b02a29f-effd-4ce6-8a58-16ec09fd9b50\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -9415,7 +9415,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.ListUsers(\ncontext.Background(),\naccessgroups.AccessGroupsListUsersRequest{\nAcsAccessGroupId: api.String(\"da76b0a9-97c5-4d7c-8db2-91d13094a940\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.ListUsers(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsListUsersRequest{\n\t\t\tAcsAccessGroupId: api.String(\"da76b0a9-97c5-4d7c-8db2-91d13094a940\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -9580,7 +9580,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.RemoveUser(\ncontext.Background(),\naccessgroups.AccessGroupsRemoveUserRequest{\nAcsAccessGroupId: api.String(\"e320069d-59ba-4adb-a465-f4f01a833e07\"),\nUserIdentityId: api.String(\"3d662a00-5d7c-41b4-aee7-16c385964149\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.RemoveUser(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsRemoveUserRequest{\n\t\t\tAcsAccessGroupId: api.String(\"e320069d-59ba-4adb-a465-f4f01a833e07\"),\n\t\t\tUserIdentityId: api.String(\"3d662a00-5d7c-41b4-aee7-16c385964149\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -9668,7 +9668,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.RemoveUser(\ncontext.Background(),\naccessgroups.AccessGroupsRemoveUserRequest{\nAcsAccessGroupId: api.String(\"e320069d-59ba-4adb-a465-f4f01a833e07\"),\nAcsUserId: api.String(\"64cfac1f-61c0-4c76-8fa2-3e9ab680edc8\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.RemoveUser(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsRemoveUserRequest{\n\t\t\tAcsAccessGroupId: api.String(\"e320069d-59ba-4adb-a465-f4f01a833e07\"),\n\t\t\tAcsUserId: api.String(\"64cfac1f-61c0-4c76-8fa2-3e9ab680edc8\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -9836,7 +9836,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.Unmanaged.Get(\ncontext.Background(),\naccessgroups.AccessGroupsUnmanagedGetRequest{\nAcsAccessGroupId: api.String(\"2b365d98-8ef6-4ae3-9cf6-0d98fc029ae5\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsUnmanagedGetRequest{\n\t\t\tAcsAccessGroupId: api.String(\"2b365d98-8ef6-4ae3-9cf6-0d98fc029ae5\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedAcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"2b365d98-8ef6-4ae3-9cf6-0d98fc029ae5\", AcsSystemId: \"e2f31e7b-17a3-417c-9d97-12a6017950e9\", ConnectedAccountId: \"17bf5e76-f35c-43e6-ba1c-10b4b079e493\", CreatedAt: \"2025-06-15T16:54:17.946475Z\", DisplayName: \"Other Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: false, Name: \"My Unmanaged Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"8a844fbb-c583-485e-a8d9-94d8e96fb6d4\"}", "request_syntax": "go", "response_syntax": "go" @@ -10023,7 +10023,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.Unmanaged.List(\ncontext.Background(),\naccessgroups.AccessGroupsUnmanagedListRequest{\nAcsSystemId: api.String(\"dae690eb-af0b-4f87-9cdb-efe7a0e4c703\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.Unmanaged.List(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsUnmanagedListRequest{\n\t\t\tAcsSystemId: api.String(\"dae690eb-af0b-4f87-9cdb-efe7a0e4c703\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsAccessGroup{api.UnmanagedAcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"2b15909b-39b9-441c-89d9-584f88fd9baf\", AcsSystemId: \"dae690eb-af0b-4f87-9cdb-efe7a0e4c703\", ConnectedAccountId: \"17bf5e76-f35c-43e6-ba1c-10b4b079e493\", CreatedAt: \"2025-06-15T16:54:17.946475Z\", DisplayName: \"Other Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: false, Name: \"My Unmanaged Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"8a844fbb-c583-485e-a8d9-94d8e96fb6d4\"}}", "request_syntax": "go", "response_syntax": "go" @@ -10129,7 +10129,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\n func main() {\n client.Acs.AccessGroups.Unmanaged.List(\ncontext.Background(),\naccessgroups.AccessGroupsUnmanagedListRequest{\nAcsUserId: api.String(\"d94c3659-3145-4fc6-84ea-a8699af16ec4\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport accessgroups \"github.com/seamapi/go/accessgroups\"\n\nfunc main() {\n\tclient.Acs.AccessGroups.Unmanaged.List(\n\t\tcontext.Background(),\n\t\taccessgroups.AccessGroupsUnmanagedListRequest{\n\t\t\tAcsUserId: api.String(\"d94c3659-3145-4fc6-84ea-a8699af16ec4\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsAccessGroup{api.UnmanagedAcsAccessGroup{AccessGroupType: \"salto_ks_access_group\", AccessGroupTypeDisplayName: \"Salto KS Access Group\", AcsAccessGroupId: \"2b15909b-39b9-441c-89d9-584f88fd9baf\", AcsSystemId: \"e2f31e7b-17a3-417c-9d97-12a6017950e9\", ConnectedAccountId: \"17bf5e76-f35c-43e6-ba1c-10b4b079e493\", CreatedAt: \"2025-06-15T16:54:17.946475Z\", DisplayName: \"Other Group\", ExternalType: \"salto_ks_access_group\", ExternalTypeDisplayName: \"Salto KS Access Group\", IsManaged: false, Name: \"My Unmanaged Access Group\", PendingMutations: nil, Warnings: nil, WorkspaceId: \"8a844fbb-c583-485e-a8d9-94d8e96fb6d4\"}}", "request_syntax": "go", "response_syntax": "go" @@ -10486,7 +10486,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Assign(\ncontext.Background(),\ncredentials.CredentialsAssignRequest{\nUserIdentityId: api.String(\"1082e2e8-ecbd-4ef1-aa61-a805f7ae2f01\"),\nAcsCredentialId: api.String(\"59c9af06-7881-46d2-8d9b-3eda964c058b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Assign(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsAssignRequest{\n\t\t\tUserIdentityId: api.String(\"1082e2e8-ecbd-4ef1-aa61-a805f7ae2f01\"),\n\t\t\tAcsCredentialId: api.String(\"59c9af06-7881-46d2-8d9b-3eda964c058b\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -10574,7 +10574,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Assign(\ncontext.Background(),\ncredentials.CredentialsAssignRequest{\nAcsUserId: api.String(\"143f083a-d61c-4d85-923f-d5483fb5a7d4\"),\nAcsCredentialId: api.String(\"59c9af06-7881-46d2-8d9b-3eda964c058b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Assign(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsAssignRequest{\n\t\t\tAcsUserId: api.String(\"143f083a-d61c-4d85-923f-d5483fb5a7d4\"),\n\t\t\tAcsCredentialId: api.String(\"59c9af06-7881-46d2-8d9b-3eda964c058b\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -11235,7 +11235,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"code\"),\nCode: api.String(\"1234\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Salto KS Credential\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -11352,7 +11352,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"code\"),\nCode: api.String(\"1234\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"code\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", Code: \"1234\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Salto KS Credential\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -11471,7 +11471,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"card\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\nVisionlineMetadata: credentials.CredentialsCreateRequestVisionlineMetadata{CardFormat: api.String(\"rfid48\"), Override: api.Bool(true)},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"card\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t\tVisionlineMetadata: credentials.CredentialsCreateRequestVisionlineMetadata{CardFormat: api.String(\"rfid48\"), Override: api.Bool(true)},\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"card\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Visionline Credential\", Errors: nil, ExternalType: \"visionline_card\", ExternalTypeDisplayName: \"Visionline Card\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -11590,7 +11590,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"card\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\nVisionlineMetadata: credentials.CredentialsCreateRequestVisionlineMetadata{CardFormat: api.String(\"rfid48\"), Override: api.Bool(true)},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"card\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t\tVisionlineMetadata: credentials.CredentialsCreateRequestVisionlineMetadata{CardFormat: api.String(\"rfid48\"), Override: api.Bool(true)},\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"card\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Visionline Credential\", Errors: nil, ExternalType: \"visionline_card\", ExternalTypeDisplayName: \"Visionline Card\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -11706,7 +11706,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"mobile_key\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\nIsMultiPhoneSyncCredential: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tUserIdentityId: api.String(\"4b6ec19d-ba68-46ca-80fd-55247684c2bb\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"mobile_key\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t\tIsMultiPhoneSyncCredential: api.Bool(true),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"mobile_key\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Multi Phone Sync Credential\", Errors: nil, ExternalType: \"multi_phone_sync_credential\", ExternalTypeDisplayName: \"Multi Phone Sync Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -11822,7 +11822,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Create(\ncontext.Background(),\ncredentials.CredentialsCreateRequest{\nCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\nAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\nAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\nAccessMethod: api.String(\"mobile_key\"),\nAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\nStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\nEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\nIsMultiPhoneSyncCredential: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Create(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"bccb0d23-5107-498b-87a6-6a8aa929eeb2\"),\n\t\t\tAcsUserId: api.String(\"53f39f90-5113-4bdd-8432-acf328ce508c\"),\n\t\t\tAcsSystemId: api.String(\"7113de29-6130-4153-a6ea-1b7ca0fe3198\"),\n\t\t\tAccessMethod: api.String(\"mobile_key\"),\n\t\t\tAllowedAcsEntranceIds: [1]string{api.String(\"21805570-4706-4c21-99fc-3ed873a5e014\")},\n\t\t\tStartsAt: api.String(\"2025-06-19T21:08:08.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T12:35:01.000Z\"),\n\t\t\tIsMultiPhoneSyncCredential: api.Bool(true),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"mobile_key\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"7113de29-6130-4153-a6ea-1b7ca0fe3198\", AcsUserId: \"53f39f90-5113-4bdd-8432-acf328ce508c\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Multi Phone Sync Credential\", Errors: nil, ExternalType: \"multi_phone_sync_credential\", ExternalTypeDisplayName: \"Multi Phone Sync Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: true, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T21:08:08.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -12043,7 +12043,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.CreateOfflineCode(\ncontext.Background(),\ncredentials.CredentialsCreateOfflineCodeRequest{\nAcsUserId: api.String(\"c52072ef-365c-4325-ba78-251239441f4c\"),\nAllowedAcsEntranceId: api.String(\"a420ee23-dceb-42f3-9992-6cf1245f65da\"),\nIsOneTimeUse: api.Bool(true),\nStartsAt: api.String(\"2025-06-19T22:36:18.000Z\"),\nEndsAt: api.String(\"2025-06-23T13:58:16.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.CreateOfflineCode(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsCreateOfflineCodeRequest{\n\t\t\tAcsUserId: api.String(\"c52072ef-365c-4325-ba78-251239441f4c\"),\n\t\t\tAllowedAcsEntranceId: api.String(\"a420ee23-dceb-42f3-9992-6cf1245f65da\"),\n\t\t\tIsOneTimeUse: api.Bool(true),\n\t\t\tStartsAt: api.String(\"2025-06-19T22:36:18.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-23T13:58:16.000Z\"),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"c52072ef-365c-4325-ba78-251239441f4c\", Code: \"123456\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"FRONT_DOOR\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IsOneTimeUse: true, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-06-19T22:36:18.000Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -12179,7 +12179,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Delete(\ncontext.Background(),\ncredentials.CredentialsDeleteRequest{\nAcsCredentialId: api.String(\"33bbceea-221e-48bd-8d38-aa72f88a1cab\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Delete(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsDeleteRequest{\n\t\t\tAcsCredentialId: api.String(\"33bbceea-221e-48bd-8d38-aa72f88a1cab\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -12340,7 +12340,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Get(\ncontext.Background(),\ncredentials.CredentialsGetRequest{\nAcsCredentialId: api.String(\"f2b8eaa6-5e6d-433f-87cc-a283f4df688d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Get(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsGetRequest{\n\t\t\tAcsCredentialId: api.String(\"f2b8eaa6-5e6d-433f-87cc-a283f4df688d\"),\n\t\t},\n\t)\n}", "response": "api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"f2b8eaa6-5e6d-433f-87cc-a283f4df688d\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"0fc82df4-391b-4d00-a234-86378f1c3952\", Code: \"123456\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"FRONT_DOOR\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-10T16:54:17.946512Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}", "request_syntax": "go", "response_syntax": "go" @@ -12601,7 +12601,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Acs.Credentials.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Acs.Credentials.List(context.Background())\n}", "response": "[]api.AcsCredential{api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"0fc82df4-391b-4d00-a234-86378f1c3952\", Code: \"123456\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"FRONT_DOOR\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-10T16:54:17.946512Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -12762,7 +12762,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.ListAccessibleEntrances(\ncontext.Background(),\ncredentials.CredentialsListAccessibleEntrancesRequest{\nAcsCredentialId: api.String(\"9407e456-b8ac-475a-8431-fee76cedda03\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.ListAccessibleEntrances(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsListAccessibleEntrancesRequest{\n\t\t\tAcsCredentialId: api.String(\"9407e456-b8ac-475a-8431-fee76cedda03\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -12927,7 +12927,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Unassign(\ncontext.Background(),\ncredentials.CredentialsUnassignRequest{\nUserIdentityId: api.String(\"417e9370-d2cc-4b23-b6d5-fbf7fdbda354\"),\nAcsCredentialId: api.String(\"b1833efd-0669-4a88-81b5-2f2d5fd5c02f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Unassign(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsUnassignRequest{\n\t\t\tUserIdentityId: api.String(\"417e9370-d2cc-4b23-b6d5-fbf7fdbda354\"),\n\t\t\tAcsCredentialId: api.String(\"b1833efd-0669-4a88-81b5-2f2d5fd5c02f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -13015,7 +13015,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Unassign(\ncontext.Background(),\ncredentials.CredentialsUnassignRequest{\nAcsUserId: api.String(\"ae76d550-f2e0-4f61-9380-a64d276f9904\"),\nAcsCredentialId: api.String(\"b1833efd-0669-4a88-81b5-2f2d5fd5c02f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Unassign(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsUnassignRequest{\n\t\t\tAcsUserId: api.String(\"ae76d550-f2e0-4f61-9380-a64d276f9904\"),\n\t\t\tAcsCredentialId: api.String(\"b1833efd-0669-4a88-81b5-2f2d5fd5c02f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -13181,7 +13181,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Update(\ncontext.Background(),\ncredentials.CredentialsUpdateRequest{\nAcsCredentialId: api.String(\"1d4fb22b-743b-492f-ad74-cffcbd63c874\"),\nCode: api.String(\"1234\"),\nEndsAt: api.String(\"2025-06-18T10:42:53.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Update(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsUpdateRequest{\n\t\t\tAcsCredentialId: api.String(\"1d4fb22b-743b-492f-ad74-cffcbd63c874\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t\tEndsAt: api.String(\"2025-06-18T10:42:53.000Z\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -13353,7 +13353,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\n func main() {\n client.Acs.Credentials.Unmanaged.Get(\ncontext.Background(),\ncredentials.CredentialsUnmanagedGetRequest{\nAcsCredentialId: api.String(\"5221ce77-da76-426a-abce-8b7308c40a32\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport credentials \"github.com/seamapi/go/credentials\"\n\nfunc main() {\n\tclient.Acs.Credentials.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tcredentials.CredentialsUnmanagedGetRequest{\n\t\t\tAcsCredentialId: api.String(\"5221ce77-da76-426a-abce-8b7308c40a32\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedAcsCredential{AccessMethod: \"code\", AcsCredentialId: \"5221ce77-da76-426a-abce-8b7308c40a32\", AcsSystemId: \"f8da38be-bc06-491a-a8bd-67696abf49b1\", AcsUserId: \"6362c5c5-d545-4a7e-a80b-39620030300b\", Code: \"123456\", CreatedAt: \"2025-06-15T16:54:17.946521Z\", DisplayName: \"Front Door\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: false, IsMultiPhoneSyncCredential: false, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-02T16:54:17.946518Z\", Warnings: nil, WorkspaceId: \"b8f131e5-73e1-4e23-8b70-978f5d789f3a\"}", "request_syntax": "go", "response_syntax": "go" @@ -13556,7 +13556,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Acs.Credentials.Unmanaged.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Acs.Credentials.Unmanaged.List(context.Background())\n}", "response": "[]api.UnmanagedAcsCredential{api.UnmanagedAcsCredential{AccessMethod: \"code\", AcsCredentialId: \"666abb33-e9a9-4c1a-b25d-b4e493d5bc89\", AcsSystemId: \"f8da38be-bc06-491a-a8bd-67696abf49b1\", AcsUserId: \"6362c5c5-d545-4a7e-a80b-39620030300b\", Code: \"123456\", CreatedAt: \"2025-06-15T16:54:17.946521Z\", DisplayName: \"Front Door\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: false, IsMultiPhoneSyncCredential: false, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-02T16:54:17.946518Z\", Warnings: nil, WorkspaceId: \"b8f131e5-73e1-4e23-8b70-978f5d789f3a\"}}", "request_syntax": "go", "response_syntax": "go" @@ -13777,7 +13777,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.EncodeCredential(\ncontext.Background(),\nencoders.EncodersEncodeCredentialRequest{\nAcsEncoderId: api.String(\"18ad521a-308e-4182-b1a6-2338b46a2763\"),\nAcsCredentialId: api.String(\"a383871c-331a-42ae-af66-146824505187\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.EncodeCredential(\n\t\tcontext.Background(),\n\t\tencoders.EncodersEncodeCredentialRequest{\n\t\t\tAcsEncoderId: api.String(\"18ad521a-308e-4182-b1a6-2338b46a2763\"),\n\t\t\tAcsCredentialId: api.String(\"a383871c-331a-42ae-af66-146824505187\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"1b4e28ba-2fa1-11d2-883f-0016d3cca427\", ActionType: \"ENCODE_CREDENTIAL\", Error: nil, Result: api.ActionAttemptResult{AccessMethod: \"card\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"0fc82df4-391b-4d00-a234-86378f1c3952\", CardNumber: \"164d29dc4a09b65f\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Guest Lock 1, Vingcard Lock 2\", EndsAt: \"2025-07-12T16:54:17.946512Z\", Errors: nil, ExternalType: \"visionline_card\", ExternalTypeDisplayName: \"Visionline Card\", IsIssued: true, IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IssuedAt: \"2025-06-16T16:54:17.946512Z\", LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-10T16:54:17.946512Z\", VisionlineMetadata: api.ActionAttemptResultVisionlineMetadata{CardFunctionType: \"guest\", CardId: \"5\", CommonAcsEntranceIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}, CredentialId: \"15\", GuestAcsEntranceIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}, IsValid: true}, Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -13927,7 +13927,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.Get(\ncontext.Background(),\nencoders.EncodersGetRequest{\nAcsEncoderId: api.String(\"4bccf994-21a6-4a6d-bc6d-5b0311d1686a\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.Get(\n\t\tcontext.Background(),\n\t\tencoders.EncodersGetRequest{\n\t\t\tAcsEncoderId: api.String(\"4bccf994-21a6-4a6d-bc6d-5b0311d1686a\"),\n\t\t},\n\t)\n}", "response": "api.AcsEncoder{AcsEncoderId: \"4bccf994-21a6-4a6d-bc6d-5b0311d1686a\", AcsSystemId: \"c85406d2-214f-4e11-8000-a2e5b5a362a4\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97750\", CreatedAt: \"2025-06-16T16:54:17.946527Z\", DisplayName: \"Encoder 1\", Errors: nil, WorkspaceId: \"f863ac85-2c4e-49ae-8679-3ec2417f1d62\"}", "request_syntax": "go", "response_syntax": "go" @@ -14137,7 +14137,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Acs.Encoders.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Acs.Encoders.List(context.Background())\n}", "response": "[]api.AcsEncoder{api.AcsEncoder{AcsEncoderId: \"681da2d6-4ac6-4b33-8c03-86281b761325\", AcsSystemId: \"c85406d2-214f-4e11-8000-a2e5b5a362a4\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97750\", CreatedAt: \"2025-06-16T16:54:17.946527Z\", DisplayName: \"Encoder 1\", Errors: nil, WorkspaceId: \"f863ac85-2c4e-49ae-8679-3ec2417f1d62\"}}", "request_syntax": "go", "response_syntax": "go" @@ -14350,7 +14350,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.ScanCredential(\ncontext.Background(),\nencoders.EncodersScanCredentialRequest{\nAcsEncoderId: api.String(\"b062df92-91c6-482c-a3f9-6e578f062d36\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.ScanCredential(\n\t\tcontext.Background(),\n\t\tencoders.EncodersScanCredentialRequest{\n\t\t\tAcsEncoderId: api.String(\"b062df92-91c6-482c-a3f9-6e578f062d36\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"123e4567-e89b-12d3-a456-426614174000\", ActionType: \"SCAN_CREDENTIAL\", Error: nil, Result: api.ActionAttemptResult{AcsCredentialOnEncoder: api.ActionAttemptResultAcsCredentialOnEncoder{CardNumber: \"164d29dc4a09b65f\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", EndsAt: \"2025-07-13T16:54:17.946512Z\", IsIssued: true, StartsAt: \"2025-07-10T16:54:17.946512Z\", VisionlineMetadata: api.ActionAttemptResultAcsCredentialOnEncoderVisionlineMetadata{Cancelled: false, CardFormat: \"guest\", CardHolder: \"Guest\", CardId: \"5\", CommonAcsEntranceIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}, Discarded: false, Expired: false, GuestAcsEntranceIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}, NumberOfIssuedCards: 1, Overridden: false, Overwritten: false, PendingAutoUpdate: false}}, AcsCredentialOnSeam: api.ActionAttemptResultAcsCredentialOnSeam{AccessMethod: \"card\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"0fc82df4-391b-4d00-a234-86378f1c3952\", CardNumber: \"164d29dc4a09b65f\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"Guest Lock 1, Vingcard Lock 2\", EndsAt: \"2025-07-12T16:54:17.946512Z\", Errors: nil, ExternalType: \"visionline_card\", ExternalTypeDisplayName: \"Visionline Card\", IsIssued: true, IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IssuedAt: \"2025-06-16T16:54:17.946512Z\", LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-10T16:54:17.946512Z\", VisionlineMetadata: api.ActionAttemptResultAcsCredentialOnSeamVisionlineMetadata{CardFunctionType: \"guest\", CardId: \"5\", CommonAcsEntranceIds: []string{\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"}, CredentialId: \"15\", GuestAcsEntranceIds: []string{\"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\"}, IsValid: true}, Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}, Warnings: []ActionAttemptResultWarnings{api.ActionAttemptResultWarningsWarnings{WarningCode: \"acs_credential_on_encoder_out_of_sync\", WarningMessage: \"The following properties are out of sync between acs_credential_on_encoder and acs_credential_on_seam: ends_at\"}}}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -14567,7 +14567,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.Simulate.NextCredentialEncodeWillFail(\ncontext.Background(),\nencoders.EncodersSimulateNextCredentialEncodeWillFailRequest{\nAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\nErrorCode: api.String(\"no_credential_on_encoder\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.Simulate.NextCredentialEncodeWillFail(\n\t\tcontext.Background(),\n\t\tencoders.EncodersSimulateNextCredentialEncodeWillFailRequest{\n\t\t\tAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\n\t\t\tErrorCode: api.String(\"no_credential_on_encoder\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -14731,7 +14731,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.Simulate.NextCredentialEncodeWillSucceed(\ncontext.Background(),\nencoders.EncodersSimulateNextCredentialEncodeWillSucceedRequest{\nAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\nScenario: api.String(\"credential_is_issued\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.Simulate.NextCredentialEncodeWillSucceed(\n\t\tcontext.Background(),\n\t\tencoders.EncodersSimulateNextCredentialEncodeWillSucceedRequest{\n\t\t\tAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\n\t\t\tScenario: api.String(\"credential_is_issued\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -14927,7 +14927,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.Simulate.NextCredentialScanWillFail(\ncontext.Background(),\nencoders.EncodersSimulateNextCredentialScanWillFailRequest{\nAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\nErrorCode: api.String(\"no_credential_on_encoder\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.Simulate.NextCredentialScanWillFail(\n\t\tcontext.Background(),\n\t\tencoders.EncodersSimulateNextCredentialScanWillFailRequest{\n\t\t\tAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\n\t\t\tErrorCode: api.String(\"no_credential_on_encoder\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -15134,7 +15134,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\n func main() {\n client.Acs.Encoders.Simulate.NextCredentialScanWillSucceed(\ncontext.Background(),\nencoders.EncodersSimulateNextCredentialScanWillSucceedRequest{\nAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\nScenario: api.String(\"credential_exists_on_seam\"),\nAcsCredentialIdOnSeam: api.String(\"123e4567-e89b-12d3-a456-426614174000\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport encoders \"github.com/seamapi/go/encoders\"\n\nfunc main() {\n\tclient.Acs.Encoders.Simulate.NextCredentialScanWillSucceed(\n\t\tcontext.Background(),\n\t\tencoders.EncodersSimulateNextCredentialScanWillSucceedRequest{\n\t\t\tAcsEncoderId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\n\t\t\tScenario: api.String(\"credential_exists_on_seam\"),\n\t\t\tAcsCredentialIdOnSeam: api.String(\"123e4567-e89b-12d3-a456-426614174000\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -15304,7 +15304,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.Get(\ncontext.Background(),\nentrances.EntrancesGetRequest{\nAcsEntranceId: api.String(\"c931c953-4a5b-4f66-9189-500d39959ad1\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.Get(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesGetRequest{\n\t\t\tAcsEntranceId: api.String(\"c931c953-4a5b-4f66-9189-500d39959ad1\"),\n\t\t},\n\t)\n}", "response": "api.AcsEntrance{AcsEntranceId: \"c931c953-4a5b-4f66-9189-500d39959ad1\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}", "request_syntax": "go", "response_syntax": "go" @@ -15468,7 +15468,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.GrantAccess(\ncontext.Background(),\nentrances.EntrancesGrantAccessRequest{\nAcsEntranceId: api.String(\"d23d7180-c1ee-4bbe-8630-05df5031ce35\"),\nUserIdentityId: api.String(\"c6247b75-f1cb-493a-9915-a85a0b9639ae\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.GrantAccess(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesGrantAccessRequest{\n\t\t\tAcsEntranceId: api.String(\"d23d7180-c1ee-4bbe-8630-05df5031ce35\"),\n\t\t\tUserIdentityId: api.String(\"c6247b75-f1cb-493a-9915-a85a0b9639ae\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -15556,7 +15556,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.GrantAccess(\ncontext.Background(),\nentrances.EntrancesGrantAccessRequest{\nAcsEntranceId: api.String(\"d23d7180-c1ee-4bbe-8630-05df5031ce35\"),\nAcsUserId: api.String(\"ace1dabe-7a25-4271-8d76-50e74ee4ae1f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.GrantAccess(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesGrantAccessRequest{\n\t\t\tAcsEntranceId: api.String(\"d23d7180-c1ee-4bbe-8630-05df5031ce35\"),\n\t\t\tAcsUserId: api.String(\"ace1dabe-7a25-4271-8d76-50e74ee4ae1f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -15846,7 +15846,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.List(\ncontext.Background(),\nentrances.EntrancesListRequest{\nAcsSystemId: api.String(\"d34802da-d8e3-4d0b-98c3-16d6e18ed508\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.List(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListRequest{\n\t\t\tAcsSystemId: api.String(\"d34802da-d8e3-4d0b-98c3-16d6e18ed508\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"d34802da-d8e3-4d0b-98c3-16d6e18ed508\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -15954,7 +15954,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.List(\ncontext.Background(),\nentrances.EntrancesListRequest{\nAcsCredentialId: api.String(\"e2a3eed8-5b4d-41a7-9c1d-1d06c41b0d5a\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.List(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListRequest{\n\t\t\tAcsCredentialId: api.String(\"e2a3eed8-5b4d-41a7-9c1d-1d06c41b0d5a\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -16062,7 +16062,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.List(\ncontext.Background(),\nentrances.EntrancesListRequest{\nSpaceId: api.String(\"3bd2edc0-aae7-440c-98ec-a5ab03664833\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.List(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListRequest{\n\t\t\tSpaceId: api.String(\"3bd2edc0-aae7-440c-98ec-a5ab03664833\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -16170,7 +16170,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.List(\ncontext.Background(),\nentrances.EntrancesListRequest{\nAccessGrantId: api.String(\"6596ea31-f747-4253-950e-dba0de24fedb\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.List(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListRequest{\n\t\t\tAccessGrantId: api.String(\"6596ea31-f747-4253-950e-dba0de24fedb\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -16278,7 +16278,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.List(\ncontext.Background(),\nentrances.EntrancesListRequest{\nAccessMethodId: api.String(\"f838c33b-bc00-47a4-8bde-2aa8ea4258cc\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.List(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListRequest{\n\t\t\tAccessMethodId: api.String(\"f838c33b-bc00-47a4-8bde-2aa8ea4258cc\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -16469,7 +16469,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\n func main() {\n client.Acs.Entrances.ListCredentialsWithAccess(\ncontext.Background(),\nentrances.EntrancesListCredentialsWithAccessRequest{\nAcsEntranceId: api.String(\"afdde789-8684-425a-b421-6031bb3df62e\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport entrances \"github.com/seamapi/go/entrances\"\n\nfunc main() {\n\tclient.Acs.Entrances.ListCredentialsWithAccess(\n\t\tcontext.Background(),\n\t\tentrances.EntrancesListCredentialsWithAccessRequest{\n\t\t\tAcsEntranceId: api.String(\"afdde789-8684-425a-b421-6031bb3df62e\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsCredential{api.AcsCredential{AccessMethod: \"code\", AcsCredentialId: \"73a0a199-024f-454d-a916-9bbda8502c12\", AcsSystemId: \"b1d03165-2759-474b-a342-e02223f27b39\", AcsUserId: \"0fc82df4-391b-4d00-a234-86378f1c3952\", Code: \"123456\", CreatedAt: \"2025-06-16T16:54:17.946514Z\", DisplayName: \"FRONT_DOOR\", Errors: nil, ExternalType: \"salto_ks_credential\", ExternalTypeDisplayName: \"Salto KS Credential\", IsLatestDesiredStateSyncedWithProvider: true, IsManaged: true, IsMultiPhoneSyncCredential: false, IsOneTimeUse: false, LatestDesiredStateSyncedWithProviderAt: \"2025-06-18T16:54:17.946514Z\", StartsAt: \"2025-07-10T16:54:17.946512Z\", Warnings: nil, WorkspaceId: \"005f1e54-5360-40db-8c31-4ef6baaad1fd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -16709,7 +16709,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\n func main() {\n client.Acs.Systems.Get(\ncontext.Background(),\nsystems.SystemsGetRequest{\nAcsSystemId: api.String(\"4720a2ac-59b5-4e55-96fc-52b3cbe95907\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\nfunc main() {\n\tclient.Acs.Systems.Get(\n\t\tcontext.Background(),\n\t\tsystems.SystemsGetRequest{\n\t\t\tAcsSystemId: api.String(\"4720a2ac-59b5-4e55-96fc-52b3cbe95907\"),\n\t\t},\n\t)\n}", "response": "api.AcsSystem{AcsAccessGroupCount: 5, AcsSystemId: \"4720a2ac-59b5-4e55-96fc-52b3cbe95907\", AcsUserCount: 20, ConnectedAccountId: \"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\", ConnectedAccountIds: []string{\"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\"}, CreatedAt: \"2025-06-15T16:54:17.946425Z\", DefaultCredentialManagerAcsSystemId: \"5dde2def-3507-44f5-9521-7ca96aa4cd18\", Errors: nil, ExternalType: \"salto_ks_site\", ExternalTypeDisplayName: \"Salto KS site\", ImageAltText: \"Salto KS site Logo\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/acs_systems/salto_ks_site.png&q=75&w=128\", IsCredentialManager: false, Location: api.AcsSystemLocation{TimeZone: \"America/New_York\"}, Name: \"My Access System\", Warnings: nil, WorkspaceId: \"172920be-1f4d-45d4-8519-ecc3bdee638f\"}", "request_syntax": "go", "response_syntax": "go" @@ -16904,7 +16904,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\n func main() {\n client.Acs.Systems.List(\ncontext.Background(),\nsystems.SystemsListRequest{\nConnectedAccountId: api.String(\"2283a842-27c5-474a-bd0e-4c959274efa0\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\nfunc main() {\n\tclient.Acs.Systems.List(\n\t\tcontext.Background(),\n\t\tsystems.SystemsListRequest{\n\t\t\tConnectedAccountId: api.String(\"2283a842-27c5-474a-bd0e-4c959274efa0\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsSystem{api.AcsSystem{AcsAccessGroupCount: 5, AcsSystemId: \"dbed811f-a8c7-4dab-a3cb-1a734ebd6ac7\", AcsUserCount: 20, ConnectedAccountId: \"2283a842-27c5-474a-bd0e-4c959274efa0\", ConnectedAccountIds: []string{\"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\"}, CreatedAt: \"2025-06-15T16:54:17.946425Z\", DefaultCredentialManagerAcsSystemId: \"5dde2def-3507-44f5-9521-7ca96aa4cd18\", Errors: nil, ExternalType: \"salto_ks_site\", ExternalTypeDisplayName: \"Salto KS site\", ImageAltText: \"Salto KS site Logo\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/acs_systems/salto_ks_site.png&q=75&w=128\", IsCredentialManager: false, Location: api.AcsSystemLocation{TimeZone: \"America/New_York\"}, Name: \"My Access System\", Warnings: nil, WorkspaceId: \"172920be-1f4d-45d4-8519-ecc3bdee638f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -17066,7 +17066,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\n func main() {\n client.Acs.Systems.ListCompatibleCredentialManagerAcsSystems(\ncontext.Background(),\nsystems.SystemsListCompatibleCredentialManagerAcsSystemsRequest{\nAcsSystemId: api.String(\"82456f4c-9627-4a27-a426-1b3c50c9871b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\nfunc main() {\n\tclient.Acs.Systems.ListCompatibleCredentialManagerAcsSystems(\n\t\tcontext.Background(),\n\t\tsystems.SystemsListCompatibleCredentialManagerAcsSystemsRequest{\n\t\t\tAcsSystemId: api.String(\"82456f4c-9627-4a27-a426-1b3c50c9871b\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsSystem{api.AcsSystem{AcsAccessGroupCount: 5, AcsSystemId: \"dbed811f-a8c7-4dab-a3cb-1a734ebd6ac7\", ConnectedAccountId: \"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\", ConnectedAccountIds: []string{\"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\"}, CreatedAt: \"2025-06-15T16:54:17.946425Z\", Errors: nil, ImageAltText: \"Salto KS site Logo\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/acs_systems/salto_ks_site.png&q=75&w=128\", IsCredentialManager: true, Location: api.AcsSystemLocation{TimeZone: \"America/New_York\"}, Name: \"My Credential Manager\", Warnings: nil, WorkspaceId: \"172920be-1f4d-45d4-8519-ecc3bdee638f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -17387,7 +17387,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\n func main() {\n client.Acs.Systems.ReportDevices(\ncontext.Background(),\nsystems.SystemsReportDevicesRequest{\nAcsSystemId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\nAcsEncoders: [2]systems.SystemsReportDevicesRequestAcsEncodersItem{systems.SystemsReportDevicesRequestAcsEncoders{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{EncoderNumber: api.String(\"1\")}}, systems.SystemsReportDevicesRequestAcsEncoders{IsRemoved: api.Bool(true), HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{EncoderNumber: api.String(\"2\")}}},\nAcsEntrances: [3]systems.SystemsReportDevicesRequestAcsEntrancesItem{systems.SystemsReportDevicesRequestAcsEntrances{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{RoomNumber: api.String(\"203\")}}, systems.SystemsReportDevicesRequestAcsEntrances{IsRemoved: api.Bool(true), HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{RoomNumber: api.String(\"500\")}}, systems.SystemsReportDevicesRequestAcsEntrances{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{CommonAreaName: api.String(\"Gym\"), CommonAreaNumber: api.String(\"2\")}}},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport systems \"github.com/seamapi/go/systems\"\n\nfunc main() {\n\tclient.Acs.Systems.ReportDevices(\n\t\tcontext.Background(),\n\t\tsystems.SystemsReportDevicesRequest{\n\t\t\tAcsSystemId: api.String(\"182ea706-8e14-4921-8e57-ee18d5a7de31\"),\n\t\t\tAcsEncoders: [2]systems.SystemsReportDevicesRequestAcsEncodersItem{systems.SystemsReportDevicesRequestAcsEncoders{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{EncoderNumber: api.String(\"1\")}}, systems.SystemsReportDevicesRequestAcsEncoders{IsRemoved: api.Bool(true), HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{EncoderNumber: api.String(\"2\")}}},\n\t\t\tAcsEntrances: [3]systems.SystemsReportDevicesRequestAcsEntrancesItem{systems.SystemsReportDevicesRequestAcsEntrances{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{RoomNumber: api.String(\"203\")}}, systems.SystemsReportDevicesRequestAcsEntrances{IsRemoved: api.Bool(true), HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{RoomNumber: api.String(\"500\")}}, systems.SystemsReportDevicesRequestAcsEntrances{HotekMetadata: systems.SystemsReportDevicesRequestHotekMetadata{CommonAreaName: api.String(\"Gym\"), CommonAreaNumber: api.String(\"2\")}}},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -17549,7 +17549,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.AddToAccessGroup(\ncontext.Background(),\nusers.UsersAddToAccessGroupRequest{\nAcsUserId: api.String(\"15ce02a8-b145-4c02-adc9-d9d84c8a1177\"),\nAcsAccessGroupId: api.String(\"58c8b034-e527-4635-a335-afc74dc79b27\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.AddToAccessGroup(\n\t\tcontext.Background(),\n\t\tusers.UsersAddToAccessGroupRequest{\n\t\t\tAcsUserId: api.String(\"15ce02a8-b145-4c02-adc9-d9d84c8a1177\"),\n\t\t\tAcsAccessGroupId: api.String(\"58c8b034-e527-4635-a335-afc74dc79b27\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -17858,7 +17858,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Create(\ncontext.Background(),\nusers.UsersCreateRequest{\nFullName: api.String(\"Jane Doe\"),\nAcsSystemId: api.String(\"dc5c90b2-1aab-40a6-bcaa-4b8924b7ad46\"),\nAcsAccessGroupIds: [1]string{api.String(\"bab9962b-708b-4db7-98d5-b242a28c12e9\")},\nUserIdentityId: api.String(\"3ce809f3-b5ac-43a7-a086-70ffa9cb1dd6\"),\nAccessSchedule: users.UsersCreateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\nEmailAddress: api.String(\"jane@example.com\"),\nPhoneNumber: api.String(\"+15551234567\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Create(\n\t\tcontext.Background(),\n\t\tusers.UsersCreateRequest{\n\t\t\tFullName: api.String(\"Jane Doe\"),\n\t\t\tAcsSystemId: api.String(\"dc5c90b2-1aab-40a6-bcaa-4b8924b7ad46\"),\n\t\t\tAcsAccessGroupIds: [1]string{api.String(\"bab9962b-708b-4db7-98d5-b242a28c12e9\")},\n\t\t\tUserIdentityId: api.String(\"3ce809f3-b5ac-43a7-a086-70ffa9cb1dd6\"),\n\t\t\tAccessSchedule: users.UsersCreateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\n\t\t\tEmailAddress: api.String(\"jane@example.com\"),\n\t\t\tPhoneNumber: api.String(\"+15551234567\"),\n\t\t},\n\t)\n}", "response": "api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"dc5c90b2-1aab-40a6-bcaa-4b8924b7ad46\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+15551234567\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"3ce809f3-b5ac-43a7-a086-70ffa9cb1dd6\", UserIdentityPhoneNumber: \"+15551234567\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}", "request_syntax": "go", "response_syntax": "go" @@ -18023,7 +18023,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Delete(\ncontext.Background(),\nusers.UsersDeleteRequest{\nUserIdentityId: api.String(\"586c225c-b05c-4af4-8679-9c8a46066cce\"),\nAcsSystemId: api.String(\"1c655fbd-ecd7-49fc-a57e-b6fb67bd8d64\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Delete(\n\t\tcontext.Background(),\n\t\tusers.UsersDeleteRequest{\n\t\t\tUserIdentityId: api.String(\"586c225c-b05c-4af4-8679-9c8a46066cce\"),\n\t\t\tAcsSystemId: api.String(\"1c655fbd-ecd7-49fc-a57e-b6fb67bd8d64\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -18110,7 +18110,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Delete(\ncontext.Background(),\nusers.UsersDeleteRequest{\nAcsUserId: api.String(\"8d483a94-5cbc-425a-a6ee-bd9825820c26\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Delete(\n\t\tcontext.Background(),\n\t\tusers.UsersDeleteRequest{\n\t\t\tAcsUserId: api.String(\"8d483a94-5cbc-425a-a6ee-bd9825820c26\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -18308,7 +18308,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Get(\ncontext.Background(),\nusers.UsersGetRequest{\nUserIdentityId: api.String(\"cde1ec76-5b0d-4b3e-9b85-d80dcc9b599c\"),\nAcsSystemId: api.String(\"f4d2b3fb-7fa5-47fd-b0d3-aa6da8f5b710\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Get(\n\t\tcontext.Background(),\n\t\tusers.UsersGetRequest{\n\t\t\tUserIdentityId: api.String(\"cde1ec76-5b0d-4b3e-9b85-d80dcc9b599c\"),\n\t\t\tAcsSystemId: api.String(\"f4d2b3fb-7fa5-47fd-b0d3-aa6da8f5b710\"),\n\t\t},\n\t)\n}", "response": "api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"f4d2b3fb-7fa5-47fd-b0d3-aa6da8f5b710\", AcsUserId: \"42968059-0c89-40f3-b39a-fb80398d0d08\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"cde1ec76-5b0d-4b3e-9b85-d80dcc9b599c\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}", "request_syntax": "go", "response_syntax": "go" @@ -18424,7 +18424,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Get(\ncontext.Background(),\nusers.UsersGetRequest{\nAcsUserId: api.String(\"42968059-0c89-40f3-b39a-fb80398d0d08\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Get(\n\t\tcontext.Background(),\n\t\tusers.UsersGetRequest{\n\t\t\tAcsUserId: api.String(\"42968059-0c89-40f3-b39a-fb80398d0d08\"),\n\t\t},\n\t)\n}", "response": "api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"f4d2b3fb-7fa5-47fd-b0d3-aa6da8f5b710\", AcsUserId: \"42968059-0c89-40f3-b39a-fb80398d0d08\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"cde1ec76-5b0d-4b3e-9b85-d80dcc9b599c\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}", "request_syntax": "go", "response_syntax": "go" @@ -18700,7 +18700,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nUserIdentityId: api.String(\"0dcb435f-0aef-4ae6-8d6e-9c605b78c94e\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tUserIdentityId: api.String(\"0dcb435f-0aef-4ae6-8d6e-9c605b78c94e\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"0dcb435f-0aef-4ae6-8d6e-9c605b78c94e\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -18823,7 +18823,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nUserIdentityPhoneNumber: api.String(\"+1555551000\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tUserIdentityPhoneNumber: api.String(\"+1555551000\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -18946,7 +18946,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nUserIdentityEmailAddress: api.String(\"jane@example.com\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tUserIdentityEmailAddress: api.String(\"jane@example.com\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -19069,7 +19069,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"0e3369a0-1376-46cd-b79c-ebba856701a2\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -19192,7 +19192,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nSearch: api.String(\"Jane Doe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tSearch: api.String(\"Jane Doe\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -19316,7 +19316,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"0e3369a0-1376-46cd-b79c-ebba856701a2\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -19440,7 +19440,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.List(\ncontext.Background(),\nusers.UsersListRequest{\nAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\nCreatedBefore: api.String(\"2025-06-19T02:22:45.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.List(\n\t\tcontext.Background(),\n\t\tusers.UsersListRequest{\n\t\t\tAcsSystemId: api.String(\"0e3369a0-1376-46cd-b79c-ebba856701a2\"),\n\t\t\tCreatedBefore: api.String(\"2025-06-19T02:22:45.000Z\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"0e3369a0-1376-46cd-b79c-ebba856701a2\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -19631,7 +19631,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.ListAccessibleEntrances(\ncontext.Background(),\nusers.UsersListAccessibleEntrancesRequest{\nUserIdentityId: api.String(\"3b8abf24-21b3-40ee-9c21-6fb2daf97401\"),\nAcsSystemId: api.String(\"88d5ae6a-708d-4602-983d-6dd5de07ba1d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.ListAccessibleEntrances(\n\t\tcontext.Background(),\n\t\tusers.UsersListAccessibleEntrancesRequest{\n\t\t\tUserIdentityId: api.String(\"3b8abf24-21b3-40ee-9c21-6fb2daf97401\"),\n\t\t\tAcsSystemId: api.String(\"88d5ae6a-708d-4602-983d-6dd5de07ba1d\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -19740,7 +19740,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.ListAccessibleEntrances(\ncontext.Background(),\nusers.UsersListAccessibleEntrancesRequest{\nAcsUserId: api.String(\"4c84e6d3-e89a-4d85-9363-e9f6e928131a\"),\nAcsSystemId: api.String(\"88d5ae6a-708d-4602-983d-6dd5de07ba1d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.ListAccessibleEntrances(\n\t\tcontext.Background(),\n\t\tusers.UsersListAccessibleEntrancesRequest{\n\t\t\tAcsUserId: api.String(\"4c84e6d3-e89a-4d85-9363-e9f6e928131a\"),\n\t\t\tAcsSystemId: api.String(\"88d5ae6a-708d-4602-983d-6dd5de07ba1d\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsEntrance{api.AcsEntrance{AcsEntranceId: \"f74e4879-5991-4e2f-a368-888983dcfbfc\", AcsSystemId: \"6a74a969-94ea-4383-b5cf-5e7da8c113d1\", ConnectedAccountId: \"1b9a3e0d-443f-4063-b619-4ca7e2a97751\", CreatedAt: \"2025-06-15T16:54:17.946495Z\", DisplayName: \"Main Entrance\", Errors: nil, VisionlineMetadata: api.AcsEntranceVisionlineMetadata{DoorCategory: \"guest\", DoorName: \"Main Entrance\", Profiles: []AcsEntranceVisionlineMetadataProfiles{api.AcsEntranceVisionlineMetadataProfilesProfiles{VisionlineDoorProfileId: \"7f8e9d0a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", VisionlineDoorProfileType: \"BLE\"}}}}}", "request_syntax": "go", "response_syntax": "go" @@ -19905,7 +19905,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.RemoveFromAccessGroup(\ncontext.Background(),\nusers.UsersRemoveFromAccessGroupRequest{\nUserIdentityId: api.String(\"00ff2781-cce8-4b63-8c65-2b97647d790c\"),\nAcsAccessGroupId: api.String(\"d192f395-4c68-4c33-af41-97a7df5be576\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.RemoveFromAccessGroup(\n\t\tcontext.Background(),\n\t\tusers.UsersRemoveFromAccessGroupRequest{\n\t\t\tUserIdentityId: api.String(\"00ff2781-cce8-4b63-8c65-2b97647d790c\"),\n\t\t\tAcsAccessGroupId: api.String(\"d192f395-4c68-4c33-af41-97a7df5be576\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -19993,7 +19993,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.RemoveFromAccessGroup(\ncontext.Background(),\nusers.UsersRemoveFromAccessGroupRequest{\nAcsUserId: api.String(\"6808e2d9-b4eb-4ad8-b200-503877cd1057\"),\nAcsAccessGroupId: api.String(\"d192f395-4c68-4c33-af41-97a7df5be576\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.RemoveFromAccessGroup(\n\t\tcontext.Background(),\n\t\tusers.UsersRemoveFromAccessGroupRequest{\n\t\t\tAcsUserId: api.String(\"6808e2d9-b4eb-4ad8-b200-503877cd1057\"),\n\t\t\tAcsAccessGroupId: api.String(\"d192f395-4c68-4c33-af41-97a7df5be576\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20157,7 +20157,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.RevokeAccessToAllEntrances(\ncontext.Background(),\nusers.UsersRevokeAccessToAllEntrancesRequest{\nUserIdentityId: api.String(\"aadb341e-6cd5-4c8b-9561-8f686f84160c\"),\nAcsSystemId: api.String(\"d42163f1-ac2d-4c15-a651-5f2e0007b297\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.RevokeAccessToAllEntrances(\n\t\tcontext.Background(),\n\t\tusers.UsersRevokeAccessToAllEntrancesRequest{\n\t\t\tUserIdentityId: api.String(\"aadb341e-6cd5-4c8b-9561-8f686f84160c\"),\n\t\t\tAcsSystemId: api.String(\"d42163f1-ac2d-4c15-a651-5f2e0007b297\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20244,7 +20244,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.RevokeAccessToAllEntrances(\ncontext.Background(),\nusers.UsersRevokeAccessToAllEntrancesRequest{\nAcsUserId: api.String(\"2520b7a7-5c5b-482e-9db2-11d02f4ea6ce\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.RevokeAccessToAllEntrances(\n\t\tcontext.Background(),\n\t\tusers.UsersRevokeAccessToAllEntrancesRequest{\n\t\t\tAcsUserId: api.String(\"2520b7a7-5c5b-482e-9db2-11d02f4ea6ce\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20408,7 +20408,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Suspend(\ncontext.Background(),\nusers.UsersSuspendRequest{\nUserIdentityId: api.String(\"73fac667-bd93-4548-add2-e75161d69c7c\"),\nAcsSystemId: api.String(\"f2240088-0bc7-4edb-80d1-485bd956ba7d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Suspend(\n\t\tcontext.Background(),\n\t\tusers.UsersSuspendRequest{\n\t\t\tUserIdentityId: api.String(\"73fac667-bd93-4548-add2-e75161d69c7c\"),\n\t\t\tAcsSystemId: api.String(\"f2240088-0bc7-4edb-80d1-485bd956ba7d\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20495,7 +20495,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Suspend(\ncontext.Background(),\nusers.UsersSuspendRequest{\nAcsUserId: api.String(\"8f934186-1dbc-4098-9f66-d1b202abec9d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Suspend(\n\t\tcontext.Background(),\n\t\tusers.UsersSuspendRequest{\n\t\t\tAcsUserId: api.String(\"8f934186-1dbc-4098-9f66-d1b202abec9d\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20659,7 +20659,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unsuspend(\ncontext.Background(),\nusers.UsersUnsuspendRequest{\nUserIdentityId: api.String(\"6a42fbcf-da1a-40f8-8221-596774f97537\"),\nAcsSystemId: api.String(\"264ea3f9-e483-469e-aada-c98c094d5521\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unsuspend(\n\t\tcontext.Background(),\n\t\tusers.UsersUnsuspendRequest{\n\t\t\tUserIdentityId: api.String(\"6a42fbcf-da1a-40f8-8221-596774f97537\"),\n\t\t\tAcsSystemId: api.String(\"264ea3f9-e483-469e-aada-c98c094d5521\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -20746,7 +20746,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unsuspend(\ncontext.Background(),\nusers.UsersUnsuspendRequest{\nAcsUserId: api.String(\"56dd7042-4134-4788-9212-53f25f2939e1\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unsuspend(\n\t\tcontext.Background(),\n\t\tusers.UsersUnsuspendRequest{\n\t\t\tAcsUserId: api.String(\"56dd7042-4134-4788-9212-53f25f2939e1\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -21034,7 +21034,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Update(\ncontext.Background(),\nusers.UsersUpdateRequest{\nAcsUserId: api.String(\"5db87499-0b3b-4750-a2e8-341b2af64049\"),\nUserIdentityId: api.String(\"b0bbb463-4fad-4b21-a695-952463ea6e93\"),\nAcsSystemId: api.String(\"88ae7b8b-c406-414b-a745-91d9cea661f7\"),\nAccessSchedule: users.UsersUpdateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\nFullName: api.String(\"Jane Doe\"),\nEmail: api.String(\"jane@example.com\"),\nPhoneNumber: api.String(\"+15551234567\"),\nEmailAddress: api.String(\"jane@example.com\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Update(\n\t\tcontext.Background(),\n\t\tusers.UsersUpdateRequest{\n\t\t\tAcsUserId: api.String(\"5db87499-0b3b-4750-a2e8-341b2af64049\"),\n\t\t\tUserIdentityId: api.String(\"b0bbb463-4fad-4b21-a695-952463ea6e93\"),\n\t\t\tAcsSystemId: api.String(\"88ae7b8b-c406-414b-a745-91d9cea661f7\"),\n\t\t\tAccessSchedule: users.UsersUpdateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\n\t\t\tFullName: api.String(\"Jane Doe\"),\n\t\t\tEmail: api.String(\"jane@example.com\"),\n\t\t\tPhoneNumber: api.String(\"+15551234567\"),\n\t\t\tEmailAddress: api.String(\"jane@example.com\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -21129,7 +21129,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Update(\ncontext.Background(),\nusers.UsersUpdateRequest{\nAcsUserId: api.String(\"5db87499-0b3b-4750-a2e8-341b2af64049\"),\nAccessSchedule: users.UsersUpdateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\nFullName: api.String(\"Jane Doe\"),\nEmail: api.String(\"jane@example.com\"),\nPhoneNumber: api.String(\"+15551234567\"),\nEmailAddress: api.String(\"jane@example.com\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Update(\n\t\tcontext.Background(),\n\t\tusers.UsersUpdateRequest{\n\t\t\tAcsUserId: api.String(\"5db87499-0b3b-4750-a2e8-341b2af64049\"),\n\t\t\tAccessSchedule: users.UsersUpdateRequestAccessSchedule{StartsAt: api.String(\"2025-06-10T15:00:00.000Z\"), EndsAt: api.String(\"2025-06-12T11:00:00.000Z\")},\n\t\t\tFullName: api.String(\"Jane Doe\"),\n\t\t\tEmail: api.String(\"jane@example.com\"),\n\t\t\tPhoneNumber: api.String(\"+15551234567\"),\n\t\t\tEmailAddress: api.String(\"jane@example.com\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -21309,7 +21309,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unmanaged.Get(\ncontext.Background(),\nusers.UsersUnmanagedGetRequest{\nAcsUserId: api.String(\"522cdfa9-5063-492f-935e-d99a48baa7fe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tusers.UsersUnmanagedGetRequest{\n\t\t\tAcsUserId: api.String(\"522cdfa9-5063-492f-935e-d99a48baa7fe\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedAcsUser{AccessSchedule: api.UnmanagedAcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"c1728baa-4866-4498-a77b-d8bdcb2e7c70\", AcsUserId: \"522cdfa9-5063-492f-935e-d99a48baa7fe\", ConnectedAccountId: \"68130ac8-f798-4661-908b-8ad851cb3c07\", CreatedAt: \"2025-06-15T16:54:17.946488Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"b7db3208-103a-4cf1-bef4-e9284288d87e\", IsManaged: false, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551001\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"b84356b2-af8d-4d01-8f99-a4c152c1405c\", UserIdentityPhoneNumber: \"+1555551001\", Warnings: nil, WorkspaceId: \"f8f938d8-ad36-4b59-9686-54804c0a299f\"}", "request_syntax": "go", "response_syntax": "go" @@ -21552,7 +21552,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unmanaged.List(\ncontext.Background(),\nusers.UsersUnmanagedListRequest{\nUserIdentityId: api.String(\"e7ae215a-3fd8-4c1d-99fb-a792bb5839d5\"),\nAcsSystemId: api.String(\"c1728baa-4866-4498-a77b-d8bdcb2e7c70\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tusers.UsersUnmanagedListRequest{\n\t\t\tUserIdentityId: api.String(\"e7ae215a-3fd8-4c1d-99fb-a792bb5839d5\"),\n\t\t\tAcsSystemId: api.String(\"c1728baa-4866-4498-a77b-d8bdcb2e7c70\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsUser{api.UnmanagedAcsUser{AccessSchedule: api.UnmanagedAcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"c1728baa-4866-4498-a77b-d8bdcb2e7c70\", AcsUserId: \"0c43d2b2-4a88-4ec0-8649-7ff53439a50e\", ConnectedAccountId: \"68130ac8-f798-4661-908b-8ad851cb3c07\", CreatedAt: \"2025-06-15T16:54:17.946488Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"b7db3208-103a-4cf1-bef4-e9284288d87e\", IsManaged: false, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551001\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"e7ae215a-3fd8-4c1d-99fb-a792bb5839d5\", UserIdentityPhoneNumber: \"+1555551001\", Warnings: nil, WorkspaceId: \"f8f938d8-ad36-4b59-9686-54804c0a299f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -21670,7 +21670,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unmanaged.List(\ncontext.Background(),\nusers.UsersUnmanagedListRequest{\nUserIdentityPhoneNumber: api.String(\"+1555551001\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tusers.UsersUnmanagedListRequest{\n\t\t\tUserIdentityPhoneNumber: api.String(\"+1555551001\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsUser{api.UnmanagedAcsUser{AccessSchedule: api.UnmanagedAcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"c1728baa-4866-4498-a77b-d8bdcb2e7c70\", AcsUserId: \"0c43d2b2-4a88-4ec0-8649-7ff53439a50e\", ConnectedAccountId: \"68130ac8-f798-4661-908b-8ad851cb3c07\", CreatedAt: \"2025-06-15T16:54:17.946488Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"b7db3208-103a-4cf1-bef4-e9284288d87e\", IsManaged: false, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551001\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"b84356b2-af8d-4d01-8f99-a4c152c1405c\", UserIdentityPhoneNumber: \"+1555551001\", Warnings: nil, WorkspaceId: \"f8f938d8-ad36-4b59-9686-54804c0a299f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -21788,7 +21788,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unmanaged.List(\ncontext.Background(),\nusers.UsersUnmanagedListRequest{\nUserIdentityEmailAddress: api.String(\"jane@example.com\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tusers.UsersUnmanagedListRequest{\n\t\t\tUserIdentityEmailAddress: api.String(\"jane@example.com\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsUser{api.UnmanagedAcsUser{AccessSchedule: api.UnmanagedAcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"c1728baa-4866-4498-a77b-d8bdcb2e7c70\", AcsUserId: \"0c43d2b2-4a88-4ec0-8649-7ff53439a50e\", ConnectedAccountId: \"68130ac8-f798-4661-908b-8ad851cb3c07\", CreatedAt: \"2025-06-15T16:54:17.946488Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"b7db3208-103a-4cf1-bef4-e9284288d87e\", IsManaged: false, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551001\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"b84356b2-af8d-4d01-8f99-a4c152c1405c\", UserIdentityPhoneNumber: \"+1555551001\", Warnings: nil, WorkspaceId: \"f8f938d8-ad36-4b59-9686-54804c0a299f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -21906,7 +21906,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\n func main() {\n client.Acs.Users.Unmanaged.List(\ncontext.Background(),\nusers.UsersUnmanagedListRequest{\nAcsSystemId: api.String(\"c1728baa-4866-4498-a77b-d8bdcb2e7c70\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport users \"github.com/seamapi/go/users\"\n\nfunc main() {\n\tclient.Acs.Users.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tusers.UsersUnmanagedListRequest{\n\t\t\tAcsSystemId: api.String(\"c1728baa-4866-4498-a77b-d8bdcb2e7c70\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedAcsUser{api.UnmanagedAcsUser{AccessSchedule: api.UnmanagedAcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"c1728baa-4866-4498-a77b-d8bdcb2e7c70\", AcsUserId: \"0c43d2b2-4a88-4ec0-8649-7ff53439a50e\", ConnectedAccountId: \"68130ac8-f798-4661-908b-8ad851cb3c07\", CreatedAt: \"2025-06-15T16:54:17.946488Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"b7db3208-103a-4cf1-bef4-e9284288d87e\", IsManaged: false, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551001\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"b84356b2-af8d-4d01-8f99-a4c152c1405c\", UserIdentityPhoneNumber: \"+1555551001\", Warnings: nil, WorkspaceId: \"f8f938d8-ad36-4b59-9686-54804c0a299f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -22068,7 +22068,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ActionAttempts.Get(\ncontext.Background(),\napi.ActionAttemptsGetRequest{\nActionAttemptId: api.String(\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ActionAttempts.Get(\n\t\tcontext.Background(),\n\t\tapi.ActionAttemptsGetRequest{\n\t\t\tActionAttemptId: api.String(\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", ActionType: \"UNLOCK_DOOR\", Error: nil, Result: api.ActionAttemptResult{WasConfirmedByDevice: false}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -22274,7 +22274,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ActionAttempts.List(\ncontext.Background(),\napi.ActionAttemptsListRequest{\nActionAttemptIds: [2]string{api.String(\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"), api.String(\"3f2b1c8d-1b5e-4f8c-9c7d-9a8b7c6d5e4f\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ActionAttempts.List(\n\t\tcontext.Background(),\n\t\tapi.ActionAttemptsListRequest{\n\t\t\tActionAttemptIds: [2]string{api.String(\"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\"), api.String(\"3f2b1c8d-1b5e-4f8c-9c7d-9a8b7c6d5e4f\")},\n\t\t},\n\t)\n}", "response": "[]api.ActionAttempt{api.ActionAttempt{ActionAttemptId: \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", ActionType: \"UNLOCK_DOOR\", Error: nil, Result: api.ActionAttemptResult{WasConfirmedByDevice: false}, Status: \"success\"}, api.ActionAttempt{ActionAttemptId: \"3f2b1c8d-1b5e-4f8c-9c7d-9a8b7c6d5e4f\", ActionType: \"LOCK_DOOR\", Error: nil, Result: struct{}{}, Status: \"success\"}}", "request_syntax": "go", "response_syntax": "go" @@ -22431,7 +22431,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Bridges.Get(\ncontext.Background(),\napi.BridgesGetRequest{\nBridgeId: api.String(\"02301dbb-c917-4d88-89da-baa9e36871da\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Bridges.Get(\n\t\tcontext.Background(),\n\t\tapi.BridgesGetRequest{\n\t\t\tBridgeId: api.String(\"02301dbb-c917-4d88-89da-baa9e36871da\"),\n\t\t},\n\t)\n}", "response": "api.Unknown{BridgeId: \"02301dbb-c917-4d88-89da-baa9e36871da\", CreatedAt: \"2025-06-15T16:54:17.946453Z\", WorkspaceId: \"ac19352c-869a-4209-9ce7-44c740a8b5d0\"}", "request_syntax": "go", "response_syntax": "go" @@ -22562,7 +22562,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Bridges.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Bridges.List(context.Background())\n}", "response": "[]api.Unknown{api.Unknown{BridgeId: \"02301dbb-c917-4d88-89da-baa9e36871da\", CreatedAt: \"2025-06-15T16:54:17.946453Z\", WorkspaceId: \"ac19352c-869a-4209-9ce7-44c740a8b5d0\"}}", "request_syntax": "go", "response_syntax": "go" @@ -22843,7 +22843,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.Create(\ncontext.Background(),\napi.ClientSessionsCreateRequest{\nCustomerId: api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\"),\nCustomerKey: api.String(\"My Company\"),\nUserIdentifierKey: api.String(\"jane_doe\"),\nConnectWebviewIds: [1]string{api.String(\"dafe6400-7484-4fd1-8c17-1c901b444250\")},\nConnectedAccountIds: [1]string{api.String(\"8062d457-e28e-481f-aecc-509905627511\")},\nUserIdentityId: api.String(\"89765fd3-6193-4d63-8605-e77f75356555\"),\nExpiresAt: api.String(\"2025-06-19T15:22:40.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.Create(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsCreateRequest{\n\t\t\tCustomerId: api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\"),\n\t\t\tCustomerKey: api.String(\"My Company\"),\n\t\t\tUserIdentifierKey: api.String(\"jane_doe\"),\n\t\t\tConnectWebviewIds: [1]string{api.String(\"dafe6400-7484-4fd1-8c17-1c901b444250\")},\n\t\t\tConnectedAccountIds: [1]string{api.String(\"8062d457-e28e-481f-aecc-509905627511\")},\n\t\t\tUserIdentityId: api.String(\"89765fd3-6193-4d63-8605-e77f75356555\"),\n\t\t\tExpiresAt: api.String(\"2025-06-19T15:22:40.000Z\"),\n\t\t},\n\t)\n}", "response": "api.ClientSession{ClientSessionId: \"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\", ConnectWebviewIds: []string{\"dafe6400-7484-4fd1-8c17-1c901b444250\"}, ConnectedAccountIds: []string{\"8062d457-e28e-481f-aecc-509905627511\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-19T15:22:40.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"89765fd3-6193-4d63-8605-e77f75356555\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}", "request_syntax": "go", "response_syntax": "go" @@ -22979,7 +22979,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.Delete(\ncontext.Background(),\napi.ClientSessionsDeleteRequest{\nClientSessionId: api.String(\"d149de35-cfad-46fe-a78e-f71f649e7a37\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.Delete(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsDeleteRequest{\n\t\t\tClientSessionId: api.String(\"d149de35-cfad-46fe-a78e-f71f649e7a37\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -23152,7 +23152,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.Get(\ncontext.Background(),\napi.ClientSessionsGetRequest{\nClientSessionId: api.String(\"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.Get(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsGetRequest{\n\t\t\tClientSessionId: api.String(\"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\"),\n\t\t},\n\t)\n}", "response": "api.ClientSession{ClientSessionId: \"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\", ConnectWebviewIds: []string{\"dafe6400-7484-4fd1-8c17-1c901b444250\"}, ConnectedAccountIds: []string{\"8062d457-e28e-481f-aecc-509905627511\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-19T15:22:40.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"89765fd3-6193-4d63-8605-e77f75356555\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}", "request_syntax": "go", "response_syntax": "go" @@ -23257,7 +23257,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.Get(\ncontext.Background(),\napi.ClientSessionsGetRequest{\nUserIdentifierKey: api.String(\"jane_doe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.Get(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsGetRequest{\n\t\t\tUserIdentifierKey: api.String(\"jane_doe\"),\n\t\t},\n\t)\n}", "response": "api.ClientSession{ClientSessionId: \"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\", ConnectWebviewIds: []string{\"dafe6400-7484-4fd1-8c17-1c901b444250\"}, ConnectedAccountIds: []string{\"8062d457-e28e-481f-aecc-509905627511\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-19T15:22:40.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"89765fd3-6193-4d63-8605-e77f75356555\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}", "request_syntax": "go", "response_syntax": "go" @@ -23496,7 +23496,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.GetOrCreate(\ncontext.Background(),\napi.ClientSessionsGetOrCreateRequest{\nUserIdentifierKey: api.String(\"jane_doe\"),\nConnectWebviewIds: [1]string{api.String(\"5e297cfe-23df-4638-bb87-08c4f0f8233b\")},\nConnectedAccountIds: [1]string{api.String(\"f87f0ab7-b8d7-44aa-9e59-3239b209570e\")},\nUserIdentityId: api.String(\"71ff7f71-2cf4-458a-8db4-6ad539c8b66a\"),\nExpiresAt: api.String(\"2025-06-18T06:10:42.000Z\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.GetOrCreate(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsGetOrCreateRequest{\n\t\t\tUserIdentifierKey: api.String(\"jane_doe\"),\n\t\t\tConnectWebviewIds: [1]string{api.String(\"5e297cfe-23df-4638-bb87-08c4f0f8233b\")},\n\t\t\tConnectedAccountIds: [1]string{api.String(\"f87f0ab7-b8d7-44aa-9e59-3239b209570e\")},\n\t\t\tUserIdentityId: api.String(\"71ff7f71-2cf4-458a-8db4-6ad539c8b66a\"),\n\t\t\tExpiresAt: api.String(\"2025-06-18T06:10:42.000Z\"),\n\t\t},\n\t)\n}", "response": "api.ClientSession{ClientSessionId: \"c2cbd177-1ace-414b-bb1e-9f129e4a05c1\", ConnectWebviewIds: []string{\"5e297cfe-23df-4638-bb87-08c4f0f8233b\"}, ConnectedAccountIds: []string{\"f87f0ab7-b8d7-44aa-9e59-3239b209570e\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"71ff7f71-2cf4-458a-8db4-6ad539c8b66a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}", "request_syntax": "go", "response_syntax": "go" @@ -23731,7 +23731,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.GrantAccess(\ncontext.Background(),\napi.ClientSessionsGrantAccessRequest{\nClientSessionId: api.String(\"3ada79d3-2848-4320-b2ef-a82e1e6dafac\"),\nUserIdentifierKey: api.String(\"jane_doe\"),\nConnectedAccountIds: [1]string{api.String(\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\")},\nConnectWebviewIds: [1]string{api.String(\"dad03fb2-f801-449c-ab88-0529728c7c38\")},\nUserIdentityId: api.String(\"bde98963-3615-4e92-943e-17de3017232b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.GrantAccess(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsGrantAccessRequest{\n\t\t\tClientSessionId: api.String(\"3ada79d3-2848-4320-b2ef-a82e1e6dafac\"),\n\t\t\tUserIdentifierKey: api.String(\"jane_doe\"),\n\t\t\tConnectedAccountIds: [1]string{api.String(\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\")},\n\t\t\tConnectWebviewIds: [1]string{api.String(\"dad03fb2-f801-449c-ab88-0529728c7c38\")},\n\t\t\tUserIdentityId: api.String(\"bde98963-3615-4e92-943e-17de3017232b\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -23947,7 +23947,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.List(\ncontext.Background(),\napi.ClientSessionsListRequest{\nClientSessionId: api.String(\"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.List(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsListRequest{\n\t\t\tClientSessionId: api.String(\"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\"),\n\t\t},\n\t)\n}", "response": "[]api.ClientSession{api.ClientSession{ClientSessionId: \"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\", ConnectWebviewIds: []string{\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"}, ConnectedAccountIds: []string{\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"b4ce8233-3b35-4d2d-82ec-d48513684f0a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}}", "request_syntax": "go", "response_syntax": "go" @@ -24054,7 +24054,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.List(\ncontext.Background(),\napi.ClientSessionsListRequest{\nUserIdentifierKey: api.String(\"jane_doe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.List(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsListRequest{\n\t\t\tUserIdentifierKey: api.String(\"jane_doe\"),\n\t\t},\n\t)\n}", "response": "[]api.ClientSession{api.ClientSession{ClientSessionId: \"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\", ConnectWebviewIds: []string{\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"}, ConnectedAccountIds: []string{\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"b4ce8233-3b35-4d2d-82ec-d48513684f0a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}}", "request_syntax": "go", "response_syntax": "go" @@ -24161,7 +24161,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.List(\ncontext.Background(),\napi.ClientSessionsListRequest{\nConnectWebviewId: api.String(\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.List(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsListRequest{\n\t\t\tConnectWebviewId: api.String(\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"),\n\t\t},\n\t)\n}", "response": "[]api.ClientSession{api.ClientSession{ClientSessionId: \"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\", ConnectWebviewIds: []string{\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"}, ConnectedAccountIds: []string{\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"b4ce8233-3b35-4d2d-82ec-d48513684f0a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}}", "request_syntax": "go", "response_syntax": "go" @@ -24268,7 +24268,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.List(\ncontext.Background(),\napi.ClientSessionsListRequest{\nUserIdentityId: api.String(\"b4ce8233-3b35-4d2d-82ec-d48513684f0a\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.List(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsListRequest{\n\t\t\tUserIdentityId: api.String(\"b4ce8233-3b35-4d2d-82ec-d48513684f0a\"),\n\t\t},\n\t)\n}", "response": "[]api.ClientSession{api.ClientSession{ClientSessionId: \"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\", ConnectWebviewIds: []string{\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"}, ConnectedAccountIds: []string{\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: \"jane_doe\", UserIdentityId: \"b4ce8233-3b35-4d2d-82ec-d48513684f0a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}}", "request_syntax": "go", "response_syntax": "go" @@ -24375,7 +24375,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.List(\ncontext.Background(),\napi.ClientSessionsListRequest{\nWithoutUserIdentifierKey: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.List(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsListRequest{\n\t\t\tWithoutUserIdentifierKey: api.Bool(true),\n\t\t},\n\t)\n}", "response": "[]api.ClientSession{api.ClientSession{ClientSessionId: \"a083ce0f-8b03-4081-ac9a-1ad2ce6aaabc\", ConnectWebviewIds: []string{\"e0f522d4-a7b6-4f65-ba90-11cde67a893a\"}, ConnectedAccountIds: []string{\"c35ecf64-474a-466a-95a6-7b35cb4c8bb4\"}, CreatedAt: \"2025-06-15T16:54:17.946309Z\", CustomerId: \"e387e15f-be27-47ad-881f-4a6fc5460c57\", DeviceCount: 1, ExpiresAt: \"2025-06-18T06:10:42.000Z\", Token: \"seam_cst1891oqCmD_6dBwV8PJ2Fsoe9dWYVyMfVHq\", UserIdentifierKey: nil, UserIdentityId: \"b4ce8233-3b35-4d2d-82ec-d48513684f0a\", WorkspaceId: \"b887bf84-9849-4454-a562-cf84293d9781\"}}", "request_syntax": "go", "response_syntax": "go" @@ -24510,7 +24510,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ClientSessions.Revoke(\ncontext.Background(),\napi.ClientSessionsRevokeRequest{\nClientSessionId: api.String(\"4271352c-6894-4367-8f52-41d565c48f13\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ClientSessions.Revoke(\n\t\tcontext.Background(),\n\t\tapi.ClientSessionsRevokeRequest{\n\t\t\tClientSessionId: api.String(\"4271352c-6894-4367-8f52-41d565c48f13\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -25584,7 +25584,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.Create(\ncontext.Background(),\napi.ConnectWebviewsCreateRequest{\nCustomRedirectUrl: api.String(\"https://example.com/redirect\"),\nCustomRedirectFailureUrl: api.String(\"https://example.com/failure-redirect\"),\nCustomerId: api.String(\"8d7a8cc0-2e69-4bc6-85c8-545036fdd5c0\"),\nProviderCategory: api.String(\"stable\"),\nCustomMetadata: api.ConnectWebviewsCreateRequestCustomMetadata{Id: api.String(\"internalId1\")},\nAutomaticallyManageNewDevices: api.Bool(true),\nWaitForDeviceCreation: api.Bool(true),\nAcceptedCapabilities: [2]string{api.String(\"lock\"), api.String(\"thermostat\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.Create(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsCreateRequest{\n\t\t\tCustomRedirectUrl: api.String(\"https://example.com/redirect\"),\n\t\t\tCustomRedirectFailureUrl: api.String(\"https://example.com/failure-redirect\"),\n\t\t\tCustomerId: api.String(\"8d7a8cc0-2e69-4bc6-85c8-545036fdd5c0\"),\n\t\t\tProviderCategory: api.String(\"stable\"),\n\t\t\tCustomMetadata: api.ConnectWebviewsCreateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n\t\t\tAutomaticallyManageNewDevices: api.Bool(true),\n\t\t\tWaitForDeviceCreation: api.Bool(true),\n\t\t\tAcceptedCapabilities: [2]string{api.String(\"lock\"), api.String(\"thermostat\")},\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"schlage\", \"kwikset\", \"yale\", \"smartthings\", \"august\", \"avigilon_alta\", \"brivo\", \"nuki\", \"salto_ks\", \"salto_space\", \"controlbyweb\", \"minut\", \"my_2n\", \"ttlock\", \"noiseaware\", \"igloohome\", \"ecobee\", \"four_suites\", \"lockly\", \"wyze\", \"google_nest\", \"tede\", \"seam_bridge\", \"honeywell_resideo\", \"visionline\", \"assa_abloy_credential_service\", \"latch\", \"akiles\", \"sensi\", \"assa_abloy_vostio\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -25722,7 +25722,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.Create(\ncontext.Background(),\napi.ConnectWebviewsCreateRequest{\nCustomRedirectUrl: api.String(\"https://example.com/redirect\"),\nCustomRedirectFailureUrl: api.String(\"https://example.com/failure-redirect\"),\nCustomerId: api.String(\"8d7a8cc0-2e69-4bc6-85c8-545036fdd5c0\"),\nAcceptedProviders: [4]string{api.String(\"kwikset\"), api.String(\"schlage\"), api.String(\"smartthings\"), api.String(\"yale\")},\nProviderCategory: api.String(\"stable\"),\nCustomMetadata: api.ConnectWebviewsCreateRequestCustomMetadata{Id: api.String(\"internalId1\")},\nAutomaticallyManageNewDevices: api.Bool(true),\nWaitForDeviceCreation: api.Bool(true),\nAcceptedCapabilities: [2]string{api.String(\"lock\"), api.String(\"thermostat\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.Create(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsCreateRequest{\n\t\t\tCustomRedirectUrl: api.String(\"https://example.com/redirect\"),\n\t\t\tCustomRedirectFailureUrl: api.String(\"https://example.com/failure-redirect\"),\n\t\t\tCustomerId: api.String(\"8d7a8cc0-2e69-4bc6-85c8-545036fdd5c0\"),\n\t\t\tAcceptedProviders: [4]string{api.String(\"kwikset\"), api.String(\"schlage\"), api.String(\"smartthings\"), api.String(\"yale\")},\n\t\t\tProviderCategory: api.String(\"stable\"),\n\t\t\tCustomMetadata: api.ConnectWebviewsCreateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n\t\t\tAutomaticallyManageNewDevices: api.Bool(true),\n\t\t\tWaitForDeviceCreation: api.Bool(true),\n\t\t\tAcceptedCapabilities: [2]string{api.String(\"lock\"), api.String(\"thermostat\")},\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"kwikset\", \"schlage\", \"smartthings\", \"yale\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -25858,7 +25858,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.Delete(\ncontext.Background(),\napi.ConnectWebviewsDeleteRequest{\nConnectWebviewId: api.String(\"816f796f-636c-46a9-9fef-7f90ca69e771\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.Delete(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsDeleteRequest{\n\t\t\tConnectWebviewId: api.String(\"816f796f-636c-46a9-9fef-7f90ca69e771\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -26032,7 +26032,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.Get(\ncontext.Background(),\napi.ConnectWebviewsGetRequest{\nConnectWebviewId: api.String(\"c4c30885-ec87-4b31-8d7b-9bc0678fa028\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.Get(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsGetRequest{\n\t\t\tConnectWebviewId: api.String(\"c4c30885-ec87-4b31-8d7b-9bc0678fa028\"),\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"kwikset\", \"schlage\", \"smartthings\", \"yale\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -26285,7 +26285,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.List(\ncontext.Background(),\napi.ConnectWebviewsListRequest{\nCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsListRequest{\n\t\t\tCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"kwikset\", \"schlage\", \"smartthings\", \"yale\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -26411,7 +26411,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.List(\ncontext.Background(),\napi.ConnectWebviewsListRequest{\nUserIdentifierKey: api.String(\"7bf74090-25cc-4235-a2f8-aea277b19597\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsListRequest{\n\t\t\tUserIdentifierKey: api.String(\"7bf74090-25cc-4235-a2f8-aea277b19597\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"kwikset\", \"schlage\", \"smartthings\", \"yale\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -26539,7 +26539,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectWebviews.List(\ncontext.Background(),\napi.ConnectWebviewsListRequest{\nCustomMetadataHas: api.ConnectWebviewsListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectWebviews.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectWebviewsListRequest{\n\t\t\tCustomMetadataHas: api.ConnectWebviewsListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "api.ConnectWebview{AcceptedCapabilities: []string{\"lock\", \"thermostat\"}, AcceptedDevices: nil, AcceptedProviders: []string{\"kwikset\", \"schlage\", \"smartthings\", \"yale\"}, AnyDeviceAllowed: true, AnyProviderAllowed: false, AuthorizedAt: nil, AutomaticallyManageNewDevices: true, ConnectWebviewId: \"c4c30885-ec87-4b31-8d7b-9bc0678fa028\", ConnectedAccountId: nil, CreatedAt: \"2025-06-14T16:54:17.946323Z\", CustomMetadata: api.ConnectWebviewCustomMetadata{Id: \"internalId1\"}, CustomRedirectFailureUrl: \"https://example.com/failure-redirect\", CustomRedirectUrl: \"https://example.com/redirect\", DeviceSelectionMode: \"none\", LoginSuccessful: false, SelectedProvider: nil, Status: \"pending\", Url: \"https://connect.getseam.com/connect_webviews/view?connect_webview_id=c4c30885-ec87-4b31-8d7b-9bc0678fa028&auth_token=2r2Rn8V5QUtxE79gMsTmLK58KkuqrwU8d\", WaitForDeviceCreation: true, WorkspaceId: \"9db95105-e77d-4577-b1b7-0a20b360d5e0\"}", "request_syntax": "go", "response_syntax": "go" @@ -26702,7 +26702,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.Delete(\ncontext.Background(),\napi.ConnectedAccountsDeleteRequest{\nConnectedAccountId: api.String(\"35a07a42-4eb2-4080-9bf9-ee08aa2bf62e\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.Delete(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsDeleteRequest{\n\t\t\tConnectedAccountId: api.String(\"35a07a42-4eb2-4080-9bf9-ee08aa2bf62e\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -26878,7 +26878,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.Get(\ncontext.Background(),\napi.ConnectedAccountsGetRequest{\nConnectedAccountId: api.String(\"a289aa54-5488-4707-9a4b-eeea4edf311d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.Get(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsGetRequest{\n\t\t\tConnectedAccountId: api.String(\"a289aa54-5488-4707-9a4b-eeea4edf311d\"),\n\t\t},\n\t)\n}", "response": "api.ConnectedAccount{AccountType: \"salto_space\", AccountTypeDisplayName: \"Salto Space\", DisplayName: \"j**n@example.com\", AutomaticallyManageNewDevices: true, ConnectedAccountId: \"a289aa54-5488-4707-9a4b-eeea4edf311d\", CreatedAt: \"2025-06-15T16:54:17.946329Z\", CustomMetadata: api.ConnectedAccountCustomMetadata{Id: \"internalId1\"}, Errors: nil, UserIdentifier: api.ConnectedAccountUserIdentifier{ApiUrl: \"https://example.com/api\", Email: \"jane_doe@example.com\", Exclusive: true, Phone: \"+1555551004\", Username: \"jane_doe\"}, Warnings: nil}", "request_syntax": "go", "response_syntax": "go" @@ -26986,7 +26986,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.Get(\ncontext.Background(),\napi.ConnectedAccountsGetRequest{\nEmail: api.String(\"jane_doe@example.com\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.Get(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsGetRequest{\n\t\t\tEmail: api.String(\"jane_doe@example.com\"),\n\t\t},\n\t)\n}", "response": "api.ConnectedAccount{AccountType: \"salto_space\", AccountTypeDisplayName: \"Salto Space\", DisplayName: \"j**n@example.com\", AutomaticallyManageNewDevices: true, ConnectedAccountId: \"a289aa54-5488-4707-9a4b-eeea4edf311d\", CreatedAt: \"2025-06-15T16:54:17.946329Z\", CustomMetadata: api.ConnectedAccountCustomMetadata{Id: \"internalId1\"}, Errors: nil, UserIdentifier: api.ConnectedAccountUserIdentifier{ApiUrl: \"https://example.com/api\", Email: \"jane_doe@example.com\", Exclusive: true, Phone: \"+1555551004\", Username: \"jane_doe\"}, Warnings: nil}", "request_syntax": "go", "response_syntax": "go" @@ -27227,7 +27227,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.List(\ncontext.Background(),\napi.ConnectedAccountsListRequest{\nUserIdentifierKey: api.String(\"2f393937-1405-4b1a-933f-34c97bfb3c56\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsListRequest{\n\t\t\tUserIdentifierKey: api.String(\"2f393937-1405-4b1a-933f-34c97bfb3c56\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.ConnectedAccount{api.ConnectedAccount{AccountType: \"salto_space\", AccountTypeDisplayName: \"Salto Space\", DisplayName: \"j**n@example.com\", AutomaticallyManageNewDevices: true, ConnectedAccountId: \"a289aa54-5488-4707-9a4b-eeea4edf311d\", CreatedAt: \"2025-06-15T16:54:17.946329Z\", CustomMetadata: api.ConnectedAccountCustomMetadata{Id: \"internalId1\"}, Errors: nil, UserIdentifier: api.ConnectedAccountUserIdentifier{ApiUrl: \"https://example.com/api\", Email: \"jane_doe@example.com\", Exclusive: true, Phone: \"+1555551004\", Username: \"jane_doe\"}, Warnings: nil}}", "request_syntax": "go", "response_syntax": "go" @@ -27344,7 +27344,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.List(\ncontext.Background(),\napi.ConnectedAccountsListRequest{\nCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsListRequest{\n\t\t\tCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.ConnectedAccount{api.ConnectedAccount{AccountType: \"salto_space\", AccountTypeDisplayName: \"Salto Space\", AutomaticallyManageNewDevices: true, ConnectedAccountId: \"a289aa54-5488-4707-9a4b-eeea4edf311d\", CreatedAt: \"2025-06-15T16:54:17.946329Z\", CustomMetadata: api.ConnectedAccountCustomMetadata{Id: \"internalId1\"}, Errors: nil, UserIdentifier: api.ConnectedAccountUserIdentifier{ApiUrl: \"https://example.com/api\", Email: \"jane_doe@example.com\", Exclusive: true, Phone: \"+1555551004\", Username: \"jane_doe\"}, Warnings: nil}}", "request_syntax": "go", "response_syntax": "go" @@ -27461,7 +27461,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.List(\ncontext.Background(),\napi.ConnectedAccountsListRequest{\nCustomMetadataHas: api.ConnectedAccountsListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.List(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsListRequest{\n\t\t\tCustomMetadataHas: api.ConnectedAccountsListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.ConnectedAccount{api.ConnectedAccount{AccountType: \"salto_space\", AccountTypeDisplayName: \"Salto Space\", AutomaticallyManageNewDevices: true, ConnectedAccountId: \"a289aa54-5488-4707-9a4b-eeea4edf311d\", CreatedAt: \"2025-06-15T16:54:17.946329Z\", CustomMetadata: api.ConnectedAccountCustomMetadata{Id: \"internalId1\"}, Errors: nil, UserIdentifier: api.ConnectedAccountUserIdentifier{ApiUrl: \"https://example.com/api\", Email: \"jane_doe@example.com\", Exclusive: true, Phone: \"+1555551004\", Username: \"jane_doe\"}, Warnings: nil}}", "request_syntax": "go", "response_syntax": "go" @@ -27596,7 +27596,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.Sync(\ncontext.Background(),\napi.ConnectedAccountsSyncRequest{\nConnectedAccountId: api.String(\"f886f890-4ca5-4ce5-b248-509cbfb6c279\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.Sync(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsSyncRequest{\n\t\t\tConnectedAccountId: api.String(\"f886f890-4ca5-4ce5-b248-509cbfb6c279\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -27865,7 +27865,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.ConnectedAccounts.Update(\ncontext.Background(),\napi.ConnectedAccountsUpdateRequest{\nConnectedAccountId: api.String(\"a289aa54-5488-4707-9a4b-eeea4edf311d\"),\nAutomaticallyManageNewDevices: api.Bool(true),\nCustomMetadata: api.ConnectedAccountsUpdateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.ConnectedAccounts.Update(\n\t\tcontext.Background(),\n\t\tapi.ConnectedAccountsUpdateRequest{\n\t\t\tConnectedAccountId: api.String(\"a289aa54-5488-4707-9a4b-eeea4edf311d\"),\n\t\t\tAutomaticallyManageNewDevices: api.Bool(true),\n\t\t\tCustomMetadata: api.ConnectedAccountsUpdateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -33354,7 +33354,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.Delete(\ncontext.Background(),\napi.DevicesDeleteRequest{\nDeviceId: api.String(\"8c3c4fdf-36e9-40c4-a865-4d9a76688c94\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.Delete(\n\t\tcontext.Background(),\n\t\tapi.DevicesDeleteRequest{\n\t\t\tDeviceId: api.String(\"8c3c4fdf-36e9-40c4-a865-4d9a76688c94\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -33709,7 +33709,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.Get(\ncontext.Background(),\napi.DevicesGetRequest{\nDeviceId: api.String(\"a75bff05-29a3-4215-a09f-2156c52a4ac7\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.Get(\n\t\tcontext.Background(),\n\t\tapi.DevicesGetRequest{\n\t\t\tDeviceId: api.String(\"a75bff05-29a3-4215-a09f-2156c52a4ac7\"),\n\t\t},\n\t)\n}", "response": "api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a75bff05-29a3-4215-a09f-2156c52a4ac7\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"My Device\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"My Device\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a75bff05-29a3-4215-a09f-2156c52a4ac7\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a75bff05-29a3-4215-a09f-2156c52a4ac7\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}", "request_syntax": "go", "response_syntax": "go" @@ -33996,7 +33996,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.Get(\ncontext.Background(),\napi.DevicesGetRequest{\nName: api.String(\"My Device\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.Get(\n\t\tcontext.Background(),\n\t\tapi.DevicesGetRequest{\n\t\t\tName: api.String(\"My Device\"),\n\t\t},\n\t)\n}", "response": "api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a75bff05-29a3-4215-a09f-2156c52a4ac7\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"My Device\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"My Device\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}", "request_syntax": "go", "response_syntax": "go" @@ -36209,7 +36209,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nConnectedAccountId: api.String(\"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tConnectedAccountId: api.String(\"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -36504,7 +36504,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nConnectWebviewId: api.String(\"0a310a44-6c0a-485d-99b7-9529058a6383\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tConnectWebviewId: api.String(\"0a310a44-6c0a-485d-99b7-9529058a6383\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -36799,7 +36799,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nUserIdentifierKey: api.String(\"62c370ea-2c94-4856-8ee2-370429d84023\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tUserIdentifierKey: api.String(\"62c370ea-2c94-4856-8ee2-370429d84023\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -37094,7 +37094,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nSpaceId: api.String(\"96560123-9fd4-48ce-a300-b40d5d18a122\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tSpaceId: api.String(\"96560123-9fd4-48ce-a300-b40d5d18a122\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -37391,7 +37391,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nCustomMetadataHas: api.DevicesListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tCustomMetadataHas: api.DevicesListRequestCustomMetadataHas{Id: api.String(\"internalId1\")},\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -37687,7 +37687,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.List(\ncontext.Background(),\napi.DevicesListRequest{\nManufacturer: api.String(\"ecobee\"),\nCreatedBefore: api.String(\"2025-05-20T00:00:00.000Z\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.List(\n\t\tcontext.Background(),\n\t\tapi.DevicesListRequest{\n\t\t\tManufacturer: api.String(\"ecobee\"),\n\t\t\tCreatedBefore: api.String(\"2025-05-20T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2025-05-10T22:12:15.656Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -37922,7 +37922,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Devices.ListDeviceProviders(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Devices.ListDeviceProviders(context.Background())\n}", "response": "[]api.DeviceProvider{api.DeviceProvider{CanProgramOnlineAccessCodes: true, CanRemotelyUnlock: true, DeviceProviderName: \"akiles\", DisplayName: \"Akiles\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/logos/akiles.png&q=75&w=128\", ProviderCategories: []string{\"stable\", \"consumer_smartlocks\"}}}", "request_syntax": "go", "response_syntax": "go" @@ -38023,7 +38023,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.ListDeviceProviders(\ncontext.Background(),\napi.DevicesListDeviceProvidersRequest{\nProviderCategory: api.String(\"stable\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.ListDeviceProviders(\n\t\tcontext.Background(),\n\t\tapi.DevicesListDeviceProvidersRequest{\n\t\t\tProviderCategory: api.String(\"stable\"),\n\t\t},\n\t)\n}", "response": "[]api.DeviceProvider{api.DeviceProvider{CanProgramOnlineAccessCodes: true, CanRemotelyUnlock: true, DeviceProviderName: \"akiles\", DisplayName: \"Akiles\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/logos/akiles.png&q=75&w=128\", ProviderCategories: []string{\"stable\", \"consumer_smartlocks\"}}}", "request_syntax": "go", "response_syntax": "go" @@ -47146,7 +47146,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Devices.Update(\ncontext.Background(),\napi.DevicesUpdateRequest{\nDeviceId: api.String(\"ccfab465-4838-4ff3-af62-97c78e8bf44b\"),\nName: api.String(\"My Updated Device\"),\nIsManaged: api.Bool(true),\nCustomMetadata: api.DevicesUpdateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Devices.Update(\n\t\tcontext.Background(),\n\t\tapi.DevicesUpdateRequest{\n\t\t\tDeviceId: api.String(\"ccfab465-4838-4ff3-af62-97c78e8bf44b\"),\n\t\t\tName: api.String(\"My Updated Device\"),\n\t\t\tIsManaged: api.Bool(true),\n\t\t\tCustomMetadata: api.DevicesUpdateRequestCustomMetadata{Id: api.String(\"internalId1\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -47293,7 +47293,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Devices.Simulate.Connect(\ncontext.Background(),\nsimulate.SimulateConnectRequest{\nDeviceId: api.String(\"5d703d4f-523f-42af-9439-618415ca651f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Devices.Simulate.Connect(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateConnectRequest{\n\t\t\tDeviceId: api.String(\"5d703d4f-523f-42af-9439-618415ca651f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -47429,7 +47429,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Devices.Simulate.ConnectToHub(\ncontext.Background(),\nsimulate.SimulateConnectToHubRequest{\nDeviceId: api.String(\"5d703d4f-523f-42af-9439-618415ca651f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Devices.Simulate.ConnectToHub(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateConnectToHubRequest{\n\t\t\tDeviceId: api.String(\"5d703d4f-523f-42af-9439-618415ca651f\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -47565,7 +47565,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Devices.Simulate.Disconnect(\ncontext.Background(),\nsimulate.SimulateDisconnectRequest{\nDeviceId: api.String(\"a60686b8-f401-452d-9f67-53d139cf6160\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Devices.Simulate.Disconnect(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateDisconnectRequest{\n\t\t\tDeviceId: api.String(\"a60686b8-f401-452d-9f67-53d139cf6160\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -47701,7 +47701,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Devices.Simulate.DisconnectFromHub(\ncontext.Background(),\nsimulate.SimulateDisconnectFromHubRequest{\nDeviceId: api.String(\"a60686b8-f401-452d-9f67-53d139cf6160\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Devices.Simulate.DisconnectFromHub(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateDisconnectFromHubRequest{\n\t\t\tDeviceId: api.String(\"a60686b8-f401-452d-9f67-53d139cf6160\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -47899,7 +47899,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Devices.Simulate.Remove(\ncontext.Background(),\nsimulate.SimulateRemoveRequest{\nDeviceId: api.String(\"46757795-11f7-446a-a6cb-779e9f039d7c\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Devices.Simulate.Remove(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateRemoveRequest{\n\t\t\tDeviceId: api.String(\"46757795-11f7-446a-a6cb-779e9f039d7c\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -48120,7 +48120,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.Get(\ncontext.Background(),\nunmanaged.UnmanagedGetRequest{\nDeviceId: api.String(\"9f871e41-0ce4-4825-8d99-9653df4cd525\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedGetRequest{\n\t\t\tDeviceId: api.String(\"9f871e41-0ce4-4825-8d99-9653df4cd525\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2025-06-16T16:54:17.946342Z\", DeviceId: \"9f871e41-0ce4-4825-8d99-9653df4cd525\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"My Unmanaged Device\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}", "request_syntax": "go", "response_syntax": "go" @@ -48262,7 +48262,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.Get(\ncontext.Background(),\nunmanaged.UnmanagedGetRequest{\nName: api.String(\"My Unmanaged Device\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.Get(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedGetRequest{\n\t\t\tName: api.String(\"My Unmanaged Device\"),\n\t\t},\n\t)\n}", "response": "api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2025-06-16T16:54:17.946342Z\", DeviceId: \"9f871e41-0ce4-4825-8d99-9653df4cd525\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"My Unmanaged Device\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}", "request_syntax": "go", "response_syntax": "go" @@ -50326,7 +50326,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedDevice{api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2025-06-16T16:54:17.946342Z\", DeviceId: \"f4f40e75-86fc-4896-b958-e1c7e092b2cf\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"Front Door\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}}", "request_syntax": "go", "response_syntax": "go" @@ -50470,7 +50470,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nConnectedAccountId: api.String(\"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tConnectedAccountId: api.String(\"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedDevice{api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2025-06-16T16:54:17.946342Z\", DeviceId: \"f4f40e75-86fc-4896-b958-e1c7e092b2cf\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"Front Door\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}}", "request_syntax": "go", "response_syntax": "go" @@ -50614,7 +50614,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nManufacturer: api.String(\"schlage\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tManufacturer: api.String(\"schlage\"),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedDevice{api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2025-06-16T16:54:17.946342Z\", DeviceId: \"f4f40e75-86fc-4896-b958-e1c7e092b2cf\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"Front Door\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}}", "request_syntax": "go", "response_syntax": "go" @@ -50764,7 +50764,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.List(\ncontext.Background(),\nunmanaged.UnmanagedListRequest{\nCreatedBefore: api.String(\"2025-01-01T00:00:00.000Z\"),\nLimit: api.Float64(50),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.List(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedListRequest{\n\t\t\tCreatedBefore: api.String(\"2025-01-01T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(50),\n\t\t},\n\t)\n}", "response": "[]api.UnmanagedDevice{api.UnmanagedDevice{CanProgramOfflineAccessCodes: false, CanProgramOnlineAccessCodes: true, CanRemotelyLock: true, CanRemotelyUnlock: true, CanSimulateConnection: false, CanSimulateDisconnection: true, CanSimulateRemoval: true, CapabilitiesSupported: []string{\"access_code\", \"lock\"}, ConnectedAccountId: \"c1a3967f-24a1-4220-a9c7-7fa97c1d5603\", CreatedAt: \"2024-06-16T16:54:17.946342Z\", DeviceId: \"f4f40e75-86fc-4896-b958-e1c7e092b2cf\", DeviceType: \"schlage_lock\", Errors: nil, IsManaged: false, Location: api.UnmanagedDeviceLocation{LocationName: \"Front Door\", Timezone: \"America/New_York\"}, Properties: api.UnmanagedDeviceProperties{AccessoryKeypad: api.UnmanagedDevicePropertiesAccessoryKeypad{Battery: api.UnmanagedDevicePropertiesAccessoryKeypadBattery{Level: 1}, IsConnected: true}, Battery: api.UnmanagedDevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, ImageAltText: \"Schlage Sense Smart Deadbolt with Camelot Trim, Front\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/schlage_sense-smart-deadbolt-with-camelot-trim_front.png&q=75&w=128\", Manufacturer: \"schlage\", Model: api.UnmanagedDevicePropertiesModel{AccessoryKeypadSupported: true, CanConnectAccessoryKeypad: true, DisplayName: \"Front Door\", HasBuiltInKeypad: false, ManufacturerDisplayName: \"Schlage\", OfflineAccessCodesSupported: false, OnlineAccessCodesSupported: true}, Name: \"Front Door\", OfflineAccessCodesEnabled: false, Online: true, OnlineAccessCodesEnabled: true}, Warnings: nil, WorkspaceId: \"3cd6ba1c-8a60-4c24-b487-07bf6c0b755b\"}}", "request_syntax": "go", "response_syntax": "go" @@ -51129,7 +51129,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\n func main() {\n client.Devices.Unmanaged.Update(\ncontext.Background(),\nunmanaged.UnmanagedUpdateRequest{\nDeviceId: api.String(\"66c3adbf-a0e5-403a-8981-ec5286b5da76\"),\nIsManaged: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport unmanaged \"github.com/seamapi/go/unmanaged\"\n\nfunc main() {\n\tclient.Devices.Unmanaged.Update(\n\t\tcontext.Background(),\n\t\tunmanaged.UnmanagedUpdateRequest{\n\t\t\tDeviceId: api.String(\"66c3adbf-a0e5-403a-8981-ec5286b5da76\"),\n\t\t\tIsManaged: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -51320,7 +51320,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.Get(\ncontext.Background(),\napi.EventsGetRequest{\nEventId: api.String(\"ed3adbb8-bbe1-4033-a35a-710d44322bd8\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.Get(\n\t\tcontext.Background(),\n\t\tapi.EventsGetRequest{\n\t\t\tEventId: api.String(\"ed3adbb8-bbe1-4033-a35a-710d44322bd8\"),\n\t\t},\n\t)\n}", "response": "api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"3febfdb2-de92-43c1-aba4-640ce8a55a22\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"ed3adbb8-bbe1-4033-a35a-710d44322bd8\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}", "request_syntax": "go", "response_syntax": "go" @@ -51418,7 +51418,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.Get(\ncontext.Background(),\napi.EventsGetRequest{\nEventType: api.String(\"device.connected\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.Get(\n\t\tcontext.Background(),\n\t\tapi.EventsGetRequest{\n\t\t\tEventType: api.String(\"device.connected\"),\n\t\t},\n\t)\n}", "response": "api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"3febfdb2-de92-43c1-aba4-640ce8a55a22\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"ed3adbb8-bbe1-4033-a35a-710d44322bd8\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}", "request_syntax": "go", "response_syntax": "go" @@ -51516,7 +51516,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.Get(\ncontext.Background(),\napi.EventsGetRequest{\nDeviceId: api.String(\"3febfdb2-de92-43c1-aba4-640ce8a55a22\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.Get(\n\t\tcontext.Background(),\n\t\tapi.EventsGetRequest{\n\t\t\tDeviceId: api.String(\"3febfdb2-de92-43c1-aba4-640ce8a55a22\"),\n\t\t},\n\t)\n}", "response": "api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"3febfdb2-de92-43c1-aba4-640ce8a55a22\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"ed3adbb8-bbe1-4033-a35a-710d44322bd8\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}", "request_syntax": "go", "response_syntax": "go" @@ -54130,7 +54130,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nDeviceId: api.String(\"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tDeviceId: api.String(\"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54242,7 +54242,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\nBetween: [2]string{api.String(\"2025-05-15T00:00:00.000Z\"), api.String(\"2025-06-20T23:59:59.999Z\")},\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tCustomerIds: [1]string{api.String(\"e387e15f-be27-47ad-881f-4a6fc5460c57\")},\n\t\t\tBetween: [2]string{api.String(\"2025-05-15T00:00:00.000Z\"), api.String(\"2025-06-20T23:59:59.999Z\")},\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54349,7 +54349,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nAcsSystemId: api.String(\"5d92d231-cea4-4ceb-b9f6-1ff9cb9c5099\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tAcsSystemId: api.String(\"5d92d231-cea4-4ceb-b9f6-1ff9cb9c5099\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", AcsSystemId: \"5d92d231-cea4-4ceb-b9f6-1ff9cb9c5099\", EventDescription: \"An access system was connected.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"acs_system.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54457,7 +54457,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nAccessCodeId: api.String(\"37ba4a46-c9a7-47a2-b761-f63d02acbea4\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tAccessCodeId: api.String(\"37ba4a46-c9a7-47a2-b761-f63d02acbea4\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{AccessCodeId: \"37ba4a46-c9a7-47a2-b761-f63d02acbea4\", ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\", EventDescription: \"An access code was created.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"access_code.created\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54564,7 +54564,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nEventType: api.String(\"device.connected\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tEventType: api.String(\"device.connected\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\", EventDescription: \"The status of a device changed from offline to online. That is, the device.properties.online property changed from false to true. Note that some devices operate entirely in offline mode, so Seam never emits a device.connected event for these devices.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"device.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54671,7 +54671,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nConnectedAccountId: api.String(\"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tConnectedAccountId: api.String(\"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", DeviceId: \"b2ebca6c-d6d1-47dd-8dae-e9fa06f060b2\", EventDescription: \"A connected account was connected for the first time or was reconnected after being disconnected.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"connected_account.connected\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -54778,7 +54778,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Events.List(\ncontext.Background(),\napi.EventsListRequest{\nConnectWebviewId: api.String(\"775bc894-c51a-47e8-b7ac-f92292c62d63\"),\nSince: api.String(\"2025-05-15T00:00:00.000Z\"),\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Events.List(\n\t\tcontext.Background(),\n\t\tapi.EventsListRequest{\n\t\t\tConnectWebviewId: api.String(\"775bc894-c51a-47e8-b7ac-f92292c62d63\"),\n\t\t\tSince: api.String(\"2025-05-15T00:00:00.000Z\"),\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Event{api.Event{ConnectWebviewId: \"775bc894-c51a-47e8-b7ac-f92292c62d63\", ConnectedAccountId: \"2e3f4a5b-6c7d-8e9f-0a1b-2c3d4e5f6a7b\", CreatedAt: \"2025-06-15T16:54:18.000000Z\", EventDescription: \"A Connect Webview login succeeded.\", EventId: \"6d7e8f9a-1b2c-3d4e-5f6a-7b8c9d0e1f2a\", EventType: \"connect_webview.login_succeeded\", OccurredAt: \"2025-06-15T16:54:17.946329Z\", WorkspaceId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -57146,7 +57146,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Locks.List(\ncontext.Background(),\napi.LocksListRequest{\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Locks.List(\n\t\tcontext.Background(),\n\t\tapi.LocksListRequest{\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", true}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", false}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -57309,7 +57309,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Locks.LockDoor(\ncontext.Background(),\napi.LocksLockDoorRequest{\nDeviceId: api.String(\"9a31853e-4db0-4d78-b21d-f50c8dbdb9dc\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Locks.LockDoor(\n\t\tcontext.Background(),\n\t\tapi.LocksLockDoorRequest{\n\t\t\tDeviceId: api.String(\"9a31853e-4db0-4d78-b21d-f50c8dbdb9dc\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"3f2b1c8d-1b5e-4f8c-9c7d-9a8b7c6d5e4f\", ActionType: \"LOCK_DOOR\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -57474,7 +57474,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Locks.UnlockDoor(\ncontext.Background(),\napi.LocksUnlockDoorRequest{\nDeviceId: api.String(\"be047431-bf00-4da6-9fc7-0a7796a9b57f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Locks.UnlockDoor(\n\t\tcontext.Background(),\n\t\tapi.LocksUnlockDoorRequest{\n\t\t\tDeviceId: api.String(\"be047431-bf00-4da6-9fc7-0a7796a9b57f\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"5f4e3d2c-1b0a-9f8e-7d6c-5b4a3c2d1e0f\", ActionType: \"UNLOCK_DOOR\", Error: nil, Result: api.ActionAttemptResult{WasConfirmedByDevice: false}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -57647,7 +57647,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Locks.Simulate.KeypadCodeEntry(\ncontext.Background(),\nsimulate.SimulateKeypadCodeEntryRequest{\nDeviceId: api.String(\"97a7a706-05a9-405c-91e5-b03e5b9c2003\"),\nCode: api.String(\"1234\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Locks.Simulate.KeypadCodeEntry(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateKeypadCodeEntryRequest{\n\t\t\tDeviceId: api.String(\"97a7a706-05a9-405c-91e5-b03e5b9c2003\"),\n\t\t\tCode: api.String(\"1234\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\", ActionType: \"SIMULATE_KEYPAD_CODE_ENTRY\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -57794,7 +57794,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Locks.Simulate.ManualLockViaKeypad(\ncontext.Background(),\nsimulate.SimulateManualLockViaKeypadRequest{\nDeviceId: api.String(\"d0eed522-8c2f-4905-88fd-4fe8b067bedc\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Locks.Simulate.ManualLockViaKeypad(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateManualLockViaKeypadRequest{\n\t\t\tDeviceId: api.String(\"d0eed522-8c2f-4905-88fd-4fe8b067bedc\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"f0e1d2c3-b4a5-6d7e-8f90-1a2b3c4d5e6f\", ActionType: \"SIMULATE_MANUAL_LOCK_VIA_KEYPAD\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -58841,7 +58841,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.NoiseSensors.List(\ncontext.Background(),\napi.NoiseSensorsListRequest{\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.NoiseSensors.List(\n\t\tcontext.Background(),\n\t\tapi.NoiseSensorsListRequest{\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CapabilitiesSupported: []string{\"noise_detection\"}, ConnectedAccountId: \"9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\", CreatedAt: \"2025-05-16T16:54:17.946049Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"f1e2d3c4-b5a6-4d7c-8e9f-0a1b2c3d4e5f\", DeviceType: \"minut_sensor\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"Jane's Test Home\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, Battery: api.DevicePropertiesBattery{Level: 1, Status: \"full\"}, BatteryLevel: 1, CurrentlyTriggeringNoiseThresholdIds: nil, ImageAltText: \"Minut Sensor\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/minut_gen-3_front.png&q=75&w=128\", Manufacturer: \"minut\", MinutMetadata: api.DevicePropertiesMinutMetadata{DeviceId: \"770cd3153deca3dee0fe0614\", DeviceLocation: api.DevicePropertiesMinutMetadataDeviceLocation{Latitude: 0, Longitude: 0}, DeviceName: \"Living Room\", HomeAddress: api.DevicePropertiesMinutMetadataHomeAddress{City: \"San Francisco\", Country: \"US\", Notes: \"string\", PostCode: \"44210\", Region: \"San Francisco County\", StreetName1: \"2258 24th Street\", StreetName2: \"\"}, HomeId: \"2978b6d5dba395ec08300e46\", HomeLocation: api.DevicePropertiesMinutMetadataHomeLocation{Latitude: 0, Longitude: 0}, HomeName: \"Jane's Test Home\", LatestSensorValues: api.DevicePropertiesMinutMetadataLatestSensorValues{AccelerometerZ: api.DevicePropertiesMinutMetadataLatestSensorValuesAccelerometerZ{Time: \"2025-06-16T16:54:17.946049Z\", Value: -1.00390625}, Humidity: api.DevicePropertiesMinutMetadataLatestSensorValuesHumidity{Time: \"2025-06-16T16:54:17.946049Z\", Value: 31.110000610351562}, Pressure: api.DevicePropertiesMinutMetadataLatestSensorValuesPressure{Time: \"2025-06-16T16:54:17.946049Z\", Value: 101923}, Sound: api.DevicePropertiesMinutMetadataLatestSensorValuesSound{Time: \"2025-06-16T16:54:17.946049Z\", Value: 47.7117919921875}, Temperature: api.DevicePropertiesMinutMetadataLatestSensorValuesTemperature{Time: \"2025-06-16T16:54:17.946049Z\", Value: 21.270000457763672}}}, Model: api.DevicePropertiesModel{DisplayName: \"Noise Sensor\", ManufacturerDisplayName: \"Minut\"}, Name: \"Living Room\", NoiseLevelDecibels: 47.7117919921875, Online: true}, Warnings: nil, WorkspaceId: \"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\"}}", "request_syntax": "go", "response_syntax": "go" @@ -59091,7 +59091,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\n func main() {\n client.NoiseSensors.NoiseThresholds.Create(\ncontext.Background(),\nnoisethresholds.NoiseThresholdsCreateRequest{\nDeviceId: api.String(\"8282891b-c4da-4239-8f01-56089d44b80d\"),\nName: api.String(\"My Noise Sensor\"),\nStartsDailyAt: api.String(\"2025-06-20T18:29:57.000Z\"),\nEndsDailyAt: api.String(\"2025-06-19T12:38:44.000Z\"),\nNoiseThresholdDecibels: api.Float64(50),\nNoiseThresholdNrs: api.Float64(40),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\nfunc main() {\n\tclient.NoiseSensors.NoiseThresholds.Create(\n\t\tcontext.Background(),\n\t\tnoisethresholds.NoiseThresholdsCreateRequest{\n\t\t\tDeviceId: api.String(\"8282891b-c4da-4239-8f01-56089d44b80d\"),\n\t\t\tName: api.String(\"My Noise Sensor\"),\n\t\t\tStartsDailyAt: api.String(\"2025-06-20T18:29:57.000Z\"),\n\t\t\tEndsDailyAt: api.String(\"2025-06-19T12:38:44.000Z\"),\n\t\t\tNoiseThresholdDecibels: api.Float64(50),\n\t\t\tNoiseThresholdNrs: api.Float64(40),\n\t\t},\n\t)\n}", "response": "api.NoiseThreshold{DeviceId: \"8282891b-c4da-4239-8f01-56089d44b80d\", EndsDailyAt: \"2025-06-19T12:38:44.000Z\", Name: \"My Noise Sensor\", NoiseThresholdDecibels: 50, NoiseThresholdId: \"f8cef69d-625f-464c-aed4-287c06e0d7fe\", NoiseThresholdNrs: 40, StartsDailyAt: \"2025-06-20T18:29:57.000Z\"}", "request_syntax": "go", "response_syntax": "go" @@ -59257,7 +59257,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\n func main() {\n client.NoiseSensors.NoiseThresholds.Delete(\ncontext.Background(),\nnoisethresholds.NoiseThresholdsDeleteRequest{\nNoiseThresholdId: api.String(\"00fbac13-6602-4079-b4ae-c89d5dcbed35\"),\nDeviceId: api.String(\"736fc5bf-192d-4416-b879-66ff0195f2f7\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\nfunc main() {\n\tclient.NoiseSensors.NoiseThresholds.Delete(\n\t\tcontext.Background(),\n\t\tnoisethresholds.NoiseThresholdsDeleteRequest{\n\t\t\tNoiseThresholdId: api.String(\"00fbac13-6602-4079-b4ae-c89d5dcbed35\"),\n\t\t\tDeviceId: api.String(\"736fc5bf-192d-4416-b879-66ff0195f2f7\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -59407,7 +59407,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\n func main() {\n client.NoiseSensors.NoiseThresholds.Get(\ncontext.Background(),\nnoisethresholds.NoiseThresholdsGetRequest{\nNoiseThresholdId: api.String(\"8282891b-c4da-4239-8f01-56089d44b80d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\nfunc main() {\n\tclient.NoiseSensors.NoiseThresholds.Get(\n\t\tcontext.Background(),\n\t\tnoisethresholds.NoiseThresholdsGetRequest{\n\t\t\tNoiseThresholdId: api.String(\"8282891b-c4da-4239-8f01-56089d44b80d\"),\n\t\t},\n\t)\n}", "response": "api.NoiseThreshold{DeviceId: \"736fc5bf-192d-4416-b879-66ff0195f2f7\", EndsDailyAt: \"2025-06-19T12:38:44.000Z\", Name: \"My Noise Sensor\", NoiseThresholdDecibels: 50, NoiseThresholdId: \"8282891b-c4da-4239-8f01-56089d44b80d\", NoiseThresholdNrs: 40, StartsDailyAt: \"2025-06-20T18:29:57.000Z\"}", "request_syntax": "go", "response_syntax": "go" @@ -59574,7 +59574,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\n func main() {\n client.NoiseSensors.NoiseThresholds.List(\ncontext.Background(),\nnoisethresholds.NoiseThresholdsListRequest{\nDeviceId: api.String(\"a60d1a44-5727-4223-8b58-9c2455eb57fc\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\nfunc main() {\n\tclient.NoiseSensors.NoiseThresholds.List(\n\t\tcontext.Background(),\n\t\tnoisethresholds.NoiseThresholdsListRequest{\n\t\t\tDeviceId: api.String(\"a60d1a44-5727-4223-8b58-9c2455eb57fc\"),\n\t\t},\n\t)\n}", "response": "[]api.NoiseThreshold{api.NoiseThreshold{DeviceId: \"a60d1a44-5727-4223-8b58-9c2455eb57fc\", EndsDailyAt: \"2025-06-19T12:38:44.000Z\", Name: \"My Noise Sensor\", NoiseThresholdDecibels: 50, NoiseThresholdId: \"f8cef69d-625f-464c-aed4-287c06e0d7fe\", NoiseThresholdNrs: 40, StartsDailyAt: \"2025-06-20T18:29:57.000Z\"}}", "request_syntax": "go", "response_syntax": "go" @@ -59816,7 +59816,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\n func main() {\n client.NoiseSensors.NoiseThresholds.Update(\ncontext.Background(),\nnoisethresholds.NoiseThresholdsUpdateRequest{\nNoiseThresholdId: api.String(\"2cb09850-4962-4dee-a658-d8a79fcb9aff\"),\nDeviceId: api.String(\"c3885398-6794-44a0-a7a2-1f39ff454dc3\"),\nName: api.String(\"My Updated Noise Sensor\"),\nStartsDailyAt: api.String(\"2025-06-18T15:13:17.000Z\"),\nEndsDailyAt: api.String(\"2025-06-17T21:33:58.000Z\"),\nNoiseThresholdDecibels: api.Float64(50),\nNoiseThresholdNrs: api.Float64(40),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport noisethresholds \"github.com/seamapi/go/noisethresholds\"\n\nfunc main() {\n\tclient.NoiseSensors.NoiseThresholds.Update(\n\t\tcontext.Background(),\n\t\tnoisethresholds.NoiseThresholdsUpdateRequest{\n\t\t\tNoiseThresholdId: api.String(\"2cb09850-4962-4dee-a658-d8a79fcb9aff\"),\n\t\t\tDeviceId: api.String(\"c3885398-6794-44a0-a7a2-1f39ff454dc3\"),\n\t\t\tName: api.String(\"My Updated Noise Sensor\"),\n\t\t\tStartsDailyAt: api.String(\"2025-06-18T15:13:17.000Z\"),\n\t\t\tEndsDailyAt: api.String(\"2025-06-17T21:33:58.000Z\"),\n\t\t\tNoiseThresholdDecibels: api.Float64(50),\n\t\t\tNoiseThresholdNrs: api.Float64(40),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -59962,7 +59962,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.NoiseSensors.Simulate.TriggerNoiseThreshold(\ncontext.Background(),\nsimulate.SimulateTriggerNoiseThresholdRequest{\nDeviceId: api.String(\"c0384c1c-9038-427c-9a72-314d2b168d43\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.NoiseSensors.Simulate.TriggerNoiseThreshold(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateTriggerNoiseThresholdRequest{\n\t\t\tDeviceId: api.String(\"c0384c1c-9038-427c-9a72-314d2b168d43\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -60110,7 +60110,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Phones.Deactivate(\ncontext.Background(),\napi.PhonesDeactivateRequest{\nDeviceId: api.String(\"6481cd6a-579f-4d8c-9adb-b42bf9fb697e\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Phones.Deactivate(\n\t\tcontext.Background(),\n\t\tapi.PhonesDeactivateRequest{\n\t\t\tDeviceId: api.String(\"6481cd6a-579f-4d8c-9adb-b42bf9fb697e\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -60275,7 +60275,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Phones.Get(\ncontext.Background(),\napi.PhonesGetRequest{\nDeviceId: api.String(\"2c39adb7-ba99-4b60-927d-9b796952c8e8\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Phones.Get(\n\t\tcontext.Background(),\n\t\tapi.PhonesGetRequest{\n\t\t\tDeviceId: api.String(\"2c39adb7-ba99-4b60-927d-9b796952c8e8\"),\n\t\t},\n\t)\n}", "response": "api.Phone{CreatedAt: \"2025-06-14T16:54:17.946540Z\", CustomMetadata: api.PhoneCustomMetadata{Id: \"internalId1\"}, DeviceId: \"2c39adb7-ba99-4b60-927d-9b796952c8e8\", DeviceType: \"ios_phone\", DisplayName: \"My Phone\", Errors: nil, Nickname: \"My Phone\", Properties: api.PhoneProperties{AssaAbloyCredentialServiceMetadata: api.PhonePropertiesAssaAbloyCredentialServiceMetadata{Endpoints: []PhonePropertiesAssaAbloyCredentialServiceMetadataEndpoints{api.PhonePropertiesAssaAbloyCredentialServiceMetadataEndpointsEndpoints{EndpointId: \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\", IsActive: true}}, HasActiveEndpoint: true}}, Warnings: nil, WorkspaceId: \"da8639a4-28a2-4884-a4f9-b7691f4cf336\"}", "request_syntax": "go", "response_syntax": "go" @@ -60456,7 +60456,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Phones.List(\ncontext.Background(),\napi.PhonesListRequest{\nOwnerUserIdentityId: api.String(\"6bc848b0-0e7f-4d4c-8ea1-004ccda0b0a4\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Phones.List(\n\t\tcontext.Background(),\n\t\tapi.PhonesListRequest{\n\t\t\tOwnerUserIdentityId: api.String(\"6bc848b0-0e7f-4d4c-8ea1-004ccda0b0a4\"),\n\t\t},\n\t)\n}", "response": "[]api.Phone{api.Phone{CreatedAt: \"2025-06-14T16:54:17.946540Z\", CustomMetadata: api.PhoneCustomMetadata{Id: \"internalId1\"}, DeviceId: \"e452f665-a635-4c65-922b-9feab0e0f84f\", DeviceType: \"ios_phone\", DisplayName: \"My Phone\", Errors: nil, Nickname: \"My Phone\", Properties: api.PhoneProperties{AssaAbloyCredentialServiceMetadata: api.PhonePropertiesAssaAbloyCredentialServiceMetadata{Endpoints: []PhonePropertiesAssaAbloyCredentialServiceMetadataEndpoints{api.PhonePropertiesAssaAbloyCredentialServiceMetadataEndpointsEndpoints{EndpointId: \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\", IsActive: true}}, HasActiveEndpoint: true}}, Warnings: nil, WorkspaceId: \"da8639a4-28a2-4884-a4f9-b7691f4cf336\"}}", "request_syntax": "go", "response_syntax": "go" @@ -60570,7 +60570,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Phones.List(\ncontext.Background(),\napi.PhonesListRequest{\nAcsCredentialId: api.String(\"6617f81a-d601-4e33-9052-f44bf1b4ed2b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Phones.List(\n\t\tcontext.Background(),\n\t\tapi.PhonesListRequest{\n\t\t\tAcsCredentialId: api.String(\"6617f81a-d601-4e33-9052-f44bf1b4ed2b\"),\n\t\t},\n\t)\n}", "response": "[]api.Phone{api.Phone{CreatedAt: \"2025-06-14T16:54:17.946540Z\", CustomMetadata: api.PhoneCustomMetadata{Id: \"internalId1\"}, DeviceId: \"e452f665-a635-4c65-922b-9feab0e0f84f\", DeviceType: \"ios_phone\", DisplayName: \"My Phone\", Errors: nil, Nickname: \"My Phone\", Properties: api.PhoneProperties{AssaAbloyCredentialServiceMetadata: api.PhonePropertiesAssaAbloyCredentialServiceMetadata{Endpoints: []PhonePropertiesAssaAbloyCredentialServiceMetadataEndpoints{api.PhonePropertiesAssaAbloyCredentialServiceMetadataEndpointsEndpoints{EndpointId: \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\", IsActive: true}}, HasActiveEndpoint: true}}, Warnings: nil, WorkspaceId: \"da8639a4-28a2-4884-a4f9-b7691f4cf336\"}}", "request_syntax": "go", "response_syntax": "go" @@ -60980,7 +60980,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Phones.Simulate.CreateSandboxPhone(\ncontext.Background(),\nsimulate.SimulateCreateSandboxPhoneRequest{\nCustomSdkInstallationId: api.String(\"visionline_sdk\"),\nUserIdentityId: api.String(\"799f9914-f2c2-4087-ab34-f1ffb44d6a0b\"),\nPhoneMetadata: simulate.SimulateCreateSandboxPhoneRequestPhoneMetadata{OperatingSystem: api.String(\"android\"), OsVersion: api.Float64(10), DeviceManufacturer: api.String(\"Samsung\"), DeviceModel: api.String(\"Samsung Galaxy S10\")},\nAssaAbloyMetadata: simulate.SimulateCreateSandboxPhoneRequestAssaAbloyMetadata{BleCapability: api.String(\"true,\"), HceCapability: api.String(\"false,\"), NfcCapability: api.String(\"false,\"), ApplicationVersion: api.String(\"1.0.0\"), SeosAppletVersion: api.String(\"1.0.0\"), SeosTsmEndpointId: api.Float64(1)},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Phones.Simulate.CreateSandboxPhone(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateCreateSandboxPhoneRequest{\n\t\t\tCustomSdkInstallationId: api.String(\"visionline_sdk\"),\n\t\t\tUserIdentityId: api.String(\"799f9914-f2c2-4087-ab34-f1ffb44d6a0b\"),\n\t\t\tPhoneMetadata: simulate.SimulateCreateSandboxPhoneRequestPhoneMetadata{OperatingSystem: api.String(\"android\"), OsVersion: api.Float64(10), DeviceManufacturer: api.String(\"Samsung\"), DeviceModel: api.String(\"Samsung Galaxy S10\")},\n\t\t\tAssaAbloyMetadata: simulate.SimulateCreateSandboxPhoneRequestAssaAbloyMetadata{BleCapability: api.String(\"true,\"), HceCapability: api.String(\"false,\"), NfcCapability: api.String(\"false,\"), ApplicationVersion: api.String(\"1.0.0\"), SeosAppletVersion: api.String(\"1.0.0\"), SeosTsmEndpointId: api.Float64(1)},\n\t\t},\n\t)\n}", "response": "api.Phone{CreatedAt: \"2025-06-14T16:54:17.946540Z\", CustomMetadata: api.PhoneCustomMetadata{Id: \"internalId1\"}, DeviceId: \"e452f665-a635-4c65-922b-9feab0e0f84f\", DeviceType: \"android_phone\", DisplayName: \"My Phone\", Errors: nil, Nickname: \"My Phone\", Properties: api.PhoneProperties{AssaAbloyCredentialServiceMetadata: api.PhonePropertiesAssaAbloyCredentialServiceMetadata{Endpoints: []PhonePropertiesAssaAbloyCredentialServiceMetadataEndpoints{api.PhonePropertiesAssaAbloyCredentialServiceMetadataEndpointsEndpoints{EndpointId: \"c7d8e9f0-1a2b-3c4d-5e6f-7a8b9c0d1e2f\", IsActive: true}}, HasActiveEndpoint: true}}, Warnings: nil, WorkspaceId: \"da8639a4-28a2-4884-a4f9-b7691f4cf336\"}", "request_syntax": "go", "response_syntax": "go" @@ -71189,7 +71189,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.AddAcsEntrances(\ncontext.Background(),\napi.SpacesAddAcsEntrancesRequest{\nSpaceId: api.String(\"9f930664-c0d8-441b-8d66-2b1d0d2466f4\"),\nAcsEntranceIds: [1]string{api.String(\"b127a710-db3e-402c-afdf-5474769b1d83\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.AddAcsEntrances(\n\t\tcontext.Background(),\n\t\tapi.SpacesAddAcsEntrancesRequest{\n\t\t\tSpaceId: api.String(\"9f930664-c0d8-441b-8d66-2b1d0d2466f4\"),\n\t\t\tAcsEntranceIds: [1]string{api.String(\"b127a710-db3e-402c-afdf-5474769b1d83\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -71344,7 +71344,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.AddDevices(\ncontext.Background(),\napi.SpacesAddDevicesRequest{\nSpaceId: api.String(\"4d53b5c0-87cd-4de9-832d-025e075e7cd4\"),\nDeviceIds: [1]string{api.String(\"22fb4992-463c-4ccd-b568-50fcea243665\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.AddDevices(\n\t\tcontext.Background(),\n\t\tapi.SpacesAddDevicesRequest{\n\t\t\tSpaceId: api.String(\"4d53b5c0-87cd-4de9-832d-025e075e7cd4\"),\n\t\t\tDeviceIds: [1]string{api.String(\"22fb4992-463c-4ccd-b568-50fcea243665\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -71556,7 +71556,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.Create(\ncontext.Background(),\napi.SpacesCreateRequest{\nName: api.String(\"My Space\"),\nDeviceIds: [1]string{api.String(\"b7254403-db91-4e10-bb7b-31d0615d2963\")},\nAcsEntranceIds: [1]string{api.String(\"46a47667-a90b-45cc-9bb6-f0917464f1f3\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.Create(\n\t\tcontext.Background(),\n\t\tapi.SpacesCreateRequest{\n\t\t\tName: api.String(\"My Space\"),\n\t\t\tDeviceIds: [1]string{api.String(\"b7254403-db91-4e10-bb7b-31d0615d2963\")},\n\t\t\tAcsEntranceIds: [1]string{api.String(\"46a47667-a90b-45cc-9bb6-f0917464f1f3\")},\n\t\t},\n\t)\n}", "response": "api.Space{CreatedAt: \"2025-06-16T16:54:17.946600Z\", DisplayName: \"My Space\", Name: \"My Space\", SpaceId: \"5afeb047-3277-4102-b8c4-99edf05b91d2\", WorkspaceId: \"96bd12f9-6def-4bf4-b517-760417451ae9\"}", "request_syntax": "go", "response_syntax": "go" @@ -71693,7 +71693,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.Delete(\ncontext.Background(),\napi.SpacesDeleteRequest{\nSpaceId: api.String(\"a7cd0163-4e94-41ae-b5b7-da6040a65509\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.Delete(\n\t\tcontext.Background(),\n\t\tapi.SpacesDeleteRequest{\n\t\t\tSpaceId: api.String(\"a7cd0163-4e94-41ae-b5b7-da6040a65509\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -71856,7 +71856,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.Get(\ncontext.Background(),\napi.SpacesGetRequest{\nSpaceId: api.String(\"5f30970d-6ef5-4618-9e91-e701fbca6b63\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.Get(\n\t\tcontext.Background(),\n\t\tapi.SpacesGetRequest{\n\t\t\tSpaceId: api.String(\"5f30970d-6ef5-4618-9e91-e701fbca6b63\"),\n\t\t},\n\t)\n}", "response": "api.Space{CreatedAt: \"2025-06-16T16:54:17.946600Z\", DisplayName: \"My Space\", Name: \"My Space\", SpaceId: \"5f30970d-6ef5-4618-9e91-e701fbca6b63\", WorkspaceId: \"96bd12f9-6def-4bf4-b517-760417451ae9\"}", "request_syntax": "go", "response_syntax": "go" @@ -72324,7 +72324,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Spaces.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Spaces.List(context.Background())\n}", "response": "[]api.Space{api.Space{CreatedAt: \"2025-06-16T16:54:17.946600Z\", DisplayName: \"My Space\", Name: \"My Space\", SpaceId: \"5afeb047-3277-4102-b8c4-99edf05b91d2\", WorkspaceId: \"96bd12f9-6def-4bf4-b517-760417451ae9\"}}", "request_syntax": "go", "response_syntax": "go" @@ -72479,7 +72479,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.RemoveAcsEntrances(\ncontext.Background(),\napi.SpacesRemoveAcsEntrancesRequest{\nSpaceId: api.String(\"674e511a-06c6-4734-b4ce-af467496d5fe\"),\nAcsEntranceIds: [1]string{api.String(\"fd859a36-199b-4c2f-894a-24d52621f6a4\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.RemoveAcsEntrances(\n\t\tcontext.Background(),\n\t\tapi.SpacesRemoveAcsEntrancesRequest{\n\t\t\tSpaceId: api.String(\"674e511a-06c6-4734-b4ce-af467496d5fe\"),\n\t\t\tAcsEntranceIds: [1]string{api.String(\"fd859a36-199b-4c2f-894a-24d52621f6a4\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -72634,7 +72634,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.RemoveDevices(\ncontext.Background(),\napi.SpacesRemoveDevicesRequest{\nSpaceId: api.String(\"6df14344-4114-4d74-9ef4-2e1208378cda\"),\nDeviceIds: [1]string{api.String(\"011460e9-9605-46a5-91f1-6b2a442b70fd\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.RemoveDevices(\n\t\tcontext.Background(),\n\t\tapi.SpacesRemoveDevicesRequest{\n\t\t\tSpaceId: api.String(\"6df14344-4114-4d74-9ef4-2e1208378cda\"),\n\t\t\tDeviceIds: [1]string{api.String(\"011460e9-9605-46a5-91f1-6b2a442b70fd\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -72856,7 +72856,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Spaces.Update(\ncontext.Background(),\napi.SpacesUpdateRequest{\nSpaceId: api.String(\"d3513c20-dc89-4e19-8713-1c3ab01aec81\"),\nName: api.String(\"My Updated Space\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Spaces.Update(\n\t\tcontext.Background(),\n\t\tapi.SpacesUpdateRequest{\n\t\t\tSpaceId: api.String(\"d3513c20-dc89-4e19-8713-1c3ab01aec81\"),\n\t\t\tName: api.String(\"My Updated Space\"),\n\t\t},\n\t)\n}", "response": "api.Space{CreatedAt: \"2025-06-16T16:54:17.946600Z\", DisplayName: \"My Updated Space\", Name: \"My Updated Space\", SpaceId: \"5f30970d-6ef5-4618-9e91-e701fbca6b63\", WorkspaceId: \"96bd12f9-6def-4bf4-b517-760417451ae9\"}", "request_syntax": "go", "response_syntax": "go" @@ -73029,7 +73029,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.ActivateClimatePreset(\ncontext.Background(),\napi.ThermostatsActivateClimatePresetRequest{\nDeviceId: api.String(\"52b88155-5b81-47d2-b04d-28a802bd7395\"),\nClimatePresetKey: api.String(\"Eco\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.ActivateClimatePreset(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsActivateClimatePresetRequest{\n\t\t\tDeviceId: api.String(\"52b88155-5b81-47d2-b04d-28a802bd7395\"),\n\t\t\tClimatePresetKey: api.String(\"Eco\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"f47ac10b-58cc-4372-a567-0e02b2c3d479\", ActionType: \"ACTIVATE_CLIMATE_PRESET\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -73221,7 +73221,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.Cool(\ncontext.Background(),\napi.ThermostatsCoolRequest{\nDeviceId: api.String(\"408641ab-d0f5-475c-b8a5-9b9096405f9a\"),\nCoolingSetPointFahrenheit: api.Float64(75),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.Cool(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsCoolRequest{\n\t\t\tDeviceId: api.String(\"408641ab-d0f5-475c-b8a5-9b9096405f9a\"),\n\t\t\tCoolingSetPointFahrenheit: api.Float64(75),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"b0e1d2c3-4f5e-6a7b-8c9d-0e1f2a3b4c5d\", ActionType: \"SET_HVAC_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -73732,7 +73732,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.CreateClimatePreset(\ncontext.Background(),\napi.ThermostatsCreateClimatePresetRequest{\nDeviceId: api.String(\"ba9b816d-c255-46b9-a16d-971e6f535dd3\"),\nManualOverrideAllowed: api.Bool(true),\nClimatePresetKey: api.String(\"Occupied\"),\nName: api.String(\"Occupied\"),\nFanModeSetting: api.String(\"auto\"),\nHvacModeSetting: api.String(\"heat_cool\"),\nCoolingSetPointCelsius: api.Float64(25),\nHeatingSetPointCelsius: api.Float64(20),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.CreateClimatePreset(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsCreateClimatePresetRequest{\n\t\t\tDeviceId: api.String(\"ba9b816d-c255-46b9-a16d-971e6f535dd3\"),\n\t\t\tManualOverrideAllowed: api.Bool(true),\n\t\t\tClimatePresetKey: api.String(\"Occupied\"),\n\t\t\tName: api.String(\"Occupied\"),\n\t\t\tFanModeSetting: api.String(\"auto\"),\n\t\t\tHvacModeSetting: api.String(\"heat_cool\"),\n\t\t\tCoolingSetPointCelsius: api.Float64(25),\n\t\t\tHeatingSetPointCelsius: api.Float64(20),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -73884,7 +73884,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.DeleteClimatePreset(\ncontext.Background(),\napi.ThermostatsDeleteClimatePresetRequest{\nDeviceId: api.String(\"88cb2f5b-b01b-43f2-b84f-81e2fa1d09c5\"),\nClimatePresetKey: api.String(\"Eco\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.DeleteClimatePreset(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsDeleteClimatePresetRequest{\n\t\t\tDeviceId: api.String(\"88cb2f5b-b01b-43f2-b84f-81e2fa1d09c5\"),\n\t\t\tClimatePresetKey: api.String(\"Eco\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -74239,7 +74239,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.Get(\ncontext.Background(),\napi.ThermostatsGetRequest{\nDeviceId: api.String(\"707bc177-6804-4534-a119-08bea346d3c6\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.Get(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsGetRequest{\n\t\t\tDeviceId: api.String(\"707bc177-6804-4534-a119-08bea346d3c6\"),\n\t\t},\n\t)\n}", "response": "api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"707bc177-6804-4534-a119-08bea346d3c6\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"My Thermostat\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"My Thermostat\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"707bc177-6804-4534-a119-08bea346d3c6\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"707bc177-6804-4534-a119-08bea346d3c6\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}", "request_syntax": "go", "response_syntax": "go" @@ -74526,7 +74526,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.Get(\ncontext.Background(),\napi.ThermostatsGetRequest{\nName: api.String(\"My Thermostat\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.Get(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsGetRequest{\n\t\t\tName: api.String(\"My Thermostat\"),\n\t\t},\n\t)\n}", "response": "api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"707bc177-6804-4534-a119-08bea346d3c6\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"My Thermostat\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"My Thermostat\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}", "request_syntax": "go", "response_syntax": "go" @@ -74718,7 +74718,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.Heat(\ncontext.Background(),\napi.ThermostatsHeatRequest{\nDeviceId: api.String(\"e4b111b8-e2bd-4f49-a9c8-96ed5390e1d5\"),\nHeatingSetPointFahrenheit: api.Float64(65),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.Heat(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsHeatRequest{\n\t\t\tDeviceId: api.String(\"e4b111b8-e2bd-4f49-a9c8-96ed5390e1d5\"),\n\t\t\tHeatingSetPointFahrenheit: api.Float64(65),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"b0e1d2c3-4f5e-6a7b-8c9d-0e1f2a3b4c5d\", ActionType: \"SET_HVAC_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -74939,7 +74939,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.HeatCool(\ncontext.Background(),\napi.ThermostatsHeatCoolRequest{\nDeviceId: api.String(\"32f974cc-e817-4bd7-b7f1-be92c80884a1\"),\nHeatingSetPointCelsius: api.Float64(20),\nCoolingSetPointCelsius: api.Float64(25),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.HeatCool(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsHeatCoolRequest{\n\t\t\tDeviceId: api.String(\"32f974cc-e817-4bd7-b7f1-be92c80884a1\"),\n\t\t\tHeatingSetPointCelsius: api.Float64(20),\n\t\t\tCoolingSetPointCelsius: api.Float64(25),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"b0e1d2c3-4f5e-6a7b-8c9d-0e1f2a3b4c5d\", ActionType: \"SET_HVAC_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -76317,7 +76317,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.List(\ncontext.Background(),\napi.ThermostatsListRequest{\nLimit: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.List(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsListRequest{\n\t\t\tLimit: api.Float64(10),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -76480,7 +76480,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.Off(\ncontext.Background(),\napi.ThermostatsOffRequest{\nDeviceId: api.String(\"5d5c3b30-5fed-47a3-9df1-ed32f32589e5\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.Off(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsOffRequest{\n\t\t\tDeviceId: api.String(\"5d5c3b30-5fed-47a3-9df1-ed32f32589e5\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"b0e1d2c3-4f5e-6a7b-8c9d-0e1f2a3b4c5d\", ActionType: \"SET_HVAC_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -76630,7 +76630,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.SetFallbackClimatePreset(\ncontext.Background(),\napi.ThermostatsSetFallbackClimatePresetRequest{\nDeviceId: api.String(\"9a21ddcb-8eeb-4351-8770-1835c3db8b2e\"),\nClimatePresetKey: api.String(\"Eco\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.SetFallbackClimatePreset(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsSetFallbackClimatePresetRequest{\n\t\t\tDeviceId: api.String(\"9a21ddcb-8eeb-4351-8770-1835c3db8b2e\"),\n\t\t\tClimatePresetKey: api.String(\"Eco\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -76886,7 +76886,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.SetFanMode(\ncontext.Background(),\napi.ThermostatsSetFanModeRequest{\nDeviceId: api.String(\"363e657e-3b07-4670-a290-7fb1f32b8e33\"),\nFanModeSetting: api.String(\"auto\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.SetFanMode(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsSetFanModeRequest{\n\t\t\tDeviceId: api.String(\"363e657e-3b07-4670-a290-7fb1f32b8e33\"),\n\t\t\tFanModeSetting: api.String(\"auto\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"2a3b4c5d-6e7f-8a9b-acbd-1e2f3a4b5c6d\", ActionType: \"SET_FAN_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -77159,7 +77159,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.SetHvacMode(\ncontext.Background(),\napi.ThermostatsSetHvacModeRequest{\nDeviceId: api.String(\"5d5c3b30-5fed-47a3-9df1-ed32f32589e5\"),\nHvacModeSetting: api.String(\"heat_cool\"),\nHeatingSetPointCelsius: api.Float64(20),\nCoolingSetPointCelsius: api.Float64(25),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.SetHvacMode(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsSetHvacModeRequest{\n\t\t\tDeviceId: api.String(\"5d5c3b30-5fed-47a3-9df1-ed32f32589e5\"),\n\t\t\tHvacModeSetting: api.String(\"heat_cool\"),\n\t\t\tHeatingSetPointCelsius: api.Float64(20),\n\t\t\tCoolingSetPointCelsius: api.Float64(25),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"b0e1d2c3-4f5e-6a7b-8c9d-0e1f2a3b4c5d\", ActionType: \"SET_HVAC_MODE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -77357,7 +77357,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.SetTemperatureThreshold(\ncontext.Background(),\napi.ThermostatsSetTemperatureThresholdRequest{\nDeviceId: api.String(\"a9b52627-e6e2-4beb-9168-964749f7bbae\"),\nLowerLimitFahrenheit: api.Float64(60),\nUpperLimitFahrenheit: api.Float64(80),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.SetTemperatureThreshold(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsSetTemperatureThresholdRequest{\n\t\t\tDeviceId: api.String(\"a9b52627-e6e2-4beb-9168-964749f7bbae\"),\n\t\t\tLowerLimitFahrenheit: api.Float64(60),\n\t\t\tUpperLimitFahrenheit: api.Float64(80),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -77868,7 +77868,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.UpdateClimatePreset(\ncontext.Background(),\napi.ThermostatsUpdateClimatePresetRequest{\nDeviceId: api.String(\"a2495670-80a5-4c98-b8c0-8b0c9d49c3b8\"),\nClimatePresetKey: api.String(\"Home\"),\nName: api.String(\"Home\"),\nFanModeSetting: api.String(\"auto\"),\nHvacModeSetting: api.String(\"heat_cool\"),\nCoolingSetPointFahrenheit: api.Float64(75),\nHeatingSetPointFahrenheit: api.Float64(65),\nManualOverrideAllowed: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.UpdateClimatePreset(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsUpdateClimatePresetRequest{\n\t\t\tDeviceId: api.String(\"a2495670-80a5-4c98-b8c0-8b0c9d49c3b8\"),\n\t\t\tClimatePresetKey: api.String(\"Home\"),\n\t\t\tName: api.String(\"Home\"),\n\t\t\tFanModeSetting: api.String(\"auto\"),\n\t\t\tHvacModeSetting: api.String(\"heat_cool\"),\n\t\t\tCoolingSetPointFahrenheit: api.Float64(75),\n\t\t\tHeatingSetPointFahrenheit: api.Float64(65),\n\t\t\tManualOverrideAllowed: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -78121,7 +78121,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Thermostats.UpdateWeeklyProgram(\ncontext.Background(),\napi.ThermostatsUpdateWeeklyProgramRequest{\nDeviceId: api.String(\"076546e8-966c-47dd-831b-8d98413bf070\"),\nMondayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\nTuesdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\nWednesdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\nThursdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\nFridayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\nSaturdayProgramId: api.String(\"3bf5a788-caf8-40c5-a7d5-78b72e9b3a28\"),\nSundayProgramId: api.String(\"3bf5a788-caf8-40c5-a7d5-78b72e9b3a28\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Thermostats.UpdateWeeklyProgram(\n\t\tcontext.Background(),\n\t\tapi.ThermostatsUpdateWeeklyProgramRequest{\n\t\t\tDeviceId: api.String(\"076546e8-966c-47dd-831b-8d98413bf070\"),\n\t\t\tMondayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\n\t\t\tTuesdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\n\t\t\tWednesdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\n\t\t\tThursdayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\n\t\t\tFridayProgramId: api.String(\"a36dccaa-aeb9-47da-bf1d-43a08ba5c870\"),\n\t\t\tSaturdayProgramId: api.String(\"3bf5a788-caf8-40c5-a7d5-78b72e9b3a28\"),\n\t\t\tSundayProgramId: api.String(\"3bf5a788-caf8-40c5-a7d5-78b72e9b3a28\"),\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", ActionType: \"PUSH_THERMOSTAT_PROGRAMS\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -78376,7 +78376,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\n func main() {\n client.Thermostats.DailyPrograms.Create(\ncontext.Background(),\ndailyprograms.DailyProgramsCreateRequest{\nDeviceId: api.String(\"cc2d0fb9-1f5f-410f-80f1-a64b699de82a\"),\nName: api.String(\"Weekday Program\"),\nPeriods: [4]dailyprograms.DailyProgramsCreateRequestPeriodsItem{dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"07:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"09:00:00\"), ClimatePresetKey: api.String(\"Away\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"16:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"22:30:00\"), ClimatePresetKey: api.String(\"Sleep\")}},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\nfunc main() {\n\tclient.Thermostats.DailyPrograms.Create(\n\t\tcontext.Background(),\n\t\tdailyprograms.DailyProgramsCreateRequest{\n\t\t\tDeviceId: api.String(\"cc2d0fb9-1f5f-410f-80f1-a64b699de82a\"),\n\t\t\tName: api.String(\"Weekday Program\"),\n\t\t\tPeriods: [4]dailyprograms.DailyProgramsCreateRequestPeriodsItem{dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"07:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"09:00:00\"), ClimatePresetKey: api.String(\"Away\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"16:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsCreateRequestPeriods{StartsAtTime: api.String(\"22:30:00\"), ClimatePresetKey: api.String(\"Sleep\")}},\n\t\t},\n\t)\n}", "response": "api.ThermostatDailyProgram{CreatedAt: \"2025-06-14T16:54:17.946642Z\", DeviceId: \"cc2d0fb9-1f5f-410f-80f1-a64b699de82a\", Name: \"Weekday Program\", Periods: []ThermostatDailyProgramPeriods{api.ThermostatDailyProgramPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"Home\"}, api.ThermostatDailyProgramPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"Away\"}, api.ThermostatDailyProgramPeriodsPeriods{StartsAtTime: \"16:00:00\", ClimatePresetKey: \"Home\"}, api.ThermostatDailyProgramPeriodsPeriods{StartsAtTime: \"22:30:00\", ClimatePresetKey: \"Sleep\"}}, ThermostatDailyProgramId: \"ab8ef74c-c7cd-4100-aa32-0ef960c0080d\", WorkspaceId: \"8da8d923-e55b-45cd-84a3-6c96b3d3d454\"}", "request_syntax": "go", "response_syntax": "go" @@ -78513,7 +78513,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\n func main() {\n client.Thermostats.DailyPrograms.Delete(\ncontext.Background(),\ndailyprograms.DailyProgramsDeleteRequest{\nThermostatDailyProgramId: api.String(\"a8665859-629e-4696-88b1-1eda1976250a\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\nfunc main() {\n\tclient.Thermostats.DailyPrograms.Delete(\n\t\tcontext.Background(),\n\t\tdailyprograms.DailyProgramsDeleteRequest{\n\t\t\tThermostatDailyProgramId: api.String(\"a8665859-629e-4696-88b1-1eda1976250a\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -78740,7 +78740,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\n func main() {\n client.Thermostats.DailyPrograms.Update(\ncontext.Background(),\ndailyprograms.DailyProgramsUpdateRequest{\nThermostatDailyProgramId: api.String(\"6baf3a53-ba83-4052-8ea5-143584e18f03\"),\nName: api.String(\"Weekday Program\"),\nPeriods: [4]dailyprograms.DailyProgramsUpdateRequestPeriodsItem{dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"07:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"09:00:00\"), ClimatePresetKey: api.String(\"Away\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"17:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"22:30:00\"), ClimatePresetKey: api.String(\"Sleep\")}},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport dailyprograms \"github.com/seamapi/go/dailyprograms\"\n\nfunc main() {\n\tclient.Thermostats.DailyPrograms.Update(\n\t\tcontext.Background(),\n\t\tdailyprograms.DailyProgramsUpdateRequest{\n\t\t\tThermostatDailyProgramId: api.String(\"6baf3a53-ba83-4052-8ea5-143584e18f03\"),\n\t\t\tName: api.String(\"Weekday Program\"),\n\t\t\tPeriods: [4]dailyprograms.DailyProgramsUpdateRequestPeriodsItem{dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"07:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"09:00:00\"), ClimatePresetKey: api.String(\"Away\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"17:00:00\"), ClimatePresetKey: api.String(\"Home\")}, dailyprograms.DailyProgramsUpdateRequestPeriods{StartsAtTime: api.String(\"22:30:00\"), ClimatePresetKey: api.String(\"Sleep\")}},\n\t\t},\n\t)\n}", "response": "api.ActionAttempt{ActionAttemptId: \"a1b2c3d4-e5f6-4a3b-2c1d-0e9f8a7b6c5d\", ActionType: \"PUSH_THERMOSTAT_PROGRAMS\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -78995,7 +78995,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.Create(\ncontext.Background(),\nschedules.SchedulesCreateRequest{\nDeviceId: api.String(\"d710aa35-232d-442b-a817-c28045de1c74\"),\nName: api.String(\"Jane's Stay\"),\nClimatePresetKey: api.String(\"Occupied\"),\nMaxOverridePeriodMinutes: api.Float64(90),\nStartsAt: api.String(\"2025-06-19T15:00:00.000Z\"),\nEndsAt: api.String(\"2025-06-22T11:00:00.000Z\"),\nIsOverrideAllowed: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.Create(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesCreateRequest{\n\t\t\tDeviceId: api.String(\"d710aa35-232d-442b-a817-c28045de1c74\"),\n\t\t\tName: api.String(\"Jane's Stay\"),\n\t\t\tClimatePresetKey: api.String(\"Occupied\"),\n\t\t\tMaxOverridePeriodMinutes: api.Float64(90),\n\t\t\tStartsAt: api.String(\"2025-06-19T15:00:00.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T11:00:00.000Z\"),\n\t\t\tIsOverrideAllowed: api.Bool(true),\n\t\t},\n\t)\n}", "response": "api.ThermostatSchedule{ClimatePresetKey: \"Occupied\", CreatedAt: \"2025-06-14T16:54:17.946316Z\", DeviceId: \"d710aa35-232d-442b-a817-c28045de1c74\", EndsAt: \"2025-06-22T11:00:00.000Z\", Errors: nil, IsOverrideAllowed: true, MaxOverridePeriodMinutes: 90, Name: \"Jane's Stay\", StartsAt: \"2025-06-22T11:00:00.000Z\", ThermostatScheduleId: \"af2cb7f7-9f28-40da-a0a0-e7a008ef7a35\", WorkspaceId: \"58419b36-6103-44e5-aa83-2163e90cce01\"}", "request_syntax": "go", "response_syntax": "go" @@ -79132,7 +79132,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.Delete(\ncontext.Background(),\nschedules.SchedulesDeleteRequest{\nThermostatScheduleId: api.String(\"0d42131f-ceb2-4fdf-b44e-3cc1143f98de\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.Delete(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesDeleteRequest{\n\t\t\tThermostatScheduleId: api.String(\"0d42131f-ceb2-4fdf-b44e-3cc1143f98de\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -79287,7 +79287,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.Get(\ncontext.Background(),\nschedules.SchedulesGetRequest{\nThermostatScheduleId: api.String(\"408f3f85-11ae-4111-bec1-0f2408a2b218\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.Get(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesGetRequest{\n\t\t\tThermostatScheduleId: api.String(\"408f3f85-11ae-4111-bec1-0f2408a2b218\"),\n\t\t},\n\t)\n}", "response": "api.ThermostatSchedule{ClimatePresetKey: \"Occupied\", CreatedAt: \"2025-06-14T16:54:17.946316Z\", DeviceId: \"dc1dfc4b-8082-453f-a953-276941af8650\", EndsAt: \"2025-07-14T16:54:17.946313Z\", Errors: nil, IsOverrideAllowed: true, MaxOverridePeriodMinutes: 90, Name: \"Jane's Stay\", StartsAt: \"2025-07-12T16:54:17.946313Z\", ThermostatScheduleId: \"408f3f85-11ae-4111-bec1-0f2408a2b218\", WorkspaceId: \"58419b36-6103-44e5-aa83-2163e90cce01\"}", "request_syntax": "go", "response_syntax": "go" @@ -79458,7 +79458,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.List(\ncontext.Background(),\nschedules.SchedulesListRequest{\nDeviceId: api.String(\"b5d58842-32be-46d2-b161-26787a0bd5ea\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.List(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesListRequest{\n\t\t\tDeviceId: api.String(\"b5d58842-32be-46d2-b161-26787a0bd5ea\"),\n\t\t},\n\t)\n}", "response": "[]api.ThermostatSchedule{api.ThermostatSchedule{ClimatePresetKey: \"Eco\", CreatedAt: \"2025-06-14T16:54:17.946316Z\", DeviceId: \"b5d58842-32be-46d2-b161-26787a0bd5ea\", EndsAt: \"2025-07-14T16:54:17.946313Z\", Errors: nil, IsOverrideAllowed: true, MaxOverridePeriodMinutes: 90, Name: \"Unoccupied\", StartsAt: \"2025-07-12T16:54:17.946313Z\", ThermostatScheduleId: \"af2cb7f7-9f28-40da-a0a0-e7a008ef7a35\", WorkspaceId: \"58419b36-6103-44e5-aa83-2163e90cce01\"}}", "request_syntax": "go", "response_syntax": "go" @@ -79561,7 +79561,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.List(\ncontext.Background(),\nschedules.SchedulesListRequest{\nUserIdentifierKey: api.String(\"b5c8bf4e-c231-474f-b4dc-adad38c25d3f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.List(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesListRequest{\n\t\t\tUserIdentifierKey: api.String(\"b5c8bf4e-c231-474f-b4dc-adad38c25d3f\"),\n\t\t},\n\t)\n}", "response": "[]api.ThermostatSchedule{api.ThermostatSchedule{ClimatePresetKey: \"Eco\", CreatedAt: \"2025-06-14T16:54:17.946316Z\", DeviceId: \"dc1dfc4b-8082-453f-a953-276941af8650\", EndsAt: \"2025-07-14T16:54:17.946313Z\", Errors: nil, IsOverrideAllowed: true, MaxOverridePeriodMinutes: 90, Name: \"Unoccupied\", StartsAt: \"2025-07-12T16:54:17.946313Z\", ThermostatScheduleId: \"af2cb7f7-9f28-40da-a0a0-e7a008ef7a35\", WorkspaceId: \"58419b36-6103-44e5-aa83-2163e90cce01\"}}", "request_syntax": "go", "response_syntax": "go" @@ -79788,7 +79788,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\n func main() {\n client.Thermostats.Schedules.Update(\ncontext.Background(),\nschedules.SchedulesUpdateRequest{\nThermostatScheduleId: api.String(\"f29b8f4d-ef6e-4219-96e5-16fb2151ec6c\"),\nName: api.String(\"Jane's Stay\"),\nClimatePresetKey: api.String(\"Occupied\"),\nMaxOverridePeriodMinutes: api.Float64(90),\nStartsAt: api.String(\"2025-06-20T03:24:25.000Z\"),\nEndsAt: api.String(\"2025-06-22T06:04:21.000Z\"),\nIsOverrideAllowed: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport schedules \"github.com/seamapi/go/schedules\"\n\nfunc main() {\n\tclient.Thermostats.Schedules.Update(\n\t\tcontext.Background(),\n\t\tschedules.SchedulesUpdateRequest{\n\t\t\tThermostatScheduleId: api.String(\"f29b8f4d-ef6e-4219-96e5-16fb2151ec6c\"),\n\t\t\tName: api.String(\"Jane's Stay\"),\n\t\t\tClimatePresetKey: api.String(\"Occupied\"),\n\t\t\tMaxOverridePeriodMinutes: api.Float64(90),\n\t\t\tStartsAt: api.String(\"2025-06-20T03:24:25.000Z\"),\n\t\t\tEndsAt: api.String(\"2025-06-22T06:04:21.000Z\"),\n\t\t\tIsOverrideAllowed: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -80048,7 +80048,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Thermostats.Simulate.HvacModeAdjusted(\ncontext.Background(),\nsimulate.SimulateHvacModeAdjustedRequest{\nDeviceId: api.String(\"278a72ba-7deb-45e3-a0c0-573fd360ee7b\"),\nHvacMode: api.String(\"heat\"),\nHeatingSetPointFahrenheit: api.Float64(68),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Thermostats.Simulate.HvacModeAdjusted(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateHvacModeAdjustedRequest{\n\t\t\tDeviceId: api.String(\"278a72ba-7deb-45e3-a0c0-573fd360ee7b\"),\n\t\t\tHvacMode: api.String(\"heat\"),\n\t\t\tHeatingSetPointFahrenheit: api.Float64(68),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -80212,7 +80212,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\n func main() {\n client.Thermostats.Simulate.TemperatureReached(\ncontext.Background(),\nsimulate.SimulateTemperatureReachedRequest{\nDeviceId: api.String(\"278a72ba-7deb-45e3-a0c0-573fd360ee7b\"),\nTemperatureCelsius: api.Float64(25),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\nimport simulate \"github.com/seamapi/go/simulate\"\n\nfunc main() {\n\tclient.Thermostats.Simulate.TemperatureReached(\n\t\tcontext.Background(),\n\t\tsimulate.SimulateTemperatureReachedRequest{\n\t\t\tDeviceId: api.String(\"278a72ba-7deb-45e3-a0c0-573fd360ee7b\"),\n\t\t\tTemperatureCelsius: api.Float64(25),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -80778,7 +80778,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.AddAcsUser(\ncontext.Background(),\napi.UserIdentitiesAddAcsUserRequest{\nUserIdentityId: api.String(\"68dd3d7e-c90b-4c89-ad70-3e589014ed87\"),\nAcsUserId: api.String(\"d73f4706-67e3-419d-899e-ec957a75ee0c\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.AddAcsUser(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesAddAcsUserRequest{\n\t\t\tUserIdentityId: api.String(\"68dd3d7e-c90b-4c89-ad70-3e589014ed87\"),\n\t\t\tAcsUserId: api.String(\"d73f4706-67e3-419d-899e-ec957a75ee0c\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -80993,7 +80993,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.Create(\ncontext.Background(),\napi.UserIdentitiesCreateRequest{\nUserIdentityKey: api.String(\"61c6c8ec-21ac-4d1d-be02-688889c66d8c\"),\nEmailAddress: api.String(\"jane@example.com\"),\nPhoneNumber: api.String(\"+15551234567\"),\nFullName: api.String(\"Jane Doe\"),\nAcsSystemIds: [1]string{api.String(\"c359cba2-8ef2-47fc-bee0-1c7c2a886339\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.Create(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesCreateRequest{\n\t\t\tUserIdentityKey: api.String(\"61c6c8ec-21ac-4d1d-be02-688889c66d8c\"),\n\t\t\tEmailAddress: api.String(\"jane@example.com\"),\n\t\t\tPhoneNumber: api.String(\"+15551234567\"),\n\t\t\tFullName: api.String(\"Jane Doe\"),\n\t\t\tAcsSystemIds: [1]string{api.String(\"c359cba2-8ef2-47fc-bee0-1c7c2a886339\")},\n\t\t},\n\t)\n}", "response": "api.UserIdentity{CreatedAt: \"2025-06-16T16:54:17.946546Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, FullName: \"Jane Doe\", PhoneNumber: \"+15551234567\", UserIdentityId: \"43947360-cdc8-4db6-8b22-e079416d1d8b\", UserIdentityKey: \"jane_doe\", Warnings: nil, WorkspaceId: \"b7e0a4e0-1044-4319-9a0b-42b642b68c7f\"}", "request_syntax": "go", "response_syntax": "go" @@ -81129,7 +81129,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.Delete(\ncontext.Background(),\napi.UserIdentitiesDeleteRequest{\nUserIdentityId: api.String(\"7ad2566e-6fd8-466d-b8e4-c10a14a74fd3\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.Delete(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesDeleteRequest{\n\t\t\tUserIdentityId: api.String(\"7ad2566e-6fd8-466d-b8e4-c10a14a74fd3\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -81308,7 +81308,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.GenerateInstantKey(\ncontext.Background(),\napi.UserIdentitiesGenerateInstantKeyRequest{\nUserIdentityId: api.String(\"d92e0c7b-72a1-4063-9ee8-2acefc240358\"),\nMaxUseCount: api.Float64(10),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.GenerateInstantKey(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesGenerateInstantKeyRequest{\n\t\t\tUserIdentityId: api.String(\"d92e0c7b-72a1-4063-9ee8-2acefc240358\"),\n\t\t\tMaxUseCount: api.Float64(10),\n\t\t},\n\t)\n}", "response": "api.InstantKey{ClientSessionId: \"bfe3b1c6-fb9e-48b1-9b5b-c762b2983af6\", CreatedAt: \"2025-06-14T16:54:17.946559Z\", ExpiresAt: \"2025-06-16T16:54:17.946559Z\", InstantKeyId: \"1d05c2f6-5b6f-4a9c-b80d-1eca26be12b9\", InstantKeyUrl: \"https://ik.seam.co/ABCXYZ\", UserIdentityId: \"d92e0c7b-72a1-4063-9ee8-2acefc240358\", WorkspaceId: \"4d1c24b2-781e-4d1a-8d77-15249ad57c8a\"}", "request_syntax": "go", "response_syntax": "go" @@ -81476,7 +81476,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.Get(\ncontext.Background(),\napi.UserIdentitiesGetRequest{\nUserIdentityId: api.String(\"43947360-cdc8-4db6-8b22-e079416d1d8b\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.Get(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesGetRequest{\n\t\t\tUserIdentityId: api.String(\"43947360-cdc8-4db6-8b22-e079416d1d8b\"),\n\t\t},\n\t)\n}", "response": "api.UserIdentity{CreatedAt: \"2025-06-16T16:54:17.946546Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, FullName: \"Jane Doe\", PhoneNumber: \"+1555551002\", UserIdentityId: \"43947360-cdc8-4db6-8b22-e079416d1d8b\", UserIdentityKey: \"jane_doe\", Warnings: nil, WorkspaceId: \"b7e0a4e0-1044-4319-9a0b-42b642b68c7f\"}", "request_syntax": "go", "response_syntax": "go" @@ -81576,7 +81576,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.Get(\ncontext.Background(),\napi.UserIdentitiesGetRequest{\nUserIdentityKey: api.String(\"jane_doe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.Get(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesGetRequest{\n\t\t\tUserIdentityKey: api.String(\"jane_doe\"),\n\t\t},\n\t)\n}", "response": "api.UserIdentity{CreatedAt: \"2025-06-16T16:54:17.946546Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, FullName: \"Jane Doe\", PhoneNumber: \"+1555551002\", UserIdentityId: \"43947360-cdc8-4db6-8b22-e079416d1d8b\", UserIdentityKey: \"jane_doe\", Warnings: nil, WorkspaceId: \"b7e0a4e0-1044-4319-9a0b-42b642b68c7f\"}", "request_syntax": "go", "response_syntax": "go" @@ -81727,7 +81727,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.GrantAccessToDevice(\ncontext.Background(),\napi.UserIdentitiesGrantAccessToDeviceRequest{\nUserIdentityId: api.String(\"4e9b7099-bcad-4af6-bb78-88b96cc347bd\"),\nDeviceId: api.String(\"6de31c5d-c8a3-4b25-a86b-a9c5075a5eb8\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.GrantAccessToDevice(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesGrantAccessToDeviceRequest{\n\t\t\tUserIdentityId: api.String(\"4e9b7099-bcad-4af6-bb78-88b96cc347bd\"),\n\t\t\tDeviceId: api.String(\"6de31c5d-c8a3-4b25-a86b-a9c5075a5eb8\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -81953,7 +81953,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.UserIdentities.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.UserIdentities.List(context.Background())\n}", "response": "[]api.UserIdentity{api.UserIdentity{CreatedAt: \"2025-06-16T16:54:17.946546Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, FullName: \"Jane Doe\", PhoneNumber: \"+1555551002\", UserIdentityId: \"43947360-cdc8-4db6-8b22-e079416d1d8b\", UserIdentityKey: \"jane_doe\", Warnings: nil, WorkspaceId: \"b7e0a4e0-1044-4319-9a0b-42b642b68c7f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -82055,7 +82055,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.List(\ncontext.Background(),\napi.UserIdentitiesListRequest{\nCredentialManagerAcsSystemId: api.String(\"10698917-8527-4137-92ff-f1ce291bc287\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.List(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesListRequest{\n\t\t\tCredentialManagerAcsSystemId: api.String(\"10698917-8527-4137-92ff-f1ce291bc287\"),\n\t\t},\n\t)\n}", "response": "[]api.UserIdentity{api.UserIdentity{CreatedAt: \"2025-06-16T16:54:17.946546Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, FullName: \"Jane Doe\", PhoneNumber: \"+1555551002\", UserIdentityId: \"43947360-cdc8-4db6-8b22-e079416d1d8b\", UserIdentityKey: \"jane_doe\", Warnings: nil, WorkspaceId: \"b7e0a4e0-1044-4319-9a0b-42b642b68c7f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -82598,7 +82598,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.ListAccessibleDevices(\ncontext.Background(),\napi.UserIdentitiesListAccessibleDevicesRequest{\nUserIdentityId: api.String(\"f25d14c2-ea01-4e42-80f8-61a6f719be9d\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.ListAccessibleDevices(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesListAccessibleDevicesRequest{\n\t\t\tUserIdentityId: api.String(\"f25d14c2-ea01-4e42-80f8-61a6f719be9d\"),\n\t\t},\n\t)\n}", "response": "[]api.Device{api.Device{CanHvacCool: true, CanHvacHeat: true, CanHvacHeatCool: true, CanTurnOffHvac: true, CapabilitiesSupported: []string{\"thermostat\"}, ConnectedAccountId: \"a0b1c2d3-e4f5-6a7b-8c9d-0e1f2a3b4c5d\", CreatedAt: \"2024-10-03T22:12:15.666Z\", CustomMetadata: api.DeviceCustomMetadata{Id: \"internalId1\"}, DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", DeviceType: \"ecobee_thermostat\", DisplayName: \"Living Room\", Errors: nil, IsManaged: true, Location: api.DeviceLocation{LocationName: \"2948 20th St, San Francisco, CA, 94110, US\", Timezone: \"America/Los_Angeles\"}, Nickname: \"Living Room\", Properties: api.DeviceProperties{ActiveClimatePreset: api.DevicePropertiesActiveClimatePreset{CanDelete: true, CanEdit: true, ClimatePresetKey: \"sleep\", CoolingSetPointCelsius: 23.88888888888889, DisplayName: \"Sleep\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 17.77777777777778, HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true}, Appearance: api.DevicePropertiesAppearance{Name: \"Living Room\"}, AvailableClimatePresets: []DevicePropertiesAvailableClimatePresets{api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"sleep\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Sleep\", DisplayName: \"Sleep\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: true, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"home\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Home\", DisplayName: \"Home\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}, api.DevicePropertiesAvailableClimatePresetsAvailableClimatePresets{ClimatePresetKey: \"work\", CanEdit: true, CanDelete: true, CanUseWithThermostatDailyPrograms: false, Name: \"Work\", DisplayName: \"Work\", FanModeSetting: \"auto\", HvacModeSetting: \"heat_cool\", ManualOverrideAllowed: false, CoolingSetPointCelsius: 23.88888888888889, HeatingSetPointCelsius: 17.77777777777778, CoolingSetPointFahrenheit: 75, HeatingSetPointFahrenheit: 64}}, AvailableFanModeSettings: []string{\"auto\", \"on\"}, AvailableHvacModeSettings: []string{\"cool\", \"heat\", \"heat_cool\", \"off\"}, CurrentClimateSetting: api.DevicePropertiesCurrentClimateSetting{DisplayName: \"Manual Setting\", FanModeSetting: \"auto\", HeatingSetPointCelsius: 25, HeatingSetPointFahrenheit: 77, HvacModeSetting: \"heat\", ManualOverrideAllowed: true}, EcobeeMetadata: api.DevicePropertiesEcobeeMetadata{DeviceName: \"Living Room\", EcobeeDeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\"}, FallbackClimatePresetKey: \"eco\", FanModeSetting: \"auto\", HasDirectPower: true, ImageAltText: \"Ecobee 3 Lite Thermostat\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/devices/ecobee_3-lite_front.png&q=75&w=128\", IsCooling: false, IsFanRunning: false, IsHeating: false, IsTemporaryManualOverrideActive: false, Manufacturer: \"ecobee\", MaxCoolingSetPointCelsius: 33.333333333333336, MaxCoolingSetPointFahrenheit: 92, MaxHeatingSetPointCelsius: 26.11111111111111, MaxHeatingSetPointFahrenheit: 79, MinCoolingSetPointCelsius: 18.333333333333336, MinCoolingSetPointFahrenheit: 65, MinHeatingCoolingDeltaCelsius: 2.7777777777777777, MinHeatingCoolingDeltaFahrenheit: 5, MinHeatingSetPointCelsius: 7.222222222222222, MinHeatingSetPointFahrenheit: 45, Model: api.DevicePropertiesModel{DisplayName: \"Thermostat\", ManufacturerDisplayName: \"Ecobee\"}, Name: \"Living Room\", Online: true, RelativeHumidity: 0.36, TemperatureCelsius: 21.11111111111111, TemperatureFahrenheit: 70, TemperatureThreshold: api.DevicePropertiesTemperatureThreshold{LowerLimitCelsius: 16.66666666666667, LowerLimitFahrenheit: 62, UpperLimitCelsius: 26.66666666666667, UpperLimitFahrenheit: 80}, ThermostatDailyPrograms: []DevicePropertiesThermostatDailyPrograms{api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"1a2b3c4d-5e6f-7890-1234-56789abcdef1\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekday Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"07:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"09:00:00\", ClimatePresetKey: \"work\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"18:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"22:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:01:25.455Z\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyPrograms{ThermostatDailyProgramId: \"d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f90\", DeviceId: \"a1b2c3d4-e5f6-7890-1234-56789abcdef0\", Name: \"Weekend Program\", Periods: []DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriods{api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"00:00:00\", ClimatePresetKey: \"sleep\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"08:00:00\", ClimatePresetKey: \"home\"}, api.DevicePropertiesThermostatDailyProgramsThermostatDailyProgramsPeriodsPeriods{StartsAtTime: \"23:00:00\", ClimatePresetKey: \"sleep\"}}, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\", CreatedAt: \"2025-05-30T04:02:19.952Z\"}}, ThermostatWeeklyProgram: nil}, Warnings: nil, WorkspaceId: \"9f8e7d6c-5b4a-3c2d-1e0f-9876543210ab\"}}", "request_syntax": "go", "response_syntax": "go" @@ -82818,7 +82818,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.ListAcsSystems(\ncontext.Background(),\napi.UserIdentitiesListAcsSystemsRequest{\nUserIdentityId: api.String(\"77e0347d-35ac-4a21-962b-e757a446b47f\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.ListAcsSystems(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesListAcsSystemsRequest{\n\t\t\tUserIdentityId: api.String(\"77e0347d-35ac-4a21-962b-e757a446b47f\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsSystem{api.AcsSystem{AcsAccessGroupCount: 5, AcsSystemId: \"dbed811f-a8c7-4dab-a3cb-1a734ebd6ac7\", AcsUserCount: 20, ConnectedAccountId: \"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\", ConnectedAccountIds: []string{\"a94aeed0-1ae0-4e49-9c23-8444c7ceba09\"}, CreatedAt: \"2025-06-15T16:54:17.946425Z\", DefaultCredentialManagerAcsSystemId: \"5dde2def-3507-44f5-9521-7ca96aa4cd18\", Errors: nil, ExternalType: \"salto_ks_site\", ExternalTypeDisplayName: \"Salto KS site\", ImageAltText: \"Salto KS site Logo\", ImageUrl: \"https://connect.getseam.com/_next/image?url=https://connect.getseam.com/assets/images/acs_systems/salto_ks_site.png&q=75&w=128\", IsCredentialManager: false, Location: api.AcsSystemLocation{TimeZone: \"America/New_York\"}, Name: \"My Access System\", Warnings: nil, WorkspaceId: \"172920be-1f4d-45d4-8519-ecc3bdee638f\"}}", "request_syntax": "go", "response_syntax": "go" @@ -82989,7 +82989,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.ListAcsUsers(\ncontext.Background(),\napi.UserIdentitiesListAcsUsersRequest{\nUserIdentityId: api.String(\"b0dc10f2-3971-440e-af25-dab964e5c281\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.ListAcsUsers(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesListAcsUsersRequest{\n\t\t\tUserIdentityId: api.String(\"b0dc10f2-3971-440e-af25-dab964e5c281\"),\n\t\t},\n\t)\n}", "response": "[]api.AcsUser{api.AcsUser{AccessSchedule: api.AcsUserAccessSchedule{EndsAt: \"2025-06-12T11:00:00.000Z\", StartsAt: \"2025-06-10T15:00:00.000Z\"}, AcsSystemId: \"62d3384f-267f-4a4a-a946-d35819ec9981\", AcsUserId: \"6a5d9697-3cc4-436a-8165-4375ff424870\", ConnectedAccountId: \"c0175797-30f0-49f7-a228-2df115443ca7\", CreatedAt: \"2025-06-15T16:54:17.946482Z\", DisplayName: \"Jane Doe\", EmailAddress: \"jane@example.com\", Errors: nil, ExternalType: \"salto_site_user\", ExternalTypeDisplayName: \"Salto site user\", FullName: \"Jane Doe\", HidAcsSystemId: \"2acbe47f-612c-422a-9205-7af292f74e7f\", IsManaged: true, IsSuspended: false, LastSuccessfulSyncAt: \"2025-06-18T17:45:00.582Z\", PendingMutations: nil, PhoneNumber: \"+1555551000\", UserIdentityEmailAddress: \"jane@example.com\", UserIdentityFullName: \"Jane Doe\", UserIdentityId: \"a23b3e02-e394-4e5f-b21c-b366b8bc0dd3\", UserIdentityPhoneNumber: \"+1555551000\", Warnings: nil, WorkspaceId: \"8d4868e3-2f95-4f33-8689-19420b3101cd\"}}", "request_syntax": "go", "response_syntax": "go" @@ -83140,7 +83140,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.RemoveAcsUser(\ncontext.Background(),\napi.UserIdentitiesRemoveAcsUserRequest{\nUserIdentityId: api.String(\"802633b6-a66c-4911-b57b-323e900ee531\"),\nAcsUserId: api.String(\"faa22878-fa74-4ea0-87f7-2b05c1b06181\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.RemoveAcsUser(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesRemoveAcsUserRequest{\n\t\t\tUserIdentityId: api.String(\"802633b6-a66c-4911-b57b-323e900ee531\"),\n\t\t\tAcsUserId: api.String(\"faa22878-fa74-4ea0-87f7-2b05c1b06181\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -83291,7 +83291,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.RevokeAccessToDevice(\ncontext.Background(),\napi.UserIdentitiesRevokeAccessToDeviceRequest{\nUserIdentityId: api.String(\"a5a48343-a95e-4f51-a5d9-1e4241b73553\"),\nDeviceId: api.String(\"92874f9e-a2b5-4d49-a039-0280196ad4d5\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.RevokeAccessToDevice(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesRevokeAccessToDeviceRequest{\n\t\t\tUserIdentityId: api.String(\"a5a48343-a95e-4f51-a5d9-1e4241b73553\"),\n\t\t\tDeviceId: api.String(\"92874f9e-a2b5-4d49-a039-0280196ad4d5\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -83487,7 +83487,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.UserIdentities.Update(\ncontext.Background(),\napi.UserIdentitiesUpdateRequest{\nUserIdentityId: api.String(\"dc378ea9-358e-4999-b295-d0f3e0d5ff51\"),\nUserIdentityKey: api.String(\"jane_doe\"),\nEmailAddress: api.String(\"jane@example.com\"),\nPhoneNumber: api.String(\"+15551234567\"),\nFullName: api.String(\"Jane Doe\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.UserIdentities.Update(\n\t\tcontext.Background(),\n\t\tapi.UserIdentitiesUpdateRequest{\n\t\t\tUserIdentityId: api.String(\"dc378ea9-358e-4999-b295-d0f3e0d5ff51\"),\n\t\t\tUserIdentityKey: api.String(\"jane_doe\"),\n\t\t\tEmailAddress: api.String(\"jane@example.com\"),\n\t\t\tPhoneNumber: api.String(\"+15551234567\"),\n\t\t\tFullName: api.String(\"Jane Doe\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -84177,7 +84177,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Webhooks.Create(\ncontext.Background(),\napi.WebhooksCreateRequest{\nUrl: api.String(\"https://example.com\"),\nEventTypes: [2]string{api.String(\"device.connected\"), api.String(\"device.disconnected\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Webhooks.Create(\n\t\tcontext.Background(),\n\t\tapi.WebhooksCreateRequest{\n\t\t\tUrl: api.String(\"https://example.com\"),\n\t\t\tEventTypes: [2]string{api.String(\"device.connected\"), api.String(\"device.disconnected\")},\n\t\t},\n\t)\n}", "response": "api.Webhook{EventTypes: []string{\"device.connected\", \"device.disconnected\"}, Secret: \"mySecret\", Url: \"https://example.com\", WebhookId: \"ffe5cc3c-f3f4-48e8-b377-6f76c05d09a1\"}", "request_syntax": "go", "response_syntax": "go" @@ -84313,7 +84313,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Webhooks.Delete(\ncontext.Background(),\napi.WebhooksDeleteRequest{\nWebhookId: api.String(\"d3fb55d3-8b49-43ed-ac6b-e490be7b4274\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Webhooks.Delete(\n\t\tcontext.Background(),\n\t\tapi.WebhooksDeleteRequest{\n\t\t\tWebhookId: api.String(\"d3fb55d3-8b49-43ed-ac6b-e490be7b4274\"),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -84463,7 +84463,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Webhooks.Get(\ncontext.Background(),\napi.WebhooksGetRequest{\nWebhookId: api.String(\"e5f1b17c-c67d-469d-a860-9510cf814657\"),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Webhooks.Get(\n\t\tcontext.Background(),\n\t\tapi.WebhooksGetRequest{\n\t\t\tWebhookId: api.String(\"e5f1b17c-c67d-469d-a860-9510cf814657\"),\n\t\t},\n\t)\n}", "response": "api.Webhook{EventTypes: []string{\"device.connected\", \"device.disconnected\"}, Secret: \"mySecret\", Url: \"https://example.com/webhook\", WebhookId: \"e5f1b17c-c67d-469d-a860-9510cf814657\"}", "request_syntax": "go", "response_syntax": "go" @@ -84598,7 +84598,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Webhooks.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Webhooks.List(context.Background())\n}", "response": "[]api.Webhook{api.Webhook{EventTypes: []string{\"device.connected\", \"device.disconnected\"}, Secret: \"mySecret\", Url: \"https://example.com/webhook\", WebhookId: \"ffe5cc3c-f3f4-48e8-b377-6f76c05d09a1\"}}", "request_syntax": "go", "response_syntax": "go" @@ -84765,7 +84765,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Webhooks.Update(\ncontext.Background(),\napi.WebhooksUpdateRequest{\nWebhookId: api.String(\"e294905f-e7a5-4804-95a6-303f440eb262\"),\nEventTypes: [3]string{api.String(\"device.connected\"), api.String(\"device.disconnected\"), api.String(\"device.unmanaged.converted_to_managed\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Webhooks.Update(\n\t\tcontext.Background(),\n\t\tapi.WebhooksUpdateRequest{\n\t\t\tWebhookId: api.String(\"e294905f-e7a5-4804-95a6-303f440eb262\"),\n\t\t\tEventTypes: [3]string{api.String(\"device.connected\"), api.String(\"device.disconnected\"), api.String(\"device.unmanaged.converted_to_managed\")},\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" @@ -85177,7 +85177,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Workspaces.Create(\ncontext.Background(),\napi.WorkspacesCreateRequest{\nName: api.String(\"My Sandbox Workspace\"),\nCompanyName: api.String(\"Acme\"),\nConnectPartnerName: api.String(\"Acme\"),\nIsSandbox: api.Bool(true),\nIsPublishableKeyAuthEnabled: api.Bool(true),\nPublishableKey: api.String(\"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\"),\nWebviewPrimaryButtonColor: api.String(\"#232426\"),\nWebviewPrimaryButtonTextColor: api.String(\"#FFFDE7\"),\nWebviewLogoShape: api.String(\"circle\"),\nWebviewSuccessMessage: api.String(\"Your account has been successfully connected to Acme!\"),\nConnectWebviewCustomization: api.WorkspacesCreateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Workspaces.Create(\n\t\tcontext.Background(),\n\t\tapi.WorkspacesCreateRequest{\n\t\t\tName: api.String(\"My Sandbox Workspace\"),\n\t\t\tCompanyName: api.String(\"Acme\"),\n\t\t\tConnectPartnerName: api.String(\"Acme\"),\n\t\t\tIsSandbox: api.Bool(true),\n\t\t\tIsPublishableKeyAuthEnabled: api.Bool(true),\n\t\t\tPublishableKey: api.String(\"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\"),\n\t\t\tWebviewPrimaryButtonColor: api.String(\"#232426\"),\n\t\t\tWebviewPrimaryButtonTextColor: api.String(\"#FFFDE7\"),\n\t\t\tWebviewLogoShape: api.String(\"circle\"),\n\t\t\tWebviewSuccessMessage: api.String(\"Your account has been successfully connected to Acme!\"),\n\t\t\tConnectWebviewCustomization: api.WorkspacesCreateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\n\t\t},\n\t)\n}", "response": "api.Workspace{CompanyName: \"Acme\", ConnectPartnerName: \"Acme\", ConnectWebviewCustomization: api.WorkspaceConnectWebviewCustomization{InviterLogoUrl: \"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\", LogoShape: \"circle\", PrimaryButtonColor: \"#232426\", PrimaryButtonTextColor: \"#FFFDE7\", SuccessMessage: \"Your account has been successfully connected to Acme!\"}, IsSandbox: true, IsPublishableKeyAuthEnabled: true, PublishableKey: \"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\", IsSuspended: false, Name: \"My Sandbox Workspace\", WorkspaceId: \"6a0b6282-6a98-4fef-811e-0904c485ac7a\"}", "request_syntax": "go", "response_syntax": "go" @@ -85298,7 +85298,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Workspaces.Create(\ncontext.Background(),\napi.WorkspacesCreateRequest{\nName: api.String(\"My Production Workspace\"),\nCompanyName: api.String(\"Acme\"),\nConnectPartnerName: api.String(\"Acme\"),\nIsSandbox: api.Bool(false),\nIsPublishableKeyAuthEnabled: api.Bool(true),\nPublishableKey: api.String(\"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\"),\nWebviewPrimaryButtonColor: api.String(\"#232426\"),\nWebviewPrimaryButtonTextColor: api.String(\"#FFFDE7\"),\nWebviewLogoShape: api.String(\"circle\"),\nWebviewSuccessMessage: api.String(\"Your account has been successfully connected to Acme!\"),\nConnectWebviewCustomization: api.WorkspacesCreateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Workspaces.Create(\n\t\tcontext.Background(),\n\t\tapi.WorkspacesCreateRequest{\n\t\t\tName: api.String(\"My Production Workspace\"),\n\t\t\tCompanyName: api.String(\"Acme\"),\n\t\t\tConnectPartnerName: api.String(\"Acme\"),\n\t\t\tIsSandbox: api.Bool(false),\n\t\t\tIsPublishableKeyAuthEnabled: api.Bool(true),\n\t\t\tPublishableKey: api.String(\"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\"),\n\t\t\tWebviewPrimaryButtonColor: api.String(\"#232426\"),\n\t\t\tWebviewPrimaryButtonTextColor: api.String(\"#FFFDE7\"),\n\t\t\tWebviewLogoShape: api.String(\"circle\"),\n\t\t\tWebviewSuccessMessage: api.String(\"Your account has been successfully connected to Acme!\"),\n\t\t\tConnectWebviewCustomization: api.WorkspacesCreateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\n\t\t},\n\t)\n}", "response": "api.Workspace{CompanyName: \"Acme\", ConnectPartnerName: \"Acme\", ConnectWebviewCustomization: api.WorkspaceConnectWebviewCustomization{InviterLogoUrl: \"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\", LogoShape: \"circle\", PrimaryButtonColor: \"#232426\", PrimaryButtonTextColor: \"#FFFDE7\", SuccessMessage: \"Your account has been successfully connected to Acme!\"}, IsSandbox: true, IsSuspended: false, IsPublishableKeyAuthEnabled: true, PublishableKey: \"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\", Name: \"My Sandbox Workspace\", WorkspaceId: \"6a0b6282-6a98-4fef-811e-0904c485ac7a\"}", "request_syntax": "go", "response_syntax": "go" @@ -85605,7 +85605,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Workspaces.Get(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Workspaces.Get(context.Background())\n}", "response": "api.Workspace{CompanyName: \"Acme\", ConnectPartnerName: \"Acme\", ConnectWebviewCustomization: api.WorkspaceConnectWebviewCustomization{InviterLogoUrl: \"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\", LogoShape: \"circle\", PrimaryButtonColor: \"#232426\", PrimaryButtonTextColor: \"#FFFDE7\", SuccessMessage: \"Your account has been successfully connected to Acme!\"}, IsSandbox: true, IsSuspended: false, IsPublishableKeyAuthEnabled: true, PublishableKey: \"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\", Name: \"My Sandbox Workspace\", WorkspaceId: \"6a0b6282-6a98-4fef-811e-0904c485ac7a\"}", "request_syntax": "go", "response_syntax": "go" @@ -85749,7 +85749,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Workspaces.List(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Workspaces.List(context.Background())\n}", "response": "[]api.Workspace{api.Workspace{CompanyName: \"Acme\", ConnectPartnerName: \"Acme\", ConnectWebviewCustomization: api.WorkspaceConnectWebviewCustomization{InviterLogoUrl: \"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\", LogoShape: \"circle\", PrimaryButtonColor: \"#232426\", PrimaryButtonTextColor: \"#FFFDE7\", SuccessMessage: \"Your account has been successfully connected to Acme!\"}, IsSandbox: true, IsSuspended: false, IsPublishableKeyAuthEnabled: true, PublishableKey: \"seam_pk1fGd41X_zKs0ZELRTEc8nWxiBsEXAMPLE\", Name: \"My Sandbox Workspace\", WorkspaceId: \"6a0b6282-6a98-4fef-811e-0904c485ac7a\"}}", "request_syntax": "go", "response_syntax": "go" @@ -85879,7 +85879,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n \n\n func main() {\n client.Workspaces.ResetSandbox(context.Background(),\n)\n }", + "request": "package main\n\nfunc main() {\n\tclient.Workspaces.ResetSandbox(context.Background())\n}", "response": "api.ActionAttempt{ActionAttemptId: \"f8e7d6c5-4b3a-2c1d-9e0f-8a7b6c5d4e3f\", ActionType: \"RESET_SANDBOX_WORKSPACE\", Error: nil, Result: struct{}{}, Status: \"success\"}", "request_syntax": "go", "response_syntax": "go" @@ -86160,7 +86160,7 @@ "go": { "title": "Go", "sdkName": "go", - "request": "package main\n import api \"github.com/seamapi/go\"\n\n func main() {\n client.Workspaces.Update(\ncontext.Background(),\napi.WorkspacesUpdateRequest{\nName: api.String(\"My Workspace\"),\nConnectPartnerName: api.String(\"Acme\"),\nConnectWebviewCustomization: api.WorkspacesUpdateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\nIsSuspended: api.Bool(true),\n},\n)\n }", + "request": "package main\n\nimport api \"github.com/seamapi/go\"\n\nfunc main() {\n\tclient.Workspaces.Update(\n\t\tcontext.Background(),\n\t\tapi.WorkspacesUpdateRequest{\n\t\t\tName: api.String(\"My Workspace\"),\n\t\t\tConnectPartnerName: api.String(\"Acme\"),\n\t\t\tConnectWebviewCustomization: api.WorkspacesUpdateRequestConnectWebviewCustomization{InviterLogoUrl: api.String(\"https://connect.getseam.com/internal/images/view?image_id=1de135fa-f0c2-4e57-90d0-6b9a7d090a0c\"), LogoShape: api.String(\"circle\"), PrimaryButtonColor: api.String(\"#232426\"), PrimaryButtonTextColor: api.String(\"#FFFDE7\"), SuccessMessage: api.String(\"Your account has been successfully connected to Acme!\")},\n\t\t\tIsSuspended: api.Bool(true),\n\t\t},\n\t)\n}", "response": "nil", "request_syntax": "go", "response_syntax": "go" From 59c955dd68cea6217328cea1ba224f81c2abc125 Mon Sep 17 00:00:00 2001 From: Sy Bohy Date: Fri, 5 Jun 2026 18:32:12 -0700 Subject: [PATCH 3/6] feat: merge Granting Access and Access Grants pages, flatten nav Per review: the use-cases/granting-access decision page and the access-grants overview were repetitive. Merge them into a single Granting Access page (framing + ladder + characteristics + process + which-API table) and move the ten guide pages up one level to use-cases/granting-access/. Redirect targets updated; the access-grants/ URLs were never published, so no extra redirects are needed. Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitbook.yaml | 20 ++--- .../README.md | 2 +- .../README.md | 2 +- docs/guides/SUMMARY.md | 21 +++-- ...eating-and-encoding-card-access-methods.md | 4 +- .../seam-api-overview.md | 2 +- docs/guides/quickstart.md | 4 +- .../use-cases/granting-access/README.md | 63 ++++++++++++--- .../access-grant-quick-start.md | 12 +-- .../granting-access/access-grants/README.md | 79 ------------------- .../creating-an-access-grant-using-devices.md | 6 +- ...reating-an-access-grant-using-entrances.md | 4 +- .../creating-an-access-grant-using-spaces.md | 4 +- .../deleting-an-access-grant.md | 0 .../delivering-access-methods.md | 6 +- .../reservation-access-grants.md | 0 ...ieving-access-grants-and-access-methods.md | 0 .../revoking-an-access-method.md | 0 .../updating-an-access-grant.md | 2 +- 19 files changed, 95 insertions(+), 136 deletions(-) rename docs/guides/use-cases/granting-access/{access-grants => }/access-grant-quick-start.md (91%) delete mode 100644 docs/guides/use-cases/granting-access/access-grants/README.md rename docs/guides/use-cases/granting-access/{access-grants => }/creating-an-access-grant-using-devices.md (96%) rename docs/guides/use-cases/granting-access/{access-grants => }/creating-an-access-grant-using-entrances.md (97%) rename docs/guides/use-cases/granting-access/{access-grants => }/creating-an-access-grant-using-spaces.md (97%) rename docs/guides/use-cases/granting-access/{access-grants => }/deleting-an-access-grant.md (100%) rename docs/guides/use-cases/granting-access/{access-grants => }/delivering-access-methods.md (95%) rename docs/guides/use-cases/granting-access/{access-grants => }/reservation-access-grants.md (100%) rename docs/guides/use-cases/granting-access/{access-grants => }/retrieving-access-grants-and-access-methods.md (100%) rename docs/guides/use-cases/granting-access/{access-grants => }/revoking-an-access-method.md (100%) rename docs/guides/use-cases/granting-access/{access-grants => }/updating-an-access-grant.md (90%) diff --git a/.gitbook.yaml b/.gitbook.yaml index 8d8cd782f..14ba18a89 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -23,13 +23,13 @@ redirects: core-concepts/connect-webviews: core-concepts/connect-webviews/README.md capability-guides/access-systems/understanding-acs-differences: capability-guides/access-systems/README.md capability-guides/thermostats/creating-and-managing-climate-schedules: capability-guides/thermostats/creating-and-managing-thermostat-schedules.md - capability-guides/access-grants: use-cases/granting-access/access-grants/README.md - capability-guides/access-grants/access-grant-quick-start: use-cases/granting-access/access-grants/access-grant-quick-start.md - capability-guides/access-grants/creating-an-access-grant-using-entrances: use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md - capability-guides/access-grants/creating-an-access-grant-using-spaces: use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md - capability-guides/access-grants/delivering-access-methods: use-cases/granting-access/access-grants/delivering-access-methods.md - capability-guides/access-grants/reservation-access-grants: use-cases/granting-access/access-grants/reservation-access-grants.md - capability-guides/access-grants/retrieving-access-grants-and-access-methods: use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md - capability-guides/access-grants/updating-an-access-grant: use-cases/granting-access/access-grants/updating-an-access-grant.md - capability-guides/access-grants/revoking-an-access-method: use-cases/granting-access/access-grants/revoking-an-access-method.md - capability-guides/access-grants/deleting-an-access-grant: use-cases/granting-access/access-grants/deleting-an-access-grant.md + capability-guides/access-grants: use-cases/granting-access/README.md + capability-guides/access-grants/access-grant-quick-start: use-cases/granting-access/access-grant-quick-start.md + capability-guides/access-grants/creating-an-access-grant-using-entrances: use-cases/granting-access/creating-an-access-grant-using-entrances.md + capability-guides/access-grants/creating-an-access-grant-using-spaces: use-cases/granting-access/creating-an-access-grant-using-spaces.md + capability-guides/access-grants/delivering-access-methods: use-cases/granting-access/delivering-access-methods.md + capability-guides/access-grants/reservation-access-grants: use-cases/granting-access/reservation-access-grants.md + capability-guides/access-grants/retrieving-access-grants-and-access-methods: use-cases/granting-access/retrieving-access-grants-and-access-methods.md + capability-guides/access-grants/updating-an-access-grant: use-cases/granting-access/updating-an-access-grant.md + capability-guides/access-grants/revoking-an-access-method: use-cases/granting-access/revoking-an-access-method.md + capability-guides/access-grants/deleting-an-access-grant: use-cases/granting-access/deleting-an-access-grant.md diff --git a/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md b/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md index 982975037..1457054ca 100644 --- a/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md +++ b/docs/brand-guides/dormakaba-ambiance-access-control-system/README.md @@ -40,7 +40,7 @@ This integration supports all wireless locks and readers connected to the Dormak ## Related Features -* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Ambiance. For advanced, low-level control, you can still work directly with the ACS API. +* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Ambiance. For advanced, low-level control, you can still work directly with the ACS API. * [**Mobile Keys**](https://docs.seam.co/latest/capability-guides/mobile-access) – Provision and revoke Bluetooth and wallet-based credentials directly from your PMS or app. * [**Instant Keys**](https://docs.seam.co/latest/capability-guides/instant-keys) - Instantly issue temporary mobile pass that is shareable via an email or text. * [**Plastic Card Encoding**](https://docs.seam.co/latest/api/acs/encoders/encode_credential) – Encode and issue physical access cards using Seam’s card management API. diff --git a/docs/brand-guides/dormakaba-community-access-control-system/README.md b/docs/brand-guides/dormakaba-community-access-control-system/README.md index 6868a16c9..1d598e29c 100644 --- a/docs/brand-guides/dormakaba-community-access-control-system/README.md +++ b/docs/brand-guides/dormakaba-community-access-control-system/README.md @@ -40,7 +40,7 @@ This integration supports all wireless locks and readers connected to the Dormak ## Related Features -* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/access-grants/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Community. For advanced, low-level control, you can still work directly with the ACS API. +* [**Access Grants**](https://docs.seam.co/latest/use-cases/granting-access/reservation-access-grants) – The universal way to manage access in Seam. Integrate once, and your access model works consistently across all providers, including Dormakaba Community. For advanced, low-level control, you can still work directly with the ACS API. * [**Mobile Keys**](https://docs.seam.co/latest/capability-guides/mobile-access) – Provision and revoke Bluetooth and wallet-based credentials directly from your PMS or app. * [**Instant Keys**](https://docs.seam.co/latest/capability-guides/instant-keys) - Instantly issue temporary mobile pass that is shareable via an email or text. * [**Plastic Card Encoding**](https://docs.seam.co/latest/api/acs/encoders/encode_credential) – Encode and issue physical access cards using Seam’s card management API. diff --git a/docs/guides/SUMMARY.md b/docs/guides/SUMMARY.md index b6c1c2ac7..0dfa693dc 100644 --- a/docs/guides/SUMMARY.md +++ b/docs/guides/SUMMARY.md @@ -7,17 +7,16 @@ ## Use Cases * [Granting Access](use-cases/granting-access/README.md) - * [Access Grants](use-cases/granting-access/access-grants/README.md) - * [Access Grant Quick Start](use-cases/granting-access/access-grants/access-grant-quick-start.md) - * [Creating an Access Grant Using Devices](use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md) - * [Creating an Access Grant Using Spaces](use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md) - * [Creating an Access Grant Using Entrances](use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) - * [Delivering Access Methods](use-cases/granting-access/access-grants/delivering-access-methods.md) - * [Reservation Access Grants](use-cases/granting-access/access-grants/reservation-access-grants.md) - * [Retrieving Access Grants and Access Methods](use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md) - * [Updating an Access Grant](use-cases/granting-access/access-grants/updating-an-access-grant.md) - * [Revoking an Access Method](use-cases/granting-access/access-grants/revoking-an-access-method.md) - * [Deleting an Access Grant](use-cases/granting-access/access-grants/deleting-an-access-grant.md) + * [Access Grant Quick Start](use-cases/granting-access/access-grant-quick-start.md) + * [Creating an Access Grant Using Devices](use-cases/granting-access/creating-an-access-grant-using-devices.md) + * [Creating an Access Grant Using Spaces](use-cases/granting-access/creating-an-access-grant-using-spaces.md) + * [Creating an Access Grant Using Entrances](use-cases/granting-access/creating-an-access-grant-using-entrances.md) + * [Delivering Access Methods](use-cases/granting-access/delivering-access-methods.md) + * [Reservation Access Grants](use-cases/granting-access/reservation-access-grants.md) + * [Retrieving Access Grants and Access Methods](use-cases/granting-access/retrieving-access-grants-and-access-methods.md) + * [Updating an Access Grant](use-cases/granting-access/updating-an-access-grant.md) + * [Revoking an Access Method](use-cases/granting-access/revoking-an-access-method.md) + * [Deleting an Access Grant](use-cases/granting-access/deleting-an-access-grant.md) ## Core Concepts diff --git a/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md b/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md index eac2cfb2f..c68d700ad 100644 --- a/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md +++ b/docs/guides/capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md @@ -16,7 +16,7 @@ Some access control systems require encoding a plastic card with the data necess This process consists of the following basic steps: -1. Create an [Access Grant](../../../use-cases/granting-access/access-grants/) that includes a request for a card access method and identify the ID of the resulting access method. +1. Create an [Access Grant](../../../use-cases/granting-access/) that includes a request for a card access method and identify the ID of the resulting access method. See [Create an Access Grant](creating-and-encoding-card-access-methods.md#id-1.-create-an-access-grant). 2. Use the `/acs/encoders/list` endpoint to retrieve a list of available encoders. Then, choose the encoder that you want to use to write the access method onto the card.\ @@ -34,7 +34,7 @@ Once you have written an access method to a card, you cannot reuse the access me This example shows how to create a card access method as part of an Access Grant. Note that the `is_encoding_required` property of the resulting access method is `true`, which means that the access method must be encoded onto a card. Further, once you've encoded the access method on to the card, the `is_issued` property changes to `true`, and the `issued_at` property indicates the date and time at which the encoding occurred. -For more details about creating Access Grants, see [Creating an Access Grant Using Entrances](../../../use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) and [Creating an Access Grant Using Spaces](../../../use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md). +For more details about creating Access Grants, see [Creating an Access Grant Using Entrances](../../../use-cases/granting-access/creating-an-access-grant-using-entrances.md) and [Creating an Access Grant Using Spaces](../../../use-cases/granting-access/creating-an-access-grant-using-spaces.md). {% tabs %} {% tab title="JavaScript" %} diff --git a/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md b/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md index 3d77172a1..7388fdf23 100644 --- a/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md +++ b/docs/guides/industry-guides/hospitality-industry-guide/seam-api-overview.md @@ -2,7 +2,7 @@ Seam provides a single unified API to grant and manage access across all supported hotel access systems. Intuitive and flexible, the Seam API makes it easy to grant access, no matter what type of device or system controls this access. -If you want the easiest, most efficient way to grant access, use the [Access Grants](../../use-cases/granting-access/access-grants/README.md) API. This powerful API enables you to grant hotel guests access with a single call—for any access method. With this single API, you can… +If you want the easiest, most efficient way to grant access, use the [Access Grants](../../use-cases/granting-access/README.md) API. This powerful API enables you to grant hotel guests access with a single call—for any access method. With this single API, you can… * Grant access to the desired set of guest rooms and relevant common areas. * Support mixed hardware environments without extra logic. diff --git a/docs/guides/quickstart.md b/docs/guides/quickstart.md index c8a160f7c..995cff49f 100644 --- a/docs/guides/quickstart.md +++ b/docs/guides/quickstart.md @@ -88,7 +88,7 @@ Install using [nuget](https://www.nuget.org/packages/Seam). ## Step 3 — Grant Access -Grant your first access! You'll create an [Access Grant](use-cases/granting-access/access-grants/README.md)—the default and recommended way to grant a person access to any physical space through Seam—and get back a PIN code that your user could enter on the lock's keypad. +Grant your first access! You'll create an [Access Grant](use-cases/granting-access/README.md)—the default and recommended way to grant a person access to any physical space through Seam—and get back a PIN code that your user could enter on the lock's keypad. To start, open a terminal window and export your API key as an environment variable. @@ -383,7 +383,7 @@ Here are some ideas of what you can do next... ### Go Deeper on Granting Access -You just created your first Access Grant. The same API issues mobile keys, [Instant Keys](capability-guides/instant-keys/README.md), and plastic cards, grants access to multiple devices and [access system entrances](use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md) in one call, and manages the full credential lifecycle. See [Granting Access](use-cases/granting-access/README.md) and the [Access Grants capability guide](use-cases/granting-access/access-grants/README.md). +You just created your first Access Grant. The same API issues mobile keys, [Instant Keys](capability-guides/instant-keys/README.md), and plastic cards, grants access to multiple devices and [access system entrances](use-cases/granting-access/creating-an-access-grant-using-entrances.md) in one call, and manages the full credential lifecycle. See the [Granting Access guide](use-cases/granting-access/README.md). You can also control devices directly—for example, [lock and unlock doors](capability-guides/smart-locks/lock-and-unlock.md) remotely. diff --git a/docs/guides/use-cases/granting-access/README.md b/docs/guides/use-cases/granting-access/README.md index 0444c8629..653425093 100644 --- a/docs/guides/use-cases/granting-access/README.md +++ b/docs/guides/use-cases/granting-access/README.md @@ -1,12 +1,12 @@ --- description: >- - Use Access Grants to grant access to any physical space, irrespective of the - locking hardware. Learn which Seam API to use for granting access. + Access Grants are the default and recommended way to grant access to any + physical space, across smart locks and access control systems. --- # Granting Access -Use **[Access Grants](access-grants/README.md)** to grant a person access to a physical space. Access Grants are the default and recommended way to grant access on Seam—for any kind of space (a home, a building, a locker, a parking structure) and irrespective of the locking hardware (standalone smart locks, access control systems, and more). +Use **Access Grants** to grant a person access to a physical space. Access Grants are the default and recommended way to grant access on Seam—for any kind of space (a home, a building, a locker, a parking structure) and irrespective of the locking hardware (standalone smart locks, access control systems, and more). With one API call, you tell Seam *who* should have access, *where*, *when*, and *how*. Seam creates the credential, attaches it to a user identity, encodes the time window, propagates it to every relevant device, and re-materializes it as devices come online, get added to spaces, or change ownership. PIN codes, mobile keys, and plastic cards—all through the same request. @@ -23,13 +23,37 @@ await seam.accessGrants.create({ }); ``` +Access Grants work across the entire Seam provider lineup: + +* **Standalone smart locks**, such as August, Yale, Schlage, Lockly, TTLock, Tedee, and igloohome devices. Specify the locks directly with `device_ids`. +* **Access control systems (ACS)**, such as Salto KS, Salto Space, ASSA ABLOY Visionline and Vostio, dormakaba, Brivo, and Avigilon Alta. Specify entrances with `acs_entrance_ids`. +* **Mixed estates.** Combine `device_ids` and `acs_entrance_ids` in the same Access Grant, or group access points into [spaces](https://docs.seam.co/latest/api/spaces) and grant access to the whole group with `space_ids`. + *** ## Start Simple, Then Scale Up -1. **One device.** Grant access to a single smart lock with a `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](access-grants/creating-an-access-grant-using-devices.md). -2. **Multiple devices and spaces.** Pass several `device_ids` in one call, or organize access points into [spaces](https://docs.seam.co/latest/api/spaces) (Alpha) and grant access by `space_id`. See [Creating an Access Grant Using Spaces](access-grants/creating-an-access-grant-using-spaces.md). -3. **Access control systems.** Grant access to ACS entrances with `acs_entrance_ids`, including mobile keys, card encoding, and reservations. See [Creating an Access Grant Using Entrances](access-grants/creating-an-access-grant-using-entrances.md). +We recommend learning Access Grants in three steps, from the simplest setup to the most advanced: + +1. **One device.** Connect a smart lock and create an Access Grant with a single `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). +2. **Multiple devices and spaces.** Pass several `device_ids` in one call to grant access to a set of locks at once. To manage groups of access points by name—for example, everything a guest in Unit 101 needs—organize them into [spaces](creating-an-access-grant-using-spaces.md) and grant access by `space_id`. Note that spaces are currently in Alpha. +3. **Access control systems.** Connect an ACS, such as Salto, Visionline, or Brivo, and grant access to entrances with `acs_entrance_ids`. This path can involve additional setup, such as licenses, on-premises connections through Seam Bridge, mobile key configuration, and [reservations](reservation-access-grants.md) for offline-override systems. See [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md). + +*** + +## Access Grant Characteristics + +An Access Grant includes the following characteristics: + +
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Wheredevice_ids, space_ids, or acs_entrance_idsThe access points to which to grant access. Specify one or more devices (such as standalone smart locks) by ID, one or more access system entrances by ID, or both. Alternately, you can define spaces (currently in Alpha and available as an early access preview) that contain groups of related devices and entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
+ +*** + +## Access Grant Process + +The Access Grant process consists of the following steps: + +
StepDescription
  1. Connect your devices or access system to Seam.
To connect your devices or access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process.
For standalone smart locks, this is all the setup you need.
For on-premises access systems, use Seam Bridge to connect the access system securely to Seam. For details, see Connect an Access System to Seam.
  1. (Access systems only) Set up your site.
If you are granting access to access system entrances, confirm hardware capabilities and make sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. (Optional) Set up spaces to organize access points into logical groups.
You can use spaces to create groups of devices and entrances for efficiency. For example, a user staying in Room 101 may need access to the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these access points and then use this space when creating an Access Grant.
For details, see spaces.
Note: Spaces are currently in Alpha. We're actively developing this feature and seeking early feedback at support@seam.co. Expect breaking changes as we refine the design.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of devices, entrances, or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Devices, Creating an Access Grant Using Spaces, and Creating an Access Grant Using Entrances.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as PIN code, plastic key card, or mobile key.

  • If you have created an Access Grant that includes a code access method, retrieve the access method to get the PIN code and share it with your user.
  • If you have created an Access Grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

*** @@ -39,10 +63,10 @@ await seam.accessGrants.create({ | Scenario | API to use | | --- | --- | -| Grant a person access to one or more smart locks | [Access Grants](access-grants/README.md) (`device_ids`) | -| Grant a person access to ACS entrances | [Access Grants](access-grants/README.md) (`acs_entrance_ids`) | -| Grant a person access to a group of access points | [Access Grants](access-grants/README.md) + [spaces](https://docs.seam.co/latest/api/spaces) (`space_ids`) | -| Issue a mobile key or Instant Key | [Access Grants](access-grants/README.md) (`mode: "mobile_key"`) | +| Grant a person access to one or more smart locks | Access Grants (`device_ids`) | +| Grant a person access to ACS entrances | Access Grants (`acs_entrance_ids`) | +| Grant a person access to a group of access points | Access Grants + [spaces](https://docs.seam.co/latest/api/spaces) (`space_ids`) | +| Issue a mobile key or Instant Key | Access Grants (`mode: "mobile_key"`) | | Set a PIN with a specific custom code value on a single lock | [Access Codes API](../../capability-guides/smart-locks/access-codes/README.md) (low-level) | | Manage offline or backup PIN code pools on a single lock | [Access Codes API](../../capability-guides/smart-locks/access-codes/README.md) (low-level) | | Directly manage ACS users, credentials, and access groups | [ACS API](../../capability-guides/access-systems/README.md) (low-level) | @@ -54,8 +78,23 @@ The low-level [Access Codes](../../capability-guides/smart-locks/access-codes/RE *** +## Using Reservations + +Some access control systems (such as Dormakaba Ambiance, Dormakaba Community, Visionline, Salto Space, and Vostio) rely on offline override behavior for guest and resident credentials. + +When issuing Access Grants for these systems, you’ll need to use reservations to ensure credentials override and join correctly. + +👉 [Learn how to use reservations with Access Grants →](reservation-access-grants.md) + +*** + ## Get Started -* [Access Grant Quick Start](access-grants/access-grant-quick-start.md) -* [Access Grants Capability Guide](access-grants/README.md) +To create your first Access Grant, see the [Access Grant Quick Start](access-grant-quick-start.md). Then, learn more in the following topics: + +* [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md) +* [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md) +* [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md) +* [Delivering Access Methods](delivering-access-methods.md) * [Access Grants API Reference](https://docs.seam.co/latest/api/access_grants/) +* [Access Methods API Reference](https://docs.seam.co/latest/api/access_methods/) diff --git a/docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md b/docs/guides/use-cases/granting-access/access-grant-quick-start.md similarity index 91% rename from docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md rename to docs/guides/use-cases/granting-access/access-grant-quick-start.md index 4514335a5..db53155dc 100644 --- a/docs/guides/use-cases/granting-access/access-grants/access-grant-quick-start.md +++ b/docs/guides/use-cases/granting-access/access-grant-quick-start.md @@ -9,13 +9,13 @@ description: >- In this quick start, create an Access Grant to give a user access to a set of access points. Access Grants are the default and recommended way to grant access to any physical space, irrespective of the locking hardware—standalone smart locks, access control systems, or a mix of both. With a single command you can define the "who, where, when, and how" for assigning a user access. {% hint style="success" %} -**Starting with a standalone smart lock?** The fastest first success is a single device and a PIN code: see the [Seam Quick Start](../../../quickstart.md), which creates an Access Grant on a sandbox August lock, or [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). This quick start walks through the more advanced access system (ACS) path, including key cards, mobile keys, and Instant Keys. +**Starting with a standalone smart lock?** The fastest first success is a single device and a PIN code: see the [Seam Quick Start](../../quickstart.md), which creates an Access Grant on a sandbox August lock, or [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). This quick start walks through the more advanced access system (ACS) path, including key cards, mobile keys, and Instant Keys. {% endhint %} In addition, this quick start shows you that, with Access Grants, it's easy to issue users access through multiple types of access methods, such as key cards, PIN codes, mobile keys, and Instant Keys. {% hint style="info" %} -Seam Instant Keys are the fastest way to share access. You can send them as links through text or email, with no app download required. For details, see [Instant Keys](../../../capability-guides/instant-keys/). +Seam Instant Keys are the fastest way to share access. You can send them as links through text or email, with no app download required. For details, see [Instant Keys](../../capability-guides/instant-keys/). {% endhint %} *** @@ -24,14 +24,14 @@ Seam Instant Keys are the fastest way to share access. You can send them as link Before you begin this quick start, perform the following steps: -1. [Connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. +1. [Connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. In this quick start, you can use a Seam virtual access system in a sandbox workspace, for example, the [virtual Salto Space access system](https://docs.seam.co/latest/device-and-system-integration-guides/salto-proaccess-space-access-system/sandbox-salto-space-access-control-system). - For instructions, see [Connect an Access System to Seam](../../../capability-guides/access-systems/connect-an-acs-to-seam/). + For instructions, see [Connect an Access System to Seam](../../capability-guides/access-systems/connect-an-acs-to-seam/). 2. Install a Seam SDK and create an API key. - For instructions, see [Installation](https://docs.seam.co/latest/api/installation) and [API Keys](../../../core-concepts/authentication/api-keys.md). + For instructions, see [Installation](https://docs.seam.co/latest/api/installation) and [API Keys](../../core-concepts/authentication/api-keys.md). *** @@ -810,7 +810,7 @@ $seam->access_methods->get( The way in which you deliver an access method depends on the mode of access. The following table describes the delivery mechanisms: -
Access Method ModeDelivery Mechanism
PIN codeYou can retrieve the access method by ID. The returned access method resource includes the code that you can share with your user.
Plastic key cardSome access systems require you to encode plastic key cards. In this case, the access method's is_encoding_required property is true. You can use the Seam API or Seam Console to encode and scan the cards. For details, see Working with Card Encoders and Scanners.
Once you've encoded the card, the access method's is_encoding_required property changes to false, and its is_issued property changes to true. The card is ready to be delivered to your user.
Mobile keyYou deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a client_session_token property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see Mobile Access.
Instant KeyEach mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the instant_key_url property. You deliver this URL to your user by sending it through text or email. There's no app download required. You can also embed an Instant Key in your own app. For details, see Instant Keys and Delivering Instant Keys.
+
Access Method ModeDelivery Mechanism
PIN codeYou can retrieve the access method by ID. The returned access method resource includes the code that you can share with your user.
Plastic key cardSome access systems require you to encode plastic key cards. In this case, the access method's is_encoding_required property is true. You can use the Seam API or Seam Console to encode and scan the cards. For details, see Working with Card Encoders and Scanners.
Once you've encoded the card, the access method's is_encoding_required property changes to false, and its is_issued property changes to true. The card is ready to be delivered to your user.
Mobile keyYou deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a client_session_token property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see Mobile Access.
Instant KeyEach mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the instant_key_url property. You deliver this URL to your user by sending it through text or email. There's no app download required. You can also embed an Instant Key in your own app. For details, see Instant Keys and Delivering Instant Keys.
*** diff --git a/docs/guides/use-cases/granting-access/access-grants/README.md b/docs/guides/use-cases/granting-access/access-grants/README.md deleted file mode 100644 index 2636f7dd2..000000000 --- a/docs/guides/use-cases/granting-access/access-grants/README.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -description: >- - Access Grants are the default and recommended way to grant access to any - physical space, across smart locks and access control systems. ---- - -# Access Grants - -Access Grants are the default and recommended way to grant a person access to any physical space—a home, a building, a locker, a parking structure—irrespective of the locking hardware that secures it. With a single API call, you define the "who, where, when, and how" of access, and Seam takes care of creating and managing the underlying credentials on every device and access system involved. - -Access Grants work across the entire Seam provider lineup: - -* **Standalone smart locks**, such as August, Yale, Schlage, Lockly, TTLock, Tedee, and igloohome devices. Specify the locks directly with `device_ids`. -* **Access control systems (ACS)**, such as Salto KS, Salto Space, ASSA ABLOY Visionline and Vostio, dormakaba, Brivo, and Avigilon Alta. Specify entrances with `acs_entrance_ids`. -* **Mixed estates.** Combine `device_ids` and `acs_entrance_ids` in the same Access Grant, or group access points into [spaces](https://docs.seam.co/latest/api/spaces) and grant access to the whole group with `space_ids`. - -Access Grants support PIN codes, plastic cards, and mobile keys, including [Instant Keys](../../../capability-guides/instant-keys/). You can request multiple access methods in a single call, and Seam issues each credential on the right hardware. - -```javascript -await seam.accessGrants.create({ - user_identity: { - full_name: "Jane Doe", - email_address: "jane@example.com", - }, - device_ids: [front_door_lock_id], - requested_access_methods: [{ mode: "code" }], - starts_at: "2025-07-13T15:00:00.000Z", - ends_at: "2025-07-16T11:00:00.000Z", -}); -``` - -{% hint style="success" %} -Access Grants supersede the lower-level [access codes](../../../capability-guides/smart-locks/access-codes/README.md) and [ACS credential](../../../capability-guides/access-systems/README.md) granting workflows. For new development, grant access with Access Grants. To understand when you might still drop down to the lower-level APIs, see the characteristics and process below, as well as the per-system integration guides. -{% endhint %} - -An Access Grant includes the following characteristics: - -
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Wheredevice_ids, space_ids, or acs_entrance_idsThe access points to which to grant access. Specify one or more devices (such as standalone smart locks) by ID, one or more access system entrances by ID, or both. Alternately, you can define spaces (currently in Alpha and available as an early access preview) that contain groups of related devices and entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
- -*** - -## Start Simple, Then Scale Up - -We recommend learning Access Grants in three steps, from the simplest setup to the most advanced: - -1. **One device.** Connect a smart lock and create an Access Grant with a single `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). -2. **Multiple devices and spaces.** Pass several `device_ids` in one call to grant access to a set of locks at once. To manage groups of access points by name—for example, everything a guest in Unit 101 needs—organize them into [spaces](creating-an-access-grant-using-spaces.md) and grant access by `space_id`. Note that spaces are currently in Alpha. -3. **Access control systems.** Connect an ACS, such as Salto, Visionline, or Brivo, and grant access to entrances with `acs_entrance_ids`. This path can involve additional setup, such as licenses, on-premises connections through Seam Bridge, mobile key configuration, and [reservations](reservation-access-grants.md) for offline-override systems. See [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md). - -*** - -## Access Grant Process - -The Access Grant process consists of the following steps: - -
StepDescription
  1. Connect your devices or access system to Seam.
To connect your devices or access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process.
For standalone smart locks, this is all the setup you need.
For on-premises access systems, use Seam Bridge to connect the access system securely to Seam. For details, see Connect an Access System to Seam.
  1. (Access systems only) Set up your site.
If you are granting access to access system entrances, confirm hardware capabilities and make sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. (Optional) Set up spaces to organize access points into logical groups.
You can use spaces to create groups of devices and entrances for efficiency. For example, a user staying in Room 101 may need access to the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these access points and then use this space when creating an Access Grant.
For details, see spaces.
Note: Spaces are currently in Alpha. We're actively developing this feature and seeking early feedback at support@seam.co. Expect breaking changes as we refine the design.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of devices, entrances, or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Devices, Creating an Access Grant Using Spaces, and Creating an Access Grant Using Entrances.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as PIN code, plastic key card, or mobile key.

  • If you have created an Access Grant that includes a code access method, retrieve the access method to get the PIN code and share it with your user.
  • If you have created an Access Grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

- -*** - -## Using Reservations - -Some access control systems (such as Dormakaba Ambiance, Dormakaba Community, Visionline, Salto Space, and Vostio) rely on offline override behavior for guest and resident credentials. - -When issuing Access Grants for these systems, you’ll need to use reservations to ensure credentials override and join correctly. - -👉 [Learn how to use reservations with Access Grants →](reservation-access-grants.md) - -*** - -## Get Started - -To create your first Access Grant, see the [Access Grant Quick Start](access-grant-quick-start.md). Then, learn more in the following topics: - -* [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md) -* [Creating an Access Grant Using Spaces](creating-an-access-grant-using-spaces.md) -* [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md) -* [Delivering Access Methods](delivering-access-methods.md) -* [Access Grants API Reference](https://docs.seam.co/latest/api/access_grants/) -* [Access Methods API Reference](https://docs.seam.co/latest/api/access_methods/) diff --git a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-devices.md similarity index 96% rename from docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md rename to docs/guides/use-cases/granting-access/creating-an-access-grant-using-devices.md index 40c9e1ff0..157aa1b53 100644 --- a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-devices.md +++ b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-devices.md @@ -8,7 +8,7 @@ description: >- Granting access to a device is the simplest form of an Access Grant. You specify the user, one or more device IDs, the access schedule, and the desired access methods, and Seam takes care of creating and managing the underlying credentials on each device. -This path works for standalone smart locks—such as August, Yale, Schlage, igloohome, and TTLock devices—that are connected to Seam through a [Connect Webview](../../../core-concepts/connect-webviews/). The devices do not need to be part of an access control system. +This path works for standalone smart locks—such as August, Yale, Schlage, igloohome, and TTLock devices—that are connected to Seam through a [Connect Webview](../../core-concepts/connect-webviews/). The devices do not need to be part of an access control system. An Access Grant defines the following characteristics: @@ -36,10 +36,10 @@ To create an Access Grant: ## Before You Begin -To create an Access Grant for a device, first [connect](../../../core-concepts/connect-webviews/) the device account to Seam. Then, confirm that the device supports access codes by checking its `can_program_online_access_codes` capability flag. +To create an Access Grant for a device, first [connect](../../core-concepts/connect-webviews/) the device account to Seam. Then, confirm that the device supports access codes by checking its `can_program_online_access_codes` capability flag. {% hint style="info" %} -You can try this entire flow in a [sandbox workspace](../../../core-concepts/workspaces/#sandbox-workspaces) using sandbox devices, such as the August sandbox locks. +You can try this entire flow in a [sandbox workspace](../../core-concepts/workspaces/#sandbox-workspaces) using sandbox devices, such as the August sandbox locks. {% endhint %} *** diff --git a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-entrances.md similarity index 97% rename from docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md rename to docs/guides/use-cases/granting-access/creating-an-access-grant-using-entrances.md index 948a63ea1..a0a38a012 100644 --- a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-entrances.md +++ b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-entrances.md @@ -11,7 +11,7 @@ An Access Grant defines the following characteristics: * User identity: The user to whom you want to grant access. * Entrances: The set of entrances or other access points to which you want to grant the user access. * Access schedule: The starting and ending times for access. -* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../../capability-guides/instant-keys/). +* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../capability-guides/instant-keys/). It is important to note that you can specify the set of entrances to which you want to grant access using the IDs of the entrances themselves. Alternately, before creating an Access Grant, you can organize sets of entrances into spaces. Then, when you create an Access Grant, you specify the IDs of the spaces to which you want to grant access. Seam grants the user access to all entrances included in these spaces. @@ -38,7 +38,7 @@ If you've created an Access Grant that includes an mobile key, the returned Acce ## Before You Begin -To create an Access Grant, first [connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. +To create an Access Grant, first [connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. *** diff --git a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-spaces.md similarity index 97% rename from docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md rename to docs/guides/use-cases/granting-access/creating-an-access-grant-using-spaces.md index 1e344a95f..fb312feef 100644 --- a/docs/guides/use-cases/granting-access/access-grants/creating-an-access-grant-using-spaces.md +++ b/docs/guides/use-cases/granting-access/creating-an-access-grant-using-spaces.md @@ -11,7 +11,7 @@ An Access Grant defines the following characteristics: * User identity: The user to whom you want to grant access. * Entrances or spaces: The sets of entrances or other access points to which you want to grant the user access. * Access schedule: The starting and ending times for access. -* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../../capability-guides/instant-keys/). +* Access methods: The modes of access, including key cards, PIN codes, mobile keys, and [Instant Keys](../../capability-guides/instant-keys/). Before creating an Access Grant, you can organize sets of entrances into [spaces](https://docs.seam.co/latest/api/spaces/). Then, when you create an Access Grant, you specify the IDs of the spaces to which you want to grant access. Seam grants the user access to all entrances included in these spaces. Alternately, you can specify the set of entrances to which you want to grant access using the IDs of the entrances themselves. @@ -38,7 +38,7 @@ If you've created an Access Grant that includes an mobile key, the returned Acce ## Before You Begin -To create an Access Grant, first [connect](../../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. +To create an Access Grant, first [connect](../../core-concepts/workspaces/#connecting-virtual-devices) an access system to Seam. You may also need to set up your access system and confirm that it has the required licenses. For details, see [Setting Up Your Site for Instant Keys](../../capability-guides/instant-keys/setting-up-your-site-for-instant-keys.md) and the [system integration guide](https://docs.seam.co/latest/device-and-system-integration-guides#access-control-systems) for your access system. Create one or more spaces to group the entrances to which you want to grant access. For details, see [Spaces](https://docs.seam.co/latest/api/spaces/) and [Create a Space](https://docs.seam.co/latest/api/spaces/create). diff --git a/docs/guides/use-cases/granting-access/access-grants/deleting-an-access-grant.md b/docs/guides/use-cases/granting-access/deleting-an-access-grant.md similarity index 100% rename from docs/guides/use-cases/granting-access/access-grants/deleting-an-access-grant.md rename to docs/guides/use-cases/granting-access/deleting-an-access-grant.md diff --git a/docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md b/docs/guides/use-cases/granting-access/delivering-access-methods.md similarity index 95% rename from docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md rename to docs/guides/use-cases/granting-access/delivering-access-methods.md index 5a772120a..b6991feb7 100644 --- a/docs/guides/use-cases/granting-access/access-grants/delivering-access-methods.md +++ b/docs/guides/use-cases/granting-access/delivering-access-methods.md @@ -179,7 +179,7 @@ $seam->access_methods->get( ## Plastic Key Cards -Some access systems require you to encode plastic key cards. In this case, the access method's `is_encoding_required` property is `true`. You can use the Seam API or Seam Console to encode and scan the cards. For details, see [Working with Card Encoders and Scanners](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/). +Some access systems require you to encode plastic key cards. In this case, the access method's `is_encoding_required` property is `true`. You can use the Seam API or Seam Console to encode and scan the cards. For details, see [Working with Card Encoders and Scanners](../../capability-guides/access-systems/working-with-card-encoders-and-scanners/). Once you've encoded the card, the access method's `is_encoding_required` property changes to `false`, and its `is_issued` property changes to `true`. The card is ready to be delivered to your user. @@ -187,7 +187,7 @@ Once you've encoded the card, the access method's `is_encoding_required` propert ## Mobile Keys -You deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a `client_session_id` property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see [Mobile Access](../../../capability-guides/mobile-access/). +You deliver a mobile key to your user within your own mobile app that you develop using the Seam mobile SDKs. For mobile keys, the access method includes a `client_session_id` property that you can use to identify the client session and client session token that you need to initialize the Seam client on your user's mobile device. Then, your user simply taps a button in your app to unlock the door. For details, see [Mobile Access](../../capability-guides/mobile-access/). {% tabs %} {% tab title="JavaScript" %} @@ -353,4 +353,4 @@ $seam->access_methods->get( ## Instant Keys -Each mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the `instant_key_url` property. You deliver this URL to your user by sending it through text or email. No app download is required. You can also embed an Instant Key in your own app. For details, see [Instant Keys](../../../capability-guides/instant-keys/) and [Delivering Instant Keys](../../../capability-guides/instant-keys/delivering-instant-keys.md). +Each mobile key that you create also includes an Instant Key. Seam Instant Keys are the most streamlined mobile access experience available today. Both the Access Grant and the mobile key access method include the `instant_key_url` property. You deliver this URL to your user by sending it through text or email. No app download is required. You can also embed an Instant Key in your own app. For details, see [Instant Keys](../../capability-guides/instant-keys/) and [Delivering Instant Keys](../../capability-guides/instant-keys/delivering-instant-keys.md). diff --git a/docs/guides/use-cases/granting-access/access-grants/reservation-access-grants.md b/docs/guides/use-cases/granting-access/reservation-access-grants.md similarity index 100% rename from docs/guides/use-cases/granting-access/access-grants/reservation-access-grants.md rename to docs/guides/use-cases/granting-access/reservation-access-grants.md diff --git a/docs/guides/use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md b/docs/guides/use-cases/granting-access/retrieving-access-grants-and-access-methods.md similarity index 100% rename from docs/guides/use-cases/granting-access/access-grants/retrieving-access-grants-and-access-methods.md rename to docs/guides/use-cases/granting-access/retrieving-access-grants-and-access-methods.md diff --git a/docs/guides/use-cases/granting-access/access-grants/revoking-an-access-method.md b/docs/guides/use-cases/granting-access/revoking-an-access-method.md similarity index 100% rename from docs/guides/use-cases/granting-access/access-grants/revoking-an-access-method.md rename to docs/guides/use-cases/granting-access/revoking-an-access-method.md diff --git a/docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md b/docs/guides/use-cases/granting-access/updating-an-access-grant.md similarity index 90% rename from docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md rename to docs/guides/use-cases/granting-access/updating-an-access-grant.md index 8a5c6fefc..cc57bc89a 100644 --- a/docs/guides/use-cases/granting-access/access-grants/updating-an-access-grant.md +++ b/docs/guides/use-cases/granting-access/updating-an-access-grant.md @@ -127,7 +127,7 @@ $seam->access_grants->update( ## Updating Cards -If you update an Access Grant that includes a card access method, the `access_method.card_encoding_required` event indicates that you must [re-encode the card](../../../capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md) using the same access method. After you re-encode the card, Seam emits an `access_method.reissued` event. +If you update an Access Grant that includes a card access method, the `access_method.card_encoding_required` event indicates that you must [re-encode the card](../../capability-guides/access-systems/working-with-card-encoders-and-scanners/creating-and-encoding-card-access-methods.md) using the same access method. After you re-encode the card, Seam emits an `access_method.reissued` event. You can also view the `is_encoding_required`, `is_issued`, and `issued_at` properties of the affected access method. From 25eb343165464fc781d864b2ec60672aede173a3 Mon Sep 17 00:00:00 2001 From: Sy Bohy Date: Fri, 5 Jun 2026 18:41:27 -0700 Subject: [PATCH 4/6] feat: multi-language tabs for the Granting Access lead example Per review: expand the opening JavaScript-only access_grants.create snippet into the full tab set (JavaScript, cURL, Python, Ruby, PHP, Seam CLI, C#), with syntax matching the generated API reference samples. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../use-cases/granting-access/README.md | 95 ++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/docs/guides/use-cases/granting-access/README.md b/docs/guides/use-cases/granting-access/README.md index 653425093..ad1349276 100644 --- a/docs/guides/use-cases/granting-access/README.md +++ b/docs/guides/use-cases/granting-access/README.md @@ -10,18 +10,111 @@ Use **Access Grants** to grant a person access to a physical space. Access Grant With one API call, you tell Seam *who* should have access, *where*, *when*, and *how*. Seam creates the credential, attaches it to a user identity, encodes the time window, propagates it to every relevant device, and re-materializes it as devices come online, get added to spaces, or change ownership. PIN codes, mobile keys, and plastic cards—all through the same request. +{% tabs %} +{% tab title="JavaScript" %} + ```javascript await seam.accessGrants.create({ user_identity: { full_name: "Jane Doe", email_address: "jane@example.com", }, - device_ids: [front_door_lock_id], + device_ids: ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"], requested_access_methods: [{ mode: "code" }], starts_at: "2025-07-13T15:00:00.000Z", ends_at: "2025-07-16T11:00:00.000Z", }); ``` +{% endtab %} + +{% tab title="cURL" %} + +```bash +curl --include --request POST "https://connect.getseam.com/access_grants/create" \ + --header "Authorization: Bearer $SEAM_API_KEY" \ + --json @- <access_grants->create( + user_identity: [ + "full_name" => "Jane Doe", + "email_address" => "jane@example.com", + ], + device_ids: ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"], + requested_access_methods: [ + ["mode" => "code"], + ], + starts_at: "2025-07-13T15:00:00.000Z", + ends_at: "2025-07-16T11:00:00.000Z", +); +``` +{% endtab %} + +{% tab title="Seam CLI" %} + +```bash +seam access-grants create --user_identity {"full_name":"Jane Doe","email_address":"jane@example.com"} --device_ids ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"] --requested_access_methods [{"mode":"code"}] --starts_at "2025-07-13T15:00:00.000Z" --ends_at "2025-07-16T11:00:00.000Z" +``` +{% endtab %} + +{% tab title="C#" %} + +```csharp +// Coming Soon! +``` +{% endtab %} +{% endtabs %} Access Grants work across the entire Seam provider lineup: From 2bc1fd5b74f8185009372862aa8f8aebec33dcb1 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Sat, 6 Jun 2026 01:42:12 +0000 Subject: [PATCH 5/6] ci: Format code --- .../use-cases/granting-access/README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/guides/use-cases/granting-access/README.md b/docs/guides/use-cases/granting-access/README.md index ad1349276..de6ba947a 100644 --- a/docs/guides/use-cases/granting-access/README.md +++ b/docs/guides/use-cases/granting-access/README.md @@ -13,6 +13,7 @@ With one API call, you tell Seam *who* should have access, *where*, *when*, and {% tabs %} {% tab title="JavaScript" %} + ```javascript await seam.accessGrants.create({ user_identity: { @@ -29,6 +30,7 @@ await seam.accessGrants.create({ {% tab title="cURL" %} + ```bash curl --include --request POST "https://connect.getseam.com/access_grants/create" \ --header "Authorization: Bearer $SEAM_API_KEY" \ @@ -53,6 +55,7 @@ EOF {% tab title="Python" %} + ```python seam.access_grants.create( user_identity={ @@ -69,6 +72,7 @@ seam.access_grants.create( {% tab title="Ruby" %} + ```ruby seam.access_grants.create( user_identity: { @@ -85,6 +89,7 @@ seam.access_grants.create( {% tab title="PHP" %} + ```php $seam->access_grants->create( user_identity: [ @@ -101,17 +106,19 @@ $seam->access_grants->create( ``` {% endtab %} -{% tab title="Seam CLI" %} +{% tab title="C#" %} -```bash -seam access-grants create --user_identity {"full_name":"Jane Doe","email_address":"jane@example.com"} --device_ids ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"] --requested_access_methods [{"mode":"code"}] --starts_at "2025-07-13T15:00:00.000Z" --ends_at "2025-07-16T11:00:00.000Z" + +```csharp +// Coming Soon! ``` {% endtab %} -{% tab title="C#" %} +{% tab title="Seam CLI" %} -```csharp -// Coming Soon! + +```bash +seam access-grants create --user_identity {"full_name":"Jane Doe","email_address":"jane@example.com"} --device_ids ["6ba7b811-9dad-11d1-80b4-00c04fd430c8"] --requested_access_methods [{"mode":"code"}] --starts_at "2025-07-13T15:00:00.000Z" --ends_at "2025-07-16T11:00:00.000Z" ``` {% endtab %} {% endtabs %} From 8aebeb2d0003266c100c6234a3fd6a43af31e336 Mon Sep 17 00:00:00 2001 From: Sy Bohy Date: Fri, 5 Jun 2026 18:56:53 -0700 Subject: [PATCH 6/6] fix: remove outdated spaces Alpha notices Spaces are no longer in Alpha. Remove the three Alpha/early-access notices from the Granting Access page. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/guides/use-cases/granting-access/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/guides/use-cases/granting-access/README.md b/docs/guides/use-cases/granting-access/README.md index de6ba947a..3fbbfc4a2 100644 --- a/docs/guides/use-cases/granting-access/README.md +++ b/docs/guides/use-cases/granting-access/README.md @@ -136,7 +136,7 @@ Access Grants work across the entire Seam provider lineup: We recommend learning Access Grants in three steps, from the simplest setup to the most advanced: 1. **One device.** Connect a smart lock and create an Access Grant with a single `device_id` and a `code` access method. See [Creating an Access Grant Using Devices](creating-an-access-grant-using-devices.md). -2. **Multiple devices and spaces.** Pass several `device_ids` in one call to grant access to a set of locks at once. To manage groups of access points by name—for example, everything a guest in Unit 101 needs—organize them into [spaces](creating-an-access-grant-using-spaces.md) and grant access by `space_id`. Note that spaces are currently in Alpha. +2. **Multiple devices and spaces.** Pass several `device_ids` in one call to grant access to a set of locks at once. To manage groups of access points by name—for example, everything a guest in Unit 101 needs—organize them into [spaces](creating-an-access-grant-using-spaces.md) and grant access by `space_id`. 3. **Access control systems.** Connect an ACS, such as Salto, Visionline, or Brivo, and grant access to entrances with `acs_entrance_ids`. This path can involve additional setup, such as licenses, on-premises connections through Seam Bridge, mobile key configuration, and [reservations](reservation-access-grants.md) for offline-override systems. See [Creating an Access Grant Using Entrances](creating-an-access-grant-using-entrances.md). *** @@ -145,7 +145,7 @@ We recommend learning Access Grants in three steps, from the simplest setup to t An Access Grant includes the following characteristics: -
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Wheredevice_ids, space_ids, or acs_entrance_idsThe access points to which to grant access. Specify one or more devices (such as standalone smart locks) by ID, one or more access system entrances by ID, or both. Alternately, you can define spaces (currently in Alpha and available as an early access preview) that contain groups of related devices and entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
+
CharacteristicCreation ParameterDescription
Whouser_identity_id or user_identityThe user to whom to grant access. You can either create a user identity separately and specify the ID to the Access Grant or create a new user identity as part of the Access Grant creation action.
Wheredevice_ids, space_ids, or acs_entrance_idsThe access points to which to grant access. Specify one or more devices (such as standalone smart locks) by ID, one or more access system entrances by ID, or both. Alternately, you can define spaces that contain groups of related devices and entrances and then specify one or more spaces by ID.
Whenstarts_at and ends_atThe access schedule.
Howrequested_access_methods and modeThe access methods that you want to grant for the user. In each requested_access_method, specify the desired mode of access, such as a PIN code, key card, or mobile key (with an Instant Key).
*** @@ -153,7 +153,7 @@ An Access Grant includes the following characteristics: The Access Grant process consists of the following steps: -
StepDescription
  1. Connect your devices or access system to Seam.
To connect your devices or access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process.
For standalone smart locks, this is all the setup you need.
For on-premises access systems, use Seam Bridge to connect the access system securely to Seam. For details, see Connect an Access System to Seam.
  1. (Access systems only) Set up your site.
If you are granting access to access system entrances, confirm hardware capabilities and make sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. (Optional) Set up spaces to organize access points into logical groups.
You can use spaces to create groups of devices and entrances for efficiency. For example, a user staying in Room 101 may need access to the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these access points and then use this space when creating an Access Grant.
For details, see spaces.
Note: Spaces are currently in Alpha. We're actively developing this feature and seeking early feedback at support@seam.co. Expect breaking changes as we refine the design.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of devices, entrances, or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Devices, Creating an Access Grant Using Spaces, and Creating an Access Grant Using Entrances.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as PIN code, plastic key card, or mobile key.

  • If you have created an Access Grant that includes a code access method, retrieve the access method to get the PIN code and share it with your user.
  • If you have created an Access Grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

+
StepDescription
  1. Connect your devices or access system to Seam.
To connect your devices or access system to Seam, we recommend embedding a Connect Webview in your application. The Connect Webview flow guides the property manager through each step of the connection process.
For standalone smart locks, this is all the setup you need.
For on-premises access systems, use Seam Bridge to connect the access system securely to Seam. For details, see Connect an Access System to Seam.
  1. (Access systems only) Set up your site.
If you are granting access to access system entrances, confirm hardware capabilities and make sure that you have the required licenses. For example, if you plan to use mobile keys or Instant Keys, your lock hardware must support Bluetooth Low Energy (BLE) keys. Also, to use mobile keys with your access system, you may need to purchase licenses or subscriptions to activate certain software features. These requirements vary by access system. For details, see Setting Up Your Site for Instant Keys and the system integration guide for your access system.
  1. (Optional) Set up spaces to organize access points into logical groups.
You can use spaces to create groups of devices and entrances for efficiency. For example, a user staying in Room 101 may need access to the Room 101 door, the main entrance door, and the nearest elevator. You could create a space that includes these access points and then use this space when creating an Access Grant.
For details, see spaces.
  1. Create a user identity.
User identities represent your users—the people to whom you want to grant access. You can create a user identity before creating an Access Grant, or you can create a user identity as part of creating the Access Grant.
See Managing Mobile App User Accounts with User Identities.
  1. Create an Access Grant.
When you create an Access Grant, you specify the user identity to whom you want to grant access, the access schedule, the set of devices, entrances, or spaces, and one or more access methods that you want to request.
See Creating an Access Grant Using Devices, Creating an Access Grant Using Spaces, and Creating an Access Grant Using Entrances.
You can poll for access method status changes or watch for Access Grant and access method lifecycle events that alert you to next steps, such as how and when to deliver each created access method to your user.
  1. Deliver the access method to the user.

Once Seam alerts you that your access methods are ready, deliver them to your user. Delivery steps depend on the mode of access, such as PIN code, plastic key card, or mobile key.

  • If you have created an Access Grant that includes a code access method, retrieve the access method to get the PIN code and share it with your user.
  • If you have created an Access Grant that includes a card access method, you may need to encode the card using the Seam encoders API.
  • If you have created an Access Grant that includes a mobile key, you can use the Seam mobile SDKs to develop your mobile app that delivers these mobile keys to your users.
  • Each mobile key also includes an Instant Key URL. To share this Instant Key with your user, send it through text or email or embed it in your own app.

See Delivering Access Methods.

***