{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "$id": "docs/spec/http.json",
    "title": "Request",
    "description": "If a log record was generated as a result of a http request, the http interface can be used to collect this information.",
    "type": [
        "object",
        "null"
    ],
    "properties": {
        "body": {
            "description": "Data should only contain the request body (not the query string). It can either be a dictionary (for standard HTTP requests) or a raw request body.",
            "type": [
                "object",
                "string",
                "null"
            ]
        },
        "env": {
            "description": "The env variable is a compounded of environment information passed from the webserver.",
            "type": [
                "object",
                "null"
            ],
            "properties": {}
        },
        "headers": {
            "description": "Should include any headers sent by the requester. Cookies will be taken by headers if supplied.",
            "type": [
                "object",
                "null"
            ],
            "properties": {
                "content-type": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "cookie": {
                    "description": "Cookies sent with the request. It is expected to have values delimited by semicolons.",
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "user-agent": {
                    "type": [
                        "string",
                        "null"
                    ]
                }
            }
        },
        "http_version": {
            "description": "HTTP version.",
            "type": [
                "string",
                "null"
            ],
            "maxLength": 1024
        },
        "method": {
            "description": "HTTP method.",
            "type": "string",
            "maxLength": 1024
        },
        "socket": {
            "type": [
                "object",
                "null"
            ],
            "properties": {
                "encrypted": {
                    "description": "Indicates whether request was sent as SSL/HTTPS request.",
                    "type": [
                        "boolean",
                        "null"
                    ]
                },
                "remote_address": {
                    "type": [
                        "string",
                        "null"
                    ]
                }
            }
        },
        "url": {
            "description": "A complete Url, with scheme, host and path.",
            "type": "object",
            "properties": {
                "raw": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "protocol": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "hostname": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "port": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "pathname": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "search": {
                    "description": "The search describes the query string of the request. It is expected to have values delimited by ampersands.",
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                },
                "hash": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 1024
                }
            }
        },
        "cookies": {
            "description": "A parsed key-value object of cookies",
            "type": [
                "object",
                "null"
            ]
        }
    },
    "required": [
        "url",
        "method"
    ]
}