The solution (TELS.Platform.Api.sln) contains 5 projects:
| Project | Type | Framework | Description |
|---|---|---|---|
| TELS.Platform.Api | Web API | .NET 8.0 | REST API for platform-level settings and configuration management |
| TELS.Platform.Contracts | Library | .NET Standard 2.0 | Shared data/event/request/response contracts (published as NuGet v1.2.0) |
| TELS.Platform.ClientSdk | Library | .NET Standard 2.0 | C# client SDK with typed proxies and Polly resilience (published as NuGet v1.2.0) |
| TELS.Platform.DbUp | Console App | .NET 8.0 | DbUp database migration tool for PostgreSQL schema management (plan/apply) |
| Project | Type | Description |
|---|---|---|
| TELS.Platform.Api.Tests | xUnit (.NET 8.0) | API unit tests |
TELS Platform is a centralized configuration and settings service for the TELS ecosystem. It provides:
Subsystem Settings — A generic key-value store where each setting is identified by a subsystem name + setting name pair. Values are stored as JSONB, allowing flexible schema-less configuration for any data type.
Client SDK — A published NuGet package (TELS.Platform.ClientSdk) that other TELS services use to read and write platform settings, with built-in Polly retry policies (5 retries, exponential backoff).
Audit Trail — All setting changes (create, update, delete) are automatically recorded in a history table with person, persona, and timestamp tracking.
+-----------------------------------------------------+
| API (TELS.Platform.Api) |
| SettingsController — settings CRUD by subsystem |
| DiagnosticsController — health check, DB status |
+-----------------------------------------------------+
| Shared Contracts (TELS.Platform.Contracts) |
| PlatformSetting<T>, ScheduledMessageEvent, |
| PutPlatformSettingRequest, PagedResponse |
+-----------------------------------------------------+
| Client SDK (TELS.Platform.ClientSdk) |
| ISettingsProxy — typed HTTP client with Polly |
+-----------------------------------------------------+
| DAL (Custom DataProvider + Npgsql) |
| PostgreSQL (platform database, platform schema) |
+-----------------------------------------------------+
TELS.Platform.ClientSdk NuGet packageISettingsProxy with typed generic methods: GetSubsystemSettingAsync<T>, PutSubsystemSettingValueAsync<T>OrDefault variants that return null instead of throwing on missing settingsplatform.settings_historyScheduledMessageEvent contract defined (SubsystemName, MessageName, Description, Schedule)ScheduledMessageConsumer)2 controllers exposing 8 endpoints:
DirectSupplyPartner for writes, DirectSupplyPartner | Customer | Owner for reads)See API Documentation for full endpoint details.
| Category | Technology |
|---|---|
| Runtime | .NET 8.0 |
| Web Framework | ASP.NET Core 8.0 |
| Data Access | Npgsql 7.0.7 (PostgreSQL, raw ADO.NET) |
| Database | PostgreSQL 15.3 (platform database, platform schema) |
| Auth | JWT Bearer (symmetric key), custom persona authorization |
| API Docs | Swashbuckle 6.5.0 (at /platform/swagger) |
| Monitoring | New Relic APM |
| Resilience | Polly 7.0.9 (in ClientSdk) |
| Testing | xUnit 2.4.1, Moq 4.18.4 |
| Environment | URL |
|---|---|
| Local | http://localhost:7183 |
| DEV | https://devservices.tels.net/platform |
| QA | https://qaservices.tels.net/platform |
| PROD | https://services.tels.net/platform |
| Stage | Jobs |
|---|---|
| Build | dotnet format verify, dotnet build, xUnit tests, docker buildx (arm64/amd64), container security scan, terraform verify |
| Publish | NuGet push Contracts + ClientSdk to ProGet (manual) |
| Deploy | Terraform per environment (dev, qa, prod) — RDS reboot, DbUp plan/apply, API plan/apply |
| Configuration Group | Key Variables |
|---|---|
| Auth | JWT issuer signing key, issuer, audience |
| Database | PostgreSQL host, port, database, IAM auth toggle |
| Pages | Default page size (1000) |
| Integration | Mechanism | Description |
|---|---|---|
| AWS RDS PostgreSQL | Npgsql + IAM tokens | Database hosting with IAM authentication |
| AWS Secrets Manager | Terraform/ECS | JWT signing key, monitoring license |
| Package | Target | Published To |
|---|---|---|
| TELS.Platform.Contracts | .NET Standard 2.0 | ProGet |
| TELS.Platform.ClientSdk | .NET Standard 2.0 | ProGet |
API:
- TELS.Platform.Api/Controllers/ — 2 controllers (Settings, Diagnostics)
- TELS.Platform.Api/Program.cs — Service configuration
- TELS.Platform.Api/Data/ — Data providers and context factory
Contracts:
- TELS.Platform.Contracts/ — Shared data/event/request/response contracts
Client SDK:
- TELS.Platform.ClientSdk/ — Typed HTTP proxies with Polly resilience
Database:
- TELS.Platform.DbUp/Scripts/Tracked/Schema/ — Versioned migrations
- TELS.Platform.DbUp/Scripts/Untracked/AfterSchema/ — Stored functions
ScheduledMessageEvent that is consumed by other services (e.g., Customers), but the publishing mechanism is not in this repository.