Release 3.0.0: modernize the build and add the full management API#80
Open
bartes wants to merge 7 commits into
Open
Release 3.0.0: modernize the build and add the full management API#80bartes wants to merge 7 commits into
bartes wants to merge 7 commits into
Conversation
- Target net10.0, net8.0, netstandard2.0 and net48; drop net461 and netcoreapp3.1. - Remove the Sentry dependency; resolve platform info via RuntimeInformation. - Bump Newtonsoft.Json to 13.0.3 and modernize the test stack. - Multi-target the test project (net48;net8.0;net10.0), guard Core vs System.Web test files by framework, and add a real net48 FromHttpRequest(HttpRequestBase) test. - Replace AppVeyor and CircleCI with GitHub Actions (Windows test+pack, Linux test, dotnet format lint); add .editorconfig.
- Use cross-framework APIs in tests so the net48 build compiles: char Split, ToDictionary instead of the Dictionary(IEnumerable) ctor, and Cast<Match>() on MatchCollection. - Remove the dotnet format CI job (keep .editorconfig); a repo-wide format pass is better handled separately.
…nupkg - Add bin/fetch-nupkg.sh: download the nupkg artifact built by the Test workflow's Windows job, selecting the run by release tag, commit SHA, or branch; pass --push to publish it to NuGet (key via NUGET_API_KEY). - Keep the top-level bin/ tracked in .gitignore while build-output bin/ dirs stay ignored. - Document fetching and publishing the package in RELEASING.md.
…ve legacy endpoints (3.0.0) Adds the Lists, List items, Privacy and Events (enterprise) API surface to CastleClient, plus Castle.Webhook.Verify for X-Castle-Signature validation. Removes the legacy Authenticate/Track endpoints, device management, impersonation, and client-id extraction (X-Castle-Client-ID/__cid and RequestContext.ClientId).
This was referenced Jun 10, 2026
Keep .appveyor.yml so AppVeyor continues to build, pack and upload coverage to Coveralls in parallel with the GitHub Actions workflows. Explicitly install the .NET 8.0 and 10.0 SDKs on the VS2022 image so the net10.0 target builds regardless of the image's preinstalled SDK.
The Tests project now multi-targets (net48;net8.0;net10.0), so Coverlet writes per-framework reports (coverage.<tfm>.opencover.xml) instead of a single coverage.opencover.xml. Point the Coveralls upload at the net10.0 report so coverage publishing succeeds.
Add a [JsonExtensionData] AdditionalData dictionary to ActionRequest and every response model (RiskResponse, ScoreItem, DeviceItem, DeviceContext, Policy, Location, UserAgent, ListResponse, ListItemResponse, EventsResponse, EventsSchemaResponse, BatchListItemsResponse, CountResponse) so fields the API adds are captured rather than discarded. Implement IHasJson on RiskResponse, BatchListItemsResponse, and CountResponse, exposing the full raw payload via Internal alongside the existing list and event responses.
zuchmanski
approved these changes
Jun 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Releases
Castle.Sdk3.0.0: modernizes the build/test matrix and adds the full management API surface alongside the existing scoring endpoints.API
CreateList,GetAllLists,GetList,UpdateList,DeleteList,QueryLists.CreateListItem,GetListItem,UpdateListItem,QueryListItems,CountListItems,ArchiveListItem,UnarchiveListItem,CreateBatchListItems.RequestUserData,DeleteUserData(POST/DELETE /v1/privacy/users).EventsSchema,QueryEvents,GroupEvents.Castle.Webhook.Verify(body, signature)andCastle.Webhook.Verify(body, signature, apiSecret)validating theX-Castle-Signatureheader (HMAC-SHA256, Base64); addsCastleWebhookVerificationException.Build & tooling
net10.0,net8.0,netstandard2.0andnet48; drop thenet461andnetcoreapp3.1configurations.Sentrydependency; runtime/platform information is resolved viaSystem.Runtime.InteropServices.RuntimeInformation. BumpNewtonsoft.Jsonto13.0.3.net48) and pack. Retain AppVeyor for Coveralls coverage reporting (it explicitly installs the .NET 8.0 and 10.0 SDKs on the VS2022 image) and remove the CircleCI config; add an.editorconfigandbin/fetch-nupkg.sh.Breaking changes
AuthenticateandTrackendpoints (and theVerdictresponse). UseRisk,FilterandLog.GetDevice,GetDevicesForUser,ApproveDevice,ReportDevice,ArchiveDevices(and theDevice,DeviceList,Usermodels).ImpersonateStart,ImpersonateEnd(and their request models).Context.FromHttpRequestno longer reads theX-Castle-Client-IDheader or__cidcookie;RequestContext.ClientIdandDeviceItem.IsCurrentDeviceare removed. The default request context isheaders,ipandlibrary.