diff --git a/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack016_DeliveryTokenTest.cs b/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack016_DeliveryTokenTest.cs index 21639eb..99aa20d 100644 --- a/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack016_DeliveryTokenTest.cs +++ b/Contentstack.Management.Core.Tests/IntegrationTest/Contentstack016_DeliveryTokenTest.cs @@ -7,11 +7,11 @@ using Contentstack.Management.Core.Tests.Model; using Contentstack.Management.Core.Queryable; using Microsoft.VisualStudio.TestTools.UnitTesting; -using Newtonsoft.Json.Linq; +using System.Text.Json.Nodes; +using System.Text.Json; using System.Security.Cryptography; using System.Net; using Contentstack.Management.Core.Exceptions; -using Newtonsoft.Json; using System.Threading; using System.Linq; @@ -107,10 +107,10 @@ public async Task Test001_Should_Create_Delivery_Token() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Create delivery token failed", "CreateDeliveryTokenSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); AssertLogger.AreEqual(_testTokenModel.Name, tokenData["name"]?.ToString(), "Token name should match", "TokenName"); AssertLogger.AreEqual(_testTokenModel.Description, tokenData["description"]?.ToString(), "Token description should match", "TokenDescription"); @@ -165,10 +165,10 @@ public async Task Test002_Should_Create_Delivery_Token_Async() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Async create delivery token failed", "AsyncCreateSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); AssertLogger.AreEqual(asyncTokenModel.Name, tokenData["name"]?.ToString(), "Token name should match", "AsyncTokenName"); @@ -204,10 +204,10 @@ public async Task Test003_Should_Fetch_Delivery_Token() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Fetch delivery token failed", "FetchSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.AreEqual(_deliveryTokenUid, tokenData["uid"]?.ToString(), "Token UID should match", "TokenUid"); AssertLogger.AreEqual(_testTokenModel.Name, tokenData["name"]?.ToString(), "Token name should match", "TokenName"); AssertLogger.IsNotNull(tokenData["token"], "Token should have access token"); @@ -236,10 +236,10 @@ public async Task Test004_Should_Fetch_Delivery_Token_Async() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Async fetch delivery token failed", "AsyncFetchSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.AreEqual(_deliveryTokenUid, tokenData["uid"]?.ToString(), "Token UID should match", "TokenUid"); AssertLogger.IsNotNull(tokenData["token"], "Token should have access token"); } @@ -293,10 +293,10 @@ public async Task Test005_Should_Update_Delivery_Token() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Update delivery token failed", "UpdateSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.AreEqual(_deliveryTokenUid, tokenData["uid"]?.ToString(), "Token UID should match", "TokenUid"); AssertLogger.AreEqual(updateModel.Name, tokenData["name"]?.ToString(), "Updated token name should match", "UpdatedTokenName"); AssertLogger.AreEqual(updateModel.Description, tokenData["description"]?.ToString(), "Updated token description should match", "UpdatedTokenDescription"); @@ -351,10 +351,10 @@ public async Task Test006_Should_Update_Delivery_Token_Async() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Async update delivery token failed", "AsyncUpdateSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["token"], "Response should contain token object"); - var tokenData = responseObject["token"] as JObject; + var tokenData = responseObject["token"] as JsonObject; AssertLogger.AreEqual(_deliveryTokenUid, tokenData["uid"]?.ToString(), "Token UID should match", "TokenUid"); AssertLogger.AreEqual(updateModel.Name, tokenData["name"]?.ToString(), "Updated token name should match", "UpdatedTokenName"); @@ -382,10 +382,10 @@ public async Task Test007_Should_Query_All_Delivery_Tokens() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Query delivery tokens failed", "QuerySuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["tokens"], "Response should contain tokens array"); - var tokens = responseObject["tokens"] as JArray; + var tokens = responseObject["tokens"] as JsonArray; AssertLogger.IsTrue(tokens.Count > 0, "Should have at least one delivery token", "TokensCountGreaterThanZero"); bool foundTestToken = false; @@ -428,10 +428,10 @@ public async Task Test008_Should_Query_Delivery_Tokens_With_Parameters() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Query delivery tokens with parameters failed", "QueryWithParamsSuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["tokens"], "Response should contain tokens array"); - var tokens = responseObject["tokens"] as JArray; + var tokens = responseObject["tokens"] as JsonArray; AssertLogger.IsTrue(tokens.Count <= 5, "Should respect limit parameter", "RespectLimitParam"); } @@ -483,14 +483,14 @@ public async Task Test009_Should_Create_Token_With_Multiple_Environments() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Create multi-environment delivery token failed", "MultiEnvCreateSuccess"); - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); string multiEnvTokenUid = tokenData["uid"]?.ToString(); TestOutputLogger.LogContext("MultiEnvTokenUid", multiEnvTokenUid ?? ""); - var scope = tokenData["scope"] as JArray; + var scope = tokenData["scope"] as JsonArray; AssertLogger.IsNotNull(scope, "Token should have scope"); AssertLogger.IsTrue(scope.Count > 0, "Token should have at least one scope", "ScopeCount"); @@ -546,15 +546,15 @@ public async Task Test011_Should_Create_Token_With_Complex_Scope() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Create complex scope delivery token failed", "ComplexScopeCreateSuccess"); - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); string complexScopeTokenUid = tokenData["uid"]?.ToString(); TestOutputLogger.LogContext("ComplexScopeTokenUid", complexScopeTokenUid ?? ""); // Verify multiple scopes - var scope = tokenData["scope"] as JArray; + var scope = tokenData["scope"] as JsonArray; AssertLogger.IsNotNull(scope, "Token should have scope"); AssertLogger.IsTrue(scope.Count >= 2, "Token should have multiple scopes", "ScopeCountMultiple"); @@ -610,13 +610,13 @@ public async Task Test012_Should_Create_Token_With_UI_Structure() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Create UI structure delivery token failed", "UIStructureCreateSuccess"); - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); AssertLogger.AreEqual(uiStructureTokenModel.Name, tokenData["name"]?.ToString(), "Token name should match", "UITokenName"); // Verify the scope structure matches UI format - var scope = tokenData["scope"] as JArray; + var scope = tokenData["scope"] as JsonArray; AssertLogger.IsNotNull(scope, "Token should have scope"); AssertLogger.IsTrue(scope.Count == 2, "Token should have 2 scope modules (environment and branch)", "UIScopeCount"); @@ -654,10 +654,10 @@ public async Task Test015_Should_Query_Delivery_Tokens_Async() AssertLogger.IsTrue(response.IsSuccessStatusCode, $"Async query delivery tokens failed: {response.OpenResponse()}", "AsyncQuerySuccess"); - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject["tokens"], "Response should contain tokens array"); - var tokens = responseObject["tokens"] as JArray; + var tokens = responseObject["tokens"] as JsonArray; AssertLogger.IsTrue(tokens.Count > 0, "Should have at least one delivery token", "AsyncTokensCount"); bool foundTestToken = false; @@ -717,8 +717,8 @@ public async Task Test016_Should_Create_Token_With_Empty_Description() AssertLogger.IsTrue(response.IsSuccessStatusCode, $"Create token with empty description failed: {response.OpenResponse()}", "EmptyDescCreateSuccess"); - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; AssertLogger.IsNotNull(tokenData["uid"], "Token should have UID"); AssertLogger.AreEqual(emptyDescTokenModel.Name, tokenData["name"]?.ToString(), "Token name should match", "EmptyDescTokenName"); @@ -947,8 +947,8 @@ public void Test023_Should_Accept_Create_With_Whitespace_Only_Name() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Should accept token with whitespace name"); // Get token UID for cleanup - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; string createdTokenUid = tokenData["uid"]?.ToString(); // Verify name contains whitespace @@ -999,8 +999,8 @@ public void Test025_Should_Accept_Create_With_Invalid_Name_Characters() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Should accept token with special characters"); // Get token UID for cleanup - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; string createdTokenUid = tokenData["uid"]?.ToString(); // Verify name contains special characters @@ -1690,7 +1690,7 @@ public void Test070_Should_Accept_Query_With_Negative_Limit() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Should accept query with negative limit"); // Server should return results even with negative limit - var tokens = response.OpenJObjectResponse()["tokens"]; + var tokens = response.OpenJsonObjectResponse()["tokens"]; AssertLogger.IsNotNull(tokens, "Should return tokens array"); } catch (ArgumentException ex) @@ -1735,7 +1735,7 @@ public void Test072_Should_Accept_Query_With_Excessive_Limit() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Should accept query with large limit"); // Server should return results even with excessive limit - var tokens = response.OpenJObjectResponse()["tokens"]; + var tokens = response.OpenJsonObjectResponse()["tokens"]; AssertLogger.IsNotNull(tokens, "Should return tokens array"); } catch (ArgumentException ex) @@ -1789,7 +1789,7 @@ public async Task Test074_Should_Accept_Query_With_Invalid_Parameters_Async() AssertLogger.IsTrue(response.IsSuccessStatusCode, "Should accept async query with negative limit"); // Server should return results even with negative limit - var tokens = response.OpenJObjectResponse()["tokens"]; + var tokens = response.OpenJsonObjectResponse()["tokens"]; AssertLogger.IsNotNull(tokens, "Should return tokens array"); } catch (ArgumentException ex) @@ -1912,8 +1912,8 @@ public async Task Test082_Should_Handle_Permission_Scenarios_Async() if (createResponse.IsSuccessStatusCode) { // Clean up the test token if created - var responseObject = createResponse.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = createResponse.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; string tokenUid = tokenData["uid"]?.ToString(); if (!string.IsNullOrEmpty(tokenUid)) @@ -2004,7 +2004,7 @@ public async Task Test091_Should_Handle_Large_Response_Data() if (response.IsSuccessStatusCode) { - var responseObject = response.OpenJObjectResponse(); + var responseObject = response.OpenJsonObjectResponse(); AssertLogger.IsNotNull(responseObject, "Response should be parseable even if large"); } } @@ -2176,7 +2176,7 @@ public async Task Cleanup() var tokensResponse = _stack.DeliveryToken().Query().Find(); if (tokensResponse.IsSuccessStatusCode) { - var tokens = tokensResponse.OpenJObjectResponse()["tokens"] as JArray; + var tokens = tokensResponse.OpenJsonObjectResponse()["tokens"] as JsonArray; if (tokens?.Count > 0) { foreach (var token in tokens) @@ -2229,7 +2229,7 @@ private async Task CleanupTestResources() var tokensResponse = _stack.DeliveryToken().Query().Find(); if (tokensResponse.IsSuccessStatusCode) { - var tokens = tokensResponse.OpenJObjectResponse()["tokens"] as JArray; + var tokens = tokensResponse.OpenJsonObjectResponse()["tokens"] as JsonArray; if (tokens?.Count > 0) { foreach (var token in tokens) @@ -2265,7 +2265,7 @@ private async Task CleanupTestResources() var environmentsResponse = _stack.Environment().Query().Find(); if (environmentsResponse.IsSuccessStatusCode) { - var environments = environmentsResponse.OpenJObjectResponse()["environments"] as JArray; + var environments = environmentsResponse.OpenJsonObjectResponse()["environments"] as JsonArray; if (environments?.Count > 0) { foreach (var env in environments) @@ -2592,8 +2592,8 @@ private async Task CreateTemporaryTokenForTesting(string baseName) if (response.IsSuccessStatusCode) { - var responseObject = response.OpenJObjectResponse(); - var tokenData = responseObject["token"] as JObject; + var responseObject = response.OpenJsonObjectResponse(); + var tokenData = responseObject["token"] as JsonObject; return tokenData["uid"]?.ToString(); } } @@ -2630,7 +2630,7 @@ private async Task CreateTestEnvironment(string environmentUid = null) response = _stack.Environment().Query().Find(); if (response.IsSuccessStatusCode) { - var environments = response.OpenJObjectResponse()["environments"] as JArray; + var environments = response.OpenJsonObjectResponse()["environments"] as JsonArray; if (environments?.Count > 0) { Console.WriteLine($"Test environment {envUid} already exists"); @@ -2664,7 +2664,7 @@ private async Task CleanupTestEnvironment(string environmentUid = null) if (queryResponse.IsSuccessStatusCode) { - var environments = queryResponse.OpenJObjectResponse()["environments"] as JArray; + var environments = queryResponse.OpenJsonObjectResponse()["environments"] as JsonArray; if (environments?.Count > 0) { // Find the environment with matching name diff --git a/Contentstack.Management.Core.Unit.Tests/Models/DeliveryTokenTest.cs b/Contentstack.Management.Core.Unit.Tests/Models/DeliveryTokenTest.cs index 40dd87c..88a36a9 100644 --- a/Contentstack.Management.Core.Unit.Tests/Models/DeliveryTokenTest.cs +++ b/Contentstack.Management.Core.Unit.Tests/Models/DeliveryTokenTest.cs @@ -55,7 +55,7 @@ public void Should_Create_DeliveryToken() { ContentstackResponse response = _stack.DeliveryToken().Create(_fixture.Create()); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -63,7 +63,7 @@ public async Task Should_Create_DeliveryToken_Async() { ContentstackResponse response = await _stack.DeliveryToken().CreateAsync(_fixture.Create()); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -71,7 +71,7 @@ public void Should_Query_DeliveryToken() { ContentstackResponse response = _stack.DeliveryToken().Query().Find(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -79,7 +79,7 @@ public async Task Should_Query_DeliveryToken_Async() { ContentstackResponse response = await _stack.DeliveryToken().Query().FindAsync(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -87,7 +87,7 @@ public void Should_Fetch_DeliveryToken() { ContentstackResponse response = _stack.DeliveryToken(_fixture.Create()).Fetch(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -95,7 +95,7 @@ public async Task Should_Fetch_DeliveryToken_Async() { ContentstackResponse response = await _stack.DeliveryToken(_fixture.Create()).FetchAsync(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -103,7 +103,7 @@ public void Should_Update_DeliveryToken() { ContentstackResponse response = _stack.DeliveryToken(_fixture.Create()).Update(_fixture.Create()); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -111,7 +111,7 @@ public async Task Should_Update_DeliveryToken_Async() { ContentstackResponse response = await _stack.DeliveryToken(_fixture.Create()).UpdateAsync(_fixture.Create()); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -119,7 +119,7 @@ public void Should_Delete_DeliveryToken() { ContentstackResponse response = _stack.DeliveryToken(_fixture.Create()).Delete(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } [TestMethod] @@ -127,7 +127,7 @@ public async Task Should_Delete_DeliveryToken_Async() { ContentstackResponse response = await _stack.DeliveryToken(_fixture.Create()).DeleteAsync(); Assert.AreEqual(_contentstackResponse.OpenResponse(), response.OpenResponse()); - Assert.AreEqual(_contentstackResponse.OpenJObjectResponse().ToString(), response.OpenJObjectResponse().ToString()); + Assert.AreEqual(_contentstackResponse.OpenJsonObjectResponse().ToString(), response.OpenJsonObjectResponse().ToString()); } } } diff --git a/Contentstack.Management.Core/Models/Token/DeliveryToken.cs b/Contentstack.Management.Core/Models/Token/DeliveryToken.cs index 75396ac..3840bb0 100644 --- a/Contentstack.Management.Core/Models/Token/DeliveryToken.cs +++ b/Contentstack.Management.Core/Models/Token/DeliveryToken.cs @@ -1,7 +1,6 @@ using System; using System.Threading.Tasks; using Contentstack.Management.Core.Queryable; -using Newtonsoft.Json.Linq; namespace Contentstack.Management.Core.Models.Token { diff --git a/Contentstack.Management.Core/Models/Token/DeliveryTokenModel.cs b/Contentstack.Management.Core/Models/Token/DeliveryTokenModel.cs index 4bc564c..763e0c1 100644 --- a/Contentstack.Management.Core/Models/Token/DeliveryTokenModel.cs +++ b/Contentstack.Management.Core/Models/Token/DeliveryTokenModel.cs @@ -1,50 +1,46 @@ -using System; + using System.Collections.Generic; -using Newtonsoft.Json; +using System.Text.Json.Serialization; namespace Contentstack.Management.Core.Models.Token { - [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class ManagementTokenModel { - [JsonProperty(propertyName: "name")] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty(propertyName: "description")] + [JsonPropertyName("description")] public string Description { get; set; } - [JsonProperty(propertyName: "Scope")] + [JsonPropertyName("Scope")] public List Scope { get; set; } - [JsonProperty(propertyName: "expires_on")] + [JsonPropertyName("expires_on")] public string ExpiresOn { get; set; } - [JsonProperty(propertyName: "is_email_notification_enabled")] + [JsonPropertyName("is_email_notification_enabled")] public bool IsEmailNotificationEnabled { get; set; } = false; } - [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class DeliveryTokenModel { - [JsonProperty(propertyName: "name")] + [JsonPropertyName("name")] public string Name { get; set; } - [JsonProperty(propertyName: "description")] + [JsonPropertyName("description")] public string Description { get; set; } - [JsonProperty(propertyName: "scope")] + [JsonPropertyName("scope")] public List Scope { get; set; } } - [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class DeliveryTokenScope: TokenScope { - [JsonProperty(propertyName: "environments")] + [JsonPropertyName("environments")] public List Environments { get; set; } } - [JsonObject(ItemNullValueHandling = NullValueHandling.Ignore)] public class TokenScope { - [JsonProperty(propertyName: "module")] + [JsonPropertyName("module")] public string Module { get; set; } - [JsonProperty(propertyName: "acl")] + [JsonPropertyName("acl")] public Dictionary ACL { get; set; } - [JsonProperty(propertyName: "branches")] + [JsonPropertyName("branches")] public List Branches { get; set; } } }