From d9b76df2ea5222b7c8c5b195bbb5764796078364 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 6 Aug 2026 02:00:39 +0000 Subject: [PATCH] fix: Guard against null response data instead of throwing NullReferenceException MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Generated API methods dereferenced ApiResponse.Data without checking for null. When a response deserializes to null — an empty or null JSON body, a non-JSON body on a 2xx/3xx status, or a RestSharp deserialization error captured on the response — callers got an opaque NullReferenceException with no HTTP diagnostics. Add ApiResponse.EnsureData(path), which returns the data or throws a SeamException carrying the request path, HTTP status code, response headers, and raw body, and update the codegen route template so every generated endpoint uses it. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_015Ck3swavz8q3cmv52MJ5DL --- codegen/layouts/partials/route-methods.hbs | 4 +- .../src/Seam.Test/Client/ApiResponseTests.cs | 50 +++++++++++++++++ output/csharp/src/Seam/Api/AccessCodes.cs | 34 +++++++----- output/csharp/src/Seam/Api/AccessGrants.cs | 27 ++++++---- output/csharp/src/Seam/Api/AccessGroupsAcs.cs | 20 ++++--- output/csharp/src/Seam/Api/AccessMethods.cs | 32 ++++++----- output/csharp/src/Seam/Api/ActionAttempts.cs | 10 ++-- output/csharp/src/Seam/Api/ClientSessions.cs | 20 ++++--- output/csharp/src/Seam/Api/ConnectWebviews.cs | 15 +++--- .../csharp/src/Seam/Api/ConnectedAccounts.cs | 10 ++-- output/csharp/src/Seam/Api/CredentialsAcs.cs | 20 ++++--- output/csharp/src/Seam/Api/Customers.cs | 5 +- .../src/Seam/Api/DailyProgramsThermostats.cs | 10 ++-- output/csharp/src/Seam/Api/Devices.cs | 21 +++++--- output/csharp/src/Seam/Api/EncodersAcs.cs | 29 ++++++---- output/csharp/src/Seam/Api/EntrancesAcs.cs | 22 +++++--- output/csharp/src/Seam/Api/Events.cs | 16 ++++-- output/csharp/src/Seam/Api/InstantKeys.cs | 14 +++-- output/csharp/src/Seam/Api/Locks.cs | 31 +++++++---- output/csharp/src/Seam/Api/NoiseSensors.cs | 7 ++- .../Seam/Api/NoiseThresholdsNoiseSensors.cs | 15 +++--- output/csharp/src/Seam/Api/Phones.cs | 16 ++++-- .../src/Seam/Api/SchedulesThermostats.cs | 15 +++--- .../src/Seam/Api/SimulateAccessCodes.cs | 5 +- output/csharp/src/Seam/Api/SimulateLocks.cs | 10 ++-- output/csharp/src/Seam/Api/SimulatePhones.cs | 5 +- output/csharp/src/Seam/Api/Spaces.cs | 37 +++++++++---- output/csharp/src/Seam/Api/SystemsAcs.cs | 19 ++++--- output/csharp/src/Seam/Api/Thermostats.cs | 53 ++++++++++++------- .../src/Seam/Api/UnmanagedAccessCodes.cs | 10 ++-- .../src/Seam/Api/UnmanagedAccessGrants.cs | 10 ++-- .../src/Seam/Api/UnmanagedAccessMethods.cs | 10 ++-- .../csharp/src/Seam/Api/UnmanagedDevices.cs | 14 +++-- .../src/Seam/Api/UnmanagedUserIdentities.cs | 10 ++-- output/csharp/src/Seam/Api/UserIdentities.cs | 40 ++++++++------ output/csharp/src/Seam/Api/UsersAcs.cs | 26 ++++++--- output/csharp/src/Seam/Api/Webhooks.cs | 21 +++++--- output/csharp/src/Seam/Api/Workspaces.cs | 26 ++++++--- output/csharp/src/Seam/Client/ApiResponse.cs | 30 +++++++++++ 39 files changed, 529 insertions(+), 240 deletions(-) create mode 100644 output/csharp/src/Seam.Test/Client/ApiResponseTests.cs diff --git a/codegen/layouts/partials/route-methods.hbs b/codegen/layouts/partials/route-methods.hbs index 9428f829..fc39be9f 100644 --- a/codegen/layouts/partials/route-methods.hbs +++ b/codegen/layouts/partials/route-methods.hbs @@ -6,7 +6,7 @@ requestOptions.Data = request; {{#if isVoid}} _seam.Post("{{path}}", requestOptions); {{else}} -return _seam.Post<{{responseTypeArg}}>("{{path}}", requestOptions).Data.{{returnProp}}; +return _seam.Post<{{responseTypeArg}}>("{{path}}", requestOptions).EnsureData("{{path}}").{{returnProp}}; {{/if}} } @@ -28,7 +28,7 @@ requestOptions.Data = request; {{#if isVoid}} await _seam.PostAsync("{{path}}", requestOptions); {{else}} -return (await _seam.PostAsync<{{responseTypeArg}}>("{{path}}", requestOptions)).Data.{{returnProp}}; +return (await _seam.PostAsync<{{responseTypeArg}}>("{{path}}", requestOptions)).EnsureData("{{path}}").{{returnProp}}; {{/if}} } diff --git a/output/csharp/src/Seam.Test/Client/ApiResponseTests.cs b/output/csharp/src/Seam.Test/Client/ApiResponseTests.cs new file mode 100644 index 00000000..819f9da6 --- /dev/null +++ b/output/csharp/src/Seam.Test/Client/ApiResponseTests.cs @@ -0,0 +1,50 @@ +namespace Seam.Test; + +using System.Net; +using Seam.Client; + +public class ApiResponseTests +{ + [Fact] + public void EnsureDataReturnsDataWhenPresent() + { + var data = new Api.Locks.ListResponse(devices: new List()); + var response = new ApiResponse(HttpStatusCode.OK, data, "{}"); + + Assert.Same(data, response.EnsureData("/locks/list")); + } + + [Fact] + public void EnsureDataThrowsSeamExceptionWhenDataIsNull() + { + var headers = new Multimap { { "seam-request-id", "req-123" } }; + var response = new ApiResponse( + HttpStatusCode.OK, + headers, + null!, + "unexpected body" + ); + + var exception = Assert.Throws(() => response.EnsureData("/locks/list")); + + Assert.Equal(200, exception.ErrorCode); + Assert.Contains("/locks/list", exception.Message); + Assert.Contains("HTTP 200", exception.Message); + Assert.Equal("unexpected body", exception.ErrorContent); + Assert.Equal(headers, exception.Headers); + } + + [Fact] + public void EnsureDataIncludesErrorTextInMessageWhenSet() + { + var response = new ApiResponse(HttpStatusCode.OK, null!, "not json") + { + ErrorText = "Error deserializing response", + }; + + var exception = Assert.Throws(() => response.EnsureData("/locks/list")); + + Assert.Contains("Error deserializing response", exception.Message); + Assert.Equal("not json", exception.ErrorContent); + } +} diff --git a/output/csharp/src/Seam/Api/AccessCodes.cs b/output/csharp/src/Seam/Api/AccessCodes.cs index e1eacbd1..5c8c0c0b 100644 --- a/output/csharp/src/Seam/Api/AccessCodes.cs +++ b/output/csharp/src/Seam/Api/AccessCodes.cs @@ -281,7 +281,8 @@ public AccessCode Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/access_codes/create", requestOptions) - .Data.AccessCode; + .EnsureData("/access_codes/create") + .AccessCode; } /// @@ -336,7 +337,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_codes/create", requestOptions)) - .Data + .EnsureData("/access_codes/create") .AccessCode; } @@ -620,7 +621,8 @@ public List CreateMultiple(CreateMultipleRequest request) requestOptions.Data = request; return _seam .Post("/access_codes/create_multiple", requestOptions) - .Data.AccessCodes; + .EnsureData("/access_codes/create_multiple") + .AccessCodes; } /// @@ -693,7 +695,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_codes/create_multiple") .AccessCodes; } @@ -915,7 +917,8 @@ public AccessCode GenerateCode(GenerateCodeRequest request) requestOptions.Data = request; return _seam .Post("/access_codes/generate_code", requestOptions) - .Data.GeneratedCode; + .EnsureData("/access_codes/generate_code") + .GeneratedCode; } /// @@ -939,7 +942,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_codes/generate_code") .GeneratedCode; } @@ -1055,7 +1058,10 @@ public AccessCode Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/access_codes/get", requestOptions).Data.AccessCode; + return _seam + .Post("/access_codes/get", requestOptions) + .EnsureData("/access_codes/get") + .AccessCode; } /// @@ -1082,7 +1088,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_codes/get", requestOptions)) - .Data + .EnsureData("/access_codes/get") .AccessCode; } @@ -1264,7 +1270,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/access_codes/list", requestOptions).Data.AccessCodes; + return _seam + .Post("/access_codes/list", requestOptions) + .EnsureData("/access_codes/list") + .AccessCodes; } /// @@ -1311,7 +1320,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_codes/list", requestOptions)) - .Data + .EnsureData("/access_codes/list") .AccessCodes; } @@ -1448,7 +1457,8 @@ public AccessCode PullBackupAccessCode(PullBackupAccessCodeRequest request) "/access_codes/pull_backup_access_code", requestOptions ) - .Data.AccessCode; + .EnsureData("/access_codes/pull_backup_access_code") + .AccessCode; } /// @@ -1490,7 +1500,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_codes/pull_backup_access_code") .AccessCode; } diff --git a/output/csharp/src/Seam/Api/AccessGrants.cs b/output/csharp/src/Seam/Api/AccessGrants.cs index 73729419..42922fc9 100644 --- a/output/csharp/src/Seam/Api/AccessGrants.cs +++ b/output/csharp/src/Seam/Api/AccessGrants.cs @@ -414,7 +414,8 @@ public AccessGrant Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/access_grants/create", requestOptions) - .Data.AccessGrant; + .EnsureData("/access_grants/create") + .AccessGrant; } /// @@ -467,7 +468,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_grants/create", requestOptions)) - .Data + .EnsureData("/access_grants/create") .AccessGrant; } @@ -682,7 +683,10 @@ public AccessGrant Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/access_grants/get", requestOptions).Data.AccessGrant; + return _seam + .Post("/access_grants/get", requestOptions) + .EnsureData("/access_grants/get") + .AccessGrant; } /// @@ -703,7 +707,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_grants/get", requestOptions)) - .Data + .EnsureData("/access_grants/get") .AccessGrant; } @@ -890,7 +894,8 @@ public Batch GetRelated(GetRelatedRequest request) requestOptions.Data = request; return _seam .Post("/access_grants/get_related", requestOptions) - .Data.Batch; + .EnsureData("/access_grants/get_related") + .Batch; } /// @@ -926,7 +931,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_grants/get_related") .Batch; } @@ -1134,7 +1139,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/access_grants/list", requestOptions) - .Data.AccessGrants; + .EnsureData("/access_grants/list") + .AccessGrants; } /// @@ -1183,7 +1189,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_grants/list", requestOptions)) - .Data + .EnsureData("/access_grants/list") .AccessGrants; } @@ -1412,7 +1418,8 @@ public AccessGrant RequestAccessMethods(RequestAccessMethodsRequest request) "/access_grants/request_access_methods", requestOptions ) - .Data.AccessGrant; + .EnsureData("/access_grants/request_access_methods") + .AccessGrant; } /// @@ -1446,7 +1453,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_grants/request_access_methods") .AccessGrant; } diff --git a/output/csharp/src/Seam/Api/AccessGroupsAcs.cs b/output/csharp/src/Seam/Api/AccessGroupsAcs.cs index 3e6ea48c..14876315 100644 --- a/output/csharp/src/Seam/Api/AccessGroupsAcs.cs +++ b/output/csharp/src/Seam/Api/AccessGroupsAcs.cs @@ -294,7 +294,8 @@ public AcsAccessGroup Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/acs/access_groups/get", requestOptions) - .Data.AcsAccessGroup; + .EnsureData("/acs/access_groups/get") + .AcsAccessGroup; } /// @@ -313,7 +314,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/access_groups/get", requestOptions)) - .Data + .EnsureData("/acs/access_groups/get") .AcsAccessGroup; } @@ -437,7 +438,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/acs/access_groups/list", requestOptions) - .Data.AcsAccessGroups; + .EnsureData("/acs/access_groups/list") + .AcsAccessGroups; } /// @@ -468,7 +470,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/access_groups/list", requestOptions)) - .Data + .EnsureData("/acs/access_groups/list") .AcsAccessGroups; } @@ -583,7 +585,8 @@ public List ListAccessibleEntrances(ListAccessibleEntrancesRequest "/acs/access_groups/list_accessible_entrances", requestOptions ) - .Data.AcsEntrances; + .EnsureData("/acs/access_groups/list_accessible_entrances") + .AcsEntrances; } /// @@ -611,7 +614,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/access_groups/list_accessible_entrances") .AcsEntrances; } @@ -715,7 +718,8 @@ public List ListUsers(ListUsersRequest request) requestOptions.Data = request; return _seam .Post("/acs/access_groups/list_users", requestOptions) - .Data.AcsUsers; + .EnsureData("/acs/access_groups/list_users") + .AcsUsers; } /// @@ -739,7 +743,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/access_groups/list_users") .AcsUsers; } diff --git a/output/csharp/src/Seam/Api/AccessMethods.cs b/output/csharp/src/Seam/Api/AccessMethods.cs index fbd6564e..1466f569 100644 --- a/output/csharp/src/Seam/Api/AccessMethods.cs +++ b/output/csharp/src/Seam/Api/AccessMethods.cs @@ -111,7 +111,8 @@ public ActionAttempt AssignCard(AssignCardRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/assign_card", requestOptions) - .Data.ActionAttempt; + .EnsureData("/access_methods/assign_card") + .ActionAttempt; } /// @@ -140,7 +141,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_methods/assign_card") .ActionAttempt; } @@ -366,7 +367,8 @@ public ActionAttempt Encode(EncodeRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/encode", requestOptions) - .Data.ActionAttempt; + .EnsureData("/access_methods/encode") + .ActionAttempt; } /// @@ -387,7 +389,7 @@ public async Task EncodeAsync(EncodeRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_methods/encode", requestOptions)) - .Data + .EnsureData("/access_methods/encode") .ActionAttempt; } @@ -490,7 +492,10 @@ public AccessMethod Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/access_methods/get", requestOptions).Data.AccessMethod; + return _seam + .Post("/access_methods/get", requestOptions) + .EnsureData("/access_methods/get") + .AccessMethod; } /// @@ -509,7 +514,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_methods/get", requestOptions)) - .Data + .EnsureData("/access_methods/get") .AccessMethod; } @@ -681,7 +686,8 @@ public Batch GetRelated(GetRelatedRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/get_related", requestOptions) - .Data.Batch; + .EnsureData("/access_methods/get_related") + .Batch; } /// @@ -715,7 +721,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_methods/get_related") .Batch; } @@ -867,7 +873,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/list", requestOptions) - .Data.AccessMethods; + .EnsureData("/access_methods/list") + .AccessMethods; } /// @@ -902,7 +909,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/access_methods/list", requestOptions)) - .Data + .EnsureData("/access_methods/list") .AccessMethods; } @@ -1028,7 +1035,8 @@ public ActionAttempt UnlockDoor(UnlockDoorRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/unlock_door", requestOptions) - .Data.ActionAttempt; + .EnsureData("/access_methods/unlock_door") + .ActionAttempt; } /// @@ -1057,7 +1065,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_methods/unlock_door") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/ActionAttempts.cs b/output/csharp/src/Seam/Api/ActionAttempts.cs index c60a03ca..07b7dfde 100644 --- a/output/csharp/src/Seam/Api/ActionAttempts.cs +++ b/output/csharp/src/Seam/Api/ActionAttempts.cs @@ -104,7 +104,8 @@ public ActionAttempt Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/action_attempts/get", requestOptions) - .Data.ActionAttempt; + .EnsureData("/action_attempts/get") + .ActionAttempt; } /// @@ -123,7 +124,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/action_attempts/get", requestOptions)) - .Data + .EnsureData("/action_attempts/get") .ActionAttempt; } @@ -247,7 +248,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/action_attempts/list", requestOptions) - .Data.ActionAttempts; + .EnsureData("/action_attempts/list") + .ActionAttempts; } /// @@ -278,7 +280,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/action_attempts/list", requestOptions)) - .Data + .EnsureData("/action_attempts/list") .ActionAttempts; } diff --git a/output/csharp/src/Seam/Api/ClientSessions.cs b/output/csharp/src/Seam/Api/ClientSessions.cs index 190f9b72..0716b364 100644 --- a/output/csharp/src/Seam/Api/ClientSessions.cs +++ b/output/csharp/src/Seam/Api/ClientSessions.cs @@ -167,7 +167,8 @@ public ClientSession Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/client_sessions/create", requestOptions) - .Data.ClientSession; + .EnsureData("/client_sessions/create") + .ClientSession; } /// @@ -208,7 +209,7 @@ public async Task CreateAsync(CreateRequest request) return ( await _seam.PostAsync("/client_sessions/create", requestOptions) ) - .Data + .EnsureData("/client_sessions/create") .ClientSession; } @@ -414,7 +415,8 @@ public ClientSession Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/client_sessions/get", requestOptions) - .Data.ClientSession; + .EnsureData("/client_sessions/get") + .ClientSession; } /// @@ -441,7 +443,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/client_sessions/get", requestOptions)) - .Data + .EnsureData("/client_sessions/get") .ClientSession; } @@ -596,7 +598,8 @@ public ClientSession GetOrCreate(GetOrCreateRequest request) requestOptions.Data = request; return _seam .Post("/client_sessions/get_or_create", requestOptions) - .Data.ClientSession; + .EnsureData("/client_sessions/get_or_create") + .ClientSession; } /// @@ -636,7 +639,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/client_sessions/get_or_create") .ClientSession; } @@ -945,7 +948,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/client_sessions/list", requestOptions) - .Data.ClientSessions; + .EnsureData("/client_sessions/list") + .ClientSessions; } /// @@ -978,7 +982,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/client_sessions/list", requestOptions)) - .Data + .EnsureData("/client_sessions/list") .ClientSessions; } diff --git a/output/csharp/src/Seam/Api/ConnectWebviews.cs b/output/csharp/src/Seam/Api/ConnectWebviews.cs index cda8810e..3968500d 100644 --- a/output/csharp/src/Seam/Api/ConnectWebviews.cs +++ b/output/csharp/src/Seam/Api/ConnectWebviews.cs @@ -470,7 +470,8 @@ public ConnectWebview Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/connect_webviews/create", requestOptions) - .Data.ConnectWebview; + .EnsureData("/connect_webviews/create") + .ConnectWebview; } /// @@ -527,7 +528,7 @@ public async Task CreateAsync(CreateRequest request) return ( await _seam.PostAsync("/connect_webviews/create", requestOptions) ) - .Data + .EnsureData("/connect_webviews/create") .ConnectWebview; } @@ -743,7 +744,8 @@ public ConnectWebview Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/connect_webviews/get", requestOptions) - .Data.ConnectWebview; + .EnsureData("/connect_webviews/get") + .ConnectWebview; } /// @@ -766,7 +768,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/connect_webviews/get", requestOptions)) - .Data + .EnsureData("/connect_webviews/get") .ConnectWebview; } @@ -908,7 +910,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/connect_webviews/list", requestOptions) - .Data.ConnectWebviews; + .EnsureData("/connect_webviews/list") + .ConnectWebviews; } /// @@ -943,7 +946,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/connect_webviews/list", requestOptions)) - .Data + .EnsureData("/connect_webviews/list") .ConnectWebviews; } diff --git a/output/csharp/src/Seam/Api/ConnectedAccounts.cs b/output/csharp/src/Seam/Api/ConnectedAccounts.cs index 94b55395..487b9b6b 100644 --- a/output/csharp/src/Seam/Api/ConnectedAccounts.cs +++ b/output/csharp/src/Seam/Api/ConnectedAccounts.cs @@ -207,7 +207,8 @@ public ConnectedAccount Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/connected_accounts/get", requestOptions) - .Data.ConnectedAccount; + .EnsureData("/connected_accounts/get") + .ConnectedAccount; } /// @@ -226,7 +227,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/connected_accounts/get", requestOptions)) - .Data + .EnsureData("/connected_accounts/get") .ConnectedAccount; } @@ -379,7 +380,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/connected_accounts/list", requestOptions) - .Data.ConnectedAccounts; + .EnsureData("/connected_accounts/list") + .ConnectedAccounts; } /// @@ -416,7 +418,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/connected_accounts/list", requestOptions)) - .Data + .EnsureData("/connected_accounts/list") .ConnectedAccounts; } diff --git a/output/csharp/src/Seam/Api/CredentialsAcs.cs b/output/csharp/src/Seam/Api/CredentialsAcs.cs index 73ef2f54..acfc308e 100644 --- a/output/csharp/src/Seam/Api/CredentialsAcs.cs +++ b/output/csharp/src/Seam/Api/CredentialsAcs.cs @@ -544,7 +544,8 @@ public AcsCredential Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/acs/credentials/create", requestOptions) - .Data.AcsCredential; + .EnsureData("/acs/credentials/create") + .AcsCredential; } /// @@ -595,7 +596,7 @@ public async Task CreateAsync(CreateRequest request) return ( await _seam.PostAsync("/acs/credentials/create", requestOptions) ) - .Data + .EnsureData("/acs/credentials/create") .AcsCredential; } @@ -801,7 +802,8 @@ public AcsCredential Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/acs/credentials/get", requestOptions) - .Data.AcsCredential; + .EnsureData("/acs/credentials/get") + .AcsCredential; } /// @@ -820,7 +822,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/credentials/get", requestOptions)) - .Data + .EnsureData("/acs/credentials/get") .AcsCredential; } @@ -980,7 +982,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/acs/credentials/list", requestOptions) - .Data.AcsCredentials; + .EnsureData("/acs/credentials/list") + .AcsCredentials; } /// @@ -1019,7 +1022,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/credentials/list", requestOptions)) - .Data + .EnsureData("/acs/credentials/list") .AcsCredentials; } @@ -1142,7 +1145,8 @@ public List ListAccessibleEntrances(ListAccessibleEntrancesRequest "/acs/credentials/list_accessible_entrances", requestOptions ) - .Data.AcsEntrances; + .EnsureData("/acs/credentials/list_accessible_entrances") + .AcsEntrances; } /// @@ -1170,7 +1174,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/credentials/list_accessible_entrances") .AcsEntrances; } diff --git a/output/csharp/src/Seam/Api/Customers.cs b/output/csharp/src/Seam/Api/Customers.cs index c354134e..d4bbb2ea 100644 --- a/output/csharp/src/Seam/Api/Customers.cs +++ b/output/csharp/src/Seam/Api/Customers.cs @@ -2793,7 +2793,8 @@ public CustomerPortal CreatePortal(CreatePortalRequest request) requestOptions.Data = request; return _seam .Post("/customers/create_portal", requestOptions) - .Data.CustomerPortal; + .EnsureData("/customers/create_portal") + .CustomerPortal; } /// @@ -2839,7 +2840,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/customers/create_portal") .CustomerPortal; } diff --git a/output/csharp/src/Seam/Api/DailyProgramsThermostats.cs b/output/csharp/src/Seam/Api/DailyProgramsThermostats.cs index 19e62c54..35bca746 100644 --- a/output/csharp/src/Seam/Api/DailyProgramsThermostats.cs +++ b/output/csharp/src/Seam/Api/DailyProgramsThermostats.cs @@ -173,7 +173,8 @@ public ThermostatDailyProgram Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/daily_programs/create", requestOptions) - .Data.ThermostatDailyProgram; + .EnsureData("/thermostats/daily_programs/create") + .ThermostatDailyProgram; } /// @@ -201,7 +202,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/daily_programs/create") .ThermostatDailyProgram; } @@ -458,7 +459,8 @@ public ActionAttempt Update(UpdateRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/daily_programs/update", requestOptions) - .Data.ActionAttempt; + .EnsureData("/thermostats/daily_programs/update") + .ActionAttempt; } /// @@ -492,7 +494,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/daily_programs/update") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/Devices.cs b/output/csharp/src/Seam/Api/Devices.cs index 377e53b0..b2391688 100644 --- a/output/csharp/src/Seam/Api/Devices.cs +++ b/output/csharp/src/Seam/Api/Devices.cs @@ -111,7 +111,10 @@ public Device Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/devices/get", requestOptions).Data.Device; + return _seam + .Post("/devices/get", requestOptions) + .EnsureData("/devices/get") + .Device; } /// @@ -133,7 +136,9 @@ public async Task GetAsync(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return (await _seam.PostAsync("/devices/get", requestOptions)).Data.Device; + return (await _seam.PostAsync("/devices/get", requestOptions)) + .EnsureData("/devices/get") + .Device; } /// @@ -788,7 +793,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/devices/list", requestOptions).Data.Devices; + return _seam + .Post("/devices/list", requestOptions) + .EnsureData("/devices/list") + .Devices; } /// @@ -843,7 +851,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/devices/list", requestOptions)) - .Data + .EnsureData("/devices/list") .Devices; } @@ -1019,7 +1027,8 @@ public List ListDeviceProviders(ListDeviceProvidersRequest reque requestOptions.Data = request; return _seam .Post("/devices/list_device_providers", requestOptions) - .Data.DeviceProviders; + .EnsureData("/devices/list_device_providers") + .DeviceProviders; } /// @@ -1057,7 +1066,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/devices/list_device_providers") .DeviceProviders; } diff --git a/output/csharp/src/Seam/Api/EncodersAcs.cs b/output/csharp/src/Seam/Api/EncodersAcs.cs index a9e408f2..17754d70 100644 --- a/output/csharp/src/Seam/Api/EncodersAcs.cs +++ b/output/csharp/src/Seam/Api/EncodersAcs.cs @@ -122,7 +122,8 @@ public ActionAttempt EncodeCredential(EncodeCredentialRequest request) requestOptions.Data = request; return _seam .Post("/acs/encoders/encode_credential", requestOptions) - .Data.ActionAttempt; + .EnsureData("/acs/encoders/encode_credential") + .ActionAttempt; } /// @@ -156,7 +157,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/encoders/encode_credential") .ActionAttempt; } @@ -264,7 +265,10 @@ public AcsEncoder Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/encoders/get", requestOptions).Data.AcsEncoder; + return _seam + .Post("/acs/encoders/get", requestOptions) + .EnsureData("/acs/encoders/get") + .AcsEncoder; } /// @@ -283,7 +287,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/encoders/get", requestOptions)) - .Data + .EnsureData("/acs/encoders/get") .AcsEncoder; } @@ -413,7 +417,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/encoders/list", requestOptions).Data.AcsEncoders; + return _seam + .Post("/acs/encoders/list", requestOptions) + .EnsureData("/acs/encoders/list") + .AcsEncoders; } /// @@ -446,7 +453,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/encoders/list", requestOptions)) - .Data + .EnsureData("/acs/encoders/list") .AcsEncoders; } @@ -607,7 +614,8 @@ public ActionAttempt ScanCredential(ScanCredentialRequest request) requestOptions.Data = request; return _seam .Post("/acs/encoders/scan_credential", requestOptions) - .Data.ActionAttempt; + .EnsureData("/acs/encoders/scan_credential") + .ActionAttempt; } /// @@ -639,7 +647,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/encoders/scan_credential") .ActionAttempt; } @@ -813,7 +821,8 @@ public ActionAttempt ScanToAssignCredential(ScanToAssignCredentialRequest reques "/acs/encoders/scan_to_assign_credential", requestOptions ) - .Data.ActionAttempt; + .EnsureData("/acs/encoders/scan_to_assign_credential") + .ActionAttempt; } /// @@ -851,7 +860,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/encoders/scan_to_assign_credential") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/EntrancesAcs.cs b/output/csharp/src/Seam/Api/EntrancesAcs.cs index c35ddcf7..4ac086e6 100644 --- a/output/csharp/src/Seam/Api/EntrancesAcs.cs +++ b/output/csharp/src/Seam/Api/EntrancesAcs.cs @@ -102,7 +102,10 @@ public AcsEntrance Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/entrances/get", requestOptions).Data.AcsEntrance; + return _seam + .Post("/acs/entrances/get", requestOptions) + .EnsureData("/acs/entrances/get") + .AcsEntrance; } /// @@ -121,7 +124,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/entrances/get", requestOptions)) - .Data + .EnsureData("/acs/entrances/get") .AcsEntrance; } @@ -409,7 +412,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/acs/entrances/list", requestOptions) - .Data.AcsEntrances; + .EnsureData("/acs/entrances/list") + .AcsEntrances; } /// @@ -452,7 +456,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/entrances/list", requestOptions)) - .Data + .EnsureData("/acs/entrances/list") .AcsEntrances; } @@ -604,7 +608,8 @@ ListCredentialsWithAccessRequest request "/acs/entrances/list_credentials_with_access", requestOptions ) - .Data.AcsCredentials; + .EnsureData("/acs/entrances/list_credentials_with_access") + .AcsCredentials; } /// @@ -638,7 +643,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/entrances/list_credentials_with_access") .AcsCredentials; } @@ -753,7 +758,8 @@ public ActionAttempt Unlock(UnlockRequest request) requestOptions.Data = request; return _seam .Post("/acs/entrances/unlock", requestOptions) - .Data.ActionAttempt; + .EnsureData("/acs/entrances/unlock") + .ActionAttempt; } /// @@ -777,7 +783,7 @@ public async Task UnlockAsync(UnlockRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/entrances/unlock", requestOptions)) - .Data + .EnsureData("/acs/entrances/unlock") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/Events.cs b/output/csharp/src/Seam/Api/Events.cs index 8fdc602a..d5c6f515 100644 --- a/output/csharp/src/Seam/Api/Events.cs +++ b/output/csharp/src/Seam/Api/Events.cs @@ -120,7 +120,10 @@ public Event Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/events/get", requestOptions).Data.Event; + return _seam + .Post("/events/get", requestOptions) + .EnsureData("/events/get") + .Event; } /// @@ -142,7 +145,9 @@ public async Task GetAsync(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return (await _seam.PostAsync("/events/get", requestOptions)).Data.Event; + return (await _seam.PostAsync("/events/get", requestOptions)) + .EnsureData("/events/get") + .Event; } /// @@ -1167,7 +1172,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/events/list", requestOptions).Data.Events; + return _seam + .Post("/events/list", requestOptions) + .EnsureData("/events/list") + .Events; } /// @@ -1246,7 +1254,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/events/list", requestOptions)) - .Data + .EnsureData("/events/list") .Events; } diff --git a/output/csharp/src/Seam/Api/InstantKeys.cs b/output/csharp/src/Seam/Api/InstantKeys.cs index 380c9c35..8000208d 100644 --- a/output/csharp/src/Seam/Api/InstantKeys.cs +++ b/output/csharp/src/Seam/Api/InstantKeys.cs @@ -185,7 +185,10 @@ public InstantKey Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/instant_keys/get", requestOptions).Data.InstantKey; + return _seam + .Post("/instant_keys/get", requestOptions) + .EnsureData("/instant_keys/get") + .InstantKey; } /// @@ -204,7 +207,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/instant_keys/get", requestOptions)) - .Data + .EnsureData("/instant_keys/get") .InstantKey; } @@ -307,7 +310,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/instant_keys/list", requestOptions).Data.InstantKeys; + return _seam + .Post("/instant_keys/list", requestOptions) + .EnsureData("/instant_keys/list") + .InstantKeys; } /// @@ -326,7 +332,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/instant_keys/list", requestOptions)) - .Data + .EnsureData("/instant_keys/list") .InstantKeys; } diff --git a/output/csharp/src/Seam/Api/Locks.cs b/output/csharp/src/Seam/Api/Locks.cs index 488ea094..c4f33e8c 100644 --- a/output/csharp/src/Seam/Api/Locks.cs +++ b/output/csharp/src/Seam/Api/Locks.cs @@ -126,7 +126,8 @@ public ActionAttempt ConfigureAutoLock(ConfigureAutoLockRequest request) requestOptions.Data = request; return _seam .Post("/locks/configure_auto_lock", requestOptions) - .Data.ActionAttempt; + .EnsureData("/locks/configure_auto_lock") + .ActionAttempt; } /// @@ -160,7 +161,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/locks/configure_auto_lock") .ActionAttempt; } @@ -277,7 +278,10 @@ public Device Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/locks/get", requestOptions).Data.Device; + return _seam + .Post("/locks/get", requestOptions) + .EnsureData("/locks/get") + .Device; } /// @@ -297,7 +301,9 @@ public async Task GetAsync(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return (await _seam.PostAsync("/locks/get", requestOptions)).Data.Device; + return (await _seam.PostAsync("/locks/get", requestOptions)) + .EnsureData("/locks/get") + .Device; } /// @@ -822,7 +828,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/locks/list", requestOptions).Data.Devices; + return _seam + .Post("/locks/list", requestOptions) + .EnsureData("/locks/list") + .Devices; } /// @@ -877,7 +886,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/locks/list", requestOptions)) - .Data + .EnsureData("/locks/list") .Devices; } @@ -1013,7 +1022,8 @@ public ActionAttempt LockDoor(LockDoorRequest request) requestOptions.Data = request; return _seam .Post("/locks/lock_door", requestOptions) - .Data.ActionAttempt; + .EnsureData("/locks/lock_door") + .ActionAttempt; } /// @@ -1032,7 +1042,7 @@ public async Task LockDoorAsync(LockDoorRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/locks/lock_door", requestOptions)) - .Data + .EnsureData("/locks/lock_door") .ActionAttempt; } @@ -1130,7 +1140,8 @@ public ActionAttempt UnlockDoor(UnlockDoorRequest request) requestOptions.Data = request; return _seam .Post("/locks/unlock_door", requestOptions) - .Data.ActionAttempt; + .EnsureData("/locks/unlock_door") + .ActionAttempt; } /// @@ -1149,7 +1160,7 @@ public async Task UnlockDoorAsync(UnlockDoorRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/locks/unlock_door", requestOptions)) - .Data + .EnsureData("/locks/unlock_door") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/NoiseSensors.cs b/output/csharp/src/Seam/Api/NoiseSensors.cs index 69872570..35d9bdb3 100644 --- a/output/csharp/src/Seam/Api/NoiseSensors.cs +++ b/output/csharp/src/Seam/Api/NoiseSensors.cs @@ -282,7 +282,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/noise_sensors/list", requestOptions).Data.Devices; + return _seam + .Post("/noise_sensors/list", requestOptions) + .EnsureData("/noise_sensors/list") + .Devices; } /// @@ -337,7 +340,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/noise_sensors/list", requestOptions)) - .Data + .EnsureData("/noise_sensors/list") .Devices; } diff --git a/output/csharp/src/Seam/Api/NoiseThresholdsNoiseSensors.cs b/output/csharp/src/Seam/Api/NoiseThresholdsNoiseSensors.cs index 791750f6..df53fc50 100644 --- a/output/csharp/src/Seam/Api/NoiseThresholdsNoiseSensors.cs +++ b/output/csharp/src/Seam/Api/NoiseThresholdsNoiseSensors.cs @@ -150,7 +150,8 @@ public NoiseThreshold Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/noise_sensors/noise_thresholds/create", requestOptions) - .Data.NoiseThreshold; + .EnsureData("/noise_sensors/noise_thresholds/create") + .NoiseThreshold; } /// @@ -190,7 +191,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/noise_sensors/noise_thresholds/create") .NoiseThreshold; } @@ -391,7 +392,8 @@ public NoiseThreshold Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/noise_sensors/noise_thresholds/get", requestOptions) - .Data.NoiseThreshold; + .EnsureData("/noise_sensors/noise_thresholds/get") + .NoiseThreshold; } /// @@ -415,7 +417,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/noise_sensors/noise_thresholds/get") .NoiseThreshold; } @@ -513,7 +515,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/noise_sensors/noise_thresholds/list", requestOptions) - .Data.NoiseThresholds; + .EnsureData("/noise_sensors/noise_thresholds/list") + .NoiseThresholds; } /// @@ -537,7 +540,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/noise_sensors/noise_thresholds/list") .NoiseThresholds; } diff --git a/output/csharp/src/Seam/Api/Phones.cs b/output/csharp/src/Seam/Api/Phones.cs index 2a146d07..bd328773 100644 --- a/output/csharp/src/Seam/Api/Phones.cs +++ b/output/csharp/src/Seam/Api/Phones.cs @@ -178,7 +178,10 @@ public Phone Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/phones/get", requestOptions).Data.Phone; + return _seam + .Post("/phones/get", requestOptions) + .EnsureData("/phones/get") + .Phone; } /// @@ -196,7 +199,9 @@ public async Task GetAsync(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return (await _seam.PostAsync("/phones/get", requestOptions)).Data.Phone; + return (await _seam.PostAsync("/phones/get", requestOptions)) + .EnsureData("/phones/get") + .Phone; } /// @@ -305,7 +310,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/phones/list", requestOptions).Data.Phones; + return _seam + .Post("/phones/list", requestOptions) + .EnsureData("/phones/list") + .Phones; } /// @@ -332,7 +340,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/phones/list", requestOptions)) - .Data + .EnsureData("/phones/list") .Phones; } diff --git a/output/csharp/src/Seam/Api/SchedulesThermostats.cs b/output/csharp/src/Seam/Api/SchedulesThermostats.cs index bcec4ea6..4ece4255 100644 --- a/output/csharp/src/Seam/Api/SchedulesThermostats.cs +++ b/output/csharp/src/Seam/Api/SchedulesThermostats.cs @@ -158,7 +158,8 @@ public ThermostatSchedule Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/schedules/create", requestOptions) - .Data.ThermostatSchedule; + .EnsureData("/thermostats/schedules/create") + .ThermostatSchedule; } /// @@ -200,7 +201,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/schedules/create") .ThermostatSchedule; } @@ -402,7 +403,8 @@ public ThermostatSchedule Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/schedules/get", requestOptions) - .Data.ThermostatSchedule; + .EnsureData("/thermostats/schedules/get") + .ThermostatSchedule; } /// @@ -423,7 +425,7 @@ public async Task GetAsync(GetRequest request) return ( await _seam.PostAsync("/thermostats/schedules/get", requestOptions) ) - .Data + .EnsureData("/thermostats/schedules/get") .ThermostatSchedule; } @@ -532,7 +534,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/schedules/list", requestOptions) - .Data.ThermostatSchedules; + .EnsureData("/thermostats/schedules/list") + .ThermostatSchedules; } /// @@ -556,7 +559,7 @@ public async Task> ListAsync(ListRequest request) return ( await _seam.PostAsync("/thermostats/schedules/list", requestOptions) ) - .Data + .EnsureData("/thermostats/schedules/list") .ThermostatSchedules; } diff --git a/output/csharp/src/Seam/Api/SimulateAccessCodes.cs b/output/csharp/src/Seam/Api/SimulateAccessCodes.cs index 689b8949..69e82178 100644 --- a/output/csharp/src/Seam/Api/SimulateAccessCodes.cs +++ b/output/csharp/src/Seam/Api/SimulateAccessCodes.cs @@ -127,7 +127,8 @@ CreateUnmanagedAccessCodeRequest request "/access_codes/simulate/create_unmanaged_access_code", requestOptions ) - .Data.AccessCode; + .EnsureData("/access_codes/simulate/create_unmanaged_access_code") + .AccessCode; } /// @@ -159,7 +160,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_codes/simulate/create_unmanaged_access_code") .AccessCode; } diff --git a/output/csharp/src/Seam/Api/SimulateLocks.cs b/output/csharp/src/Seam/Api/SimulateLocks.cs index fe06d4c3..6178d28c 100644 --- a/output/csharp/src/Seam/Api/SimulateLocks.cs +++ b/output/csharp/src/Seam/Api/SimulateLocks.cs @@ -111,7 +111,8 @@ public ActionAttempt KeypadCodeEntry(KeypadCodeEntryRequest request) requestOptions.Data = request; return _seam .Post("/locks/simulate/keypad_code_entry", requestOptions) - .Data.ActionAttempt; + .EnsureData("/locks/simulate/keypad_code_entry") + .ActionAttempt; } /// @@ -135,7 +136,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/locks/simulate/keypad_code_entry") .ActionAttempt; } @@ -243,7 +244,8 @@ public ActionAttempt ManualLockViaKeypad(ManualLockViaKeypadRequest request) "/locks/simulate/manual_lock_via_keypad", requestOptions ) - .Data.ActionAttempt; + .EnsureData("/locks/simulate/manual_lock_via_keypad") + .ActionAttempt; } /// @@ -269,7 +271,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/locks/simulate/manual_lock_via_keypad") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/SimulatePhones.cs b/output/csharp/src/Seam/Api/SimulatePhones.cs index efc17746..3c19dba5 100644 --- a/output/csharp/src/Seam/Api/SimulatePhones.cs +++ b/output/csharp/src/Seam/Api/SimulatePhones.cs @@ -300,7 +300,8 @@ public Phone CreateSandboxPhone(CreateSandboxPhoneRequest request) "/phones/simulate/create_sandbox_phone", requestOptions ) - .Data.Phone; + .EnsureData("/phones/simulate/create_sandbox_phone") + .Phone; } /// @@ -336,7 +337,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/phones/simulate/create_sandbox_phone") .Phone; } diff --git a/output/csharp/src/Seam/Api/Spaces.cs b/output/csharp/src/Seam/Api/Spaces.cs index 82e75356..6f986d80 100644 --- a/output/csharp/src/Seam/Api/Spaces.cs +++ b/output/csharp/src/Seam/Api/Spaces.cs @@ -508,7 +508,10 @@ public Space Create(CreateRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/spaces/create", requestOptions).Data.Space; + return _seam + .Post("/spaces/create", requestOptions) + .EnsureData("/spaces/create") + .Space; } /// @@ -545,7 +548,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/spaces/create", requestOptions)) - .Data + .EnsureData("/spaces/create") .Space; } @@ -744,7 +747,10 @@ public Space Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/spaces/get", requestOptions).Data.Space; + return _seam + .Post("/spaces/get", requestOptions) + .EnsureData("/spaces/get") + .Space; } /// @@ -762,7 +768,9 @@ public async Task GetAsync(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return (await _seam.PostAsync("/spaces/get", requestOptions)).Data.Space; + return (await _seam.PostAsync("/spaces/get", requestOptions)) + .EnsureData("/spaces/get") + .Space; } /// @@ -927,7 +935,10 @@ public Batch GetRelated(GetRelatedRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/spaces/get_related", requestOptions).Data.Batch; + return _seam + .Post("/spaces/get_related", requestOptions) + .EnsureData("/spaces/get_related") + .Batch; } /// @@ -960,7 +971,7 @@ public async Task GetRelatedAsync(GetRelatedRequest request) return ( await _seam.PostAsync("/spaces/get_related", requestOptions) ) - .Data + .EnsureData("/spaces/get_related") .Batch; } @@ -1104,7 +1115,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/spaces/list", requestOptions).Data.Spaces; + return _seam + .Post("/spaces/list", requestOptions) + .EnsureData("/spaces/list") + .Spaces; } /// @@ -1137,7 +1151,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/spaces/list", requestOptions)) - .Data + .EnsureData("/spaces/list") .Spaces; } @@ -1648,7 +1662,10 @@ public Space Update(UpdateRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/spaces/update", requestOptions).Data.Space; + return _seam + .Post("/spaces/update", requestOptions) + .EnsureData("/spaces/update") + .Space; } /// @@ -1683,7 +1700,7 @@ public async Task UpdateAsync(UpdateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/spaces/update", requestOptions)) - .Data + .EnsureData("/spaces/update") .Space; } diff --git a/output/csharp/src/Seam/Api/SystemsAcs.cs b/output/csharp/src/Seam/Api/SystemsAcs.cs index 3b407599..51aa4bf6 100644 --- a/output/csharp/src/Seam/Api/SystemsAcs.cs +++ b/output/csharp/src/Seam/Api/SystemsAcs.cs @@ -102,7 +102,10 @@ public AcsSystem Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/systems/get", requestOptions).Data.AcsSystem; + return _seam + .Post("/acs/systems/get", requestOptions) + .EnsureData("/acs/systems/get") + .AcsSystem; } /// @@ -121,7 +124,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/systems/get", requestOptions)) - .Data + .EnsureData("/acs/systems/get") .AcsSystem; } @@ -241,7 +244,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/systems/list", requestOptions).Data.AcsSystems; + return _seam + .Post("/acs/systems/list", requestOptions) + .EnsureData("/acs/systems/list") + .AcsSystems; } /// @@ -274,7 +280,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/systems/list", requestOptions)) - .Data + .EnsureData("/acs/systems/list") .AcsSystems; } @@ -395,7 +401,8 @@ ListCompatibleCredentialManagerAcsSystemsRequest request "/acs/systems/list_compatible_credential_manager_acs_systems", requestOptions ) - .Data.AcsSystems; + .EnsureData("/acs/systems/list_compatible_credential_manager_acs_systems") + .AcsSystems; } /// @@ -429,7 +436,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/systems/list_compatible_credential_manager_acs_systems") .AcsSystems; } diff --git a/output/csharp/src/Seam/Api/Thermostats.cs b/output/csharp/src/Seam/Api/Thermostats.cs index 0059abd8..848637a9 100644 --- a/output/csharp/src/Seam/Api/Thermostats.cs +++ b/output/csharp/src/Seam/Api/Thermostats.cs @@ -117,7 +117,8 @@ public ActionAttempt ActivateClimatePreset(ActivateClimatePresetRequest request) "/thermostats/activate_climate_preset", requestOptions ) - .Data.ActionAttempt; + .EnsureData("/thermostats/activate_climate_preset") + .ActionAttempt; } /// @@ -151,7 +152,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/activate_climate_preset") .ActionAttempt; } @@ -283,7 +284,10 @@ public ActionAttempt Cool(CoolRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/thermostats/cool", requestOptions).Data.ActionAttempt; + return _seam + .Post("/thermostats/cool", requestOptions) + .EnsureData("/thermostats/cool") + .ActionAttempt; } /// @@ -312,7 +316,7 @@ public async Task CoolAsync(CoolRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/thermostats/cool", requestOptions)) - .Data + .EnsureData("/thermostats/cool") .ActionAttempt; } @@ -934,7 +938,10 @@ public ActionAttempt Heat(HeatRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/thermostats/heat", requestOptions).Data.ActionAttempt; + return _seam + .Post("/thermostats/heat", requestOptions) + .EnsureData("/thermostats/heat") + .ActionAttempt; } /// @@ -963,7 +970,7 @@ public async Task HeatAsync(HeatRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/thermostats/heat", requestOptions)) - .Data + .EnsureData("/thermostats/heat") .ActionAttempt; } @@ -1123,7 +1130,8 @@ public ActionAttempt HeatCool(HeatCoolRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/heat_cool", requestOptions) - .Data.ActionAttempt; + .EnsureData("/thermostats/heat_cool") + .ActionAttempt; } /// @@ -1158,7 +1166,7 @@ public async Task HeatCoolAsync(HeatCoolRequest request) return ( await _seam.PostAsync("/thermostats/heat_cool", requestOptions) ) - .Data + .EnsureData("/thermostats/heat_cool") .ActionAttempt; } @@ -1486,7 +1494,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/thermostats/list", requestOptions).Data.Devices; + return _seam + .Post("/thermostats/list", requestOptions) + .EnsureData("/thermostats/list") + .Devices; } /// @@ -1541,7 +1552,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/thermostats/list", requestOptions)) - .Data + .EnsureData("/thermostats/list") .Devices; } @@ -1675,7 +1686,10 @@ public ActionAttempt Off(OffRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/thermostats/off", requestOptions).Data.ActionAttempt; + return _seam + .Post("/thermostats/off", requestOptions) + .EnsureData("/thermostats/off") + .ActionAttempt; } /// @@ -1694,7 +1708,7 @@ public async Task OffAsync(OffRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/thermostats/off", requestOptions)) - .Data + .EnsureData("/thermostats/off") .ActionAttempt; } @@ -1954,7 +1968,8 @@ public ActionAttempt SetFanMode(SetFanModeRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/set_fan_mode", requestOptions) - .Data.ActionAttempt; + .EnsureData("/thermostats/set_fan_mode") + .ActionAttempt; } /// @@ -1988,7 +2003,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/set_fan_mode") .ActionAttempt; } @@ -2175,7 +2190,8 @@ public ActionAttempt SetHvacMode(SetHvacModeRequest request) requestOptions.Data = request; return _seam .Post("/thermostats/set_hvac_mode", requestOptions) - .Data.ActionAttempt; + .EnsureData("/thermostats/set_hvac_mode") + .ActionAttempt; } /// @@ -2215,7 +2231,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/set_hvac_mode") .ActionAttempt; } @@ -2928,7 +2944,8 @@ public ActionAttempt UpdateWeeklyProgram(UpdateWeeklyProgramRequest request) "/thermostats/update_weekly_program", requestOptions ) - .Data.ActionAttempt; + .EnsureData("/thermostats/update_weekly_program") + .ActionAttempt; } /// @@ -2974,7 +2991,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/thermostats/update_weekly_program") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Api/UnmanagedAccessCodes.cs b/output/csharp/src/Seam/Api/UnmanagedAccessCodes.cs index 236f52fc..ba19f7fa 100644 --- a/output/csharp/src/Seam/Api/UnmanagedAccessCodes.cs +++ b/output/csharp/src/Seam/Api/UnmanagedAccessCodes.cs @@ -353,7 +353,8 @@ public UnmanagedAccessCode Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/access_codes/unmanaged/get", requestOptions) - .Data.AccessCode; + .EnsureData("/access_codes/unmanaged/get") + .AccessCode; } /// @@ -382,7 +383,7 @@ public async Task GetAsync(GetRequest request) return ( await _seam.PostAsync("/access_codes/unmanaged/get", requestOptions) ) - .Data + .EnsureData("/access_codes/unmanaged/get") .AccessCode; } @@ -524,7 +525,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/access_codes/unmanaged/list", requestOptions) - .Data.AccessCodes; + .EnsureData("/access_codes/unmanaged/list") + .AccessCodes; } /// @@ -559,7 +561,7 @@ public async Task> ListAsync(ListRequest request) return ( await _seam.PostAsync("/access_codes/unmanaged/list", requestOptions) ) - .Data + .EnsureData("/access_codes/unmanaged/list") .AccessCodes; } diff --git a/output/csharp/src/Seam/Api/UnmanagedAccessGrants.cs b/output/csharp/src/Seam/Api/UnmanagedAccessGrants.cs index 7eba7c94..a75d560b 100644 --- a/output/csharp/src/Seam/Api/UnmanagedAccessGrants.cs +++ b/output/csharp/src/Seam/Api/UnmanagedAccessGrants.cs @@ -104,7 +104,8 @@ public AccessGrant Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/access_grants/unmanaged/get", requestOptions) - .Data.AccessGrant; + .EnsureData("/access_grants/unmanaged/get") + .AccessGrant; } /// @@ -125,7 +126,7 @@ public async Task GetAsync(GetRequest request) return ( await _seam.PostAsync("/access_grants/unmanaged/get", requestOptions) ) - .Data + .EnsureData("/access_grants/unmanaged/get") .AccessGrant; } @@ -265,7 +266,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/access_grants/unmanaged/list", requestOptions) - .Data.AccessGrants; + .EnsureData("/access_grants/unmanaged/list") + .AccessGrants; } /// @@ -302,7 +304,7 @@ public async Task> ListAsync(ListRequest request) return ( await _seam.PostAsync("/access_grants/unmanaged/list", requestOptions) ) - .Data + .EnsureData("/access_grants/unmanaged/list") .AccessGrants; } diff --git a/output/csharp/src/Seam/Api/UnmanagedAccessMethods.cs b/output/csharp/src/Seam/Api/UnmanagedAccessMethods.cs index 43ac67b0..c91704f5 100644 --- a/output/csharp/src/Seam/Api/UnmanagedAccessMethods.cs +++ b/output/csharp/src/Seam/Api/UnmanagedAccessMethods.cs @@ -104,7 +104,8 @@ public AccessMethod Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/unmanaged/get", requestOptions) - .Data.AccessMethod; + .EnsureData("/access_methods/unmanaged/get") + .AccessMethod; } /// @@ -125,7 +126,7 @@ public async Task GetAsync(GetRequest request) return ( await _seam.PostAsync("/access_methods/unmanaged/get", requestOptions) ) - .Data + .EnsureData("/access_methods/unmanaged/get") .AccessMethod; } @@ -249,7 +250,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/access_methods/unmanaged/list", requestOptions) - .Data.AccessMethods; + .EnsureData("/access_methods/unmanaged/list") + .AccessMethods; } /// @@ -285,7 +287,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/access_methods/unmanaged/list") .AccessMethods; } diff --git a/output/csharp/src/Seam/Api/UnmanagedDevices.cs b/output/csharp/src/Seam/Api/UnmanagedDevices.cs index 445d2cec..ffbd1e3b 100644 --- a/output/csharp/src/Seam/Api/UnmanagedDevices.cs +++ b/output/csharp/src/Seam/Api/UnmanagedDevices.cs @@ -113,7 +113,10 @@ public UnmanagedDevice Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/devices/unmanaged/get", requestOptions).Data.Device; + return _seam + .Post("/devices/unmanaged/get", requestOptions) + .EnsureData("/devices/unmanaged/get") + .Device; } /// @@ -140,7 +143,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/devices/unmanaged/get", requestOptions)) - .Data + .EnsureData("/devices/unmanaged/get") .Device; } @@ -803,7 +806,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/devices/unmanaged/list", requestOptions).Data.Devices; + return _seam + .Post("/devices/unmanaged/list", requestOptions) + .EnsureData("/devices/unmanaged/list") + .Devices; } /// @@ -862,7 +868,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/devices/unmanaged/list", requestOptions)) - .Data + .EnsureData("/devices/unmanaged/list") .Devices; } diff --git a/output/csharp/src/Seam/Api/UnmanagedUserIdentities.cs b/output/csharp/src/Seam/Api/UnmanagedUserIdentities.cs index 3cb314cd..5ce049a3 100644 --- a/output/csharp/src/Seam/Api/UnmanagedUserIdentities.cs +++ b/output/csharp/src/Seam/Api/UnmanagedUserIdentities.cs @@ -104,7 +104,8 @@ public UserIdentity Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/unmanaged/get", requestOptions) - .Data.UserIdentity; + .EnsureData("/user_identities/unmanaged/get") + .UserIdentity; } /// @@ -125,7 +126,7 @@ public async Task GetAsync(GetRequest request) return ( await _seam.PostAsync("/user_identities/unmanaged/get", requestOptions) ) - .Data + .EnsureData("/user_identities/unmanaged/get") .UserIdentity; } @@ -249,7 +250,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/unmanaged/list", requestOptions) - .Data.UserIdentities; + .EnsureData("/user_identities/unmanaged/list") + .UserIdentities; } /// @@ -285,7 +287,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/unmanaged/list") .UserIdentities; } diff --git a/output/csharp/src/Seam/Api/UserIdentities.cs b/output/csharp/src/Seam/Api/UserIdentities.cs index ba65fe09..6a10a1f9 100644 --- a/output/csharp/src/Seam/Api/UserIdentities.cs +++ b/output/csharp/src/Seam/Api/UserIdentities.cs @@ -268,7 +268,8 @@ public UserIdentity Create(CreateRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/create", requestOptions) - .Data.UserIdentity; + .EnsureData("/user_identities/create") + .UserIdentity; } /// @@ -303,7 +304,7 @@ public async Task CreateAsync(CreateRequest request) return ( await _seam.PostAsync("/user_identities/create", requestOptions) ) - .Data + .EnsureData("/user_identities/create") .UserIdentity; } @@ -515,7 +516,8 @@ public InstantKey GenerateInstantKey(GenerateInstantKeyRequest request) "/user_identities/generate_instant_key", requestOptions ) - .Data.InstantKey; + .EnsureData("/user_identities/generate_instant_key") + .InstantKey; } /// @@ -549,7 +551,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/generate_instant_key") .InstantKey; } @@ -663,7 +665,8 @@ public UserIdentity Get(GetRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/get", requestOptions) - .Data.UserIdentity; + .EnsureData("/user_identities/get") + .UserIdentity; } /// @@ -684,7 +687,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/user_identities/get", requestOptions)) - .Data + .EnsureData("/user_identities/get") .UserIdentity; } @@ -931,7 +934,8 @@ public List List(ListRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/list", requestOptions) - .Data.UserIdentities; + .EnsureData("/user_identities/list") + .UserIdentities; } /// @@ -966,7 +970,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/user_identities/list", requestOptions)) - .Data + .EnsureData("/user_identities/list") .UserIdentities; } @@ -1085,7 +1089,8 @@ public List ListAccessibleDevices(ListAccessibleDevicesRequest request) "/user_identities/list_accessible_devices", requestOptions ) - .Data.Devices; + .EnsureData("/user_identities/list_accessible_devices") + .Devices; } /// @@ -1113,7 +1118,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/list_accessible_devices") .Devices; } @@ -1218,7 +1223,8 @@ public List ListAccessibleEntrances(ListAccessibleEntrancesRequest "/user_identities/list_accessible_entrances", requestOptions ) - .Data.AcsEntrances; + .EnsureData("/user_identities/list_accessible_entrances") + .AcsEntrances; } /// @@ -1246,7 +1252,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/list_accessible_entrances") .AcsEntrances; } @@ -1350,7 +1356,8 @@ public List ListAcsSystems(ListAcsSystemsRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/list_acs_systems", requestOptions) - .Data.AcsSystems; + .EnsureData("/user_identities/list_acs_systems") + .AcsSystems; } /// @@ -1374,7 +1381,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/list_acs_systems") .AcsSystems; } @@ -1474,7 +1481,8 @@ public List ListAcsUsers(ListAcsUsersRequest request) requestOptions.Data = request; return _seam .Post("/user_identities/list_acs_users", requestOptions) - .Data.AcsUsers; + .EnsureData("/user_identities/list_acs_users") + .AcsUsers; } /// @@ -1498,7 +1506,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/user_identities/list_acs_users") .AcsUsers; } diff --git a/output/csharp/src/Seam/Api/UsersAcs.cs b/output/csharp/src/Seam/Api/UsersAcs.cs index 409e3d80..65c054e0 100644 --- a/output/csharp/src/Seam/Api/UsersAcs.cs +++ b/output/csharp/src/Seam/Api/UsersAcs.cs @@ -305,7 +305,10 @@ public AcsUser Create(CreateRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/users/create", requestOptions).Data.AcsUser; + return _seam + .Post("/acs/users/create", requestOptions) + .EnsureData("/acs/users/create") + .AcsUser; } /// @@ -344,7 +347,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/users/create", requestOptions)) - .Data + .EnsureData("/acs/users/create") .AcsUser; } @@ -594,7 +597,10 @@ public AcsUser Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/users/get", requestOptions).Data.AcsUser; + return _seam + .Post("/acs/users/get", requestOptions) + .EnsureData("/acs/users/get") + .AcsUser; } /// @@ -623,7 +629,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/users/get", requestOptions)) - .Data + .EnsureData("/acs/users/get") .AcsUser; } @@ -797,7 +803,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/acs/users/list", requestOptions).Data.AcsUsers; + return _seam + .Post("/acs/users/list", requestOptions) + .EnsureData("/acs/users/list") + .AcsUsers; } /// @@ -836,7 +845,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/acs/users/list", requestOptions)) - .Data + .EnsureData("/acs/users/list") .AcsUsers; } @@ -977,7 +986,8 @@ public List ListAccessibleEntrances(ListAccessibleEntrancesRequest "/acs/users/list_accessible_entrances", requestOptions ) - .Data.AcsEntrances; + .EnsureData("/acs/users/list_accessible_entrances") + .AcsEntrances; } /// @@ -1013,7 +1023,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/acs/users/list_accessible_entrances") .AcsEntrances; } diff --git a/output/csharp/src/Seam/Api/Webhooks.cs b/output/csharp/src/Seam/Api/Webhooks.cs index 146bf8f2..aeb7a785 100644 --- a/output/csharp/src/Seam/Api/Webhooks.cs +++ b/output/csharp/src/Seam/Api/Webhooks.cs @@ -109,7 +109,10 @@ public Webhook Create(CreateRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/webhooks/create", requestOptions).Data.Webhook; + return _seam + .Post("/webhooks/create", requestOptions) + .EnsureData("/webhooks/create") + .Webhook; } /// @@ -128,7 +131,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/webhooks/create", requestOptions)) - .Data + .EnsureData("/webhooks/create") .Webhook; } @@ -303,7 +306,10 @@ public Webhook Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/webhooks/get", requestOptions).Data.Webhook; + return _seam + .Post("/webhooks/get", requestOptions) + .EnsureData("/webhooks/get") + .Webhook; } /// @@ -322,7 +328,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/webhooks/get", requestOptions)) - .Data + .EnsureData("/webhooks/get") .Webhook; } @@ -407,7 +413,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/webhooks/list", requestOptions).Data.Webhooks; + return _seam + .Post("/webhooks/list", requestOptions) + .EnsureData("/webhooks/list") + .Webhooks; } /// @@ -426,7 +435,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/webhooks/list", requestOptions)) - .Data + .EnsureData("/webhooks/list") .Webhooks; } diff --git a/output/csharp/src/Seam/Api/Workspaces.cs b/output/csharp/src/Seam/Api/Workspaces.cs index f5516391..30430427 100644 --- a/output/csharp/src/Seam/Api/Workspaces.cs +++ b/output/csharp/src/Seam/Api/Workspaces.cs @@ -291,7 +291,10 @@ public Workspace Create(CreateRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/workspaces/create", requestOptions).Data.Workspace; + return _seam + .Post("/workspaces/create", requestOptions) + .EnsureData("/workspaces/create") + .Workspace; } /// @@ -334,7 +337,7 @@ public async Task CreateAsync(CreateRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/workspaces/create", requestOptions)) - .Data + .EnsureData("/workspaces/create") .Workspace; } @@ -445,7 +448,10 @@ public Workspace Get(GetRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/workspaces/get", requestOptions).Data.Workspace; + return _seam + .Post("/workspaces/get", requestOptions) + .EnsureData("/workspaces/get") + .Workspace; } /// @@ -464,7 +470,7 @@ public async Task GetAsync(GetRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/workspaces/get", requestOptions)) - .Data + .EnsureData("/workspaces/get") .Workspace; } @@ -549,7 +555,10 @@ public List List(ListRequest request) { var requestOptions = new RequestOptions(); requestOptions.Data = request; - return _seam.Post("/workspaces/list", requestOptions).Data.Workspaces; + return _seam + .Post("/workspaces/list", requestOptions) + .EnsureData("/workspaces/list") + .Workspaces; } /// @@ -568,7 +577,7 @@ public async Task> ListAsync(ListRequest request) var requestOptions = new RequestOptions(); requestOptions.Data = request; return (await _seam.PostAsync("/workspaces/list", requestOptions)) - .Data + .EnsureData("/workspaces/list") .Workspaces; } @@ -655,7 +664,8 @@ public ActionAttempt ResetSandbox(ResetSandboxRequest request) requestOptions.Data = request; return _seam .Post("/workspaces/reset_sandbox", requestOptions) - .Data.ActionAttempt; + .EnsureData("/workspaces/reset_sandbox") + .ActionAttempt; } /// @@ -679,7 +689,7 @@ await _seam.PostAsync( requestOptions ) ) - .Data + .EnsureData("/workspaces/reset_sandbox") .ActionAttempt; } diff --git a/output/csharp/src/Seam/Client/ApiResponse.cs b/output/csharp/src/Seam/Client/ApiResponse.cs index e90c1e26..f29fe4cc 100644 --- a/output/csharp/src/Seam/Client/ApiResponse.cs +++ b/output/csharp/src/Seam/Client/ApiResponse.cs @@ -155,5 +155,35 @@ public ApiResponse(HttpStatusCode statusCode, T data) : this(statusCode, data, null) { } #endregion Constructors + + #region Methods + + /// + /// Returns the deserialized response data, or throws a + /// carrying the HTTP status code, headers, and raw response body when the body is + /// missing or could not be deserialized into . + /// + /// The request path, used in the exception message. + /// The deserialized response data. + /// Thrown when the response data is null. + public T EnsureData(string path) + { + if (Data != null) + { + return Data; + } + + var reason = string.IsNullOrEmpty(ErrorText) + ? "the response body is missing or could not be deserialized" + : ErrorText; + throw new SeamException( + (int)StatusCode, + string.Format("Error calling {0} (HTTP {1}): {2}", path, (int)StatusCode, reason), + RawContent, + Headers + ); + } + + #endregion Methods } }