schema.json

Summary

Maintainability
Test Coverage
{
    "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"}
        }
    }
}