v1 end of life: raw.datafornerds.io will be retired on November 1, 2026. Migration guide →

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

DatasetSchema 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" }
    }
  }
}