JSON Schemas
Every dataset has a corresponding JSON Schema (draft 2020-12) that describes the envelope and record structure. The schema URL is linked from every API response via the Link header:
Link: <https://api.datafornerds.io/v2/microsoft/schemas/windows-update-history.schema.json>; rel="describedby"
Available schemas
| Dataset | Schema URL |
|---|---|
| Windows Update History | /v2/microsoft/schemas/windows-update-history.schema.json |
| Windows 10 Update History | /v2/microsoft/schemas/windows-10-update-history.schema.json |
| Windows 11 Update History | /v2/microsoft/schemas/windows-11-update-history.schema.json |
| Windows Server Update History | /v2/microsoft/schemas/windows-server-update-history.schema.json |
| Language Codes | /v2/microsoft/schemas/language-codes.schema.json |
| M365 Apps Update History | /v2/microsoft/schemas/m365-apps-update-history.schema.json |
| Windows Release History | /v2/microsoft/schemas/windows-release-history.schema.json |
Validating data against schemas
You can validate API responses or local files against the schemas using any JSON Schema validator.
Using check-jsonschema (Python)
pip install check-jsonschema
curl -s https://api.datafornerds.io/v2/microsoft/language-codes.json -o language-codes.json
check-jsonschema --schemafile https://api.datafornerds.io/v2/microsoft/schemas/language-codes.schema.json language-codes.json
Using PowerShell
$schema = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/schemas/language-codes.schema.json'
$data = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/language-codes.json'
# Use a JSON Schema validation library like Newtonsoft.Json.Schema for full validation
Schema structure
Each schema validates the complete response envelope, including both metadata and data:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://api.datafornerds.io/v2/microsoft/schemas/language-codes.schema.json",
"title": "language-codes",
"type": "object",
"required": ["metadata", "data"],
"properties": {
"metadata": {
"type": "object",
"properties": {
"provider": { "type": "string", "const": "DataForNerds" },
"apiVersion": { "type": "string", "const": "v2" },
"dataset": { "type": "string" },
"recordCount": { "type": "integer" },
"sourceUrls": { "type": "array", "items": { "type": "string" } },
"lastModified": { "type": "string", "format": "date-time" },
"lastCollected": { "type": "string", "format": "date-time" }
}
},
"data": {
"type": "array",
"items": { "..." : "dataset-specific record schema" }
}
}
}