PostHog · Schema
SdkAssessment
A/B TestingAnalyticsFeature FlagsOpen SourceProduct AnalyticsSession Recording
Properties
| Name | Type | Description |
|---|---|---|
| lib | string | SDK identifier, e.g. 'web', 'posthog-python', 'posthog-node', 'posthog-ios'. |
| readable_name | string | Human-readable SDK name matching the SDK Doctor UI (e.g. 'Python', 'Node.js', 'Web', 'iOS'). |
| latest_version | string | Most recent published version of this SDK. |
| needs_updating | boolean | True if this SDK needs attention (is_outdated OR is_old). |
| is_outdated | boolean | True if the primary in-use version is flagged as outdated. |
| is_old | boolean | True if the primary in-use version is flagged as old by age alone. |
| severity | object | UI severity badge — 'none' when healthy, 'warning' when outdated, 'danger' when the majority of team SDKs are outdated. * `none` - none * `warning` - warning * `danger` - danger |
| reason | string | Per-SDK programmatic summary (used for ranking/filtering). For user-facing copy, prefer releases[].status_reason (badge tooltip) and banners (top-level alert text) — those match the UI exactly. |
| banners | array | Top-level alert sentences matching the SDK Doctor UI's 'Time for an update!' banner — one per outdated version with significant traffic. Quote verbatim when surfacing the headline to users. |
| releases | array | Per-version assessment for all versions seen in the last 7 days. |
| outdated_traffic_alerts | array | Outdated versions that handle a significant share of traffic (above the threshold). Not populated for mobile SDKs. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/SdkAssessment",
"title": "SdkAssessment",
"type": "object",
"properties": {
"lib": {
"type": "string",
"description": "SDK identifier, e.g. 'web', 'posthog-python', 'posthog-node', 'posthog-ios'."
},
"readable_name": {
"type": "string",
"description": "Human-readable SDK name matching the SDK Doctor UI (e.g. 'Python', 'Node.js', 'Web', 'iOS')."
},
"latest_version": {
"type": "string",
"description": "Most recent published version of this SDK."
},
"needs_updating": {
"type": "boolean",
"description": "True if this SDK needs attention (is_outdated OR is_old)."
},
"is_outdated": {
"type": "boolean",
"description": "True if the primary in-use version is flagged as outdated."
},
"is_old": {
"type": "boolean",
"description": "True if the primary in-use version is flagged as old by age alone."
},
"severity": {
"allOf": [
{
"$ref": "#/components/schemas/SdkAssessmentSeverityEnum"
}
],
"description": "UI severity badge \u2014 'none' when healthy, 'warning' when outdated, 'danger' when the majority of team SDKs are outdated.\n\n* `none` - none\n* `warning` - warning\n* `danger` - danger"
},
"reason": {
"type": "string",
"description": "Per-SDK programmatic summary (used for ranking/filtering). For user-facing copy, prefer releases[].status_reason (badge tooltip) and banners (top-level alert text) \u2014 those match the UI exactly."
},
"banners": {
"type": "array",
"items": {
"type": "string"
},
"description": "Top-level alert sentences matching the SDK Doctor UI's 'Time for an update!' banner \u2014 one per outdated version with significant traffic. Quote verbatim when surfacing the headline to users."
},
"releases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SdkReleaseAssessment"
},
"description": "Per-version assessment for all versions seen in the last 7 days."
},
"outdated_traffic_alerts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OutdatedTrafficAlert"
},
"description": "Outdated versions that handle a significant share of traffic (above the threshold). Not populated for mobile SDKs."
}
},
"required": [
"banners",
"is_old",
"is_outdated",
"latest_version",
"lib",
"needs_updating",
"outdated_traffic_alerts",
"readable_name",
"reason",
"releases",
"severity"
]
}