From 3ef76fa1e878943f5f528405344158cbe9e3fa96 Mon Sep 17 00:00:00 2001 From: Auston Bunsen Date: Fri, 8 May 2026 16:39:34 -0400 Subject: [PATCH] Add Console.PublishTemplateAsync for POST /v1/console/card-templates/{id}/publish --- AccessGridTest/ConsoleServiceTests.cs | 26 ++++++++++++++++++++++++++ README.md | 22 ++++++++++++++++++++++ src/AccessGrid/ConsoleService.cs | 11 +++++++++++ src/AccessGrid/Models.cs | 12 ++++++++++++ 4 files changed, 71 insertions(+) diff --git a/AccessGridTest/ConsoleServiceTests.cs b/AccessGridTest/ConsoleServiceTests.cs index 1e76c5c..bc86fbd 100644 --- a/AccessGridTest/ConsoleServiceTests.cs +++ b/AccessGridTest/ConsoleServiceTests.cs @@ -300,6 +300,32 @@ public async Task CreateTemplateAsync_SendsFlatDesignAndSupportParams() #endregion + #region PublishTemplateAsync + + [Test] + public async Task PublishTemplateAsync_PostsToPublishEndpointAndReturnsStatus() + { + var json = """ + { + "id": "tmpl-123", + "status": "in-review" + } + """; + StubHttpResponse(json); + + var result = await _client.Console.PublishTemplateAsync("tmpl-123"); + + Assert.That(result.Id, Is.EqualTo("tmpl-123")); + Assert.That(result.Status, Is.EqualTo("in-review")); + + _mockHttpClient.Verify(x => x.SendAsync(It.Is(req => + req.Method == HttpMethod.Post && + req.RequestUri!.ToString().Contains("/v1/console/card-templates/tmpl-123/publish") + )), Times.Once); + } + + #endregion + #region UpdateTemplateAsync [Test] diff --git a/README.md b/README.md index a51fddf..ec3432a 100644 --- a/README.md +++ b/README.md @@ -319,6 +319,27 @@ public async Task ReadTemplateAsync() } ``` +### Publishing a Card Template + +```csharp +using AccessGrid; +using System; +using System.Threading.Tasks; + +public async Task PublishTemplateAsync() +{ + var accountId = Environment.GetEnvironmentVariable("ACCOUNT_ID"); + var secretKey = Environment.GetEnvironmentVariable("SECRET_KEY"); + + using var client = new AccessGridClient(accountId, secretKey); + + var result = await client.Console.PublishTemplateAsync("0xd3adb00b5"); + + Console.WriteLine($"Template ID: {result.Id}"); + Console.WriteLine($"Status: {result.Status}"); +} +``` + ### Reading Event Logs ```csharp @@ -1069,6 +1090,7 @@ public class AccessCardsApiTests | POST /v1/console/card-templates | `Console.CreateTemplateAsync()` | Y | | PUT /v1/console/card-templates/{id} | `Console.UpdateTemplateAsync()` | Y | | GET /v1/console/card-templates/{id} | `Console.ReadTemplateAsync()` | Y | +| POST /v1/console/card-templates/{id}/publish | `Console.PublishTemplateAsync()` | Y | | GET /v1/console/card-templates/{id}/logs | `Console.EventLogAsync()` | Y | | GET /v1/console/card-template-pairs | `Console.ListPassTemplatePairsAsync()` | Y | | POST /v1/console/card-template-pairs | `Console.CreatePassTemplatePairAsync()` | Y | diff --git a/src/AccessGrid/ConsoleService.cs b/src/AccessGrid/ConsoleService.cs index e06a128..c573aeb 100644 --- a/src/AccessGrid/ConsoleService.cs +++ b/src/AccessGrid/ConsoleService.cs @@ -66,6 +66,17 @@ public async Task