/platform/platform/swagger/platform/v1/diagnostics/health-checkStandard JWT Bearer token authentication:
Authorization: Bearer <access_token>
Token validation:
- Signing: Symmetric key (base64-encoded) from configuration
- Issuer: localservices.tels.net (validated)
- Audience: services.tels.net (validated)
- Lifetime: Validated
Persona-based access control:
- Reads: DirectSupplyPartner | Customer | Owner
- Writes: DirectSupplyPartner only
- Diagnostics: Anonymous (health check, ping) or authenticated (database status)
Route Prefix: /platform/v1
Authorization: JWT Bearer + Persona-based (varies by endpoint)
| Method | Path | Auth Personas | Description |
|---|---|---|---|
| GET | /platform/v1/settings |
DirectSupplyPartner | Get all settings (paginated) |
| GET | /platform/v1/subsystems/{subsystemName}/settings |
DSP, Customer, Owner | Get subsystem settings (paginated) |
| GET | /platform/v1/subsystems/{subsystemName}/settings/{settingName} |
DSP, Customer, Owner | Get single setting |
| GET | /platform/v1/subsystems/{subsystemName}/settings/{settingName}/value |
DSP, Customer, Owner | Get setting value only |
| PUT | /platform/v1/subsystems/{subsystemName}/settings/{settingName} |
DirectSupplyPartner | Create or update setting |
| DELETE | /platform/v1/subsystems/{subsystemName}/settings/{settingName} |
DirectSupplyPartner | Delete setting |
/platform/v1/settingsGet all platform settings across all subsystems with pagination.
Authorization: DirectSupplyPartner only
Query Parameters:
- pageKey (string, optional) — Pagination cursor from previous response
Response (200 OK):
{
"settings": [
{
"subsystemName": "WorkOrders",
"settingName": "MaxAttachmentSize",
"settingValue": 62914560
},
{
"subsystemName": "Notifications",
"settingName": "EmailTemplates",
"settingValue": {
"workOrderCreated": "template-001",
"workOrderUpdated": "template-002"
}
}
],
"nextPageKey": "eyJwYWdlIjoyfQ=="
}
/platform/v1/subsystems/{subsystemName}/settingsGet all settings for a specific subsystem with pagination.
Path Parameters:
- subsystemName (string, required) — Subsystem identifier (case-insensitive)
Query Parameters:
- pageKey (string, optional) — Pagination cursor
Response (200 OK):
{
"settings": [
{
"subsystemName": "WorkOrders",
"settingName": "MaxAttachmentSize",
"settingValue": 62914560
}
],
"nextPageKey": null
}
/platform/v1/subsystems/{subsystemName}/settings/{settingName}Get a single setting by subsystem and setting name.
Path Parameters:
- subsystemName (string, required) — Subsystem identifier (case-insensitive)
- settingName (string, required) — Setting identifier (case-insensitive)
Response (200 OK):
{
"subsystemName": "WorkOrders",
"settingName": "MaxAttachmentSize",
"settingValue": 62914560
}
/platform/v1/subsystems/{subsystemName}/settings/{settingName}/valueGet only the value of a setting (without the wrapper object).
Path Parameters:
- subsystemName (string, required)
- settingName (string, required)
Response (200 OK):
62914560
Returns the raw JSON value — can be a number, string, object, array, or boolean.
/platform/v1/subsystems/{subsystemName}/settings/{settingName}Create or update a platform setting. Automatically records an audit entry in the history table.
Authorization: DirectSupplyPartner only
Path Parameters:
- subsystemName (string, required)
- settingName (string, required)
Request Body:
{
"settingValue": 62914560
}
settingValue can be any valid JSON value (number, string, object, array, boolean).
Response: 200 OK
Processing:
1. Extracts token claims (person ID, name, persona) for audit
2. Opens transaction with Repeatable Read isolation
3. Calls platform.tfn_setting_m to upsert setting + create history record
4. Commits transaction
/platform/v1/subsystems/{subsystemName}/settings/{settingName}Delete a platform setting. Records a delete audit entry in the history table.
Authorization: DirectSupplyPartner only
Path Parameters:
- subsystemName (string, required)
- settingName (string, required)
Response: 200 OK
Route Prefix: /platform/v1/diagnostics
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /platform/v1/diagnostics/health-check |
Anonymous | Returns 200 OK |
| GET | /platform/v1/diagnostics/ping |
Anonymous | Returns "pong" |
| GET | /platform/v1/diagnostics/database |
Authenticated | Database connectivity status |
{
"subsystemName": "WorkOrders",
"settingName": "MaxAttachmentSize",
"settingValue": 62914560
}
{
"settingValue": 62914560
}
{
"settings": [],
"nextPageKey": "cursor-or-null"
}
{
"subsystemName": "Customers",
"messageName": "SyncPreferences",
"description": "Periodic preference sync",
"schedule": "0 */6 * * *"
}
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request — validation error (ProblemDetails) |
| 401 | Unauthorized — invalid or missing JWT token |
| 403 | Forbidden — insufficient persona |
| 404 | Not Found — setting does not exist |
Other TELS services consume this API via the TELS.Platform.ClientSdk NuGet package:
// Registration
services.AddTelsPlatformProxies("https://services.tels.net/platform");
// Usage
var setting = await settingsProxy.GetSubsystemSettingValueAsync<int>(
accessToken, "WorkOrders", "MaxAttachmentSize");
var settingOrDefault = await settingsProxy.GetSubsystemSettingValueOrDefaultAsync<int>(
accessToken, "WorkOrders", "NonExistent"); // returns null instead of throwing
SDK Features:
- Typed generic methods for any JSON-serializable type
- OrDefault variants that return null on 404
- Polly retry policy: 5 retries with exponential backoff (max 5 seconds)
- ProblemDetails-aware exception handling
JsonElement values, and the SDK deserializes them to the requested generic type.DirectSupplyPartner persona can create, update, or delete settings. Other personas (Customer, Owner) have read-only access.