{
    "additionalProperties": true,
    "description": "Schema for Segment's context fields, https://segment.com/docs/spec/common/#context",
    "properties": {
        "app": {
            "additionalProperties": true,
            "properties": {
                "build": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "name": {
                    "maxLength": 512,
                    "type": "string"
                },
                "version": {
                    "maxLength": 1024,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "campaign": {
            "additionalProperties": true,
            "properties": {
                "content": {
                    "maxLength": 8192,
                    "type": "string"
                },
                "medium": {
                    "maxLength": 512,
                    "type": "string"
                },
                "name": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "source": {
                    "maxLength": 512,
                    "type": "string"
                },
                "term": {
                    "maxLength": 4096,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "device": {
            "additionalProperties": true,
            "properties": {
                "adTrackingEnabled": {
                    "type": "boolean"
                },
                "advertisingId": {
                    "_format": "uuid",
                    "type": "string"
                },
                "id": {
                    "_format": "uuid",
                    "type": "string"
                },
                "manufacturer": {
                    "maxLength": 512,
                    "type": "string"
                },
                "model": {
                    "maxLength": 512,
                    "type": "string"
                },
                "name": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "token": {
                    "maxLength": 128,
                    "type": "string"
                },
                "type": {
                    "maxLength": 128,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "ip": {
            "_format": "ipv4",
            "type": "string"
        },
        "library": {
            "additionalProperties": true,
            "properties": {
                "name": {
                    "maxLength": 512,
                    "type": "string"
                },
                "version": {
                    "maxLength": 512,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "locale": {
            "maxLength": 512,
            "type": "string"
        },
        "location": {
            "additionalProperties": true,
            "properties": {
                "city": {
                    "maxLength": 512,
                    "type": "string"
                },
                "country": {
                    "maxLength": 512,
                    "type": "string"
                },
                "latitude": {
                    "type": "number"
                },
                "longitude": {
                    "type": "number"
                },
                "speed": {
                    "maximum": 9223372036854776000,
                    "minimum": 0,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "network": {
            "additionalProperties": true,
            "properties": {
                "bluetooth": {
                    "type": "boolean"
                },
                "carrier": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "cellular": {
                    "type": "boolean"
                },
                "wifi": {
                    "type": "boolean"
                }
            },
            "type": "object"
        },
        "os": {
            "additionalProperties": true,
            "properties": {
                "name": {
                    "maxLength": 512,
                    "type": "string"
                },
                "version": {
                    "maxLength": 1024,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "referrer": {
            "additionalProperties": true,
            "properties": {
                "id": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "link": {
                    "_format": "uri",
                    "maxLength": 8192,
                    "type": "string"
                },
                "name": {
                    "maxLength": 1024,
                    "type": "string"
                },
                "type": {
                    "maxLength": 512,
                    "type": "string"
                },
                "url": {
                    "_format": "uri",
                    "maxLength": 8192,
                    "type": "string"
                }
            },
            "type": "object"
        },
        "screen": {
            "additionalProperties": true,
            "properties": {
                "density": {
                    "maximum": 2147483647,
                    "minimum": 0,
                    "type": "integer"
                },
                "height": {
                    "maximum": 9223372036854776000,
                    "minimum": 0,
                    "type": "integer"
                },
                "width": {
                    "maximum": 9223372036854776000,
                    "minimum": 0,
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "timezone": {
            "maxLength": 128,
            "type": "string"
        },
        "userAgent": {
            "maxLength": 4096,
            "type": "string"
        }
    },
    "self": {
        "format": "jsonschema",
        "name": "context",
        "vendor": "com.segment",
        "version": "1-0-0"
    },
    "type": "object"
}