# HTTP Manifest v1 The generic update provider uses a first-party JSON manifest. Schema: ```json { "schemaVersion": 1, "productID": "com.example.app", "releases": [ { "id": "1.2.0", "version": "1.2.0", "channel": "stable", "publishedAt": "2026-03-01T03:10:56Z", "notesMarkdown": "Bug fixes", "artifacts": [ { "os": "darwin", "arch": "arm64", "kind": "bundle-archive", "format": "zip", "url": "https://updates.example.com/app/1.2.0/darwin-arm64.zip", "sha256": "..." } ] } ] } ``` Rules: - `schemaVersion` must be `1` - `productID` must match the running app descriptor - `channel` is one of `stable`, `beta`, or `alpha` - the provider picks the highest semver above the current version for the current `os` and `arch` - artifact URLs are fetched with the adapter's per-provider request preparation hook