{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": true,
  "description": "JSON Schema definition for the Embrace configuration file.",
  "id": "https://json.schemastore.org/embrace-config-schema-1.0.0.json",
  "properties": {
    "app_id": {
      "description": "Your 5 character app ID.",
      "type": "string",
      "maxLength": 5,
      "minLength": 5
    },
    "api_token": {
      "description": "Your API 32-hexdigit token.",
      "type": "string",
      "maxLength": 32,
      "minLength": 32
    },
    "ndk_enabled": {
      "description": "Enables NDK crash capture. Defaults to false.",
      "type": "boolean"
    },
    "sdk_config": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "app": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "report_disk_usage": {
              "description": "The SDK collects the disk usage for the app. You can disable this if your app has a large number of local files to prevent excessive resource usage, especially on lower-end devices. Defaults to true.",
              "type": "boolean"
            }
          },
          "minProperties": 1
        },
        "crash_handler": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "enabled": {
              "description": "Set to false to prevent the SDK from connecting to the uncaught exception handler. Defaults to true.",
              "type": "boolean"
            }
          },
          "minProperties": 1
        },
        "networking": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "capture_request_content_length": {
              "description": "Disable capture of network length which can interfere with certain streaming network requests. Defaults to true.",
              "type": "boolean"
            },
            "disabled_url_patterns": {
              "description": "Specify one or more regular expressions to exclude network request with URLs matching one of the regular expressions from being captured.",
              "type": "array",
              "items": {
                "type": "string"
              },
              "minItems": 1,
              "uniqueItems": true
            },
            "enable_native_monitoring": {
              "description": "Enable capture of network requests made using the native Java network API. Defaults to true.",
              "type": "boolean"
            },
            "trace_id_header": {
              "description": "Set the name of the header used for the trace ID. Defaults to 'x-emb-trace-id'.",
              "type": "string"
            }
          },
          "minProperties": 1
        },
        "session": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "async_end": {
              "description": "Send the session end message asynchronously. Defaults to false.",
              "type": "boolean"
            },
            "max_session_seconds": {
              "description": "Enable automatic ending of sessions every N seconds. This is only recommended for applications, such as kiosks, where the app is never expected to go to the background. This value must be 60 seconds or greater if set.",
              "type": "integer"
            }
          },
          "minProperties": 1
        },
        "startup_moment": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "automatically_end": {
              "description": "Control whether the startup moment is automatically ended. Defaults to true.",
              "type": "boolean"
            },
            "take_screenshot": {
              "description": "Control whether screenshots are taken during the startup moment. Defaults to false.",
              "type": "boolean"
            }
          },
          "minProperties": 1
        },
        "taps": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "capture_coordinates": {
              "description": "Set to false to disable capturing tap coordinates. Defaults to true.",
              "type": "boolean"
            }
          },
          "minProperties": 1
        },
        "webview": {
          "type": "object",
          "additionalProperties": true,
          "properties": {
            "capture_query_params": {
              "description": "Set to false to disable capturing of web view query parameters. Defaults to true. If webview:enable is set to false, this setting has no effect since all capture of web view information is disabled.",
              "type": "boolean"
            },
            "enable": {
              "description": "Set to false to disable capturing of web views. Defaults to true.",
              "type": "boolean"
            }
          },
          "minProperties": 1
        }
      },
      "minProperties": 1
    }
  },
  "required": ["app_id", "api_token"],
  "title": "Embrace Config Schema",
  "type": "object"
}