{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "anyOf": [
    {
      "additionalProperties": false,
      "properties": {
        "data": {
          "additionalProperties": false,
          "properties": {
            "eula": {
              "anyOf": [
                {
                  "$ref": "#/definitions/imunify.license.v1.Eula"
                },
                {
                  "type": "null"
                }
              ]
            },
            "items": {
              "$ref": "#/definitions/imunify.core.rpc.v1.NullPayload"
            },
            "license": {
              "$ref": "#/definitions/imunify.license.v1.License"
            },
            "strategy": {
              "type": "string"
            },
            "version": {
              "type": "string"
            },
            "warnings": {
              "$ref": "#/definitions/imunify.core.rpc.v1.StringList"
            }
          },
          "required": [
            "items",
            "license",
            "version"
          ],
          "type": "object"
        },
        "messages": {
          "$ref": "#/definitions/imunify.core.rpc.v1.Messages"
        },
        "result": {
          "const": "success",
          "type": "string"
        },
        "status": {
          "enum": [
            "running",
            "downgrading",
            "installing",
            "upgrading",
            "not_installed",
            "failed_to_install",
            "socket_inaccessible",
            "stopped"
          ],
          "type": "string"
        }
      },
      "required": [
        "data",
        "messages",
        "result"
      ],
      "type": "object"
    },
    {
      "$ref": "#/definitions/imunify.core.rpc.v1.ErrorFrame"
    },
    {
      "$ref": "#/definitions/imunify.core.rpc.v1.WarningFrame"
    }
  ],
  "definitions": {
    "imunify.core.rpc.v1.ErrorFrame": {
      "additionalProperties": false,
      "properties": {
        "messages": {
          "$ref": "#/definitions/imunify.core.rpc.v1.Messages"
        },
        "result": {
          "const": "error",
          "type": "string"
        },
        "status": {
          "enum": [
            "running",
            "downgrading",
            "installing",
            "upgrading",
            "not_installed",
            "failed_to_install",
            "socket_inaccessible",
            "stopped"
          ],
          "type": "string"
        }
      },
      "required": [
        "messages",
        "result"
      ],
      "type": "object"
    },
    "imunify.core.rpc.v1.Messages": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/imunify.core.rpc.v1.StringList"
        }
      ]
    },
    "imunify.core.rpc.v1.NullPayload": {
      "type": "null"
    },
    "imunify.core.rpc.v1.StringList": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "imunify.core.rpc.v1.WarningFrame": {
      "additionalProperties": false,
      "properties": {
        "code": {
          "type": "string"
        },
        "messages": {
          "$ref": "#/definitions/imunify.core.rpc.v1.Messages"
        },
        "result": {
          "const": "warnings",
          "type": "string"
        },
        "status": {
          "enum": [
            "running",
            "downgrading",
            "installing",
            "upgrading",
            "not_installed",
            "failed_to_install",
            "socket_inaccessible",
            "stopped"
          ],
          "type": "string"
        }
      },
      "required": [
        "messages",
        "result"
      ],
      "type": "object"
    },
    "imunify.license.v1.Eula": {
      "additionalProperties": false,
      "properties": {
        "message": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "updated": {
          "type": "string"
        }
      },
      "required": [
        "message",
        "text",
        "updated"
      ],
      "type": "object"
    },
    "imunify.license.v1.FullLicense": {
      "additionalProperties": false,
      "properties": {
        "demo": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "eligible_for_imunify_patch": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "expiration": {
          "description": "Legacy license expiration accepts any JSON value in AgentResponseData."
        },
        "id": {
          "type": "string"
        },
        "ip_license": {
          "type": "boolean"
        },
        "license_type": {
          "anyOf": [
            {
              "enum": [
                "imunifyAV",
                "imunifyAVPlus",
                "imunify360Trial",
                "imunify360"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "pricing": {
          "$ref": "#/definitions/imunify.license.v1.LicensePricing"
        },
        "redirect_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "status": {
          "type": "boolean"
        },
        "upgrade_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "upgrade_url_360": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "user_count": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ]
        },
        "user_limit": {
          "type": "number"
        }
      },
      "required": [
        "eligible_for_imunify_patch",
        "id",
        "license_type",
        "message",
        "status",
        "upgrade_url",
        "upgrade_url_360",
        "user_count",
        "user_limit"
      ],
      "type": "object"
    },
    "imunify.license.v1.License": {
      "anyOf": [
        {
          "$ref": "#/definitions/imunify.license.v1.FullLicense"
        },
        {
          "$ref": "#/definitions/imunify.license.v1.Unlicensed"
        },
        {
          "$ref": "#/definitions/imunify.license.v1.UserLicense"
        }
      ]
    },
    "imunify.license.v1.LicensePrice": {
      "additionalProperties": false,
      "properties": {
        "bulk": {
          "type": "string"
        },
        "standard": {
          "type": "string"
        }
      },
      "required": [
        "standard"
      ],
      "type": "object"
    },
    "imunify.license.v1.LicensePricing": {
      "additionalProperties": false,
      "properties": {
        "im_360_1": {
          "$ref": "#/definitions/imunify.license.v1.LicensePrice"
        },
        "im_360_250": {
          "$ref": "#/definitions/imunify.license.v1.LicensePrice"
        },
        "im_360_30": {
          "$ref": "#/definitions/imunify.license.v1.LicensePrice"
        },
        "im_360_unlimited": {
          "$ref": "#/definitions/imunify.license.v1.LicensePrice"
        },
        "im_av": {
          "$ref": "#/definitions/imunify.license.v1.LicensePrice"
        }
      },
      "type": "object"
    },
    "imunify.license.v1.Unlicensed": {
      "additionalProperties": false,
      "properties": {
        "eligible_for_imunify_patch": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "expiration": {
          "description": "Legacy license expiration accepts any JSON value in AgentResponseData."
        },
        "redirect_url": {
          "type": "null"
        },
        "status": {
          "const": false,
          "type": "boolean"
        },
        "upgrade_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "upgrade_url_360": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "eligible_for_imunify_patch",
        "redirect_url",
        "status",
        "upgrade_url",
        "upgrade_url_360"
      ],
      "type": "object"
    },
    "imunify.license.v1.UserLicense": {
      "additionalProperties": false,
      "properties": {
        "eligible_for_imunify_patch": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        },
        "expiration": {
          "description": "Legacy license expiration accepts any JSON value in AgentResponseData."
        },
        "license_type": {
          "anyOf": [
            {
              "enum": [
                "imunifyAV",
                "imunifyAVPlus",
                "imunify360Trial",
                "imunify360"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "status": {
          "type": "boolean"
        }
      },
      "required": [
        "eligible_for_imunify_patch",
        "license_type",
        "status"
      ],
      "type": "object"
    }
  }
}
