schema.json
{
"logType": {
"id": "logType",
"description": "HTTP Archive structure.",
"type": "object",
"properties": {
"log": {
"type": "object",
"properties": {
"version": {"type": "string", "required": true},
"creator": {"$ref": "creatorType", "required": true},
"browser": {"$ref": "browserType", "required": true},
"pages": {"type": "array", "items": {"$ref": "pageType"}},
"entries": {"type": "array", "items": {"$ref": "entryType"}, "required": true},
"comment": {"type": "string"}
}
}
}
},
"creatorType": {
"id": "creatorType",
"description": "Name and version info of the log creator app.",
"type": "object",
"properties": {
"name": {"type": "string", "required": true},
"version": {"type": "string", "required": true},
"comment": {"type": "string"}
}
},
"browserType": {
"id": "browserType",
"description": "Name and version info of used browser.",
"type": "object",
"optional": true,
"properties": {
"name": {"type": "string", "required": true},
"version": {"type": "string", "required": true},
"comment": {"type": "string"}
}
},
"pageType": {
"id": "pageType",
"description": "Exported web page",
"optional": true,
"properties": {
"startedDateTime": {"type": "string", "format": "date-time", "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))", "required": true},
"id": {"type": "string", "unique": true, "required": true},
"title": {"type": "string", "required": true},
"pageTimings": {"$ref": "pageTimingsType", "required": true},
"comment": {"type": "string"}
}
},
"pageTimingsType": {
"id": "pageTimingsType",
"description": "Timing info about page load",
"properties": {
"onContentLoad": {"type": "number", "min": -1},
"onLoad": {"type": "number", "min": -1},
"comment": {"type": "string"}
}
},
"entryType": {
"id": "entryType",
"description": "Request and Response related info",
"optional": true,
"properties": {
"pageref": {"type": "string"},
"startedDateTime": {"type": "string", "format": "date-time", "pattern": "^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))", "required": true},
"time": {"type": "integer", "min": 0, "required": true},
"request" : {"$ref": "requestType", "required": true},
"response" : {"$ref": "responseType", "required": true},
"cache" : {"$ref": "cacheType", "required": true},
"timings" : {"$ref": "timingsType", "required": true},
"serverIPAddress" : {"type": "string"},
"connection" : {"type": "string"},
"comment": {"type": "string"}
}
},
"requestType": {
"id": "requestType",
"description": "Monitored request",
"properties": {
"method": {"type": "string", "required": true},
"url": {"type": "string", "required": true},
"httpVersion": {"type" : "string", "required": true},
"cookies" : {"type": "array", "items": {"$ref": "cookieType"}, "required": true},
"headers" : {"type": "array", "items": {"$ref": "recordType"}, "required": true},
"queryString" : {"type": "array", "items": {"$ref": "recordType"}, "required": true},
"postData" : {"$ref": "postDataType"},
"headersSize" : {"type": "integer", "required": true},
"bodySize" : {"type": "integer", "required": true},
"comment": {"type": "string"}
}
},
"recordType": {
"id": "recordType",
"description": "Helper name-value pair structure.",
"properties": {
"name": {"type": "string", "required": true},
"value": {"type": "string", "required": true},
"comment": {"type": "string"}
}
},
"responseType": {
"id": "responseType",
"description": "Monitored Response.",
"properties": {
"status": {"type": "integer", "required": true},
"statusText": {"type": "string", "required": true},
"httpVersion": {"type": "string", "required": true},
"cookies" : {"type": "array", "items": {"$ref": "cookieType"}, "required": true},
"headers" : {"type": "array", "items": {"$ref": "recordType"}, "required": true},
"content" : {"$ref": "contentType", "required": true},
"redirectURL" : {"type": "string", "required": true},
"headersSize" : {"type": "integer", "required": true},
"bodySize" : {"type": "integer", "required": true},
"comment": {"type": "string"}
}
},
"cookieType": {
"id": "cookieType",
"description": "Cookie description.",
"properties": {
"name": {"type": "string", "required": true},
"value": {"type": "string", "required": true},
"path": {"type": "string"},
"domain" : {"type": "string"},
"expires" : {"type": "string"},
"httpOnly" : {"type": "boolean"},
"secure" : {"type": "boolean"},
"comment": {"type": "string"}
}
},
"postDataType": {
"id": "postDataType",
"description": "Posted data info.",
"optional": true,
"properties": {
"mimeType": {"type": "string", "required": true},
"text": {"type": "string"},
"params": {
"type": "array",
"properties": {
"name": {"type": "string", "required": true},
"value": {"type": "string"},
"fileName": {"type": "string"},
"contentType": {"type": "string"},
"comment": {"type": "string"}
}
},
"comment": {"type": "string"}
}
},
"contentType": {
"id": "contentType",
"description": "Response content",
"properties": {
"size": {"type": "integer", "required": true},
"compression": {"type": "integer"},
"mimeType": {"type": "string", "required": true},
"text": {"type": "string"},
"encoding": {"type": "string"},
"comment": {"type": "string"}
}
},
"cacheType": {
"id": "cacheType",
"description": "Info about a response coming from the cache.",
"properties": {
"beforeRequest": {"$ref": "cacheEntryType"},
"afterRequest": {"$ref": "cacheEntryType"},
"comment": {"type": "string"}
}
},
"cacheEntryType": {
"id": "cacheEntryType",
"optional": true,
"description": "Info about cache entry.",
"properties": {
"expires": {"type": "string"},
"lastAccess": {"type": "string", "required": true},
"eTag": {"type": "string", "required": true},
"hitCount": {"type": "integer", "required": true},
"comment": {"type": "string"}
}
},
"timingsType": {
"id": "timingsType",
"description": "Info about request-response timing.",
"properties": {
"dns": {"type": "integer", "min": -1, "required": true},
"connect": {"type": "integer", "min": -1, "required": true},
"blocked": {"type": "integer", "min": -1, "required": true},
"send": {"type": "integer", "min": -1, "required": true},
"wait": {"type": "integer", "min": -1, "required": true},
"receive": {"type": "integer", "min": -1, "required": true},
"ssl": {"type": "integer", "min": -1},
"comment": {"type": "string"}
}
}
}