{
  "$schema" : "https://json-schema.org/draft/2020-12/schema",
  "$defs" : {
    "ActionEnum" : {
      "type" : "string",
      "enum" : [ "ACTIVATION", "DEACTIVATION" ]
    },
    "CategoryEnum" : {
      "type" : "string",
      "enum" : [ "TELEVISION", "INTERNET", "DOMAIN", "EMAIL", "VOIP", "HOSTING", "MOBILE", "VAS", "ANTIVIRUS" ]
    },
    "ConditionEnum" : {
      "type" : "string",
      "enum" : [ "AND", "OR" ]
    },
    "DataTypeEnum" : {
      "type" : "string",
      "enum" : [ "STRING", "NUMBER", "ENUM", "DYNAMIC_ENUM", "URL", "BOOLEAN", "OBJECT", "ARRAY", "DATETIME", "TIME_RANGE", "BASE64", "QR_CODE", "DATE", "PLACE", "PASSWORD" ]
    },
    "LocalizedName" : {
      "type" : "object",
      "properties" : {
        "fullName" : {
          "type" : "string"
        },
        "langCode" : {
          "type" : "string"
        },
        "shortName" : {
          "type" : "string"
        }
      },
      "required" : [ "langCode", "shortName" ]
    },
    "PolicyType" : {
      "type" : "object",
      "properties" : {
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "optionRefs" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "propertyRefs" : {
          "type" : "array",
          "items" : {
            "type" : "string"
          }
        },
        "type" : {
          "type" : "string"
        }
      },
      "required" : [ "id" ]
    },
    "QualificationType" : {
      "type" : "object",
      "properties" : {
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        },
        "required" : {
          "type" : "boolean"
        }
      },
      "required" : [ "id" ]
    },
    "ReservationType" : {
      "type" : "object",
      "properties" : {
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        }
      },
      "required" : [ "id" ]
    },
    "ResourceType" : {
      "type" : "object",
      "properties" : {
        "configurations" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceTypeConfiguration"
          }
        },
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "key" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        },
        "reservations" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ReservationType"
          }
        },
        "type" : {
          "$ref" : "#/$defs/TypeEnum-2"
        }
      },
      "required" : [ "id", "name", "type" ]
    },
    "ResourceTypeConfiguration" : {
      "type" : "object",
      "properties" : {
        "action" : {
          "$ref" : "#/$defs/ActionEnum"
        },
        "rules" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceTypeConfigurationRulesInner"
          }
        }
      }
    },
    "ResourceTypeConfigurationRulesInner" : {
      "type" : "object",
      "properties" : {
        "condition" : {
          "$ref" : "#/$defs/ConditionEnum"
        },
        "dependencies" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceTypeConfigurationRulesInnerDependenciesInner"
          }
        }
      }
    },
    "ResourceTypeConfigurationRulesInnerDependenciesInner" : {
      "type" : "object",
      "properties" : {
        "key" : {
          "type" : "string"
        },
        "type" : {
          "$ref" : "#/$defs/TypeEnum-1"
        },
        "value" : {
          "type" : "string"
        }
      }
    },
    "ResponseType" : {
      "type" : "string",
      "enum" : [ "SINGLE", "LIST" ]
    },
    "ScopeEnum" : {
      "type" : "string",
      "enum" : [ "PRODUCT_CATALOG", "ORDER", "INFO" ]
    },
    "ServiceActionType" : {
      "type" : "object",
      "properties" : {
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "inputParams" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        },
        "key" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "responseType" : {
          "$ref" : "#/$defs/ResponseType"
        },
        "serviceTypeId" : {
          "type" : "string"
        }
      },
      "required" : [ "id", "key", "name", "responseType" ]
    },
    "ServiceOptionType" : {
      "type" : "object",
      "properties" : {
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "required" : {
          "type" : "boolean"
        },
        "serviceTypeId" : {
          "type" : "string"
        },
        "valueType" : {
          "$ref" : "#/$defs/ValueType"
        }
      },
      "required" : [ "id", "name", "required", "valueType" ]
    },
    "ServiceType" : {
      "type" : "object",
      "properties" : {
        "actions" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ServiceActionType"
          }
        },
        "category" : {
          "$ref" : "#/$defs/CategoryEnum"
        },
        "description" : {
          "type" : "string"
        },
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "options" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ServiceOptionType"
          }
        },
        "policies" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/PolicyType"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        },
        "providerTypeId" : {
          "type" : "string"
        },
        "qualificationTypes" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/QualificationType"
          }
        },
        "resources" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ResourceType"
          }
        },
        "xdrs" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/XdrType"
          }
        }
      },
      "required" : [ "id", "name", "providerTypeId" ]
    },
    "TypeEnum-1" : {
      "type" : "string",
      "enum" : [ "SERVICE_STATE", "SERVICE_PROPERTY", "OPTION" ]
    },
    "TypeEnum-2" : {
      "type" : "string",
      "enum" : [ "PHYSICAL", "LOGICAL" ]
    },
    "ValueType" : {
      "type" : "object",
      "properties" : {
        "dataType" : {
          "$ref" : "#/$defs/DataTypeEnum"
        },
        "defaultValue" : { },
        "enumValues" : {
          "type" : "array",
          "items" : { }
        },
        "index" : {
          "type" : "integer"
        },
        "key" : {
          "type" : "string"
        },
        "max" : {
          "type" : "integer"
        },
        "min" : {
          "type" : "integer"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "required" : {
          "type" : "boolean"
        },
        "scope" : {
          "$ref" : "#/$defs/ScopeEnum"
        },
        "validation" : {
          "type" : "string"
        },
        "validationMsg" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        }
      },
      "required" : [ "dataType", "key", "required" ]
    },
    "XdrType" : {
      "type" : "object",
      "properties" : {
        "id" : {
          "type" : "string"
        },
        "name" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/LocalizedName"
          }
        },
        "properties" : {
          "type" : "array",
          "items" : {
            "$ref" : "#/$defs/ValueType"
          }
        }
      },
      "required" : [ "id" ]
    }
  },
  "type" : "array",
  "items" : {
    "$ref" : "#/$defs/ServiceType"
  },
  "title" : "ServiceTypeList"
}