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

Migrating from v1

What changed

v2 is a ground-up redesign of the API. The base URL, envelope format, field names, and URL structure are all different.

Base URL

URL
v1https://raw.datafornerds.io
v2https://api.datafornerds.io

Endpoint paths

v1 pathv2 path
/ms/mswin/buildnumbers.json/v2/microsoft/windows-update-history.json
/ms/mswin/releases.json/v2/microsoft/windows-release-history.json
/ms/msapps/buildnumbers.json/v2/microsoft/m365-apps-update-history.json
/ms/msother/mslocales.json/v2/microsoft/language-codes.json

Response envelope

v1:

{
  "DataForNerds": {
    "LastUpdatedUTC": "2026-05-25T06:15:30.0000000Z",
    "SourceList": ["https://support.microsoft.com/..."]
  },
  "Data": [...]
}

v2:

{
  "metadata": {
    "provider": "DataForNerds",
    "apiVersion": "v2",
    "dataset": "windows-update-history",
    "recordCount": 1842,
    "sourceUrls": ["https://support.microsoft.com/..."],
    "lastModified": "2026-05-25T06:15:30.0000000Z",
    "lastCollected": "2026-05-25T06:15:30.0000000Z"
  },
  "data": [...]
}

Key differences:

  • The wrapper key changed from DataForNerds to metadata and Data to data
  • LastUpdatedUTC / SourceList replaced by richer metadata fields
  • recordCount, dataset, provider, and apiVersion are new

Windows Update History fields

v1 fieldv2 fieldNotes
Win10VersionFullVersionSame value (e.g., 10.0.19045.5198)
VersionOSBuildSame value (e.g., 19045.5198)
ReleaseDateReleaseDateUnchanged
ArticleKBNumberSame value
KBTitle(removed)Synthesized field, not present in v2
LTSCOnly(removed)v1-only derivation, not carried forward
Comment(removed)Replaced by IsExpired boolean
(none)OSTypeNew. "Client" or "Server"
(none)MajorVersionNew. 10 or 11
(none)WindowsVersionNew. e.g., "22H2"
(none)ReleaseTypeNew. "Standard", "Preview", "Out-of-band", etc.
(none)ArticleUrlNew. Direct link to the KB article
(none)IsExpiredNew. Replaces the Comment field’s "- EXPIRED" convention

Windows Release History fields

v1 fieldv2 fieldNotes
VersionOSBuildSame value
FullVersionFullVersionUnchanged
BuildWindowsVersionSame value (e.g., "22H2")
(none)OSTypeNew
(none)MajorVersionNew

M365 Apps Update History fields

v1 fieldv2 fieldNotes
ReleaseDateReleaseDateUnchanged
ChannelChannelNamev1 used abbreviated names; v2 uses full channel names
BuildBuildUnchanged
VersionVersionUnchanged
FullBuildFullBuildUnchanged

Channel name changes:

v1 Channelv2 ChannelName
CurrentCurrent Channel
Monthly EnterpriseMonthly Enterprise Channel
Semi-Annual Enterprise PreviewSemi-Annual Enterprise Channel (Preview)
Semi-Annual EnterpriseSemi-Annual Enterprise Channel

Language Codes fields

v1 fieldv2 fieldNotes
LangCodeLanguageCodev1 returned an integer; v2 returns a string
LangCodeHex(removed)Hex representation, not present in v2
LangNameDescriptionSame value
LangTagBCP47Same value

Other changes

  • JSON Schemas - every v2 dataset has a published schema at /v2/microsoft/schemas/<dataset>.schema.json, linked via the Link response header
  • Dataset catalog - GET /v2/index.json returns a machine-readable list of all datasets with URLs, descriptions, and lastModified timestamps
  • Changelogs - each dataset has a changelog at /v2/microsoft/<dataset>.changelog.json
  • CORS - v2 returns full CORS headers (Access-Control-Allow-Origin: *); v1 did not
  • Caching - v2 uses Cache-Control: public, max-age=21600, stale-while-revalidate=86400 (6-hour cache); v1 used the same policy
  • Deprecation header - all v1 responses now include Deprecation: true and a Link header pointing to v2

Migration example

v1 (PowerShell):

$response = Invoke-RestMethod 'https://raw.datafornerds.io/ms/mswin/buildnumbers.json'
$updates = $response.Data
$updates | Where-Object { $_.Win10Version -like '10.0.22621.*' }

v2 (PowerShell):

$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/windows-update-history.json'
$updates = $response.data
$updates | Where-Object { $_.FullVersion -like '10.0.22621.*' }

Timeline

DateWhat happens
NowBoth v1 and v2 are live. v1 responses include Deprecation: true header.
November 1, 2026raw.datafornerds.io stops serving data. All v1 endpoints return errors.