Wire schema v1
The schema is the load-bearing artifact — anything that speaks POST /v1/events is a valid backend. It is versioned separately from the package, and v1 will not break.
{
"schema": "v1",
"batchId": "8B0B8AF0-3E9F-4F9F-9F1D-4E45B0A9C0D1",
"sentAt": "2026-08-17T14:03:12.004Z",
"context": {
"sdkVersion": "0.1.0", "appVersion": "1.4.2", "appBuild": "318",
"bundleId": "com.wizemann.Overwatch", "osName": "macOS", "osVersion": "15.4.1",
"deviceModel": "Mac15,3", "arch": "arm64", "locale": "en_US", "region": "US",
"screenWidth": 1512, "screenHeight": 982, "screenScale": 2.0,
"isDebug": false, "isTestFlight": false, "colorScheme": "dark"
},
"events": [
{
"name": "session_start", "ts": "2026-08-17T14:02:58.101Z",
"sessionId": "1786012978-40371852",
"installId": "3f8a1c9e5b2d47a08e6f1b3c9d0a7e42d5c81f9a0b3e6d2c4f7a19b8e05c3d6f",
"appId": "com.wizemann.Overwatch", "projectId": "overwatch", "seq": 40
},
{
"name": "project_opened", "ts": "2026-08-17T14:03:11.482Z",
"sessionId": "1786012978-40371852",
"installId": "3f8a1c9e5b2d47a08e6f1b3c9d0a7e42d5c81f9a0b3e6d2c4f7a19b8e05c3d6f",
"appId": "com.wizemann.Overwatch", "projectId": "overwatch", "seq": 41,
"props": { "section": "analytics", "cached": true, "tile_count": 6 }
}
]
}Batching and delivery
Batches of at most 100 events and 256 KiB, byte limit applied first, never mixing two install ids or projects. One request in flight, exponential backoff from 1s with full jitter capped at 5 minutes, the same batch id across retries so dedupe works, and a 24-hour ceiling on delivery attempts.
Retention
Raw event rows for at least 90 days — the default and the shortest window, set per project up to 400 — and daily rollups kept indefinitely. Per-day history survives; the individual events behind it do not. One exception, as schema §13 requires us to say: each hashed install id and the first day it was seen are kept until the app is deleted (or that install is erased), because new-versus-returning cannot be rebuilt from daily counts.
Deliberately never collected
IP storage, IDFA, IDFV, Keychain, device serial, location, free text, session replay. The list is normative — §13 of the schema, not a marketing promise.