Skip to content

Modernize to .NET 10, new auth architecture, and JSON:API support#10

Merged
carldebilly merged 17 commits intomasterfrom
dev/cdb/modernize
Feb 15, 2026
Merged

Modernize to .NET 10, new auth architecture, and JSON:API support#10
carldebilly merged 17 commits intomasterfrom
dev/cdb/modernize

Conversation

@carldebilly
Copy link
Copy Markdown
Member

@carldebilly carldebilly commented Feb 15, 2026

Summary

Major modernization of the TenantCloud client library.

Build & infrastructure

  • Migrated from Azure Pipelines to GitHub Actions
  • Adopted Nerdbank.GitVersioning for deterministic versioning
  • Upgraded to .NET 10 (multi-targeting net8.0 + net10.0)
  • Added Meziantou and VS Threading analyzers with TreatWarningsAsErrors
  • Dynamic copyright year via MSBuild property function

Authentication

  • Replaced the username/password InMemoryTcContext with the ITcAuthTokenProvider abstraction
  • New Yllibed.TenantCloudClient.Cdp package: extracts auth tokens from a running Chromium browser via Chrome DevTools Protocol, with automatic JWT refresh and optional interactive login
  • SecureTokenStore: OS-native credential persistence (DPAPI on Windows, Keychain on macOS, Secret Service on Linux)
  • FileTokenStore: simple JSON file alternative for headless/CI scenarios

API modernization

  • Migrated response models to JSON:API format (TcJsonApiResponse<T>)
  • Replaced Tenants with Contacts (with role filters: tenants, professionals, archived)
  • Added Leases endpoint with status/property/unit filters
  • Updated TcProperty model with unified attributes

Developer experience

  • Dependency injection extensions: AddTenantCloudClient(), AddSecureTokenStore(), AddCdpTokenProvider()
  • Rewritten README with DI examples, extensibility points, and full API/filter reference
  • File-scoped namespaces, GlobalUsings.cs, centralized package management

… with GitHub Actions, and adopted Nerdbank.GitVersioning.
…n contract consistency across converters and models.
…ction statuses, categories, tenant statuses, and pagination metadata.
…moved login request/response messages, and simplified token handling logic.
…okenProvider`, updated tests to use environment-based token provider.
…n extraction and refresh, added supporting models and services for TenantCloud Client.
…se` and `TcPagingListResponse` with `TcJsonApiResponse`, added `IHasId` for common ID handling, and refactored related classes.
…Contacts` and `Leases`, updated `TcProperty` model with unified attributes.
…hods for `Contacts` and `Leases`, updated query parameter filters for consistency, and removed `TcTenantsPaginatedSourceExtensions`.
… `Contacts`, added support for `Leases`, removed obsolete test for tenants without leases, and added new tests for leases and properties.
…d platform-specific backends (Windows DPAPI, macOS Keychain, Linux Secret Service), and updated `TcJsonSerializerContext` with `TcTokenSet` serialization support.
- Registered `CdpTokenProvider` for CDP-based token extraction.
- Added `AddTenantCloudClient` and `AddSecureTokenStore` methods for streamlined service registration.
- Updated packages to include `Microsoft.Extensions.DependencyInjection.Abstractions`.
- Reorganized and rephrased for clarity and consistency.
- Added dependency injection and custom provider examples.
- Detailed authentication mechanism, token persistence, and built-in storage options.
- Expanded API references with collection filters and paginated source details.
@carldebilly carldebilly changed the title Modernize Modernize to .NET 10, new auth architecture, and JSON:API support Feb 15, 2026
@carldebilly carldebilly marked this pull request as ready for review February 15, 2026 23:20
@carldebilly carldebilly merged commit afdea49 into master Feb 15, 2026
3 checks passed
@carldebilly carldebilly deleted the dev/cdb/modernize branch February 16, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant