{
    "description": "The configuration file for the Snowplow mobile trackers.",
    "properties": {
        "configurationBundle": {
            "description": "The list of configurations for each tracker to configure.",
            "items": {
                "properties": {
                    "namespace": {
                        "description": "The namespace string that identifies the single tracker.",
                        "type": "string"
                    },
                    "networkConfiguration": {
                        "description": "Represents the network communication configuration allowing the tracker to be able to send events to the Snowplow collector.",
                        "properties": {
                            "endpoint": {
                                "description": "URL of the collector that is going to receive the events tracked by the tracker. The URL can include the schema/protocol (e.g.: http://collector-url.com). In case the URL doesn\u2019t include the schema/protocol, the HTTPS protocol is automatically selected.",
                                "type": "string"
                            },
                            "method": {
                                "description": "The method used to send the requests (GET or POST).",
                                "enum": [
                                    "get",
                                    "post"
                                ]
                            }
                        },
                        "required": [
                            "endpoint"
                        ],
                        "type": "object"
                    },
                    "sessionConfiguration": {
                        "description": "Represents the configuration of a Session object which gets appended to each event sent from the Tracker and changes based on the timeout set for the inactivity of app when in foreground or background.",
                        "properties": {
                            "backgroundTimeout": {
                                "description": "The amount of time that can elapse before the session id is updated while the app is in the background.",
                                "minimum": 0,
                                "type": "integer"
                            },
                            "foregroundTimeout": {
                                "description": "The amount of time that can elapse before the session id is updated while the app is in the foreground.",
                                "minimum": 0,
                                "type": "integer"
                            }
                        },
                        "type": "object"
                    },
                    "subjectConfiguration": {
                        "description": "Represents the configuration of the subject. The SubjectConfiguration can be used to setup the tracker with the basic information about the user and the app which will be attached on all the events as contexts.",
                        "properties": {
                            "domainUserId": {
                                "description": "The custom domain user identifier.",
                                "type": "string"
                            },
                            "ipAddress": {
                                "description": "The IP address (not automatically set).",
                                "type": "string"
                            },
                            "language": {
                                "description": "Override the language string set by the tracker.",
                                "type": "string"
                            },
                            "networkUserId": {
                                "description": "The custom network user identifier.",
                                "type": "string"
                            },
                            "timezone": {
                                "description": "Override the timezone string set by the tracker.",
                                "type": "string"
                            },
                            "userId": {
                                "description": "The custom user identifier.",
                                "type": "string"
                            },
                            "useragent": {
                                "description": "The custom user-agent. It overrides the user-agent used by default.",
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "trackerConfiguration": {
                        "description": "Represents the configuration of the tracker and the core tracker properties. The TrackerConfiguration can be used to setup the tracker behaviour indicating what should be tracked in term of automatic tracking and contexts/entities to track with the events.",
                        "properties": {
                            "appId": {
                                "description": "Identifier of the app.",
                                "type": "string"
                            },
                            "applicationContext": {
                                "description": "Whether application context is sent with all the tracked events.",
                                "type": "boolean"
                            },
                            "devicePlatform": {
                                "description": "It sets the device platform the tracker is running on.",
                                "enum": [
                                    "web",
                                    "mob",
                                    "pc",
                                    "srv",
                                    "app",
                                    "tv",
                                    "cnsl",
                                    "iot"
                                ]
                            },
                            "diagnosticAutotracking": {
                                "description": "Whether enable tracker diagnostic.",
                                "type": "boolean"
                            },
                            "exceptionAutotracking": {
                                "description": "Whether enable crash reporting.",
                                "type": "boolean"
                            },
                            "geoLocationContext": {
                                "description": "Whether geo-location context is sent with all the tracked events.",
                                "type": "boolean"
                            },
                            "installAutotracking": {
                                "description": "Whether enable automatic tracking of install event.",
                                "type": "boolean"
                            },
                            "lifecycleAutotracking": {
                                "description": "Whether enable automatic tracking of background and foreground transitions.",
                                "type": "boolean"
                            },
                            "logLevel": {
                                "description": "It sets the log level of tracker logs.",
                                "enum": [
                                    "off",
                                    "error",
                                    "debug",
                                    "verbose"
                                ]
                            },
                            "platformContext": {
                                "description": "Whether mobile/platform context is sent with all the tracked events.",
                                "type": "boolean"
                            },
                            "screenContext": {
                                "description": "Whether screen context is sent with all the tracked events.",
                                "type": "boolean"
                            },
                            "screenViewAutotracking": {
                                "description": "Whether enable automatic tracking of ScreenView events.",
                                "type": "boolean"
                            },
                            "sessionContext": {
                                "description": "Whether session context is sent with all the tracked events.",
                                "type": "boolean"
                            }
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "namespace"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "configurationVersion": {
            "description": "Version number that identifies the current configuration. It has to be increased on each update.",
            "minimum": 0,
            "type": "integer"
        }
    },
    "required": [
        "configurationVersion",
        "configurationBundle"
    ],
    "self": {
        "format": "jsonschema",
        "name": "remote_config",
        "vendor": "com.snowplowanalytics.mobile",
        "version": "1-0-0"
    },
    "type": "object"
}