{
    "swagger": "2.0",
    "info": {
        "version": "1.170.768",
        "title": "Luminati Proxy Manager",
        "license": {
            "name": "MIT",
            "url": "http://opensource.org/licenses/MIT"
        }
    },
    "host": "127.0.0.1:22999",
    "basePath": "/api",
    "schemes": ["http"],
    "consumes": ["application/json"],
    "produces": ["application/json"],
    "paths": {
        "/swagger": {
            "get": {
                "description": "Returns the swagger definition json",
                "tags": [
                    "Manager"
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/version": {
            "get": {
                "description": "Returns the version of the running Luminati Proxy Manager\n",
                "tags": [
                    "Manager"
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "version": {
                                    "description": "LPM version",
                                    "type": "string"
                                },
                                "argv": {
                                    "description": "Command line arguments passed to LPM",
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/last_version": {
            "get": {
                "description": "Returns the latest public version available\n",
                "tags": [
                    "Manager"
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "version": {
                                    "description": "Latest LPM version",
                                    "type": "string"
                                },
                                "newer": {
                                    "description": "Whether or not latest version is newer than current LPM version",
                                    "type": "boolean"
                                },
                                "versions": {
                                    "description": "LPM versions changelog",
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "ver": {"type": "string"},
                                            "type": {
                                                "type": "string",
                                                "enum": ["stable", "dev"]
                                            },
                                            "changes": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "type": {
                                                            "type": "string",
                                                            "enum": ["star", "sparkles", "bug", "boom"]
                                                        },
                                                        "text": {"type": "string"}
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/node_version": {
            "get": {
                "description": "Return the currently running node version\n",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "current": {
                                    "type": "object",
                                    "properties": {
                                        "raw": {"type": "string"},
                                        "major": {"type": "number"},
                                        "minor": {"type": "number"},
                                        "patch": {"type": "number"},
                                        "prerelease": {
                                            "type": "array",
                                            "items": {"type": "string"}
                                        },
                                        "build": {
                                            "type": "array",
                                            "items": {"type": "string"}
                                        },
                                        "version": {"type": "string"}
                                    },
                                    "description": "Current Node information"
                                },
                                "recommended": {
                                    "type": "string",
                                    "description": "Recommended Node version"
                                },
                                "satisfied": {
                                    "type": "boolean",
                                    "description": "Whether or not recommended Node version condition is satisfied"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/gen_token": {
            "get": {
                "description": "Generate token for token based authentication",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "token": {"type": "string"}
                            }
                        }
                    }
                }
            }
        },
        "/add_wip": {
            "post": {
                "description": "An alternative to adding IPs to whitelist in the UI. This call needs to be authenticated by token and does not need to be sent from whitelisted IP",
                "tags": ["Manager"],
                "parameters": [
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Authorization token",
                        "type": "string"
                    },
                    {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "required": ["ip"],
                            "properties": {
                                "ip": {
                                    "type": "string",
                                    "description": "IP to whitelist",
                                    "example": "10.0.0.0"
                                }
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "400": {
                        "description": "Bad request. No IP was passed"
                    },
                    "403": {
                        "description": "Forbidden. No authentication provided"
                    },
                    "422": {
                        "description": "Unprocessable entity. Invalid IP was passed"
                    }
                }
            }
        },
        "/add_whitelist_ip": {
            "post": {
                "description": "Grants access to an IP to browse admin UI",
                "tags": ["Manager"],
                "parameters": [
                    {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "required": ["ip"],
                            "properties": {
                                "ip": {
                                    "type": "string",
                                    "description": "IP to whitelist",
                                    "example": "10.0.0.0"
                                }
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "400": {
                        "description": "Bad request. No IP was passed"
                    },
                    "422": {
                        "description": "Unprocessable entity. Invalid IP was passed"
                    }
                }
            }
        },
        "/proxies_running": {
            "get": {
                "description": "Return the effective configuration for all running proxies\n",
                "tags": ["Proxy", "Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "array",
                            "items": {"$ref": "#/definitions/proxy"}
                        }
                    }
                }
            }
        },
        "/recent_stats": {
            "get": {
                "description": "Return recent stats of all proxies",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "hostname": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/stat"
                                    },
                                    "description": "An array containing statistics grouped by host name"
                                },
                                "ports": {
                                    "type": "object",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "$ref": "#/definitions/stat"
                                        }
                                    },
                                    "description": "An object containing statistics grouped by proxy port",
                                    "example": {
                                        "24001": {
                                            "key": 24007,
                                            "in_bw": 1453,
                                            "out_bw": 579,
                                            "reqs": 2,
                                            "success": 2
                                        },
                                        "24002": {
                                            "key": 24257,
                                            "in_bw": 728,
                                            "out_bw": 277,
                                            "reqs": 1,
                                            "success": 1
                                        }
                                    }
                                },
                                "protocol": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/stat"
                                    },
                                    "description": "An array containing statistics grouped by protocol"
                                },
                                "status_code": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/stat"
                                    },
                                    "description": "An array containing statistics grouped by status code"
                                },
                                "ssl_enable": {
                                    "type": "boolean",
                                    "description": "Whether or not SSL Analyzing is enabled on all proxy ports"
                                },
                                "success": {
                                    "type": "number",
                                    "description": "Total number of successful requests"
                                },
                                "total": {
                                    "type": "number",
                                    "description": "Total number of requests"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/proxies": {
            "get": {
                "description": "Return the explicit configuration for all running proxies\n",
                "tags": ["Proxy", "Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "array",
                            "items": {"$ref": "#/definitions/proxy"}
                        }
                    }
                }
            },
            "post": {
                "description": "Add a new proxy",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "proxy",
                        "in": "body",
                        "description": "The proxy explicit configuration",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "proxy": {
                                    "$ref": "#/definitions/proxy"
                                }
                            }
                        },
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "data": {
                                    "$ref": "#/definitions/proxy"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Error response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "errors": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "msg": {"type": "string"},
                                            "field": {"type": "string"}
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/zones": {
            "get": {
                "description": "Return current customer's enabled zones' information",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "zones": {
                                    "description": "Zones' information",
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/zone"
                                    }
                                },
                                "def": {
                                    "description": "Current default zone",
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/enable_ssl": {
            "post": {
                "description": "Enables SSL Analyzing on all proxy ports",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/shutdown": {
            "post": {
                "description": "Shutdown LPM",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/upgrade": {
            "post": {
                "description": "Upgrade LPM",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/restart": {
            "post": {
                "description": "Restart LPM",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/proxies/delete": {
            "post": {
                "description": "Delete existing proxies",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "required": ["ports"],
                            "properties": {
                                "ports": {
                                    "type": "array",
                                    "items": {"type": "number"},
                                    "description": "Existing proxy ports",
                                    "example": [24000, 24001]
                                }
                            }  
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/proxies/{port}": {
            "put": {
                "description": "Update existing proxy",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                    },
                    {
                        "name": "proxy",
                        "in": "body",
                        "description": "The proxy explicit configuration",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "proxy": {
                                    "$ref": "#/definitions/proxy"
                                }
                            }
                        },
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "data": {
                                    "$ref": "#/definitions/proxy"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Error response"
                    }
                }
            },
            "delete": {
                "description": "Delete existing proxy",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/proxies/{port}/banip": {
            "post": {
                "description": "Ban an IP on a specific port for a certain amount of time",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                     },
                     {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "description": "IP ban options",
                        "schema": {
                            "type": "object",
                            "required": ["ip"],
                            "properties": {
                                "ip": {
                                    "type": "string",
                                    "example": "10.0.0.0"
                                },
                                "domain": {
                                    "type": "string",
                                    "example": "facebook.com"
                                },
                                "ms": {
                                    "type": "integer",
                                    "example": 60000
                                }
                            }
                        }
                     }
                ],
                "responses": {
                    "204": {"description": "Successful response"}
                }
            }
        },
        "/proxies/{port}/unbanip": {
            "post": {
                "description": "Unban an IP on a specific port ban",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                     },
                     {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "description": "IP unban options",
                        "schema": {
                            "type": "object",
                            "required": ["ip"],
                            "properties": {
                                "ip": {
                                    "type": "string",
                                    "example": "10.0.0.0"
                                },
                                "domain": {
                                    "type": "string",
                                    "example": "lumtest.com"
                                }
                            }
                        }
                     }
                ],
                "responses": {
                    "200": {
                      "description": "Successful response",
                      "schema": {
                          "type": "object",
                          "properties": {
                              "ips": {
                                  "type": "array",
                                  "items": {
                                      "type": "object",
                                      "properties": {
                                          "ip": {
                                              "type": "string"
                                          },
                                          "domain": {
                                              "type": "string"
                                          },
                                          "to": {
                                              "type": "number",
                                              "description": "Timestamp of when this IP will be unbanned in millisseconds"
                                          }
                                      }
                                  }
                              }
                          }
                      }
                    }
                }
            }
        },
        "/banlist/{port}": {
            "get": {
                "description": "Get the banned IPs of a specific port",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                     }
                ],
                "responses": {
                    "200": {
                      "description": "Successful response",
                      "schema": {
                          "type": "object",
                          "properties": {
                              "ips": {
                                  "type": "array",
                                  "items": {"type": "string"},
                                  "example": ["10.0.0.0", "10.0.0.1"]
                              }
                          }
                      }
                    },
                    "400": {
                        "description": "Server with port does not exist"
                    }
                }
            }
        },
        "/proxies/{port}/banips": {
            "post": {
                "description": "Ban a list of IPs on a specific port for a certain amunt of time",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Existing proxy port",
                        "required": true,
                        "type": "integer"
                     },
                     {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "description": "Ips ban options",
                        "schema": {
                            "type": "object",
                            "required": ["ips"],
                            "properties": {
                                "ips": {
                                    "type": "array",
                                    "items": {"type": "string"},
                                    "example": ["10.0.0.0", "10.0.0.1"]
                                },
                                "domain": {
                                    "type": "string",
                                    "example": "facebook.com"
                                },
                                "ms": {
                                    "type": "integer",
                                    "example": 60000
                                }
                            }
                        }
                     }
                ],
                "responses": {
                    "200": {"description": "Successful response"}
                }
            }
        },
        "/banip": {
            "post": {
                "description": "Ban an IP on all ports for a certain amount of time",
                "tags": ["Proxy"],
                "parameters": [
                     {
                        "name": "options",
                        "in": "body",
                        "required": true,
                        "description": "IP ban options",
                        "schema": {
                            "type": "object",
                            "required": ["ip"],
                            "properties": {
                                "ip": {
                                    "type": "string",
                                    "example": "10.0.0.0"
                                },
                                "domain": {
                                    "type": "string",
                                    "example": "facebook.com"
                                },
                                "ms": {
                                    "type": "integer",
                                    "example": 60000
                                }
                            }
                        }
                     }
                ],
                "responses": {
                    "204": {"description": "Successful response"}
                }
            }
        },
        "/refresh_sessions/{port}": {
            "get": {
                "description": "Switch luminati sessions to new sessions (get new IPs)",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Proxy port",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            },
            "post": {
                "description": "Switch luminati sessions to new sessions (get new IPs)",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Proxy port",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/proxy_status/{port}": {
            "get": {
                "description": "Return the status of the proxy",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Proxy port",
                        "required": true,
                        "type": "integer"
                    },
                    {
                        "name": "force",
                        "in": "query",
                        "description": "Force an updated check of the status",
                        "type": "boolean"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "status": {"type": "string"}
                            }
                        }
                    }
                }
            }
        },
        "/settings": {
            "get": {
                "description": "Return current LPM general settings",
                "tags": ["Proxy"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "$ref": "#/definitions/settings"  
                        }
                    }
                }
            },
            "put": {
                "description": "Update LPM general settings",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "settings",
                        "in": "body",
                        "description": "New settings",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/updatable_settings"  
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "$ref": "#/definitions/settings"  
                        }
                    }
                }
            }
        },
        "/refresh_zones": {
            "post": {
                "description": "Refresh zones",
                "tags": ["Proxy"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "400": {
                        "description": "Bad request. User is not currently logged in"
                    }
                }
            }
        },
        "/allocated_ips": {
            "get": {
                "description": "Return allocated IPs in determined zone",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "zone",
                        "in": "query",
                        "description": "Zone",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "ips": {
                                    "type": "array",
                                    "items": {"type": "string"},
                                    "example": ["10.0.0.0", "10.0.0.1"]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/allocated_vips": {
            "get": {
                "description": "Return allocated gIPs in determined zone",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "zone",
                        "in": "query",
                        "description": "Zone",
                        "required": true,
                        "type": "string"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "ips": {
                                    "type": "array",
                                    "items": {"type": "string"},
                                    "example": ["gip1", "gip2"]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/refresh_ips": {
            "post": {
                "description": "Refresh allocated IPs in determined zone",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "options",
                        "in": "body",
                        "description": "Refresh IP options",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "properties": {
                                "zone": {
                                    "description": "Zone",
                                    "type": "string"
                                },
                                "ips": {
                                    "description": "IPs to be refreshed",
                                    "type": "array",
                                    "items": {"type": "string"},
                                    "example": ["10.0.0.0", "10.0.0.1"]
                                }
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "ips": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/ip_object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/refresh_vips": {
            "post": {
                "description": "Refresh allocated gIPs in determined zone",
                "tags": ["Proxy"],
                "parameters": [
                    {
                        "name": "options",
                        "in": "body",
                        "description": "Refresh gIP options",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "properties": {
                                "zone": {
                                    "description": "Zone",
                                    "type": "string"
                                },
                                "vips": {
                                    "description": "gIPs to be refreshed",
                                    "type": "array",
                                    "items": {"type": "string"},
                                    "example": ["gip1", "gip2"]
                                }
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "vips": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/vip_object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/lpm_users": {
            "get": {
                "description": "List of all the available LPM users for the account",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "vips": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/lpm_user_object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/lpm_user": {
            "post": {
                "description": "Creates a new LPM user",
                "tags": ["Manager"],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/general_logs": {
            "get": {
                "description": "Returns the tail from the log file",
                "tags": ["Manager"],
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of the lines from the log file",
                        "type": "number"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        },
        "/logs": {
            "get": {
                "description": "Returns e",
                "tags": ["Manager"],
                "parameters": [
                    {
                        "name": "skip",
                        "in": "query",
                        "description": "Number of requests to be skipped from the beginning",
                        "type": "number"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Maximum number of requests to be fetched",
                        "type": "number"
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Regex search query for the URL",
                        "type": "string"
                    },
                    {
                        "name": "port_from",
                        "in": "query",
                        "description": "Lower bound for port number",
                        "type": "number"
                    },
                    {
                        "name": "port_to",
                        "in": "query",
                        "description": "Upper bound for port number",
                        "type": "number"
                    },
                    {
                        "name": "status_code",
                        "in": "query",
                        "description": "Filter requests by status code",
                        "type": "number"
                    },
                    {
                        "name": "sort",
                        "in": "query",
                        "description": "Parameter to be sorted by",
                        "type": "string"
                    },
                    {
                        "name": "sort_desc",
                        "in": "query",
                        "description": "Sorting asc or desc",
                        "type": "boolean"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    }
                }
            }
        }
    },
    "definitions": {
        "ip_object": {
            "type": "object",
            "properties": {
                "ip": {"type": "string"},
                "maxmind": {"type": "string"},
                "ext": {
                    "type": "object",
                    "properties": {
                        "dbip": {"type": "string"},
                        "ip2location": {"type": "string"},
                        "google": {"type": "string"},
                        "def": {"type": "string"}
                    }
                }
            }
        },
        "vip_object": {
            "type": "object",
            "properties": {
                "vip": {"type": "string"},
                "mapping": {"type": "string"},
                "country": {"type": "string"}
            }
        },
        "lpm_user_object": {
            "type": "object",
            "properties": {
                "email": {"type": "string"},
                "password": {"type": "string"}
            }
        },
        "stat": {
            "type": "object",
            "properties": {
                "key": {"type": "string"},
                "in_bw": {"type": "number"},
                "out_bw": {"type": "number"},
                "reqs": {"type": "number"},
                "success": {"type": "number"}
            }
        },
        "zone": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "perm": {"type": "string"},
                "plan": {"type": "object"},
                "password": {"type": "string"}
            }
        },
        "settings": {
            "type": "object",
            "properties": {
                "customer": {
                    "type": "string",
                    "description": "Default customer"
                },
                "zone": {
                    "type": "string",
                    "description": "Default zone"
                },
                "password": {
                    "type": "string",
                    "description": "Default password"
                },
                "www_whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Whitelist ip list for granting access to browser admin UI"
                },
                "whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Default for all proxies whitelist ip list for granting access to them"
                },
                "fixed_whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Default whitelisted IPs list with granted access for all proxies passed via command line or from www_whitelist_ips"
                },
                "config": {
                    "type": "string",
                    "description": "Config file containing proxy definitions"
                },
                "read_only": {
                    "type": "boolean",
                    "description": "Avoid saving current config in the config file"
                },
                "test_url": {
                        "type": "string",
                        "description": "Url for testing proxy"
                },
                "api": {
                    "type": "string",
                    "description": "Alternative domain url to luminati API"
                },
                "mail_domain": {
                    "type": "string",
                    "description": "Luminati support email domain (used in the UI)"
                },
                "logs": {
                    "type": "boolean",
                    "description": "Enable logs for all proxies"
                },
                "log": {
                    "type": "string",
                    "pattern": "^(error|warn|notice|info|debug)?$",
                    "description": "Log level"
                },
                "request_stats": {
                        "type": "boolean",
                        "description": "Enable requests statistics"
                },
                "dropin": {
                    "type": "boolean",
                    "description": "Create dropin mode proxy port (default: 22225)"
                },
                "pending_www_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "List of IPs not whitelisted that recently tried to access LPM"
                }
            }
        },
        "updatable_settings": {
            "type": "object",
            "properties": {
                "zone": {
                    "type": "string",
                    "description": "Default zone"
                },
                "www_whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Whitelist ip list for granting access to browser admin UI"
                },
                "whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Default for all proxies whitelist ip list for granting access to them"
                },
                "logs": {
                    "type": "boolean",
                    "description": "Enable logs for all proxies"
                },
                "request_stats": {
                        "type": "boolean",
                        "description": "Enable requests statistics"
                }
            }
        },
        "manager": {
            "type": "object",
            "properties": {
                "whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Default for all proxies whitelist ip list for granting access to them"
                },
                "www_whitelist_ips": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Whitelist ip list for granting access to browser admin UI"
                },
                "www": {
                    "type": "integer",
                    "description": "HTTP and WebSocket port used for browser admin UI and request logs"
                },
                "config": {
                    "type": "string",
                    "description": "Config file containing proxy definitions"
                },
                "cookie": {
                    "type": "string",
                    "description": "Cookie Jar file"
                },
                "mode": {
                    "type": "string",
                    "pattern": "^root|normal|guest$",
                    "description": "Defines a set of permissible operations within the UI/API"
                },
                "dropin": {
                    "type": "boolean",
                    "description": "Create dropin mode proxy port (default: 22225)"
                },
                "dropin_port": {
                    "type": "integer",
                    "description": "Port for dropin mode"
                },
                "no_usage_stats": {
                    "type": "boolean",
                    "description": "Disable collection of usage statistics"
                },
                "token": {
                    "type": "string",
                    "description": "A Google authorization token for accessing luminati.io"
                },
                "high_perf": {
                    "type": "boolean"
                },
                "cloud": {
                    "type": "boolean"
                },
                "cluster": {
                    "type": "boolean"
                },
                "request_stats": {
                    "type": "boolean",
                    "description": "Enable requests statistics"
                },
                "test_url": {
                    "type": "string",
                    "description": "Url for testing proxy"
                },
                "logs": {
                    "type": "boolean",
                    "description": "Enable logs for all proxies"
                },
                "force": {
                    "type": "boolean",
                    "description": "Kill other instances of LPM if there are any"
                },
                "session_termination": {
                    "type": "boolean",
                    "description": "Stop sending new requests when the peer IP becomes unavailable and redirect to confimration page before new IP is taken"
                },
                "api": {
                    "type": "string",
                    "description": "Alternative url to luminati API"
                },
                "api_domain": {
                    "type": "string",
                    "description": "Alternative domain url to luminati API"
                },
                "local_login": {
                    "type": "boolean",
                    "description": "Requires each browser to authenticate against LPM"
                },
                "read_only": {
                    "type": "boolean",
                    "description": "Avoid saving current config in the config file"
                }
            }
        },
        "proxy": {
            "type": "object",
            "properties": {
                "port": {
                    "type": "integer",
                    "description": "Port for the HTTP proxy"
                },
                "log": {
                    "type": "string",
                    "pattern": "^(error|warn|notice|info|debug)?$",
                    "description": "Log level"
                },
                "proxy_type": {
                     "type": "string",
                     "description": "Decide if to save proxy into the configuration file. Specifying \"persist\" in \"proxy_type\" value will create port and save it in the configuration file."
                },
                "multiply": {
                    "type": "integer",
                    "description": "Multiply the port definition given number of times"
                },
                "multiply_users": {
                    "type": "boolean"
                },
                "users": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "List of users. This option has to be used along with \"multiply_users\""
                },
                "ssl": {
                    "type": "boolean",
                    "description": "Enable SSL analyzing"
                },
                "har_limit": {
                    "type": "number",
                    "description": "Number of bytes to store"
                },
                "iface": {
                    "type": "string",
                    "description": "Interface or IP to listen on"
                },
                "customer": {
                    "type": "string",
                    "description": "Luminati customer"
                },
                "zone": {
                    "type": "string",
                    "description": "Zone"
                },
                "password": {
                    "type": "string",
                    "description": "Zone password"
                },
                "proxy": {
                    "type": "string",
                    "description": "Hostname or IP of super proxy"
                },
                "proxy_port": {
                    "type": "integer",
                    "description": "Super proxy port"
                },
                "proxy_connection_type": {
                    "type": "string",
                    "pattern": "^(http|https|socks)?$",
                    "description": "Determines what kind of connection will be used between LPM and Super Proxy"
                },
                "proxy_retry": {
                    "type": "integer",
                    "description": "Automatically retry on super proxy failure"
                },
                "insecure": {
                    "type": "boolean",
                    "description": "Enable SSL connection/analyzing to insecure hosts"
                },
                "country": {
                    "type": "string",
                    "description": "Country"
                },
                "state": {
                    "type": "string",
                    "description": "State"
                },
                "city": {
                    "type": "string",
                    "description": "City"
                },
                "asn": {
                    "type": "string",
                    "description": "ASN"
                },
                "ip": {
                    "type": "string",
                    "pattern": "^(\\d+\\.\\d+\\.\\d+\\.\\d+)?$",
                    "description": "Data center IP"
                },
                "vip": {
                    "type": "integer",
                    "description": "gIP"
                },
                "ext_proxies": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "A list of proxies from external vendors. Format: [username:password@]ip[:port]"
                },
                "ext_proxy_username": {
                    "type": "string",
                    "description": "default username for external vendor ips"
                },
                "ext_proxy_password": {
                    "type": "string",
                    "description": "default password for external vendor ips"
                },
                "ext_proxy_port": {
                    "type": "integer",
                    "description": "default port for external vendor ips"
                },
                "dns": {
                    "type": "string",
                    "pattern": "^(local|remote)?$",
                    "description": "DNS resolving"
                },
                "reverse_lookup_dns": {
                    "type": "boolean",
                    "description": "Process reverse lookup via DNS"
                },
                "reverse_lookup_file": {
                    "type": "string",
                    "description": "Process reverse lookup via file"
                },
                "reverse_lookup_values": {
                    "type": "array",
                    "items": {"type": "string"},
                    "description": "Process reverse lookup via value"
                },
                "session": {
                    "type": "string",
                    "pattern": "^[^\\.\\-]*$",
                    "description": "Luminati session for all proxy requests"
                },
                "sticky_ip": {
                    "type": "boolean",
                    "description": "Use session per requesting host to maintain IP per host"
                },
                "pool_size": {
                    "type": "integer",
                    "description": "Session pool size"
                },
                "max_requests": {
                    "type": "string",
                    "description": "Maximum requests per session"
                },
                "session_duration": {
                    "type": "string",
                    "description": "Maximum duration of session (seconds)"
                },
                "throttle": {
                    "type": "integer",
                    "description": "Throttle requests above given number"
                },
                "rules": {
                    "type": "array",
                    "items": {"type": "object"},
                    "description": "Proxy request rules"
                },
                "race_reqs": {
                    "type": "integer",
                    "description": "Race several requests at once and choose fastest"
                },
                "route_err": {
                    "type": "string",
                    "description": "Block or allow requests to be automatically sent through super proxy on error"
                },
                "smtp": {
                    "type": "array",
                    "items": {"type": "string"}
                },
                "override_headers": {
                    "type": "boolean"
                },
                "os": {
                    "type": "string",
                    "description": "Operating System of the Peer IP"
                },
                "headers":{
                    "type":"array",
                    "items": {"type": "object"},
                    "description":"Request headers",
                    "example":[
                       {
                        "name": "accept",
                        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"
                       },
                       {
                        "name": "accept-language",
                        "value": "en-US,en;q=0.9"
                       },
                       {
                        "name": "alexatoolbar-alx_ns_ph",
                        "value": "AlexaToolbar/alx-4.0.3"
                       },
                       {
                        "name": "cache-control",
                        "value": "max-age=0"
                       },
                       {
                        "name": "upgrade-insecure-requests",
                        "value": "1"
                       }
                     ]
                },
                "debug": {
                    "type": "string",
                    "pattern": "^(full|none)?$",
                    "description": "Luminati request debug info"
                }
            }
        }
    }
}
