sync_ping_schema.json (7557B)
1 { 2 "$schema": "http://json-schema.org/draft-07/schema#", 3 "description": "schema for Sync pings, documentation avaliable in toolkit/components/telemetry/docs/sync-ping.rst", 4 "type": "object", 5 "additionalProperties": false, 6 "required": ["version", "syncs", "why", "uid"], 7 "properties": { 8 "version": { "type": "integer", "minimum": 0 }, 9 "os": { "type": "object" }, 10 "discarded": { "type": "integer", "minimum": 1 }, 11 "why": { "enum": ["shutdown", "schedule", "idchange"] }, 12 "uid": { 13 "type": "string", 14 "pattern": "^[0-9a-f]{32}$" 15 }, 16 "deviceID": { 17 "type": "string", 18 "pattern": "^[0-9a-f]{64}$" 19 }, 20 "devices": { 21 "type": "array", 22 "items": { "$ref": "#/definitions/device" } 23 }, 24 "sessionStartDate": { "type": "string" }, 25 "syncs": { 26 "type": "array", 27 "minItems": 0, 28 "items": { "$ref": "#/definitions/payload" } 29 }, 30 "syncNodeType": { 31 "type": "string" 32 }, 33 "events": { 34 "type": "array", 35 "minItems": 1, 36 "items": { "$ref": "#/definitions/event" } 37 }, 38 "migrations": { 39 "type": "array", 40 "minItems": 1, 41 "items": { "$ref": "#/definitions/migration" } 42 }, 43 "histograms": { 44 "type": "object", 45 "additionalProperties": { 46 "type": "object", 47 "properties": { 48 "min": { "type": "integer" }, 49 "max": { "type": "integer" }, 50 "histogram_type": { "type": "integer" }, 51 "sum": { "type": "integer" }, 52 "ranges": { "type": "array" }, 53 "counts": { "type": "array" } 54 } 55 } 56 } 57 }, 58 "definitions": { 59 "payload": { 60 "type": "object", 61 "additionalProperties": false, 62 "required": ["when", "took"], 63 "properties": { 64 "didLogin": { "type": "boolean" }, 65 "when": { "type": "integer" }, 66 "status": { 67 "type": "object", 68 "anyOf": [{ "required": ["sync"] }, { "required": ["service"] }], 69 "additionalProperties": false, 70 "properties": { 71 "sync": { "type": "string" }, 72 "service": { "type": "string" } 73 } 74 }, 75 "why": { "type": "string" }, 76 "took": { "type": "integer", "minimum": -1 }, 77 "failureReason": { "$ref": "#/definitions/error" }, 78 "engines": { 79 "type": "array", 80 "minItems": 1, 81 "items": { "$ref": "#/definitions/engine" } 82 } 83 } 84 }, 85 "device": { 86 "required": ["id"], 87 "additionalProperties": false, 88 "type": "object", 89 "properties": { 90 "id": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, 91 "os": { "type": "string" }, 92 "version": { "type": "string" }, 93 "type": { "type": "string" }, 94 "syncID": { "type": "string", "pattern": "^[0-9a-f]{64}$" } 95 } 96 }, 97 "engine": { 98 "required": ["name"], 99 "additionalProperties": false, 100 "properties": { 101 "failureReason": { "$ref": "#/definitions/error" }, 102 "name": { "type": "string" }, 103 "took": { "type": "integer", "minimum": 0 }, 104 "status": { "type": "string" }, 105 "incoming": { 106 "type": "object", 107 "additionalProperties": false, 108 "anyOf": [{ "required": ["applied"] }, { "required": ["failed"] }], 109 "properties": { 110 "applied": { "type": "integer", "minimum": 1 }, 111 "failed": { "type": "integer", "minimum": 1 }, 112 "failedReasons": { 113 "type": "array", 114 "minItems": 1, 115 "$ref": "#/definitions/namedCount" 116 } 117 } 118 }, 119 "outgoing": { 120 "type": "array", 121 "minItems": 1, 122 "items": { "$ref": "#/definitions/outgoingBatch" } 123 }, 124 "steps": { 125 "type": "array", 126 "minItems": 1, 127 "$ref": "#/definitions/step" 128 }, 129 "validation": { 130 "type": "object", 131 "additionalProperties": false, 132 "anyOf": [ 133 { "required": ["checked"] }, 134 { "required": ["failureReason"] } 135 ], 136 "properties": { 137 "checked": { "type": "integer", "minimum": 0 }, 138 "failureReason": { "$ref": "#/definitions/error" }, 139 "took": { "type": "integer" }, 140 "version": { "type": "integer" }, 141 "problems": { 142 "type": "array", 143 "minItems": 1, 144 "$ref": "#/definitions/namedCount" 145 } 146 } 147 } 148 } 149 }, 150 "outgoingBatch": { 151 "type": "object", 152 "additionalProperties": false, 153 "anyOf": [{ "required": ["sent"] }, { "required": ["failed"] }], 154 "properties": { 155 "sent": { "type": "integer", "minimum": 1 }, 156 "failed": { "type": "integer", "minimum": 1 }, 157 "failedReasons": { 158 "type": "array", 159 "minItems": 1, 160 "$ref": "#/definitions/namedCount" 161 } 162 } 163 }, 164 "event": { 165 "type": "array", 166 "minItems": 4, 167 "maxItems": 6 168 }, 169 "migration": { 170 "oneOf": [{ "$ref": "#/definitions/webextMigration" }] 171 }, 172 "webextMigration": { 173 "required": ["type"], 174 "properties": { 175 "type": { "enum": ["webext-storage"] }, 176 "entries": { "type": "integer" }, 177 "entriesSuccessful": { "type": "integer" }, 178 "extensions": { "type": "integer" }, 179 "extensionsSuccessful": { "type": "integer" }, 180 "openFailure": { "type": "boolean" } 181 } 182 }, 183 "error": { 184 "oneOf": [ 185 { "$ref": "#/definitions/httpError" }, 186 { "$ref": "#/definitions/nsError" }, 187 { "$ref": "#/definitions/shutdownError" }, 188 { "$ref": "#/definitions/authError" }, 189 { "$ref": "#/definitions/otherError" }, 190 { "$ref": "#/definitions/unexpectedError" }, 191 { "$ref": "#/definitions/sqlError" } 192 ] 193 }, 194 "httpError": { 195 "required": ["name", "code"], 196 "properties": { 197 "name": { "enum": ["httperror"] }, 198 "code": { "type": "integer" } 199 } 200 }, 201 "nsError": { 202 "required": ["name", "code"], 203 "properties": { 204 "name": { "enum": ["nserror"] }, 205 "code": { "type": "integer" } 206 } 207 }, 208 "shutdownError": { 209 "required": ["name"], 210 "properties": { 211 "name": { "enum": ["shutdownerror"] } 212 } 213 }, 214 "authError": { 215 "required": ["name"], 216 "properties": { 217 "name": { "enum": ["autherror"] }, 218 "from": { "enum": ["tokenserver", "fxaccounts", "hawkclient"] } 219 } 220 }, 221 "otherError": { 222 "required": ["name"], 223 "properties": { 224 "name": { "enum": ["othererror"] }, 225 "error": { "type": "string" } 226 } 227 }, 228 "unexpectedError": { 229 "required": ["name"], 230 "properties": { 231 "name": { "enum": ["unexpectederror"] }, 232 "error": { "type": "string" } 233 } 234 }, 235 "sqlError": { 236 "required": ["name"], 237 "properties": { 238 "name": { "enum": ["sqlerror"] }, 239 "code": { "type": "integer" } 240 } 241 }, 242 "step": { 243 "required": ["name"], 244 "properties": { 245 "name": { "type": "string" }, 246 "took": { "type": "integer", "minimum": 0 }, 247 "counts": { 248 "type": "array", 249 "minItems": 1, 250 "$ref": "#/definitions/namedCount" 251 } 252 } 253 }, 254 "namedCount": { 255 "required": ["name", "count"], 256 "properties": { 257 "name": { "type": "string" }, 258 "count": { "type": "integer" } 259 } 260 } 261 } 262 }