diff --git a/SDKGenerator/Program.cs b/SDKGenerator/Program.cs new file mode 100644 index 0000000..7c1db63 --- /dev/null +++ b/SDKGenerator/Program.cs @@ -0,0 +1,997 @@ +using CaseExtensions; +using Nustache.Core; +using System.Globalization; +using System.Runtime.CompilerServices; +using System.Security; +using System.Text.RegularExpressions; +using NSwag; +using NJsonSchema; +using NJsonSchema.References; +using System.Net; +using System.Web; +using System.Text; +using NSwag.Collections; +using System.Collections; + +namespace SDK +{ + class Program + { + static string projectDirectory = @"C:\Users\Phillip\source\repos\vspheresdk\vspheresdk"; + static string generatorDirectory = @"C:\Users\Phillip\source\repos\vspheresdk\SDKGenerator"; + static string templatesDirectory = @"C:\Users\Phillip\source\repos\vspheresdk\Templates"; + + static Dictionary models = new Dictionary(); + + + + static void Main(string[] args) + { + + + Helpers.Register(nameof(ToXmlDoc), ToXmlDoc); + Helpers.Register(nameof(GetMethodName), GetMethodName); + Helpers.Register(nameof(GetDotNetName), GetDotNetName); + Helpers.Register(nameof(GetDotNetType), GetDotNetType); + Helpers.Register(nameof(GetOperationPathParams), GetOperationPathParams); + Helpers.Register(nameof(GetOperationPathInjectionCode), GetOperationPathInjectionCode); + Helpers.Register(nameof(GetOperationHttpMethod), GetOperationHttpMethod); + Helpers.Register(nameof(GetOperationReturnType), GetOperationReturnType); + Helpers.Register(nameof(GetResponseType), GetResponseType); + Helpers.Register(nameof(GetPSValueDefinition), GetPSValueDefinition); + Helpers.Register(nameof(GetResponseTypeName), GetResponseTypeName); + Helpers.Register(nameof(GetPSVerb), GetPSVerb); + Helpers.Register(nameof(GetBool), GetBool); + Helpers.Register(nameof(GetTuple), GetTuple); + Helpers.Register(nameof(GetLowerCase), GetLowerCase); + Helpers.Register(nameof(GetCmdLetReturnCode), GetCmdLetReturnCode); + Helpers.Register(nameof(GetServiceUrl), GetServiceUrl); + Helpers.Register(nameof(GetResponseName), GetResponseName); + Helpers.Register(nameof(GetParameterPascalCase), GetParameterPascalCase); + Helpers.Register(nameof(SetDefaultValue), SetDefaultValue); + + + + var jsonFiles = Directory.GetFiles(generatorDirectory, "*.json"); + Dictionary apiDocuments = new Dictionary(); + foreach (var file in jsonFiles) + { + var simpleFileName = Path.GetFileNameWithoutExtension(file); + var apidoc = OpenApiDocument.FromFileAsync(file).Result; + JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(apidoc); + apiDocuments.Add(simpleFileName.ToPascalCase(), apidoc); + Directory.CreateDirectory(Path.Combine(projectDirectory, simpleFileName.ToPascalCase())); + Directory.CreateDirectory(Path.Combine(projectDirectory, simpleFileName.ToPascalCase(), "Models")); + Directory.CreateDirectory(Path.Combine(projectDirectory, simpleFileName.ToPascalCase(), "Models", "Enums")); + Directory.CreateDirectory(Path.Combine(projectDirectory, simpleFileName.ToPascalCase(), "Modules")); + } + + Directory.CreateDirectory(Path.Combine(projectDirectory, "Models")); + + foreach (var apiDoc in apiDocuments) + { + foreach (var model in apiDoc.Value.Definitions) + { + string className = model.Key.EndsWith("type", StringComparison.InvariantCultureIgnoreCase) ? PascalCase(model.Key) : PascalCase(model.Key + "Type"); + if (models.Any(x => x.Value.Equals(className, StringComparison.CurrentCultureIgnoreCase))) + { + className = $"{className}" + "A"; + + } + if (!models.Any(x => x.Key.Equals(model.Key, StringComparison.InvariantCulture))) + { + models.Add(model.Key, className); + } + } + } + + foreach (var apiDoc in apiDocuments) + { + foreach (var model in apiDoc.Value.Definitions.Where(x => x.Value.Type == JsonObjectType.Object)) + { + string className = LookupClassName(model.Key); + + Render.FileToFile(Path.Combine(generatorDirectory, "Templates", "Model.cs.template"), new + { + clz = className, + module = model, + rootmodule = apiDoc.Key, + properties = model.Value.Properties, + }, Path.Combine(projectDirectory, apiDoc.Key, "Models", $"{ className}.cs")); + + } + foreach (var model in apiDoc.Value.Definitions.Where(x => x.Value.Type != JsonObjectType.Object && x.Value.Enumeration.Count > 0)) + { + EnumType currentEnum = new EnumType(); + if (models.ContainsKey(model.Key)) + { + currentEnum.EnumName = models.Single(x => x.Key.Equals(model.Key, StringComparison.Ordinal)).Value; + } + + + currentEnum.Description = model.Value.Description; + foreach (var enumValue in model.Value.Enumeration) + { + int index = 1; + if (currentEnum.Values.Count > 0) + { + index = (string)model.Value.Default == (string)enumValue ? 0 : currentEnum.Values.Last().EnumIndex + 1; + } + currentEnum.Values.Add(new EnumValueType() { EnumValue = char.IsDigit(((string)enumValue)[0]) ? "A" + PascalCase(enumValue as string) : PascalCase(enumValue as string), JsonEnumValue = (enumValue as string).Replace(" ", "_").ToUpper(), EnumIndex = index }); + } + if (currentEnum.EnumName.Contains("vcentervmpowerstatetype", StringComparison.OrdinalIgnoreCase)) + { + + } + Render.FileToFile(Path.Combine(generatorDirectory, "Templates", "EnumModel.cs.template"), new + { + rootmodule = apiDoc.Key, + currentEnum + }, Path.Combine(projectDirectory, apiDoc.Key, "Models", "Enums", $"{currentEnum.EnumName}.cs")); + } + + var tags = apiDoc.Value.Paths.Values.SelectMany(x => x.SelectMany(y => y.Value.Tags.Select(z => z.ToString()))).Distinct().Select(x => new { tag = x, pascalname = PascalCase(x) }); + foreach (var tag in tags) + { + var operations = apiDoc.Value.Paths.SelectMany(x => x.Value.Select(y => new Tuple(x.Key, x.Value, y.Key, y.Value)).Where(x => x.Item4.Tags.Contains(tag.tag) && x.Item1.StartsWith("/api"))); + Render.FileToFile(Path.Combine(generatorDirectory, "Templates", "Module.cs.template"), new + { + rootmodule = apiDoc.Key, + module = tag.pascalname, + operations = operations, + }, Path.Combine(projectDirectory, apiDoc.Key, "Modules", $"{tag.pascalname}.cs")); ; + } + + Render.FileToFile(Path.Combine(generatorDirectory, "Templates", "SubModule.cs.template"), new + { + rootmodule = apiDoc.Key, + modules = tags.Select(x => x.pascalname), + }, Path.Combine(projectDirectory,$"{apiDoc.Key}Module.cs")); ; + + + } + Render.FileToFile(Path.Combine(generatorDirectory, "Templates", "RootModule.cs.template"), new + { + submodules = apiDocuments.Keys, + }, Path.Combine(projectDirectory, "vSphereClient.cs")); ; + + + var test = models.Where(x => x.Value.Equals("VcenterVMsummary", StringComparison.InvariantCultureIgnoreCase)); + } + + + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[])value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array)value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + private static void GetServiceUrl(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var argumentsObject = (Tuple)arguments[0]; + var url = (string)argumentsObject.Item1; + context.Write($"{url}"); + } + private static void SetDefaultValue(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + //var (method, operation) = ((KeyValuePair)arguments[0]); + context.Write($"test"); + } + private static void GetCmdLetReturnCode(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var parameter = (OpenApiParameter)arguments[0]; + context.Write($"{GetDotNetType(parameter)} {PascalCase(parameter.Name)}"); + } + private static void GetParameterPascalCase(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var parameter = (string)arguments[0]; + context.Write($"{PascalCase(parameter)}"); + } + private static void GetPSValueDefinition(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var parameter = (OpenApiParameter)arguments[0]; + context.Write($"{GetDotNetType(parameter)} {PascalCase(parameter.Name)}"); + } + private static void GetPSVerb(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var (method, operation) = (KeyValuePair)arguments[0]; + string module = arguments[1] as string; + List list = StringSplitter(operation.OperationId); + context.Write($"\"{list[0]}\",\"{module}{PascalCase(string.Join("", list.GetRange(1, list.Count - 1)))}\""); + } + private static void GetResponseTypeName(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var response = (OpenApiResponse)arguments[0]; + string typeName = LookupClassName(((IJsonReferenceBase)response.Schema).ReferencePath.Split("/")[3]); + + context.Write(typeName); + } + private static void ToXmlDoc(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + if (arguments != null && arguments.Count > 0 && arguments[0] != null && arguments[0] is string) + { + var first = true; + using (var reader = new StringReader(arguments[0] as string)) + { + string line = null; + while ((line = reader.ReadLine()) != null) + { + if (arguments.Count > 1 && arguments[1] as string == "wrap") + { + foreach (var wline in WordWrap(line, 120)) + { + if (!first) + { + context.Write("\r\n /// "); + } + else + { + first = false; + } + + context.Write(HttpUtility.HtmlDecode(wline)); + } + } + else + { + context.Write(SecurityElement.Escape(line.Replace("\n", "").Replace("\r", ""))); + } + } + } + } + } + + private static void GetOperationPathParams(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var argumentsObject = (Tuple)arguments[0]; + var method = (string)argumentsObject.Item3; + var operation = (OpenApiOperation)argumentsObject.Item4; + + List returnList = new(); + foreach (var parameter in operation.Parameters.OrderByDescending(x => x.IsRequired)) + { + returnList.Add($"{(GetDotNetType(parameter))} {PascalCase(parameter.Name)}" + (parameter.IsRequired ? "" : " = null")); + } + context.Write(string.Join(", ", returnList)); + } + + private static void GetOperationReturnType(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + + var argumentsObject = (Tuple)arguments[0]; + var method = (string)argumentsObject.Item3; + var operation = (OpenApiOperation)argumentsObject.Item4; + var response = operation.Responses.FirstOrDefault(x => x.Key.StartsWith("20")); + + + if (response.Value.Schema != null) + { + if (response.Value.Schema?.Reference != null) + { + string className = LookupClassName(((IJsonReferenceBase)response.Value.Schema).ReferencePath.Split("/").Last()); + + if (arguments[1] as string == "full") + { + context.Write($"Task<{className}>"); + } + else if (arguments[1] as string == "bare") + { + context.Write($"<{className}>"); + } + else if (arguments[1] as string == "init") + { + context.Write($"{className} returnValue = default({className});"); + } + else if (arguments[1] as string == "cast") + { + context.Write($"returnValue = JsonConvert.DeserializeObject<{className}>(response.Content, defaultSerializationSettings);"); + } + else if (arguments[1] as string == "return") + { + var okResponse = operation.Responses.FirstOrDefault(x => x.Key.StartsWith("20")); + if (okResponse.Value.Schema != null) + { + context.Write("return response.Data;"); + } + } + else if (arguments[1] as string == "cmdlet") + { + context.Write($"[OutputType(typeof({className}))]"); + } + } + else if (response.Value.Schema?.Type != JsonObjectType.None) + { + string className = ""; + if (response.Value.Schema.Type == JsonObjectType.Array) + { + + if (response.Value.Schema.Reference != null) + { + string casting = LookupClassName(((IJsonReferenceBase)response.Value).ReferencePath.Split("/")[3]); + + className = $"List<{casting}"; + } + else if (response.Value.Schema.Item.Reference != null) + { + string casting = LookupClassName(((IJsonReferenceBase)response.Value.Schema.Item).ReferencePath.Split("/")[3]); + className = $"List<{casting}>"; + + } + else + { + className = $"List<{response.Value.Schema.Item.Type.ToString().ToLower()}>"; + } + } + else + { + if (response.Value.Schema.Type == JsonObjectType.Integer) + { + className = $"long"; + } + else + { + className = $"{response.Value.Schema.Type.ToString().ToLower()}"; + } + } + + if (arguments[1] as string == "full") + { + context.Write($"Task<{className}>"); + } + else if (arguments[1] as string == "bare") + { + context.Write($"<{className}>"); + } + else if (arguments[1] as string == "init") + { + context.Write($"{className} returnValue = default({className});"); + } + else if (arguments[1] as string == "cast") + { + context.Write($"returnValue = JsonConvert.DeserializeObject<{className}>(response.Content, defaultSerializationSettings);"); + } + else if (arguments[1] as string == "return") + { + var okResponse = operation.Responses.FirstOrDefault(x => x.Key.StartsWith("20")); + if (okResponse.Value.Schema != null) + { + context.Write("return response.Data;"); + } + } + } + } + else + { + if (arguments[1] as string == "full") + { + context.Write("Task"); + } + else if (arguments[1] as string == "bare") + { + } + else if (arguments[1] as string == "init") + { + } + else if (arguments[1] as string == "cast") + { + } + else if (arguments[1] as string == "return") + { + } + + } + + } + private static void GetOperationHttpMethod(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var argumentsObject = (Tuple)arguments[0]; + var method = (string)argumentsObject.Item3; + var operation = (OpenApiOperation)argumentsObject.Item4; + + + context.Write(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(method)); + + } + private static void GetResponseType(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + ObservableDictionary responseList = arguments[0] as ObservableDictionary; + var okResponse = responseList.FirstOrDefault(x => x.Key.StartsWith("20")); + + //if (okResponse.Value.Schema != null) + //{ + // if (okResponse.Value.Schema?.Reference != null) + // { + // context.Write($"returnValue = JsonConvert.DeserializeObject(response.Content, defaultSerializationSettings);"); + // } + // else if (okResponse.Value.Schema?.Type != JsonObjectType.None) + // { + // context.Write($"returnValue = JsonConvert.DeserializeObject<{okResponse.Value.Schema.Type.ToString().ToLower()}>(response.Content, defaultSerializationSettings);"); + // } + //} + + } + + private static void GetOperationPathInjectionCode(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var parameter = (arguments[0] as OpenApiParameter); + if (parameter.Kind == OpenApiParameterKind.Path) + { + context.Write($"{PascalCase((parameter.Parent as OpenApiOperation).OperationId)}ServiceURL.Replace(\"{{{parameter.Name}}}\", System.Uri.EscapeDataString(Helpers.ConvertToString({PascalCase(parameter.Name)}, System.Globalization.CultureInfo.InvariantCulture)));"); + } + if (parameter.Kind == OpenApiParameterKind.Query) + { + context.Write($"if ({PascalCase(parameter.Name)} != null) {{ request.AddQueryParameter(\"{parameter.Name}\", {PascalCase(parameter.Name)}.ToString()); }}"); + } + if (parameter.Kind == OpenApiParameterKind.Body) + { + context.Write($"request.AddJsonBody({PascalCase(parameter.Name)});"); + } + } + + private static void GetLowerCase(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var test = arguments[0]; + context.Write(arguments[0]?.ToString()?.ToLower()); + } + private static void GetBool(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var test = arguments[0]; + context.Write(Boolean.Parse(arguments[0]?.ToString()).ToString()); + } + private static void GetTuple(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + if (arguments != null && arguments.Count > 0 && arguments[0] is ITuple && options.TryGetValue("index", out var indexObj) && int.TryParse(indexObj?.ToString(), out var index)) + { + var pair = (ITuple)arguments[0]; + var value = pair[index]; + context.Write(value.ToString()); + } + } + + private static void GetMethodName(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + var argumentsObject = (Tuple)arguments[0]; + var method = (string)argumentsObject.Item3; + var operation = (OpenApiOperation)argumentsObject.Item4; + + context.Write(PascalCase(operation.OperationId)); + + + } + private static void GetResponseName(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + + var (_response, _operation) = ((DictionaryEntry)arguments[0]); + var response = (string)_response; + var operation = (OpenApiResponse)_operation; + context.Write(PascalCase(response)); + } + + + private static void GetDotNetType(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + if (arguments != null && arguments.Count > 0 && arguments[0] != null && arguments[0] is JsonSchemaProperty) + { + var parameter = arguments[0] as JsonSchemaProperty; + context.Write(GetDotNetType(parameter, arguments)); + } + } + private static string GetDotNetType(OpenApiParameter parameter) + { + switch (parameter.Type) + { + case JsonObjectType.Boolean: + return $"bool{(parameter.IsRequired ? "" : "?")}"; + break; + case JsonObjectType.Integer: + switch (parameter.Format) + { + case "int64": + return $"long{(parameter.IsRequired ? "" : "?")}"; + case "int32": + default: + return $"int{(parameter.IsRequired ? "" : "?")}"; + } + break; + + case JsonObjectType.Number: + return $"double{(parameter.IsRequired ? "" : "?")}"; + break; + + case JsonObjectType.String: + switch (parameter.Format) + { + case "byte": + return "byte[]"; + case "date-time": + return $"DateTime{(parameter.IsRequired ? "" : "?")}"; + } + return parameter.IsRequired ? "string" : "string?"; + break; + + case JsonObjectType.File: + return $"string{(parameter.IsRequired ? "" : "?")}"; + break; + + case JsonObjectType.Object: + + + return $"{parameter.AdditionalItemsSchema.Reference}{(parameter.IsRequired ? "" : "?")}"; + break; + + case JsonObjectType.None: + if (parameter.Schema.Reference.Type != null && parameter.Schema.Reference.Type != JsonObjectType.Object) + { + return $"{parameter.Schema.Reference.Type.ToString().ToLower()}"; + } + var returnType = LookupClassName(((IJsonReferenceBase)parameter.Schema).ReferencePath.Split("/")[3]); + return returnType; + break; + + case JsonObjectType.Array: + if (((IJsonReferenceBase)parameter.Item).ReferencePath != null) + { + var returnType1 = LookupClassName(((IJsonReferenceBase)parameter.Schema).ReferencePath.Split("/")[3]); + return returnType1; + } + else + { + string returnType1 = parameter.Item.Type.ToString().ToLower(); + return $"{returnType1}"; + } + + + break; + + default: + //throw new NotSupportedException(); + Console.WriteLine($"{parameter.Type} for {parameter.Name} not handeled"); + return "object"; + break; + + + } + } + private static string GetDotNetType(JsonSchemaProperty jsonType, IList arguments) + { + if (jsonType.Name.Contains("Cdroms", StringComparison.OrdinalIgnoreCase)) + { + + } + + switch (jsonType.Type) + { + case JsonObjectType.Boolean: + if (jsonType.IsRequired) + { + return "bool"; + } + else + { + return "bool?"; + } + + case JsonObjectType.Integer: + switch (jsonType.Format) + { + case "int64": + if (jsonType.IsRequired) + { + return "long"; + } + else + { + return "long?"; + } + case "int32": + default: + if (jsonType.IsRequired) + { + return "int"; + } + else + { + return "int?"; + } + } + + case JsonObjectType.Number: + if (jsonType.IsRequired) + { + return "double"; + } + else + { + return "double?"; + } + + case JsonObjectType.String: + switch (jsonType.Format) + { + case "byte": + return "byte[]"; + case "date-time": + if (jsonType.IsRequired) + { + return "DateTime"; + } + else + { + return "DateTime?"; + } + } + return jsonType.IsRequired ? "string" : "string?"; + case JsonObjectType.Array: + if (jsonType.Item?.Reference != null) + { + var _type = LookupClassName(((IJsonReferenceBase)jsonType.Item).ReferencePath.Split("/")[3]); + var returnType = $"Dictionary"; + return returnType; + } + else + { + if (jsonType.Type == JsonObjectType.Array) + { + if (jsonType.Item.Type == JsonObjectType.Integer) + { + switch (jsonType.Item.Format) + { + case "int64": + if (jsonType.IsRequired) + { + return "long"; + } + else + { + return "long?"; + } + case "int32": + default: + if (jsonType.IsRequired) + { + return "int"; + } + else + { + return "int?"; + } + } + } + if (jsonType.Item.Type == JsonObjectType.String) + { + return $"IList"; + + } + + else + { + if (jsonType.Item.Reference != null) + { + var _type = LookupClassName(((IJsonReferenceBase)jsonType.Item).ReferencePath.Split("/")[3]); + return $"IList<{_type}Type>"; + } + else + { + string _type = jsonType.Item.Type.ToString().ToLower(); + if (_type == "number") + { + _type = "float"; + } + return $"IList<{_type}>"; + } + } + } + else + { + throw new NotSupportedException(); + + } + } + case JsonObjectType.Object: + if (jsonType.AdditionalPropertiesSchema != null && ((IJsonReferenceBase)jsonType.AdditionalPropertiesSchema).ReferencePath != null) + { + var returnType = LookupClassName(((IJsonReferenceBase)jsonType.AdditionalPropertiesSchema).ReferencePath.Split("/")[3]); + return $"Dictionary{(jsonType.IsRequired ? "" : "?")}"; + } + else + { + return "object"; + } + case JsonObjectType.None: + + if (jsonType.Reference != null) + { + var _type = LookupClassName(((IJsonReferenceBase)jsonType).ReferencePath.Split("/")[3]); + return _type; + } + else + { + return "object"; + } + default: + throw new NotSupportedException(); + } + } + + + + private static void GetDotNetName(RenderContext context, IList arguments, IDictionary options, RenderBlock fn, RenderBlock inverse) + { + if (arguments != null && arguments.Count > 0 && arguments[0] != null && arguments[0] is JsonSchemaProperty) + { + var parameter = arguments[0] as JsonSchemaProperty; + context.Write(PascalCase(parameter.Name)); + } + else if (arguments != null && arguments.Count > 0 && arguments[0] != null && arguments[0] is OpenApiParameter) + { + var parameter = arguments[0] as OpenApiParameter; + context.Write(GetDotNetName(parameter.Name)); + if (arguments.Count > 1 && arguments[1] as string == "true" && !parameter.IsRequired) + { + context.Write($" = null"); + } + } + else if (arguments != null && arguments.Count > 0 && arguments[0] != null && arguments[0] is string) + { + var style = "parameter"; + if (arguments.Count > 1) + { + style = arguments[1] as string; + } + + context.Write(GetDotNetName((string)arguments[0], style)); + } + else + { + context.Write("fieldname"); + } + } + + private static string GetDotNetName(string jsonName, string style = "parameter") + { + + switch (style) + { + case "parameter": + if (jsonName == "namespace") + { + return "namespaceParameter"; + } + else if (jsonName == "continue") + { + return "continueParameter"; + } + + break; + + case "fieldctor": + if (jsonName == "namespace") + { + return "namespaceProperty"; + } + else if (jsonName == "continue") + { + return "continueProperty"; + } + else if (jsonName == "__referencePath") + { + return "refProperty"; + } + else if (jsonName == "default") + { + return "defaultProperty"; + } + else if (jsonName == "operator") + { + return "operatorProperty"; + } + else if (jsonName == "$schema") + { + return "schema"; + } + else if (jsonName == "enum") + { + return "enumProperty"; + } + else if (jsonName == "object") + { + return "objectProperty"; + } + else if (jsonName == "readOnly") + { + return "readOnlyProperty"; + } + else if (jsonName == "from") + { + return "fromProperty"; + } + return jsonName.ToCamelCase(); + case "field": + return PascalCase(GetDotNetName(jsonName, "fieldctor")); + } + return PascalCase(jsonName); + } + public static string LookupClassName(string str) + { + + if (models.ContainsKey(str)) + { + return models.Single(x => x.Key.Equals(str, StringComparison.CurrentCulture)).Value; + } + else + { + Console.WriteLine(str); + return $"fixme{str}"; + } + } + public static string PascalCase(string str) + { + if (str != null) + { + str = str.Replace("$", " "); + TextInfo cultInfo = new CultureInfo("en-US", false).TextInfo; + str = Regex.Replace(str, "([A-Z]+)", " $1"); + str = cultInfo.ToTitleCase(str); + + str = str.Replace(" ", ""); + str = str.Replace("_", ""); + str = str.Replace("-", ""); + str = str.Replace("+", ""); + str = str.Replace(".", ""); + str = str.Replace("/", ""); + } + return str; + } + + public static IEnumerable WordWrap(string text, int width) + { + var lines = text.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + foreach (var line in lines) + { + var processedLine = line.Trim(); + + // yield empty lines as they are (probably) intensional + if (processedLine.Length == 0) + { + yield return processedLine; + } + + // feast on the line until it's gone + while (processedLine.Length > 0) + { + // determine potential wrapping points + var whitespacePositions = Enumerable + .Range(0, processedLine.Length) + .Where(i => char.IsWhiteSpace(processedLine[i])) + .Concat(new[] { processedLine.Length }) + .Cast(); + var preWidthWrapAt = whitespacePositions.LastOrDefault(i => i <= width); + var postWidthWrapAt = whitespacePositions.FirstOrDefault(i => i > width); + + // choose preferred wrapping point + var wrapAt = preWidthWrapAt ?? postWidthWrapAt ?? processedLine.Length; + + // wrap + yield return processedLine.Substring(0, wrapAt); + processedLine = processedLine.Substring(wrapAt).Trim(); + } + } + } + static List StringSplitter(string stringToSplit) + { + List result = new List(); + bool wasPreviousUppercase = false; + StringBuilder current = new StringBuilder(); + + foreach (char c in stringToSplit) + { + if (char.IsUpper(c)) + { + if (wasPreviousUppercase) + { + current.Append(c); + } + else + { + if (current.Length > 0) + { + result.Add(current.ToString()); + current.Length = 0; + } + + current.Append(c); + } + + wasPreviousUppercase = true; + } + else // lowercase + { + if (wasPreviousUppercase) + { + if (current.Length > 1) + { + char carried = current[current.Length - 1]; + --current.Length; + result.Add(current.ToString()); + current.Length = 0; + current.Append(carried); + } + } + + wasPreviousUppercase = false; + + if (current.Length == 0) + { + current.Append(char.ToUpper(c)); + } + else + { + current.Append(c); + } + } + } + + if (current.Length > 0) + { + result.Add(current.ToString()); + } + + return result; + } + public class EnumType + { + public EnumType() + { + Values = new List(); + } + public string EnumName { get; set; } + public string Description { get; set; } + public List Values { get; set; } + } + public class EnumValueType + { + public string EnumValue { get; set; } + public string JsonEnumValue { get; set; } + public int EnumIndex { get; set; } + } + } +} diff --git a/SDKGenerator/SDKGenerator.csproj b/SDKGenerator/SDKGenerator.csproj new file mode 100644 index 0000000..b0a1fd8 --- /dev/null +++ b/SDKGenerator/SDKGenerator.csproj @@ -0,0 +1,35 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + diff --git a/SDKGenerator/Templates/EnumModel.cs.template b/SDKGenerator/Templates/EnumModel.cs.template new file mode 100644 index 0000000..b4be441 --- /dev/null +++ b/SDKGenerator/Templates/EnumModel.cs.template @@ -0,0 +1,15 @@ +using System.Runtime.Serialization; + +namespace vspheresdk.{{rootmodule}}.Models.Enums +{ + /// + /// {{ToXmlDoc currentEnum.description}} + /// + public enum {{currentEnum.EnumName}} + { + {{#currentEnum.Values}} + [EnumMember(Value = "{{JsonEnumValue}}")] + {{EnumValue}} = {{EnumIndex}}, + {{/currentEnum.Values}} + } +} diff --git a/SDKGenerator/Templates/Model.cs.template b/SDKGenerator/Templates/Model.cs.template new file mode 100644 index 0000000..85efe84 --- /dev/null +++ b/SDKGenerator/Templates/Model.cs.template @@ -0,0 +1,30 @@ +using Newtonsoft.Json; +using System.Collections.Generic; +using System.Collections; +using System.Linq; +using System.ComponentModel; +using NJsonSchema.Converters; +using Newtonsoft.Json.Converters; +using vspheresdk.{{rootmodule}}.Models.Enums; + +namespace vspheresdk.{{rootmodule}}.Models +{ + public class {{clz}} {{referenced}} + { + {{#properties.Values}} + /// + /// {{ToXmlDoc description "wrap"}} + /// + /// + {{#if isRequired}} + [JsonProperty(PropertyName = "{{name}}", Required = Required.AllowNull)] + {{#else}} + [JsonProperty(PropertyName = "{{name}}")] + {{/if}} + {{#IsEnumeration}} + [JsonConverter(typeof(StringEnumConverter))] + {{/IsEnumeration}} + public {{GetDotNetType . name clz}} {{GetDotNetName name "field"}} { get; set; } + {{/properties.Values}} + } +} diff --git a/SDKGenerator/Templates/Module.cs.template b/SDKGenerator/Templates/Module.cs.template new file mode 100644 index 0000000..4d950a7 --- /dev/null +++ b/SDKGenerator/Templates/Module.cs.template @@ -0,0 +1,57 @@ +using RestSharp; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Threading; +using Newtonsoft.Json; +using System.Net; +using vspheresdk; +using vspheresdk.{{rootmodule}}.Models; + +namespace vspheresdk.{{rootmodule}}.Modules +{ + public class {{module}}Module + { + private RestClient restClient; + private int retry; + private int timeout; + private CancellationToken cancellationToken; + + public {{module}}Module(RestClient Client, CancellationToken _cancellationToken, int _timeout, int _retry) + { + restClient = Client; + retry = _retry; + timeout = _timeout; + cancellationToken = _cancellationToken; + } + {{#operations}} + public async {{GetOperationReturnType . "full"}} {{GetMethodName .}}Async({{GetOperationPathParams .}}) + { + {{#Item4.Parameters}} + {{#isRequired}} + ArgumentNullException.ThrowIfNull({{GetParameterPascalCase name}}, "{{GetParameterPascalCase name}} cannot be null"); + {{/isRequired}} + {{/Item4.Parameters}} + StringBuilder {{GetMethodName .}}ServiceURL = new StringBuilder("{{ GetServiceUrl operations.Current }}"); + var request = new RestRequest + { + RequestFormat = DataFormat.Json, + Method = Method.{{GetOperationHttpMethod .}} + }; + {{#Item4.Parameters}} + {{GetOperationPathInjectionCode . }} + {{/Item4.Parameters}} + request.Resource = {{GetMethodName .}}ServiceURL.ToString(); + RestResponse{{GetOperationReturnType . "bare"}} response = await restClient.ExecuteTaskAsyncWithPolicy{{GetOperationReturnType . "bare"}}(request, cancellationToken, timeout, retry); + if (response.StatusCode != HttpStatusCode.OK) + { + var message = "HTTP {{GetOperationHttpMethod .}} operation to " + {{GetMethodName .}}ServiceURL.ToString() + " did not complete successfull"; + throw new vSphereException(message, (int)response.StatusCode, response.Content, response.Headers, response.ErrorException); + } + {{GetOperationReturnType . "return"}} + } + {{/operations}} + } +} diff --git a/SDKGenerator/Templates/PSCmdLet.cs.template b/SDKGenerator/Templates/PSCmdLet.cs.template new file mode 100644 index 0000000..026fd37 --- /dev/null +++ b/SDKGenerator/Templates/PSCmdLet.cs.template @@ -0,0 +1,49 @@ +// +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// + +using nsxtapi; +using vspheresdk.Models; +using vspheresdk.Powershell; +using System.Management.Automation; +using Newtonsoft.Json; + + +namespace nsxtcli.CmdLet +{ + {{#operations}} + {{#each value}} + [Cmdlet({{GetPSVerb . module}})] + {{GetOperationReturnType . "cmdlet"}} + public class {{module}}{{GetMethodName .}}CmdLet : Cmdlet + { + [Parameter(Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, Position = 0)] + [ValidateNotNullOrEmpty] + public CredentialParmeters Credentials { get; set; } + {{#each value.parameters}} + [Parameter(Mandatory = {{GetLowerCase isRequired}})] + public {{GetPSValueDefinition . }} { get; set; } + {{/each}} + [Parameter(Mandatory = false)] + public bool PrettyJson { get; set; } + + protected override void ProcessRecord() + { + NSXTClient _client = new NSXTClient(Credentials._host, Credentials._username, Credentials._password, Credentials._remoteCertificateValidation); + {{GetOperationReturnType . "cmdletreturn" module}} + if (returnobject != null) + { + if (PrettyJson) + { + WriteObject(JsonConvert.SerializeObject(returnobject, Formatting.Indented)); + } + else + { + WriteObject(returnobject); + } + } + } + } + {{/each}} + {{/operations}} +} \ No newline at end of file diff --git a/SDKGenerator/Templates/Response.cs.template b/SDKGenerator/Templates/Response.cs.template new file mode 100644 index 0000000..c644cf2 --- /dev/null +++ b/SDKGenerator/Templates/Response.cs.template @@ -0,0 +1,17 @@ +// +// Changes may cause incorrect behavior and will be lost if the code is regenerated. +// +using vspheresdk.ManagerModels; + +namespace vspheresdk.Models +{ + {{#each responses}} + /// + /// {{ToXmlDoc value.description}} + /// + [NSXTProperty(Description: @"{{ToXmlDoc value.description}}")] + public class NSXT{{GetResponseName .}}Type : {{GetResponseTypeName value}} + { + } + {{/each}} +} diff --git a/SDKGenerator/Templates/RootModule.cs.template b/SDKGenerator/Templates/RootModule.cs.template new file mode 100644 index 0000000..5c10f36 --- /dev/null +++ b/SDKGenerator/Templates/RootModule.cs.template @@ -0,0 +1,85 @@ +using Newtonsoft.Json; +using RestSharp; +using RestSharp.Authenticators; +using RestSharp.Serializers.NewtonsoftJson; +using System; +using System.Linq; +using vspheresdk.Authentication; + +namespace vspheresdk +{ + public class vSphereClient + { + private RestClient tokenRestClient { get; set; } + private RestClient sessionRestClient { get; set; } + private CancellationToken cancellationToken; + private int timeout; + private int retry; + public LoginResponseType LoginResponseDetails; + + public vSphereClient(string Host, string Username, string Password, bool? RemoteCertificateValidation = true, JsonSerializerSettings? DefaultSerializationSettings = null, CancellationToken _cancellationToken = default(CancellationToken), int Port = 443, int _timeout = 100, int _retry = 2, string _defaultXAviVerion = null) + { + cancellationToken = _cancellationToken; + timeout = _timeout; + retry = _retry; + + + var tokenUri = new UriBuilder(Host) + { + Scheme = Uri.UriSchemeHttps, + Port = Port, + }.Uri; + var sessionUri = new UriBuilder(Host) + { + Scheme = Uri.UriSchemeHttps, + Port = Port, + Path = "" + }.Uri; + var tokenRestOptions = new RestClientOptions() { BaseUrl = tokenUri }; + var sessionRestOptions = new RestClientOptions() { BaseUrl = sessionUri }; + if (!RemoteCertificateValidation ?? false) + { + tokenRestOptions.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; + sessionRestOptions.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; + }; + tokenRestClient = new RestClient(tokenRestOptions); + sessionRestClient = new RestClient(sessionRestOptions); + sessionRestClient.AcceptedContentTypes = new string[] { "application/json" }; + sessionRestClient.AcceptedContentTypes = new string[] { "application/json" }; + sessionRestClient.Authenticator = new HttpBasicAuthenticator(Username, Password); + + if (DefaultSerializationSettings == null) + { + DefaultSerializationSettings = new JsonSerializerSettings + { + Error = (se, ev) => { ev.ErrorContext.Handled = true; }, + DefaultValueHandling = DefaultValueHandling.Include, + TypeNameHandling = TypeNameHandling.Auto, + NullValueHandling = NullValueHandling.Ignore, + Formatting = Formatting.None, + ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor, + Converters = new List() { new Newtonsoft.Json.Converters.StringEnumConverter() } + }; + }; + tokenRestClient.UseNewtonsoftJson(DefaultSerializationSettings); + sessionRestClient.UseNewtonsoftJson(DefaultSerializationSettings); + } + public async Task LoginAsync() + { + RestResponse response = await AuthenticationHelper.LoginAsync(sessionRestClient, cancellationToken, timeout, retry); + ArgumentNullException.ThrowIfNull(response.Data.Value); + + tokenRestClient.AddDefaultHeader("vmware-api-session-id", response.Data.Value); + sessionRestClient.AddDefaultHeader("vmware-api-session-id", response.Data.Value); + return response.Data; + } + public async Task LogoutAsync() + { + await AuthenticationHelper.LogoutAsync(sessionRestClient, cancellationToken, timeout, retry); + } + {{#submodules}} + public {{.}}SubModule {{.}}SubModule => new {{.}}SubModule(tokenRestClient, cancellationToken, timeout, retry); + {{/submodules}} + + } +} \ No newline at end of file diff --git a/SDKGenerator/Templates/SubModule.cs.template b/SDKGenerator/Templates/SubModule.cs.template new file mode 100644 index 0000000..62affcf --- /dev/null +++ b/SDKGenerator/Templates/SubModule.cs.template @@ -0,0 +1,31 @@ +using System; +using RestSharp; +using RestSharp.Authenticators; +using RestSharp.Serializers.NewtonsoftJson; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using vspheresdk.{{rootmodule}}.Modules; +using vspheresdk; +using System.Threading; + +namespace vspheresdk +{ + public class {{rootmodule}}SubModule + { + JsonSerializerSettings defaultSerializationSettings; + RestClient restClient; + private CancellationToken cancellationToken; + private int timeout; + private int retry; + public {{rootmodule}}SubModule(RestClient RestClient, CancellationToken _cancellationToken = default(CancellationToken), int Port = 443, int _timeout = 5, int _retry = 2) + { + cancellationToken = _cancellationToken; + timeout = _timeout; + retry = _retry; + restClient = RestClient; + } + {{#modules}} + public {{.}}Module {{.}}Module => new {{.}}Module(restClient, cancellationToken, timeout, retry); + {{/modules}} + } +} \ No newline at end of file diff --git a/SDKGenerator/library.json b/SDKGenerator/library.json new file mode 100644 index 0000000..6a50af3 --- /dev/null +++ b/SDKGenerator/library.json @@ -0,0 +1,11306 @@ +{ + "swagger": "2.0", + "info": { + "description": "VMware vSphere\u00ae Content Library empowers vSphere Admins to effectively manage VM templates, vApps, ISO images and scripts with ease.", + "title": "content", + "version": "2.0.0" + }, + "host": "", + "securityDefinitions": { + "session_id": { + "in": "header", + "name": "vmware-api-session-id", + "type": "apiKey" + }, + "basic_auth": { + "type": "basic" + } + }, + "basePath": "", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "tags": [], + "schemes": [ + "https", + "http" + ], + "paths": { + "/api/content/configuration": { + "get": { + "tags": [ + "configuration" + ], + "summary": "Retrieves the current configuration values.", + "parameters": [], + "responses": { + "200": { + "description": "The {@link ConfigurationModel} instance representing the configuration of the Content Library Service.", + "schema": { + "$ref": "#/definitions/ContentConfigurationModel" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "configuration" + ], + "summary": "Updates the configuration. The update is incremental. Any {@term field} in the {@link ConfigurationModel} {@term structure} that is {@term unset} will not be modified. Note that this update {@term operation} doesn't guarantee an atomic change of all the properties. In the case of a system crash or failure, some of the properties could be left unchanged while others may be updated.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentConfigurationUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "if one of the configuration properties is not within the proper range.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library": { + "get": { + "tags": [ + "library" + ], + "summary": "Returns the identifiers of all libraries of any type in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of all identifiers of all libraries in the Content Library.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Creates a new library item.

A new library item is created without any content. After creation, content can be added through the {@link UpdateSession} and {@link File} {@term services}.

A library item cannot be created in a subscribed library.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Identifier of the new library item.", + "schema": { + "type": "string" + } + }, + "404": { + "description": "if the {@link ItemModel#libraryId} property of {@param.name createSpec} refers to a library that does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if there is already a library item with same name in the library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsAlreadyExists" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Creates a new download session.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadSessionCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "A unique token generated by the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Identifier of the new download session being created.", + "schema": { + "type": "string" + } + }, + "400": { + "description": "if the session specification is not valid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + }, + "404": { + "description": "if the library item targeted by the download does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "library/item/download_session" + ], + "summary": "Lists the identifiers of the download sessions created by the calling user. Optionally may filter by library item.", + "parameters": [ + { + "required": false, + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Library item identifier on which to filter results." + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all download sessions created by the calling user.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "404": { + "description": "if a library item identifier is given for an item which does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}": { + "get": { + "tags": [ + "library/item/download_session" + ], + "summary": "Gets the download session with the specified identifier, including the most up-to-date status information for the session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to retrieve." + } + ], + "responses": { + "200": { + "description": "The {@link DownloadSessionModel} instance with the given {@param.name downloadSessionId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadSessionModel" + } + }, + "404": { + "description": "if no download session with the given {@param.name downloadSessionId} exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "library/item/download_session" + ], + "summary": "Deletes a download session. This removes the session and all information associated with it.

Removing a download session leaves any current transfers for that session in an indeterminate state (there is no guarantee that the transfers will be able to complete). However there will no longer be a means of inspecting the status of those downloads except by seeing the effect on the library item.

Download sessions for which there is no download activity or which are complete will automatically be expired and then deleted after a period of time.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to be deleted." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}/file": { + "get": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Lists the information of all the files in the library item associated with the download session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session." + } + ], + "responses": { + "200": { + "description": "The {@term list} of {@link File.Info} instances.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFileInfo" + } + } + }, + "404": { + "description": "if the download session associated with {@param.name downloadSessionId} doesn't exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}/file?action=prepare": { + "post": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Requests a file to be prepared for download.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFilePrepare" + } + } + ], + "responses": { + "200": { + "description": "File information containing the status of the request and the download link to the file.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFileInfo" + } + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if there is no file with the specified {@param.name fileName}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + }, + "403": { + "description": "if the the download session wasn't created with the ContentLibrary.ReadStorage privilege and the caller requested a {@link EndpointType#DIRECT} endpoint type.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "prepare", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}/file?file_name": { + "get": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Retrieves file download information for a specific file.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session." + }, + { + "type": "string", + "required": true, + "in": "query", + "name": "file_name", + "description": "Name of the file requested." + } + ], + "responses": { + "200": { + "description": "The {@link Info} instance containing the status of the file and its download link if available.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFileInfo" + } + }, + "404": { + "description": "if the download session associated with {@param.name downloadSessionId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if there is no file with the specified {@param.name fileName}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}?action=cancel": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Cancels the download session. This {@term operation} will abort any ongoing transfers and invalidate transfer urls that the client may be downloading from.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifer of the download session that should be canceled." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if no download session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "cancel", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}?action=fail": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Terminates the download session with a client specified error message.

This is useful in transmitting client side failures (for example, not being able to download a file) to the server side.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to fail." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadSessionFail" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "fail", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/download-session/{download_session_id}?action=keep-alive": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Keeps a download session alive. This operation is allowed only if the session is in the {@link DownloadSessionModel.State#ACTIVE} state.

If there is no activity for a download session for a certain period of time, the download session will expire. The download session expiration timeout is configurable in the Content Library Service system configuration. The default is five minutes. Invoking this {@term operation} enables a client to specifically extend the lifetime of an active download session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session whose lifetime should be extended." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemDownloadSessionKeepAlive" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if no download session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "keep_alive", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Creates a new update session. An update session is used to make modifications to a library item. Modifications are not visible to other clients unless the session is completed and all necessary files have been received.

Content Library Service allows only one single update session to be active for a specific library item.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "Unique token generated by the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Identifier of the new update session being created.", + "schema": { + "type": "string" + } + }, + "400": { + "description": "if the update session is being created on a subscribed library item.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidElementType" + } + }, + "404": { + "description": "if the item targeted for update does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "500": { + "description": "if there is another update session on the same library item.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceBusy" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "library/item/update_session" + ], + "summary": "Lists the identifiers of the update session created by the calling user. Optionally may filter by library item.", + "parameters": [ + { + "required": false, + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Optional library item identifier on which to filter results." + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all update sessions created by the calling user.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "404": { + "description": "if a library item identifier is given for an item which does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}": { + "get": { + "tags": [ + "library/item/update_session" + ], + "summary": "Gets the update session with the specified identifier, including the most up-to-date status information for the session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to retrieve." + } + ], + "responses": { + "200": { + "description": "The {@link UpdateSessionModel} instance with the given {@param.name updateSessionId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionModel" + } + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "library/item/update_session" + ], + "summary": "Updates the properties of an update session.

This is an incremental update to the update session. Any {@term field} in the {@link UpdateSessionModel} {@term structure} that is {@term unset} will not be modified.

This {@term operation} will only update the property {@link UpdateSessionModel#warningBehavior} of the update session. This will not, for example, update the {@link UpdateSessionModel#libraryItemId} or {@link UpdateSessionModel#state} of an update session.

This {@term operation} requires the session to be in the {@link UpdateSessionModel.State#ACTIVE} state.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifer of the update session that should be updated." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session specification is not valid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "library/item/update_session" + ], + "summary": "Deletes an update session. This removes the session and all information associated with it.

Removing an update session leaves any current transfers for that session in an indeterminate state (there is no guarantee that the server will terminate the transfers, or that the transfers can be completed). However there will no longer be a means of inspecting the status of those uploads except by seeing the effect on the library item.

Update sessions for which there is no upload activity or which are complete will automatically be deleted after a period of time.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifer of the update session to delete." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}/file": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Requests file content to be changed (either created, or updated). Depending on the source type of the file, this {@term operation} will either return an upload endpoint where the client can push the content, or the server will pull from the provided source endpoint. If a file with the same name already exists in this session, this {@term operation} will be used to update the content of the existing file.

When importing a file directly from storage, where the source endpoint is a file or datastore URI, you will need to have the ContentLibrary.ReadStorage privilege on the library item. If the file is located in the same directory as the library storage backing folder, the server will move the file instead of copying it, thereby allowing instantaneous import of files for efficient backup and restore scenarios. In all other cases, a copy is performed rather than a move.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to be modified." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileAdd" + } + } + ], + "responses": { + "201": { + "description": "An {@link Info} {@term structure} containing upload links as well as server side state tracking the transfer of the file.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileInfo" + } + }, + "400": { + "description": "if the content of the library item associated with the update session has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "403": { + "description": "if the caller doesn't have ContentLibrary.ReadStorage privilege on the library item of the update session and source type {@link SourceType#PULL} is requested for a file or datastore source endpoint (that is, not HTTP or HTTPs based endpoint).", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "add", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Lists all files in the library item associated with the update session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session." + } + ], + "responses": { + "200": { + "description": "The {@term list} of the files in the library item associated with the update session. This {@term list} may be empty if the caller has removed all the files as part of this session (in which case completing the update session will result in an empty library item).", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileInfo" + } + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}/file/{file_name}": { + "get": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Retrieves information about a specific file in the snapshot of the library item at the time when the update session was created.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "file_name", + "description": "Name of the file." + } + ], + "responses": { + "200": { + "description": "Information about the file.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileInfo" + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the file doesn't exist in the library item associated with the update session.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Requests a file to be removed. The file will only be effectively removed when the update session is completed.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "file_name", + "description": "Name of the file to be removed." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the file doesn't exist in the library item associated with the update session.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "remove", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}/file?action=validate": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Validates the files in the update session with the referenced identifier and ensures all necessary files are received. In the case where a file is missing, this {@term operation} will return its name in the {@link ValidationResult#missingFiles} set. The user can add the missing files and try re-validating. For other type of errors, {@link ValidationResult#invalidFiles} will contain the list of invalid files.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to validate." + } + ], + "responses": { + "200": { + "description": "A validation result containing missing files or invalid files and the reason why they are invalid.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileValidationResult" + } + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state, or if some of the files that will be uploaded by the client aren't received correctly.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "validate", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}?action=cancel": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Cancels the update session and sets its state to {@link UpdateSessionModel.State#CANCELED}. This {@term operation} will free up any temporary resources currently associated with the session.

This {@term operation} is not allowed if the session has been already completed.

Cancelling an update session will cancel any in progress transfers (either uploaded by the client or pulled by the server). Any content that has been already received will be scheduled for deletion.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session that should be canceled." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "cancel", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}?action=complete": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Completes the update session. This indicates that the client has finished making all the changes required to the underlying library item. If the client is pushing the content to the server, the library item will be updated once this call returns. If the server is pulling the content, the call may return before the changes become visible. In that case, the client can track the session to know when the server is done.

This {@term operation} requires the session to be in the {@link UpdateSessionModel.State#ACTIVE} state.

Depending on the type of the library item associated with this session, a type adapter may be invoked to verify the validity of the files uploaded. The user can explicitly validate the session before completing the session by using the {@link content.library.item.updatesession.File#validate} {@term operation}.

Modifications are not visible to other clients unless the session is completed and all necessary files have been received.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session that should be completed." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state, or if some of the files that will be uploaded by the client aren't received correctly.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "complete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}?action=fail": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Terminates the update session with a client specified error message.

This is useful in transmitting client side failures (for example, not being able to access a file) to the server side.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to fail." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionFail" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "fail", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/update-session/{update_session_id}?action=keep-alive": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Keeps an update session alive.

If there is no activity for an update session after a period of time, the update session will expire, then be deleted. The update session expiration timeout is configurable in the Content Library Service system configuration. The default is five minutes. Invoking this {@term operation} enables a client to specifically extend the lifetime of the update session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session whose lifetime should be extended." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionKeepAlive" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "keep_alive", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}": { + "get": { + "tags": [ + "library/item" + ], + "summary": "Returns the {@link ItemModel} with the given identifier.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to return." + } + ], + "responses": { + "200": { + "description": "The {@link ItemModel} instance with the given {@param.name libraryItemId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemModel" + } + }, + "404": { + "description": "if no item with the given {@param.name libraryItemId} exists.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "library/item" + ], + "summary": "Updates the specified properties of a library item.

This is an incremental update to the library item. {@term Fields} that are {@term unset} in the update specification are left unchanged.

This {@term operation} cannot update a library item that is a member of a subscribed library. Those items must be updated in the source published library and synchronized to the subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to update." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if there is already a library item with same name in the library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsAlreadyExists" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "library/item" + ], + "summary": "Deletes a library item.

This {@term operation} will immediately remove the item from the library that owns it. The content of the item will be asynchronously removed from the storage backings. The content deletion can be tracked with a task. In the event that the task fails, an administrator may need to manually remove the files from the storage backing.

This {@term operation} cannot be used to delete a library item that is a member of a subscribed library. Removing an item from a subscribed library requires deleting the item from the original published local library and syncing the subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to delete." + } + ], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "if the library item contains a virtual machine template and a virtual machine is checked out of the library item.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "404": { + "description": "if the library item with the specified {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}/file": { + "get": { + "tags": [ + "library/item/file" + ], + "summary": "Lists all of the files that are stored within a given library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose files should be listed." + } + ], + "responses": { + "200": { + "description": "The {@term list} of all of the files that are stored within the given library item.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemFileInfo" + } + } + }, + "404": { + "description": "if {@param.name libraryItemId} refers to a library item that does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}/file?name": { + "get": { + "tags": [ + "library/item/file" + ], + "summary": "Retrieves the information for a single file in a library item by its name.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose file information should be returned." + }, + { + "type": "string", + "required": true, + "in": "query", + "name": "name", + "description": "Name of the file in the library item whose information should be returned." + } + ], + "responses": { + "200": { + "description": "The {@link Info} object with information on the specified file.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemFileInfo" + } + }, + "404": { + "description": "if {@param.name libraryItemId} refers to a library item that does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}/storage": { + "get": { + "tags": [ + "library/item/storage" + ], + "summary": "Lists all storage items for a given library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose storage information should be listed." + } + ], + "responses": { + "200": { + "description": "The {@term list} of all storage items for a given library item.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemStorageInfo" + } + } + }, + "404": { + "description": "if the specified library item does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}/storage?file_name": { + "get": { + "tags": [ + "library/item/storage" + ], + "summary": "Retrieves the storage information for a specific file in a library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose storage information should be retrieved." + }, + { + "type": "string", + "required": true, + "in": "query", + "name": "file_name", + "description": "Name of the file for which the storage information should be listed." + } + ], + "responses": { + "200": { + "description": "The {@term list} of all the storage items for the given file within the given library item.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemStorageInfo" + } + } + }, + "404": { + "description": "if the specified library item does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item_id}?action=publish": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Publishes the library item to specified subscriptions of the library. If no subscriptions are specified, then publishes the library item to all subscriptions of the library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Library item identifier." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentLibraryItemPublish" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "500": { + "description": "If the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "404": { + "description": "If the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "If the library item specified by {@param.name libraryItemId} does not belong to a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "publish", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item}/changes": { + "get": { + "tags": [ + "library/item/changes" + ], + "summary": "Returns commonly used information about the content changes made to a library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item", + "description": "Library item identifier." + } + ], + "responses": { + "200": { + "description": "List of commonly used information about the library item changes.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemChangesSummary" + } + } + }, + "404": { + "description": "if the library item is not found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "if the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "if the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{library_item}/changes/{version}": { + "get": { + "tags": [ + "library/item/changes" + ], + "summary": "Returns information about a library item change.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item", + "description": "Library item identifer." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "version", + "description": "Library item version." + } + ], + "responses": { + "200": { + "description": "Information about the specified library item change.", + "schema": { + "$ref": "#/definitions/ContentLibraryItemChangesInfo" + } + }, + "404": { + "description": "if the library item or version is not found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "if the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "if the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item/{source_library_item_id}?action=copy": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Copies a library item.

Copying a library item allows a duplicate to be made within the same or different library. The copy occurs by first creating a new library item, whose identifier is returned. The content of the library item is then copied asynchronously. This copy can be tracked as a task.

If the copy fails, Content Library Service will roll back the copy by deleting any content that was already copied, and removing the new library item. A failure during rollback may require manual cleanup by an administrator.

A library item cannot be copied into a subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "source_library_item_id", + "description": "Identifier of the existing library item from which the content will be copied." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemCopy" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "A unique token generated on the client for each copy request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent copy." + } + ], + "responses": { + "200": { + "description": "The identifier of the new library item into which the content is being copied.", + "schema": { + "type": "string" + } + }, + "404": { + "description": "if the library item with {@param.name sourceLibraryItemId} does not exist, or if the library referenced by the {@link ItemModel#libraryId} property of {@param.name destinationCreateSpec} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the content of the source library item specified by {@param.name sourceLibraryItemId}, or the content of the target library specified by the library ID (see {@link ItemModel#libraryId}) property of {@param.name destinationCreateSpec} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "500": { + "description": "if the copy operation failed because the source or destination library item is not accessible.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceInaccessible" + } + } + }, + "operationId": "copy", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item?action=find": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Returns identifiers of all the visible (as determined by authorization policy) library items matching the requested {@link Item.FindSpec}.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryItemFind" + } + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all the visible library items matching the given {@param.name spec}.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "400": { + "description": "if no properties are specified in the {@param.name spec}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "find", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/item?library_id": { + "get": { + "tags": [ + "library/item" + ], + "summary": "Returns the identifiers of all items in the given library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "query", + "name": "library_id", + "description": "Identifier of the library whose items should be returned." + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of the items in the library specified by {@param.name libraryId}.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/subscribed-item/{library_item_id}?action=evict": { + "post": { + "tags": [ + "library/subscribed_item" + ], + "summary": "Evicts the cached content of a library item in a subscribed library.

This {@term operation} allows the cached content of a library item to be removed to free up storage capacity. This {@term operation} will only work when a library item is synchronized on-demand. When a library is not synchronized on-demand, it always attempts to keep its cache up-to-date with the published source. Evicting the library item will set {@link ItemModel#cached} to false.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose content should be evicted." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the content of the library item specified by {@param.name libraryItemId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on evicting a library item in an on-demand subscribed library that was restored from backup, and the library item was deleted after backup, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library item is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "evict", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/subscribed-item/{library_item_id}?action=sync": { + "post": { + "tags": [ + "library/subscribed_item" + ], + "summary": "Forces the synchronization of an individual library item in a subscribed library.

Synchronizing an individual item will update that item's metadata from the remote source. If the source library item on the remote library has been deleted, this {@term operation} will delete the library item from the subscribed library as well.

The default behavior of the synchronization is determined by the {@link SubscriptionInfo} of the library which owns the library item.

  • If {@link SubscriptionInfo#onDemand} is true, then the file content is not synchronized by default. In this case, only the library item metadata is synchronized. The file content may still be forcefully synchronized by passing true for the {@param.name forceSyncContent} {@term parameter}.
  • If {@link SubscriptionInfo#onDemand} is false, then this call will always synchronize the file content. The {@param.name forceSyncContent} {@term parameter} is ignored when the subscription is not on-demand.
When the file content has been synchronized, the {@link ItemModel#cached} {@term field} will be true.

This {@term operation} will return immediately and create an asynchronous task to perform the synchronization.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to synchronize." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentLibrarySubscribedItemSync" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} could not be found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the content of the library item specified by {@param.name libraryItemId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on synchronizing a library item in a subscribed library that was restored from backup, and the library item was deleted after backup, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library item is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "sync", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/{library_id}": { + "get": { + "tags": [ + "library" + ], + "summary": "Returns a given {@link LibraryModel}.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance with the specified {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryModel" + } + }, + "404": { + "description": "if the specified library does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "library" + ], + "summary": "Updates the properties of a library.

This is an incremental update to the library. Any {@term field} in the {@link LibraryModel} {@term structure} that is {@term unset} will not be modified.

This {@term operation} will only update the common properties for all library types. This will not, for example, update the {@link LibraryModel#publishInfo} of a local library, nor the {@link LibraryModel#subscriptionInfo} of a subscribed library. Specific properties are updated in {@link LocalLibrary#update} and {@link SubscribedLibrary#update}.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the library to update." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the {@param.name updateSpec} is not valid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/{library}/subscriptions": { + "post": { + "tags": [ + "library/subscriptions" + ], + "summary": "Creates a subscription of the published library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibrarySubscriptionsCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Subscription identifier.", + "schema": { + "type": "string" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "500": { + "description": "If the vCenter instance specified by {@param.name subscribedLibrary#vcenter} cannot be contacted or found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceInaccessible" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "library/subscriptions" + ], + "summary": "Lists the subscriptions of the published library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + } + ], + "responses": { + "200": { + "description": "List of commonly used information about subscriptions of the published library.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibrarySubscriptionsSummary" + } + } + }, + "500": { + "description": "If the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library/{library}/subscriptions/{subscription}": { + "get": { + "tags": [ + "library/subscriptions" + ], + "summary": "Returns information about the specified subscription of the published library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "subscription", + "description": "Identifier of the subscription." + } + ], + "responses": { + "200": { + "description": "Information about the subscription.", + "schema": { + "$ref": "#/definitions/ContentLibrarySubscriptionsInfo" + } + }, + "500": { + "description": "If the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "library/subscriptions" + ], + "summary": "Updates the specified subscription of the published library.

This is an incremental update to the subscription. Except for the {@link UpdateSpecPlacement} {@term structure}, {@term fields} that are {@term unset} in the update specification will be left unchanged. If {@param.name spec#subscribedLibraryPlacement} is specified, all {@term fields} of the current subscribed library placement will be replaced by this placement.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "subscription", + "description": "subscription identifier." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibrarySubscriptionsUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "500": { + "description": "If the subscribed library cannot be contacted or found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceInaccessible" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "library/subscriptions" + ], + "summary": "Deletes the specified subscription of the published library. The subscribed library associated with the subscription will not be deleted.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "subscription", + "description": "Subscription identifier." + } + ], + "responses": { + "204": { + "description": "" + }, + "500": { + "description": "If the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/library?action=find": { + "post": { + "tags": [ + "library" + ], + "summary": "Returns a list of all the visible (as determined by authorization policy) libraries matching the requested {@link Library.FindSpec}.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLibraryFind" + } + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all the visible libraries matching the given {@param.name spec}.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "400": { + "description": "if no properties are specified in the {@param.name spec}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + } + }, + "operationId": "find", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/local-library": { + "post": { + "tags": [ + "local_library" + ], + "summary": "Creates a new local library.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLocalLibraryCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Identifier of the newly created {@link LibraryModel}.", + "schema": { + "type": "string" + } + }, + "400": { + "description": "if using multiple storage backings.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnsupported" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "local_library" + ], + "summary": "Returns the identifiers of all local libraries in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all local libraries in the Content Library.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/local-library/{library_id}": { + "get": { + "tags": [ + "local_library" + ], + "summary": "Returns a given local library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance associated with {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryModel" + } + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the library specified by {@param.name libraryId} is not a local library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidElementType" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "local_library" + ], + "summary": "Updates the properties of a local library.

This is an incremental update to the local library. {@term Fields} that are {@term unset} in the update specification will be left unchanged.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to update." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLocalLibraryUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the {@param.name updateSpec} is not valid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + }, + "500": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is {@term unset} and the library is being concurrently updated by another user.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceBusy" + } + }, + "409": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is not equal to the current version of the library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsConcurrentChange" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "local_library" + ], + "summary": "Deletes the specified local library.

Deleting a local library will remove the entry immediately and begin an asynchronous task to remove all cached content for the library. If the asynchronous task fails, file content may remain on the storage backing. This content will require manual removal.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to delete." + } + ], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "if the library contains a library item that cannot be deleted in its current state. For example, the library item contains a virtual machine template and a virtual machine is checked out of the library item.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/local-library/{library_id}?action=publish": { + "post": { + "tags": [ + "local_library" + ], + "summary": "Publishes the library to specified subscriptions. If no subscriptions are specified, then publishes the library to all its subscriptions.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentLocalLibraryPublish" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "500": { + "description": "If the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "404": { + "description": "If the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "If the library specified by {@param.name libraryId} is not a published library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthorized" + } + } + }, + "operationId": "publish", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/security-policies": { + "get": { + "tags": [ + "security_policies" + ], + "summary": "Returns the list of security policies.", + "parameters": [], + "responses": { + "200": { + "description": "List of security policies.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentSecurityPoliciesInfo" + } + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "401": { + "description": "if the user can not be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/subscribed-library": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Creates a new subscribed library.

Once created, the subscribed library will be empty. If the {@link LibraryModel#subscriptionInfo} property is set, the Content Library Service will attempt to synchronize to the remote source. This is an asynchronous operation so the content of the published library may not immediately appear.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentSubscribedLibraryCreate" + } + }, + { + "required": false, + "type": "string", + "in": "query", + "name": "client_token", + "description": "Unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + } + ], + "responses": { + "201": { + "description": "Identifier of the newly created subscribed library.", + "schema": { + "type": "string" + } + }, + "400": { + "description": "if using multiple storage backings.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnsupported" + } + }, + "500": { + "description": "if subscribing to a published library which cannot be accessed.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceInaccessible" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "subscribed_library" + ], + "summary": "Returns the identifiers of all subscribed libraries in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all subscribed libraries in the Content Library.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/subscribed-library/{library_id}": { + "get": { + "tags": [ + "subscribed_library" + ], + "summary": "Returns a given subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance that corresponds to {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/ContentLibraryModel" + } + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the library associated with {@param.name libraryId} is not a subscribed library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidElementType" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "patch": { + "tags": [ + "subscribed_library" + ], + "summary": "Updates the properties of a subscribed library.

This is an incremental update to the subscribed library. {@term Fields} that are {@term unset} in the update specification will be left unchanged.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to update." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentSubscribedLibraryUpdate" + } + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the {@param.name updateSpec} is not valid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + }, + "500": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is {@term unset} and the library is being concurrently updated by another user.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceBusy" + } + }, + "409": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is not equal to the current version of the library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsConcurrentChange" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "subscribed_library" + ], + "summary": "Deletes the specified subscribed library.

Deleting a subscribed library will remove the entry immediately and begin an asynchronous task to remove all cached content for the library. If the asynchronous task fails, file content may remain on the storage backing. This content will require manual removal.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to delete." + } + ], + "responses": { + "204": { + "description": "" + }, + "400": { + "description": "if the library referenced by {@param.name libraryId} is not a subscribed library.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidElementType" + } + }, + "404": { + "description": "if the library referenced by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/subscribed-library/{library_id}?action=evict": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Evicts the cached content of an on-demand subscribed library.

This {@term operation} allows the cached content of a subscribed library to be removed to free up storage capacity. This {@term operation} will only work when a subscribed library is synchronized on-demand.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library whose content should be evicted." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if the library specified by {@param.name libraryId} does not synchronize on-demand, or if the content of the library specified by {@param.name libraryId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on evicting an on-demand subscribed library that was restored from backup, and the library was deleted after the backup was taken, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotAllowedInCurrentState" + } + } + }, + "operationId": "evict", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/subscribed-library/{library_id}?action=sync": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Forces the synchronization of the subscribed library.

Synchronizing a subscribed library forcefully with this {@term operation} will perform the same synchronization behavior as would run periodically for the library. The {@link SubscriptionInfo#onDemand} setting is respected. Calling this {@term operation} on a library that is already in the process of synchronizing will have no effect.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to synchronize." + } + ], + "responses": { + "204": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "400": { + "description": "if some parameter in the subscribed library subscription info is invalid.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsInvalidArgument" + } + }, + "500": { + "description": "if the published library cannot be contacted or found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsResourceInaccessible" + } + } + }, + "operationId": "sync", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/subscribed-library?action=probe": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Probes remote library subscription information, including URL, SSL certificate and password. The resulting {@link ProbeResult} {@term structure} describes whether or not the subscription configuration is successful.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/ContentSubscribedLibraryProbe" + } + } + ], + "responses": { + "200": { + "description": "The subscription info probe result.", + "schema": { + "$ref": "#/definitions/ContentSubscribedLibraryProbeResult" + } + } + }, + "operationId": "probe", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/trusted-certificates": { + "post": { + "tags": [ + "trusted_certificates" + ], + "summary": "Adds a certificate to content library trust store.

This API has to be invoked separately for each certificate block - (BEGIN_CERTIFICATE ... END_CERTIFICATE)", + "parameters": [ + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/ContentTrustedCertificatesCreate" + } + } + ], + "responses": { + "201": { + "description": "ID of the certificates added. The certificate ID will be unique for each certificate. If the certificate already exists, existing ID is returned.", + "schema": { + "type": "string" + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "401": { + "description": "if the user can not be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ] + }, + "get": { + "tags": [ + "trusted_certificates" + ], + "summary": "Returns {@name ListResult} {@term structure}. All content library's trusted certificates.", + "parameters": [], + "responses": { + "200": { + "description": "{@name ListResult} containing trusted certificates.", + "schema": { + "$ref": "#/definitions/ContentTrustedCertificatesListResult" + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "401": { + "description": "if the user can not be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/trusted-certificates/{certificate}": { + "get": { + "tags": [ + "trusted_certificates" + ], + "summary": "Retrieves a trusted certificate for a given certificate id.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "certificate", + "description": "id of the trusted certificate." + } + ], + "responses": { + "200": { + "description": "{@link Info} instance that corresponds to the {@param.name certificate}.", + "schema": { + "$ref": "#/definitions/ContentTrustedCertificatesInfo" + } + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "401": { + "description": "if the user can not be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + }, + "404": { + "description": "if a trusted certificate does not exist for given id.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ] + }, + "delete": { + "tags": [ + "trusted_certificates" + ], + "summary": "Deletes the trusted certificate from content library's trust store for a given identifier.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "certificate", + "description": "id of the trusted certificate." + } + ], + "responses": { + "204": { + "description": "" + }, + "500": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsError" + } + }, + "404": { + "description": "if the trusted certificate specified by {@param.name certificate} could not be found.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsNotFound" + } + }, + "401": { + "description": "if the user can not be authenticated.", + "schema": { + "$ref": "#/definitions/VapiStdErrorsUnauthenticated" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/api/content/type": { + "get": { + "tags": [ + "type" + ], + "summary": "Returns a {@term list} of {@link Info} instances which describe the type support plugins in a Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of {@link Info} instances which describe the type support plugins in a Content Library.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentTypeInfo" + } + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ] + } + }, + "/rest/com/vmware/content/configuration": { + "patch": { + "tags": [ + "configuration" + ], + "summary": "Updates the configuration. The update is incremental. Any {@term field} in the {@link ConfigurationModel} {@term structure} that is {@term unset} will not be modified. Note that this update {@term operation} doesn't guarantee an atomic change of all the properties. In the case of a system crash or failure, some of the properties could be left unchanged while others may be updated.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.configuration_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "if one of the configuration properties is not within the proper range.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1configuration/patch" + } + } + }, + "/rest/com/vmware/content/configuration?~action=get": { + "post": { + "tags": [ + "configuration" + ], + "summary": "Retrieves the current configuration values.", + "parameters": [], + "responses": { + "200": { + "description": "The {@link ConfigurationModel} instance representing the configuration of the Content Library Service.", + "schema": { + "$ref": "#/definitions/content.configuration_resp" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1configuration/get" + } + } + }, + "/rest/com/vmware/content/library": { + "get": { + "tags": [ + "library" + ], + "summary": "Returns the identifiers of all libraries of any type in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of all identifiers of all libraries in the Content Library.", + "schema": { + "$ref": "#/definitions/content.library.list_resp" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library/get" + } + } + }, + "/rest/com/vmware/content/library/id:{library_id}": { + "get": { + "tags": [ + "library" + ], + "summary": "Returns a given {@link LibraryModel}.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance with the specified {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/content.library_resp" + } + }, + "404": { + "description": "if the specified library does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library_id}/get" + } + }, + "patch": { + "tags": [ + "library" + ], + "summary": "Updates the properties of a library.

This is an incremental update to the library. Any {@term field} in the {@link LibraryModel} {@term structure} that is {@term unset} will not be modified.

This {@term operation} will only update the common properties for all library types. This will not, for example, update the {@link LibraryModel#publishInfo} of a local library, nor the {@link LibraryModel#subscriptionInfo} of a subscribed library. Specific properties are updated in {@link LocalLibrary#update} and {@link SubscribedLibrary#update}.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the library to update." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the {@param.name updateSpec} is not valid.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library_id}/patch" + } + } + }, + "/rest/com/vmware/content/library/item": { + "get": { + "tags": [ + "library/item" + ], + "summary": "Returns the identifiers of all items in the given library.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "library_id", + "description": "Identifier of the library whose items should be returned.", + "required": true + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of the items in the library specified by {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/content.library.item.list_resp" + } + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item?library_id/get" + } + }, + "post": { + "tags": [ + "library/item" + ], + "summary": "Creates a new library item.

A new library item is created without any content. After creation, content can be added through the {@link UpdateSession} and {@link File} {@term services}.

A library item cannot be created in a subscribed library.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item_create" + } + } + ], + "responses": { + "200": { + "description": "Identifier of the new library item.", + "schema": { + "$ref": "#/definitions/content.library.item.create_resp" + } + }, + "404": { + "description": "if the {@link ItemModel#libraryId} property of {@param.name createSpec} refers to a library that does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if there is already a library item with same name in the library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.already_exists_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item/post" + } + } + }, + "/rest/com/vmware/content/library/item/download-session": { + "get": { + "tags": [ + "library/item/download_session" + ], + "summary": "Lists the identifiers of the download sessions created by the calling user. Optionally may filter by library item.", + "parameters": [ + { + "required": false, + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Library item identifier on which to filter results." + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all download sessions created by the calling user.", + "schema": { + "$ref": "#/definitions/content.library.item.download_session.list_resp" + } + }, + "404": { + "description": "if a library item identifier is given for an item which does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session/get" + } + }, + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Creates a new download session.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.download_session_create" + } + } + ], + "responses": { + "200": { + "description": "Identifier of the new download session being created.", + "schema": { + "$ref": "#/definitions/content.library.item.download_session.create_resp" + } + }, + "400": { + "description": "if the session specification is not valid.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + }, + "404": { + "description": "if the library item targeted by the download does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session/post" + } + } + }, + "/rest/com/vmware/content/library/item/download-session/id:{download_session_id}": { + "get": { + "tags": [ + "library/item/download_session" + ], + "summary": "Gets the download session with the specified identifier, including the most up-to-date status information for the session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to retrieve." + } + ], + "responses": { + "200": { + "description": "The {@link DownloadSessionModel} instance with the given {@param.name downloadSessionId}.", + "schema": { + "$ref": "#/definitions/content.library.item.download_session_resp" + } + }, + "404": { + "description": "if no download session with the given {@param.name downloadSessionId} exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}/get" + } + }, + "delete": { + "tags": [ + "library/item/download_session" + ], + "summary": "Deletes a download session. This removes the session and all information associated with it.

Removing a download session leaves any current transfers for that session in an indeterminate state (there is no guarantee that the transfers will be able to complete). However there will no longer be a means of inspecting the status of those downloads except by seeing the effect on the library item.

Download sessions for which there is no download activity or which are complete will automatically be expired and then deleted after a period of time.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to be deleted." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}/delete" + } + } + }, + "/rest/com/vmware/content/library/item/download-session/id:{download_session_id}?~action=cancel": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Cancels the download session. This {@term operation} will abort any ongoing transfers and invalidate transfer urls that the client may be downloading from.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifer of the download session that should be canceled." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if no download session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "cancel", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}?action=cancel/post" + } + } + }, + "/rest/com/vmware/content/library/item/download-session/id:{download_session_id}?~action=fail": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Terminates the download session with a client specified error message.

This is useful in transmitting client side failures (for example, not being able to download a file) to the server side.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session to fail." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.download_session_fail" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "fail", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}?action=fail/post" + } + } + }, + "/rest/com/vmware/content/library/item/download-session/id:{download_session_id}?~action=keep-alive": { + "post": { + "tags": [ + "library/item/download_session" + ], + "summary": "Keeps a download session alive. This operation is allowed only if the session is in the {@link DownloadSessionModel.State#ACTIVE} state.

If there is no activity for a download session for a certain period of time, the download session will expire. The download session expiration timeout is configurable in the Content Library Service system configuration. The default is five minutes. Invoking this {@term operation} enables a client to specifically extend the lifetime of an active download session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session whose lifetime should be extended." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/content.library.item.download_session_keep_alive" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if no download session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the download session is not in the {@link DownloadSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "keep_alive", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}?action=keep-alive/post" + } + } + }, + "/rest/com/vmware/content/library/item/downloadsession/file": { + "get": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Lists the information of all the files in the library item associated with the download session.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "download_session_id", + "description": "Identifier of the download session.", + "required": true + } + ], + "responses": { + "200": { + "description": "The {@term list} of {@link File.Info} instances.", + "schema": { + "$ref": "#/definitions/content.library.item.downloadsession.file.list_resp" + } + }, + "404": { + "description": "if the download session associated with {@param.name downloadSessionId} doesn't exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}~1file/get" + } + } + }, + "/rest/com/vmware/content/library/item/downloadsession/file/id:{download_session_id}?~action=get": { + "post": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Retrieves file download information for a specific file.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.downloadsession.file_get" + } + } + ], + "responses": { + "200": { + "description": "The {@link Info} instance containing the status of the file and its download link if available.", + "schema": { + "$ref": "#/definitions/content.library.item.downloadsession.file_resp" + } + }, + "404": { + "description": "if the download session associated with {@param.name downloadSessionId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if there is no file with the specified {@param.name fileName}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}~1file?file_name/get" + } + } + }, + "/rest/com/vmware/content/library/item/downloadsession/file/id:{download_session_id}?~action=prepare": { + "post": { + "tags": [ + "library/item/downloadsession/file" + ], + "summary": "Requests a file to be prepared for download.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "download_session_id", + "description": "Identifier of the download session." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.downloadsession.file_prepare" + } + } + ], + "responses": { + "200": { + "description": "File information containing the status of the request and the download link to the file.", + "schema": { + "$ref": "#/definitions/content.library.item.downloadsession.file.prepare_resp" + } + }, + "404": { + "description": "if the download session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if there is no file with the specified {@param.name fileName}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + }, + "403": { + "description": "if the the download session wasn't created with the ContentLibrary.ReadStorage privilege and the caller requested a {@link EndpointType#DIRECT} endpoint type.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "prepare", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1download-session~1{download_session_id}~1file?action=prepare/post" + } + } + }, + "/rest/com/vmware/content/library/item/file": { + "get": { + "tags": [ + "library/item/file" + ], + "summary": "Lists all of the files that are stored within a given library item.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Identifier of the library item whose files should be listed.", + "required": true + } + ], + "responses": { + "200": { + "description": "The {@term list} of all of the files that are stored within the given library item.", + "schema": { + "$ref": "#/definitions/content.library.item.file.list_resp" + } + }, + "404": { + "description": "if {@param.name libraryItemId} refers to a library item that does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}~1file/get" + } + } + }, + "/rest/com/vmware/content/library/item/file/id:{library_item_id}?~action=get": { + "post": { + "tags": [ + "library/item/file" + ], + "summary": "Retrieves the information for a single file in a library item by its name.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose file information should be returned." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.file_get" + } + } + ], + "responses": { + "200": { + "description": "The {@link Info} object with information on the specified file.", + "schema": { + "$ref": "#/definitions/content.library.item.file_resp" + } + }, + "404": { + "description": "if {@param.name libraryItemId} refers to a library item that does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}~1file?name/get" + } + } + }, + "/rest/com/vmware/content/library/item/id:{library_item_id}": { + "get": { + "tags": [ + "library/item" + ], + "summary": "Returns the {@link ItemModel} with the given identifier.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to return." + } + ], + "responses": { + "200": { + "description": "The {@link ItemModel} instance with the given {@param.name libraryItemId}.", + "schema": { + "$ref": "#/definitions/content.library.item_resp" + } + }, + "404": { + "description": "if no item with the given {@param.name libraryItemId} exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}/get" + } + }, + "patch": { + "tags": [ + "library/item" + ], + "summary": "Updates the specified properties of a library item.

This is an incremental update to the library item. {@term Fields} that are {@term unset} in the update specification are left unchanged.

This {@term operation} cannot update a library item that is a member of a subscribed library. Those items must be updated in the source published library and synchronized to the subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to update." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if there is already a library item with same name in the library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.already_exists_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}/patch" + } + }, + "delete": { + "tags": [ + "library/item" + ], + "summary": "Deletes a library item.

This {@term operation} will immediately remove the item from the library that owns it. The content of the item will be asynchronously removed from the storage backings. The content deletion can be tracked with a task. In the event that the task fails, an administrator may need to manually remove the files from the storage backing.

This {@term operation} cannot be used to delete a library item that is a member of a subscribed library. Removing an item from a subscribed library requires deleting the item from the original published local library and syncing the subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to delete." + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "if the library item contains a virtual machine template and a virtual machine is checked out of the library item.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "if the library item with the specified {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}/delete" + } + } + }, + "/rest/com/vmware/content/library/item/id:{library_item_id}?~action=publish": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Publishes the library item to specified subscriptions of the library. If no subscriptions are specified, then publishes the library item to all subscriptions of the library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Library item identifier." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item_publish" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "If the library item specified by {@param.name libraryItemId} does not belong to a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "publish", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}?action=publish/post" + } + } + }, + "/rest/com/vmware/content/library/item/id:{source_library_item_id}?~action=copy": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Copies a library item.

Copying a library item allows a duplicate to be made within the same or different library. The copy occurs by first creating a new library item, whose identifier is returned. The content of the library item is then copied asynchronously. This copy can be tracked as a task.

If the copy fails, Content Library Service will roll back the copy by deleting any content that was already copied, and removing the new library item. A failure during rollback may require manual cleanup by an administrator.

A library item cannot be copied into a subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "source_library_item_id", + "description": "Identifier of the existing library item from which the content will be copied." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item_copy" + } + } + ], + "responses": { + "200": { + "description": "The identifier of the new library item into which the content is being copied.", + "schema": { + "$ref": "#/definitions/content.library.item.copy_resp" + } + }, + "404": { + "description": "if the library item with {@param.name sourceLibraryItemId} does not exist, or if the library referenced by the {@link ItemModel#libraryId} property of {@param.name destinationCreateSpec} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the content of the source library item specified by {@param.name sourceLibraryItemId}, or the content of the target library specified by the library ID (see {@link ItemModel#libraryId}) property of {@param.name destinationCreateSpec} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "copy", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{source_library_item_id}?action=copy/post" + } + } + }, + "/rest/com/vmware/content/library/item/storage": { + "get": { + "tags": [ + "library/item/storage" + ], + "summary": "Lists all storage items for a given library item.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Identifier of the library item whose storage information should be listed.", + "required": true + } + ], + "responses": { + "200": { + "description": "The {@term list} of all storage items for a given library item.", + "schema": { + "$ref": "#/definitions/content.library.item.storage.list_resp" + } + }, + "404": { + "description": "if the specified library item does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}~1storage/get" + } + } + }, + "/rest/com/vmware/content/library/item/storage/id:{library_item_id}?~action=get": { + "post": { + "tags": [ + "library/item/storage" + ], + "summary": "Retrieves the storage information for a specific file in a library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose storage information should be retrieved." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.storage_get" + } + } + ], + "responses": { + "200": { + "description": "The {@term list} of all the storage items for the given file within the given library item.", + "schema": { + "$ref": "#/definitions/content.library.item.storage_resp" + } + }, + "404": { + "description": "if the specified library item does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item_id}~1storage?file_name/get" + } + } + }, + "/rest/com/vmware/content/library/item/update-session": { + "get": { + "tags": [ + "library/item/update_session" + ], + "summary": "Lists the identifiers of the update session created by the calling user. Optionally may filter by library item.", + "parameters": [ + { + "required": false, + "type": "string", + "in": "query", + "name": "library_item_id", + "description": "Optional library item identifier on which to filter results." + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all update sessions created by the calling user.", + "schema": { + "$ref": "#/definitions/content.library.item.update_session.list_resp" + } + }, + "404": { + "description": "if a library item identifier is given for an item which does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session/get" + } + }, + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Creates a new update session. An update session is used to make modifications to a library item. Modifications are not visible to other clients unless the session is completed and all necessary files have been received.

Content Library Service allows only one single update session to be active for a specific library item.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.update_session_create" + } + } + ], + "responses": { + "200": { + "description": "Identifier of the new update session being created.", + "schema": { + "$ref": "#/definitions/content.library.item.update_session.create_resp" + } + }, + "400": { + "description": "if there is another update session on the same library item.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.resource_busy_error" + } + }, + "404": { + "description": "if the item targeted for update does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session/post" + } + } + }, + "/rest/com/vmware/content/library/item/update-session/id:{update_session_id}": { + "get": { + "tags": [ + "library/item/update_session" + ], + "summary": "Gets the update session with the specified identifier, including the most up-to-date status information for the session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to retrieve." + } + ], + "responses": { + "200": { + "description": "The {@link UpdateSessionModel} instance with the given {@param.name updateSessionId}.", + "schema": { + "$ref": "#/definitions/content.library.item.update_session_resp" + } + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}/get" + } + }, + "patch": { + "tags": [ + "library/item/update_session" + ], + "summary": "Updates the properties of an update session.

This is an incremental update to the update session. Any {@term field} in the {@link UpdateSessionModel} {@term structure} that is {@term unset} will not be modified.

This {@term operation} will only update the property {@link UpdateSessionModel#warningBehavior} of the update session. This will not, for example, update the {@link UpdateSessionModel#libraryItemId} or {@link UpdateSessionModel#state} of an update session.

This {@term operation} requires the session to be in the {@link UpdateSessionModel.State#ACTIVE} state.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifer of the update session that should be updated." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.update_session_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session specification is not valid.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}/patch" + } + }, + "delete": { + "tags": [ + "library/item/update_session" + ], + "summary": "Deletes an update session. This removes the session and all information associated with it.

Removing an update session leaves any current transfers for that session in an indeterminate state (there is no guarantee that the server will terminate the transfers, or that the transfers can be completed). However there will no longer be a means of inspecting the status of those uploads except by seeing the effect on the library item.

Update sessions for which there is no upload activity or which are complete will automatically be deleted after a period of time.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifer of the update session to delete." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}/delete" + } + } + }, + "/rest/com/vmware/content/library/item/update-session/id:{update_session_id}?~action=cancel": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Cancels the update session and sets its state to {@link UpdateSessionModel.State#CANCELED}. This {@term operation} will free up any temporary resources currently associated with the session.

This {@term operation} is not allowed if the session has been already completed.

Cancelling an update session will cancel any in progress transfers (either uploaded by the client or pulled by the server). Any content that has been already received will be scheduled for deletion.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session that should be canceled." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "cancel", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}?action=cancel/post" + } + } + }, + "/rest/com/vmware/content/library/item/update-session/id:{update_session_id}?~action=complete": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Completes the update session. This indicates that the client has finished making all the changes required to the underlying library item. If the client is pushing the content to the server, the library item will be updated once this call returns. If the server is pulling the content, the call may return before the changes become visible. In that case, the client can track the session to know when the server is done.

This {@term operation} requires the session to be in the {@link UpdateSessionModel.State#ACTIVE} state.

Depending on the type of the library item associated with this session, a type adapter may be invoked to verify the validity of the files uploaded. The user can explicitly validate the session before completing the session by using the {@link content.library.item.updatesession.File#validate} {@term operation}.

Modifications are not visible to other clients unless the session is completed and all necessary files have been received.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session that should be completed." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state, or if some of the files that will be uploaded by the client aren't received correctly.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "complete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}?action=complete/post" + } + } + }, + "/rest/com/vmware/content/library/item/update-session/id:{update_session_id}?~action=fail": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Terminates the update session with a client specified error message.

This is useful in transmitting client side failures (for example, not being able to access a file) to the server side.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to fail." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.update_session_fail" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the update session does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "fail", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}?action=fail/post" + } + } + }, + "/rest/com/vmware/content/library/item/update-session/id:{update_session_id}?~action=keep-alive": { + "post": { + "tags": [ + "library/item/update_session" + ], + "summary": "Keeps an update session alive.

If there is no activity for an update session after a period of time, the update session will expire, then be deleted. The update session expiration timeout is configurable in the Content Library Service system configuration. The default is five minutes. Invoking this {@term operation} enables a client to specifically extend the lifetime of the update session.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session whose lifetime should be extended." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/content.library.item.update_session_keep_alive" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "keep_alive", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}?action=keep-alive/post" + } + } + }, + "/rest/com/vmware/content/library/item/updatesession/file": { + "get": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Lists all files in the library item associated with the update session.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "update_session_id", + "description": "Identifier of the update session.", + "required": true + } + ], + "responses": { + "200": { + "description": "The {@term list} of the files in the library item associated with the update session. This {@term list} may be empty if the caller has removed all the files as part of this session (in which case completing the update session will result in an empty library item).", + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file.list_resp" + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}~1file/get" + } + } + }, + "/rest/com/vmware/content/library/item/updatesession/file/id:{update_session_id}?~action=add": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Requests file content to be changed (either created, or updated). Depending on the source type of the file, this {@term operation} will either return an upload endpoint where the client can push the content, or the server will pull from the provided source endpoint. If a file with the same name already exists in this session, this {@term operation} will be used to update the content of the existing file.

When importing a file directly from storage, where the source endpoint is a file or datastore URI, you will need to have the ContentLibrary.ReadStorage privilege on the library item. If the file is located in the same directory as the library storage backing folder, the server will move the file instead of copying it, thereby allowing instantaneous import of files for efficient backup and restore scenarios. In all other cases, a copy is performed rather than a move.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to be modified." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file_add" + } + } + ], + "responses": { + "200": { + "description": "An {@link Info} {@term structure} containing upload links as well as server side state tracking the transfer of the file.", + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file.add_resp" + } + }, + "400": { + "description": "if the content of the library item associated with the update session has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "403": { + "description": "if the caller doesn't have ContentLibrary.ReadStorage privilege on the library item of the update session and source type {@link SourceType#PULL} is requested for a file or datastore source endpoint (that is, not HTTP or HTTPs based endpoint).", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "add", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}~1file/post" + } + } + }, + "/rest/com/vmware/content/library/item/updatesession/file/id:{update_session_id}?~action=get": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Retrieves information about a specific file in the snapshot of the library item at the time when the update session was created.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file_get" + } + } + ], + "responses": { + "200": { + "description": "Information about the file.", + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file_resp" + } + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the file doesn't exist in the library item associated with the update session.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}~1file~1{file_name}/get" + } + } + }, + "/rest/com/vmware/content/library/item/updatesession/file/id:{update_session_id}?~action=remove": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Requests a file to be removed. The file will only be effectively removed when the update session is completed.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file_remove" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the update session doesn't exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the file doesn't exist in the library item associated with the update session.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "remove", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}~1file~1{file_name}/delete" + } + } + }, + "/rest/com/vmware/content/library/item/updatesession/file/id:{update_session_id}?~action=validate": { + "post": { + "tags": [ + "library/item/updatesession/file" + ], + "summary": "Validates the files in the update session with the referenced identifier and ensures all necessary files are received. In the case where a file is missing, this {@term operation} will return its name in the {@link ValidationResult#missingFiles} set. The user can add the missing files and try re-validating. For other type of errors, {@link ValidationResult#invalidFiles} will contain the list of invalid files.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "update_session_id", + "description": "Identifier of the update session to validate." + } + ], + "responses": { + "200": { + "description": "A validation result containing missing files or invalid files and the reason why they are invalid.", + "schema": { + "$ref": "#/definitions/content.library.item.updatesession.file.validate_resp" + } + }, + "404": { + "description": "if no update session with the given identifier exists.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the update session is not in the {@link UpdateSessionModel.State#ACTIVE} state, or if some of the files that will be uploaded by the client aren't received correctly.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "validate", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1update-session~1{update_session_id}~1file?action=validate/post" + } + } + }, + "/rest/com/vmware/content/library/item?~action=find": { + "post": { + "tags": [ + "library/item" + ], + "summary": "Returns identifiers of all the visible (as determined by authorization policy) library items matching the requested {@link Item.FindSpec}.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.item_find" + } + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all the visible library items matching the given {@param.name spec}.", + "schema": { + "$ref": "#/definitions/content.library.item.find_resp" + } + }, + "400": { + "description": "if no properties are specified in the {@param.name spec}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "find", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item?action=find/post" + } + } + }, + "/rest/com/vmware/content/library/subscribed-item/id:{library_item_id}?~action=evict": { + "post": { + "tags": [ + "library/subscribed_item" + ], + "summary": "Evicts the cached content of a library item in a subscribed library.

This {@term operation} allows the cached content of a library item to be removed to free up storage capacity. This {@term operation} will only work when a library item is synchronized on-demand. When a library is not synchronized on-demand, it always attempts to keep its cache up-to-date with the published source. Evicting the library item will set {@link ItemModel#cached} to false.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item whose content should be evicted." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the content of the library item specified by {@param.name libraryItemId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on evicting a library item in an on-demand subscribed library that was restored from backup, and the library item was deleted after backup, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library item is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "evict", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1subscribed-item~1{library_item_id}?action=evict/post" + } + } + }, + "/rest/com/vmware/content/library/subscribed-item/id:{library_item_id}?~action=sync": { + "post": { + "tags": [ + "library/subscribed_item" + ], + "summary": "Forces the synchronization of an individual library item in a subscribed library.

Synchronizing an individual item will update that item's metadata from the remote source. If the source library item on the remote library has been deleted, this {@term operation} will delete the library item from the subscribed library as well.

The default behavior of the synchronization is determined by the {@link SubscriptionInfo} of the library which owns the library item.

  • If {@link SubscriptionInfo#onDemand} is true, then the file content is not synchronized by default. In this case, only the library item metadata is synchronized. The file content may still be forcefully synchronized by passing true for the {@param.name forceSyncContent} {@term parameter}.
  • If {@link SubscriptionInfo#onDemand} is false, then this call will always synchronize the file content. The {@param.name forceSyncContent} {@term parameter} is ignored when the subscription is not on-demand.
When the file content has been synchronized, the {@link ItemModel#cached} {@term field} will be true.

This {@term operation} will return immediately and create an asynchronous task to perform the synchronization.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item_id", + "description": "Identifier of the library item to synchronize." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.subscribed_item_sync" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library item specified by {@param.name libraryItemId} could not be found.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the content of the library item specified by {@param.name libraryItemId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on synchronizing a library item in a subscribed library that was restored from backup, and the library item was deleted after backup, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library item is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "sync", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1subscribed-item~1{library_item_id}?action=sync/post" + } + } + }, + "/rest/com/vmware/content/library/subscriptions": { + "get": { + "tags": [ + "library/subscriptions" + ], + "summary": "Lists the subscriptions of the published library.", + "parameters": [ + { + "type": "string", + "in": "query", + "name": "library", + "description": "Identifier of the published library.", + "required": true + } + ], + "responses": { + "200": { + "description": "List of commonly used information about subscriptions of the published library.", + "schema": { + "$ref": "#/definitions/content.library.subscriptions.list_resp" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library}~1subscriptions/get" + } + } + }, + "/rest/com/vmware/content/library/subscriptions/id:{library}": { + "patch": { + "tags": [ + "library/subscriptions" + ], + "summary": "Updates the specified subscription of the published library.

This is an incremental update to the subscription. Except for the {@link UpdateSpecPlacement} {@term structure}, {@term fields} that are {@term unset} in the update specification will be left unchanged. If {@param.name spec#subscribedLibraryPlacement} is specified, all {@term fields} of the current subscribed library placement will be replaced by this placement.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.subscriptions_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library}~1subscriptions~1{subscription}/patch" + } + }, + "post": { + "tags": [ + "library/subscriptions" + ], + "summary": "Creates a subscription of the published library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.subscriptions_create" + } + } + ], + "responses": { + "200": { + "description": "Subscription identifier.", + "schema": { + "$ref": "#/definitions/content.library.subscriptions.create_resp" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library}~1subscriptions/post" + } + } + }, + "/rest/com/vmware/content/library/subscriptions/id:{library}?~action=delete": { + "post": { + "tags": [ + "library/subscriptions" + ], + "summary": "Deletes the specified subscription of the published library. The subscribed library associated with the subscription will not be deleted.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.subscriptions_delete" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library}~1subscriptions~1{subscription}/delete" + } + } + }, + "/rest/com/vmware/content/library/subscriptions/id:{library}?~action=get": { + "post": { + "tags": [ + "library/subscriptions" + ], + "summary": "Returns information about the specified subscription of the published library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library.subscriptions_get" + } + } + ], + "responses": { + "200": { + "description": "Information about the subscription.", + "schema": { + "$ref": "#/definitions/content.library.subscriptions_resp" + } + }, + "400": { + "description": "If the library specified by {@param.name library} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name library} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1{library}~1subscriptions~1{subscription}/get" + } + } + }, + "/rest/com/vmware/content/library?~action=find": { + "post": { + "tags": [ + "library" + ], + "summary": "Returns a list of all the visible (as determined by authorization policy) libraries matching the requested {@link Library.FindSpec}.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.library_find" + } + } + ], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all the visible libraries matching the given {@param.name spec}.", + "schema": { + "$ref": "#/definitions/content.library.find_resp" + } + }, + "400": { + "description": "if no properties are specified in the {@param.name spec}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument_error" + } + } + }, + "operationId": "find", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library?action=find/post" + } + } + }, + "/rest/com/vmware/content/local-library": { + "get": { + "tags": [ + "local_library" + ], + "summary": "Returns the identifiers of all local libraries in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all local libraries in the Content Library.", + "schema": { + "$ref": "#/definitions/content.local_library.list_resp" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library/get" + } + }, + "post": { + "tags": [ + "local_library" + ], + "summary": "Creates a new local library.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.local_library_create" + } + } + ], + "responses": { + "200": { + "description": "Identifier of the newly created {@link LibraryModel}.", + "schema": { + "$ref": "#/definitions/content.local_library.create_resp" + } + }, + "400": { + "description": "if using multiple storage backings.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unsupported_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library/post" + } + } + }, + "/rest/com/vmware/content/local-library/id:{library_id}": { + "get": { + "tags": [ + "local_library" + ], + "summary": "Returns a given local library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance associated with {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/content.local_library_resp" + } + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the library specified by {@param.name libraryId} is not a local library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_element_type_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library~1{library_id}/get" + } + }, + "patch": { + "tags": [ + "local_library" + ], + "summary": "Updates the properties of a local library.

This is an incremental update to the local library. {@term Fields} that are {@term unset} in the update specification will be left unchanged.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to update." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.local_library_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is not equal to the current version of the library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.concurrent_change_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library~1{library_id}/patch" + } + }, + "delete": { + "tags": [ + "local_library" + ], + "summary": "Deletes the specified local library.

Deleting a local library will remove the entry immediately and begin an asynchronous task to remove all cached content for the library. If the asynchronous task fails, file content may remain on the storage backing. This content will require manual removal.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the local library to delete." + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "if the library contains a library item that cannot be deleted in its current state. For example, the library item contains a virtual machine template and a virtual machine is checked out of the library item.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library~1{library_id}/delete" + } + } + }, + "/rest/com/vmware/content/local-library/id:{library_id}?~action=publish": { + "post": { + "tags": [ + "local_library" + ], + "summary": "Publishes the library to specified subscriptions. If no subscriptions are specified, then publishes the library to all its subscriptions.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the published library." + }, + { + "in": "body", + "name": "request_body", + "schema": { + "$ref": "#/definitions/content.local_library_publish" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "If the library specified by {@param.name libraryId} is not a published library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + }, + "404": { + "description": "If the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "If the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "If the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + } + }, + "operationId": "publish", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1local-library~1{library_id}?action=publish/post" + } + } + }, + "/rest/com/vmware/content/subscribed-library": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Creates a new subscribed library.

Once created, the subscribed library will be empty. If the {@link LibraryModel#subscriptionInfo} property is set, the Content Library Service will attempt to synchronize to the remote source. This is an asynchronous operation so the content of the published library may not immediately appear.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.subscribed_library_create" + } + } + ], + "responses": { + "200": { + "description": "Identifier of the newly created subscribed library.", + "schema": { + "$ref": "#/definitions/content.subscribed_library.create_resp" + } + }, + "400": { + "description": "if subscribing to a published library which cannot be accessed.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.resource_inaccessible_error" + } + } + }, + "operationId": "create", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library/post" + } + }, + "get": { + "tags": [ + "subscribed_library" + ], + "summary": "Returns the identifiers of all subscribed libraries in the Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of identifiers of all subscribed libraries in the Content Library.", + "schema": { + "$ref": "#/definitions/content.subscribed_library.list_resp" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library/get" + } + } + }, + "/rest/com/vmware/content/subscribed-library/id:{library_id}": { + "patch": { + "tags": [ + "subscribed_library" + ], + "summary": "Updates the properties of a subscribed library.

This is an incremental update to the subscribed library. {@term Fields} that are {@term unset} in the update specification will be left unchanged.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to update." + }, + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.subscribed_library_update" + } + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the {@link LibraryModel#version} of {@param.name updateSpec} is not equal to the current version of the library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.concurrent_change_error" + } + } + }, + "operationId": "update", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library~1{library_id}/patch" + } + }, + "delete": { + "tags": [ + "subscribed_library" + ], + "summary": "Deletes the specified subscribed library.

Deleting a subscribed library will remove the entry immediately and begin an asynchronous task to remove all cached content for the library. If the asynchronous task fails, file content may remain on the storage backing. This content will require manual removal.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to delete." + } + ], + "responses": { + "200": { + "description": "" + }, + "400": { + "description": "if the library referenced by {@param.name libraryId} is not a subscribed library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_element_type_error" + } + }, + "404": { + "description": "if the library referenced by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + } + }, + "operationId": "delete", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library~1{library_id}/delete" + } + }, + "get": { + "tags": [ + "subscribed_library" + ], + "summary": "Returns a given subscribed library.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to return." + } + ], + "responses": { + "200": { + "description": "The {@link LibraryModel} instance that corresponds to {@param.name libraryId}.", + "schema": { + "$ref": "#/definitions/content.subscribed_library_resp" + } + }, + "404": { + "description": "if the library associated with {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the library associated with {@param.name libraryId} is not a subscribed library.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.invalid_element_type_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library~1{library_id}/get" + } + } + }, + "/rest/com/vmware/content/subscribed-library/id:{library_id}?~action=evict": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Evicts the cached content of an on-demand subscribed library.

This {@term operation} allows the cached content of a subscribed library to be removed to free up storage capacity. This {@term operation} will only work when a subscribed library is synchronized on-demand.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library whose content should be evicted." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the library specified by {@param.name libraryId} does not synchronize on-demand, or if the content of the library specified by {@param.name libraryId} has been deleted from the storage backings (see {@link LibraryModel#storageBackings}) associated with it.

For instance, this {@term error) is reported on evicting an on-demand subscribed library that was restored from backup, and the library was deleted after the backup was taken, thus resulting in its content being deleted from the associated storage backings. In this scenario, the metadata of the library is present on a restore, while its content has been deleted.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state_error" + } + } + }, + "operationId": "evict", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library~1{library_id}?action=evict/post" + } + } + }, + "/rest/com/vmware/content/subscribed-library/id:{library_id}?~action=sync": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Forces the synchronization of the subscribed library.

Synchronizing a subscribed library forcefully with this {@term operation} will perform the same synchronization behavior as would run periodically for the library. The {@link SubscriptionInfo#onDemand} setting is respected. Calling this {@term operation} on a library that is already in the process of synchronizing will have no effect.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_id", + "description": "Identifier of the subscribed library to synchronize." + } + ], + "responses": { + "200": { + "description": "" + }, + "404": { + "description": "if the library specified by {@param.name libraryId} does not exist.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "400": { + "description": "if the published library cannot be contacted or found.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.resource_inaccessible_error" + } + } + }, + "operationId": "sync", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library~1{library_id}?action=sync/post" + } + } + }, + "/rest/com/vmware/content/subscribed-library?~action=probe": { + "post": { + "tags": [ + "subscribed_library" + ], + "summary": "Probes remote library subscription information, including URL, SSL certificate and password. The resulting {@link ProbeResult} {@term structure} describes whether or not the subscription configuration is successful.", + "parameters": [ + { + "in": "body", + "name": "request_body", + "required": true, + "schema": { + "$ref": "#/definitions/content.subscribed_library_probe" + } + } + ], + "responses": { + "200": { + "description": "The subscription info probe result.", + "schema": { + "$ref": "#/definitions/content.subscribed_library.probe_resp" + } + } + }, + "operationId": "probe", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1subscribed-library?action=probe/post" + } + } + }, + "/rest/com/vmware/content/type": { + "get": { + "tags": [ + "type" + ], + "summary": "Returns a {@term list} of {@link Info} instances which describe the type support plugins in a Content Library.", + "parameters": [], + "responses": { + "200": { + "description": "The {@term list} of {@link Info} instances which describe the type support plugins in a Content Library.", + "schema": { + "$ref": "#/definitions/content.type.list_resp" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1type/get" + } + } + }, + "/rest/content/library/item/{library_item}/changes": { + "get": { + "tags": [ + "library/item/changes" + ], + "summary": "Returns commonly used information about the content changes made to a library item.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item", + "description": "Library item identifier." + } + ], + "responses": { + "200": { + "description": "List of commonly used information about the library item changes.", + "schema": { + "$ref": "#/definitions/content.library.item.changes.list_resp" + } + }, + "404": { + "description": "if the library item is not found.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "if the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "if the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + }, + "400": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.error_error" + } + } + }, + "operationId": "list", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item}~1changes/get" + } + } + }, + "/rest/content/library/item/{library_item}/changes/{version}": { + "get": { + "tags": [ + "library/item/changes" + ], + "summary": "Returns information about a library item change.", + "parameters": [ + { + "type": "string", + "required": true, + "in": "path", + "name": "library_item", + "description": "Library item identifer." + }, + { + "type": "string", + "required": true, + "in": "path", + "name": "version", + "description": "Library item version." + } + ], + "responses": { + "200": { + "description": "Information about the specified library item change.", + "schema": { + "$ref": "#/definitions/content.library.item.changes_resp" + } + }, + "404": { + "description": "if the library item or version is not found.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.not_found_error" + } + }, + "401": { + "description": "if the user that requested the {@term operation} cannot be authenticated.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated_error" + } + }, + "403": { + "description": "if the user that requested the {@term operation} is not authorized to perform the {@term operation}.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.unauthorized_error" + } + }, + "400": { + "description": "if the system reports an error while responding to the request.", + "schema": { + "$ref": "#/definitions/vapi.std.errors.error_error" + } + } + }, + "operationId": "get", + "security": [ + { + "session_id": [] + } + ], + "deprecated": true, + "x-vmw-deprecated": { + "replacement": "content.json#/paths/~1api~1content~1library~1item~1{library_item}~1changes~1{version}/get" + } + } + } + }, + "definitions": { + "ContentConfigurationModel": { + "type": "object", + "properties": { + "automatic_sync_enabled": { + "description": "Whether automatic synchronization is enabled.

When automatic synchronization is enabled, the Content Library Service will automatically synchronize all subscribed libraries on a daily basis. Subscribed libraries with the {@link SubscriptionInfo#automaticSyncEnabled} flag turned on will be synchronized every hour between {@link #automaticSyncStartHour} and {@link #automaticSyncStopHour}.", + "type": "boolean" + }, + "automatic_sync_start_hour": { + "description": "The hour at which the automatic synchronization will start. This value is between 0 (midnight) and 23 inclusive.", + "type": "integer", + "format": "int64" + }, + "automatic_sync_stop_hour": { + "description": "The hour at which the automatic synchronization will stop. Any active synchronization operation will continue to run, however no new synchronization operations will be triggered after the stop hour. This value is between 0 (midnight) and 23 inclusive.", + "type": "integer", + "format": "int64" + }, + "maximum_concurrent_item_syncs": { + "description": "The maximum allowed number of library items to synchronize concurrently from remote libraries. This must be a positive number. The service may not be able to guarantee the requested concurrency if there is no available capacity.

This setting is global across all subscribed libraries.", + "type": "integer", + "format": "int64" + } + } + }, + "ContentConfigurationUpdate": { + "$ref": "#/definitions/ContentConfigurationModel", + "description": "The {@link ConfigurationModel} specifying the settings to update." + }, + "ContentLibraryFind": { + "$ref": "#/definitions/ContentLibraryFindSpec", + "description": "Specification describing what properties to filter on." + }, + "ContentLibraryFindSpec": { + "type": "object", + "properties": { + "name": { + "description": "Name of the library to search. The name is case-insensitive. See {@link LibraryModel#name}.", + "type": "string" + }, + "type": { + "description": "Library type to search. See {@link LibraryModel#type}.", + "$ref": "#/definitions/ContentLibraryModelLibraryType" + } + } + }, + "ContentLibraryItemCertVerificationStatus": { + "type": "string", + "description": "The {@name CertVerificationStatus} {@term enumerated type} defines the certificate verification status of a library item. Currently applicable only to ovf item type", + "enum": [ + "NOT_AVAILABLE", + "VERIFIED", + "INTERNAL", + "VERIFICATION_FAILURE", + "VERIFICATION_IN_PROGRESS", + "UNTRUSTED" + ] + }, + "ContentLibraryItemCertificateVerificationInfo": { + "type": "object", + "properties": { + "status": { + "description": "The certificate verification status of item.", + "$ref": "#/definitions/ContentLibraryItemCertVerificationStatus" + }, + "cert_chain": { + "description": "A certificate in base64 encoding.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "status" + ] + }, + "ContentLibraryItemChangesInfo": { + "type": "object", + "properties": { + "time": { + "description": "The date and time when the item content was changed.", + "type": "string", + "format": "date-time" + }, + "user": { + "description": "The user who made the content change.", + "type": "string" + }, + "message": { + "description": "The full message describing the content change.", + "type": "string" + } + }, + "required": [ + "time" + ] + }, + "ContentLibraryItemChangesSummary": { + "type": "object", + "properties": { + "version": { + "description": "The version of the library item.", + "type": "string" + }, + "time": { + "description": "The date and time when the item content was changed.", + "type": "string", + "format": "date-time" + }, + "user": { + "description": "The user who made the content change.", + "type": "string" + }, + "short_message": { + "description": "The short message describing the content change. The message is truncated to the first 80 characters or first non-leading newline character, whichever length is shorter.", + "type": "string" + } + }, + "required": [ + "version", + "time" + ] + }, + "ContentLibraryItemCopy": { + "$ref": "#/definitions/ContentLibraryItemModel", + "description": "Specification for the new library item to be created." + }, + "ContentLibraryItemCreate": { + "$ref": "#/definitions/ContentLibraryItemModel", + "description": "Specification that defines the properties of the new library item." + }, + "ContentLibraryItemDestinationSpec": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + }, + "required": [ + "subscription" + ] + }, + "ContentLibraryItemDownloadSessionCreate": { + "$ref": "#/definitions/ContentLibraryItemDownloadSessionModel", + "description": "Specification for the new download session to be created." + }, + "ContentLibraryItemDownloadSessionFail": { + "type": "object", + "properties": { + "client_error_message": { + "type": "string", + "description": "Client side error message. This can be useful in providing some extra details about the client side failure. Note that the message won't be translated to the user's locale." + } + }, + "required": [ + "client_error_message" + ] + }, + "ContentLibraryItemDownloadSessionKeepAlive": { + "type": "object", + "properties": { + "progress": { + "type": "integer", + "format": "int64", + "description": "Optional update to the progress property of the session. If specified, the new progress should be greater then the current progress. See {@link DownloadSessionModel#clientProgress}." + } + } + }, + "ContentLibraryItemDownloadSessionModel": { + "type": "object", + "properties": { + "id": { + "description": "The identifier of this download session.", + "type": "string" + }, + "library_item_id": { + "description": "The identifier of the library item whose content is being downloaded.", + "type": "string" + }, + "library_item_content_version": { + "description": "The content version of the library item whose content is being downloaded. This value is the {@link ItemModel#contentVersion} at the time when the session is created for the library item.", + "type": "string" + }, + "error_message": { + "description": "If the session is in the {@link State#ERROR} status this property will have more details about the error.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + }, + "client_progress": { + "description": "The progress that has been made with the download. This property is to be updated by the client during the download process to indicate the progress of its work in completing the download. The initial progress is 0 until updated by the client. The maximum value is 100, which indicates that the download is complete.", + "type": "integer", + "format": "int64" + }, + "state": { + "description": "The current state ({@enum.values State}) of the download session.", + "$ref": "#/definitions/ContentLibraryItemDownloadSessionModelState" + }, + "expiration_time": { + "description": "Indicates the time after which the session will expire. The session is guaranteed not to expire before this time.", + "type": "string", + "format": "date-time" + } + } + }, + "ContentLibraryItemDownloadSessionModelState": { + "type": "string", + "description": "The state of the download session.", + "enum": [ + "ACTIVE", + "CANCELED", + "ERROR" + ] + }, + "ContentLibraryItemDownloadsessionFileEndpointType": { + "type": "string", + "description": "The {@name EndpointType} {@term enumerated type} defines the types of endpoints used to download the file.", + "enum": [ + "HTTPS", + "DIRECT" + ] + }, + "ContentLibraryItemDownloadsessionFileInfo": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes.", + "type": "integer", + "format": "int64" + }, + "bytes_transferred": { + "description": "The number of bytes that have been transferred by the server so far for making this file prepared for download. This value may stay at zero till the client starts downloading the file.", + "type": "integer", + "format": "int64" + }, + "status": { + "description": "The preparation status ({@enum.values PrepareStatus}) of the file.", + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFilePrepareStatus" + }, + "download_endpoint": { + "description": "Endpoint at which the file is available for download. The value is valid only when the {@link #status} is {@link File.PrepareStatus#PREPARED}.", + "$ref": "#/definitions/ContentLibraryItemTransferEndpoint" + }, + "checksum_info": { + "description": "The checksum information of the file. When the download is complete, you can retrieve the checksum from the {@link File#get} {@term operation} to verify the checksum for the downloaded file.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumInfo" + }, + "error_message": { + "description": "Error message for a failed preparation when the prepare status is {@link File.PrepareStatus#ERROR}.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "required": [ + "name", + "bytes_transferred", + "status" + ] + }, + "ContentLibraryItemDownloadsessionFilePrepare": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file requested for download." + }, + "endpoint_type": { + "$ref": "#/definitions/ContentLibraryItemDownloadsessionFileEndpointType", + "description": "Endpoint type request, one of {@enum.values EndpointType}. This will determine the type of the {@link File.Info#downloadEndpoint} that is generated when the file is prepared. The {@link EndpointType#DIRECT} is only available to users who have the ContentLibrary.ReadStorage privilege." + } + }, + "required": [ + "file_name" + ] + }, + "ContentLibraryItemDownloadsessionFilePrepareStatus": { + "type": "string", + "description": "The {@name PrepareStatus} {@term enumerated type} defines the state of the file in preparation for download.", + "enum": [ + "UNPREPARED", + "PREPARE_REQUESTED", + "PREPARING", + "PREPARED", + "ERROR" + ] + }, + "ContentLibraryItemFileChecksumAlgorithm": { + "type": "string", + "description": "The {@name ChecksumAlgorithm} {@term enumerated type} defines the valid checksum algorithms.", + "enum": [ + "SHA1", + "MD5", + "SHA256", + "SHA512" + ] + }, + "ContentLibraryItemFileChecksumInfo": { + "type": "object", + "properties": { + "algorithm": { + "description": "The checksum algorithm ({@enum.values ChecksumAlgorithm}) used to calculate the checksum.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumAlgorithm" + }, + "checksum": { + "description": "The checksum value calculated with {@link #algorithm}.", + "type": "string" + } + }, + "required": [ + "checksum" + ] + }, + "ContentLibraryItemFileInfo": { + "type": "object", + "properties": { + "checksum_info": { + "description": "A checksum for validating the content of the file.

This value can be used to verify that a transfer was completed without errors.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumInfo" + }, + "name": { + "description": "The name of the file.

This value will be unique within the library item for each file. It cannot be an empty string.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes. The file size is the storage used and not the uploaded or provisioned size. For example, when uploading a disk to a datastore, the amount of storage that the disk consumes may be different from the disk file size. When the file is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "cached": { + "description": "Indicates whether the file is on disk or not.", + "type": "boolean" + }, + "version": { + "description": "The version of this file; incremented when a new copy of the file is uploaded.", + "type": "string" + } + }, + "required": [ + "name", + "size", + "cached", + "version" + ] + }, + "ContentLibraryItemFind": { + "$ref": "#/definitions/ContentLibraryItemFindSpec", + "description": "Specification describing what properties to filter on." + }, + "ContentLibraryItemFindSpec": { + "type": "object", + "properties": { + "name": { + "description": "The name of the library item. The name is case-insensitive. See {@link ItemModel#name}.", + "type": "string" + }, + "library_id": { + "description": "The identifier of the library containing the item. See {@link ItemModel#libraryId}.", + "type": "string" + }, + "source_id": { + "description": "The identifier of the library item as reported by the publisher. See {@link ItemModel#sourceId}.", + "type": "string" + }, + "type": { + "description": "The type of the library item. The type is case-insensitive. See {@link ItemModel#type}.", + "type": "string" + }, + "cached": { + "description": "Whether the item is cached. Possible values are 'true' or 'false'. See {@link ItemModel#cached}.", + "type": "boolean" + } + } + }, + "ContentLibraryItemModel": { + "type": "object", + "properties": { + "id": { + "description": "A unique identifier for this library item.", + "type": "string" + }, + "library_id": { + "description": "The identifier of the {@link LibraryModel} to which this item belongs.", + "type": "string" + }, + "content_version": { + "description": "The latest version of the file content list of this library item.", + "type": "string" + }, + "creation_time": { + "description": "The date and time when this library item was created.", + "type": "string", + "format": "date-time" + }, + "description": { + "description": "A human-readable description for this library item.", + "type": "string" + }, + "last_modified_time": { + "description": "The date and time when the metadata for this library item was last changed.

This {@term field} is affected by changes to the properties or file content of this item. It is not modified by changes to the tags of the item, or by changes to the library which owns this item.", + "type": "string", + "format": "date-time" + }, + "last_sync_time": { + "description": "The date and time when this library item was last synchronized.

This {@term field} is updated every time a synchronization is triggered on the library item, including when a synchronization is triggered on the library to which this item belongs. The value is {@term unset} for a library item that belongs to a local library.", + "type": "string", + "format": "date-time" + }, + "metadata_version": { + "description": "A version number for the metadata of this library item.

This value is incremented with each change to the metadata of this item. Changes to name, description, and so on will increment this value. The value is not incremented by changes to the content or tags of the item or the library which owns it.", + "type": "string" + }, + "name": { + "description": "A human-readable name for this library item.

The name may not be {@term unset} or an empty string. The name does not have to be unique, even within the same library.", + "type": "string" + }, + "cached": { + "description": "The status that indicates whether the library item is on disk or not. The library item is cached when all its files are on disk.", + "type": "boolean" + }, + "size": { + "description": "The library item size, in bytes. The size is the sum of the size used on the storage backing for all the files in the item. When the library item is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "type": { + "description": "An optional type identifier which indicates the type adapter plugin to use.

This {@term field} may be set to a non-empty string value that corresponds to an identifier supported by a type adapter plugin present in the Content Library Service. A type adapter plugin, if present for the specified type, can provide additional information and services around the item content. A type adapter can guide the upload process by creating file entries that are in need of being uploaded to complete an item.

The types and plugins supported by the Content Library Service can be queried using the {@link Type} {@term service}.", + "type": "string" + }, + "version": { + "description": "A version number that is updated on metadata changes. This value is used to validate update requests to provide optimistic concurrency of changes.

This value represents a number that is incremented every time library item properties, such as name or description, are changed. It is not incremented by changes to the file content of the library item, including adding or removing files. It is also not affected by tagging the library item.", + "type": "string" + }, + "source_id": { + "description": "The identifier of the {@link ItemModel} to which this item is synchronized to if the item belongs to a subscribed library. The value is {@term unset} for a library item that belongs to a local library.", + "type": "string" + }, + "security_compliance": { + "description": "Shows the security compliance of {@link ItemModel}.", + "type": "boolean" + }, + "certificate_verification_info": { + "description": "Certificate verification status and {@link ItemModel}'s signing certificate . Currently, this field is available only in following cases 1. This item belongs to a secure content library 2. The item is of type ovf.", + "$ref": "#/definitions/ContentLibraryItemCertificateVerificationInfo" + } + } + }, + "ContentLibraryItemPublish": { + "type": "object", + "properties": { + "force_sync_content": { + "type": "boolean", + "description": "Whether to synchronize file content as well as metadata. This {@term parameter} applies only if the subscription is on-demand." + }, + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemDestinationSpec" + }, + "description": "The list of subscriptions to publish this library item to." + } + }, + "required": [ + "force_sync_content" + ] + }, + "ContentLibraryItemStorageInfo": { + "type": "object", + "properties": { + "storage_backing": { + "description": "The storage backing on which this object resides. This might not be the same as the default storage backing associated with the library.", + "$ref": "#/definitions/ContentLibraryStorageBacking" + }, + "storage_uris": { + "description": "URIs that identify the file on the storage backing.

These URIs may be specific to the backing and may need interpretation by the client. A client that understands a URI scheme in this list may use that URI to directly access the file on the storage backing. This can provide high-performance support for file manipulation.", + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "checksum_info": { + "description": "A checksum for validating the content of the file.

This value can be used to verify that a transfer was completed without errors.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumInfo" + }, + "name": { + "description": "The name of the file.

This value will be unique within the library item for each file. It cannot be an empty string.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes. The file size is the storage used and not the uploaded or provisioned size. For example, when uploading a disk to a datastore, the amount of storage that the disk consumes may be different from the disk file size. When the file is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "cached": { + "description": "Indicates whether the file is on disk or not.", + "type": "boolean" + }, + "version": { + "description": "The version of this file; incremented when a new copy of the file is uploaded.", + "type": "string" + } + }, + "required": [ + "storage_backing", + "storage_uris", + "name", + "size", + "cached", + "version" + ] + }, + "ContentLibraryItemTransferEndpoint": { + "type": "object", + "properties": { + "uri": { + "description": "Transfer endpoint URI. The supported URI schemes are: {@code http}, {@code https}, and {@code ds}.

An endpoint URI with the {@code ds} scheme specifies the location of the file on the datastore. The format of the datastore URI is:

  • ds:///vmfs/volumes/uuid/path

When the transfer endpoint is a datastore location, the server can import the file directly from the storage backing without the overhead of streaming over HTTP.", + "type": "string", + "format": "uri" + }, + "ssl_certificate_thumbprint": { + "description": "Thumbprint of the expected SSL certificate for this endpoint. Only used for HTTPS connections. The thumbprint is the SHA-1 hash of the DER encoding of the remote endpoint's SSL certificate. If set, the remote endpoint's SSL certificate is only accepted if it matches this thumbprint, and no other certificate validation is performed.", + "type": "string" + } + }, + "required": [ + "uri" + ] + }, + "ContentLibraryItemTransferStatus": { + "type": "string", + "description": "The {@name TransferStatus} {@term enumerated type} defines the transfer state of a file.", + "enum": [ + "WAITING_FOR_TRANSFER", + "TRANSFERRING", + "READY", + "VALIDATING", + "ERROR" + ] + }, + "ContentLibraryItemUpdate": { + "$ref": "#/definitions/ContentLibraryItemModel", + "description": "Specification of the properties to set." + }, + "ContentLibraryItemUpdateSessionCreate": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionModel", + "description": "Specification for the new update session to be created." + }, + "ContentLibraryItemUpdateSessionFail": { + "type": "object", + "properties": { + "client_error_message": { + "type": "string", + "description": "Client side error message. This can be useful in providing some extra details about the client side failure. Note that the message won't be translated to the user's locale." + } + }, + "required": [ + "client_error_message" + ] + }, + "ContentLibraryItemUpdateSessionKeepAlive": { + "type": "object", + "properties": { + "client_progress": { + "type": "integer", + "format": "int64", + "description": "Optional update to the progress property of the session. If specified, the new progress should be greater then the current progress. See {@link UpdateSessionModel#clientProgress}." + } + } + }, + "ContentLibraryItemUpdateSessionModel": { + "type": "object", + "properties": { + "id": { + "description": "The identifier of this update session.", + "type": "string" + }, + "library_item_id": { + "description": "The identifier of the library item to which content will be uploaded or removed.", + "type": "string" + }, + "library_item_content_version": { + "description": "The content version of the library item whose content is being modified. This value is the {@link ItemModel#contentVersion} at the time when the session is created for the library item.", + "type": "string" + }, + "error_message": { + "description": "If the session is in the {@link State#ERROR} status this property will have more details about the error.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + }, + "client_progress": { + "description": "The progress that has been made with the upload. This property is to be updated by the client during the upload process to indicate the progress of its work in completing the upload. The initial progress is 0 until updated by the client. The maximum value is 100, which indicates that the update is complete.", + "type": "integer", + "format": "int64" + }, + "state": { + "description": "The current state ({@enum.values State}) of the update session.", + "$ref": "#/definitions/ContentLibraryItemUpdateSessionModelState" + }, + "expiration_time": { + "description": "Indicates the time after which the session will expire. The session is guaranteed not to expire earlier than this time.", + "type": "string", + "format": "date-time" + }, + "preview_info": { + "description": "A preview of the files currently being uploaded in the session. This property will be set only when the session is in the {@link State#ACTIVE}.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionPreviewInfo" + }, + "warning_behavior": { + "description": "Indicates the update session behavior if warnings are raised in the session preview. Any warning which is raised by session preview but not ignored by the client will, by default, fail the update session.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionWarningBehavior" + } + } + } + }, + "ContentLibraryItemUpdateSessionModelState": { + "type": "string", + "description": "The state of an update session.", + "enum": [ + "ACTIVE", + "DONE", + "ERROR", + "CANCELED" + ] + }, + "ContentLibraryItemUpdateSessionUpdate": { + "$ref": "#/definitions/ContentLibraryItemUpdateSessionModel", + "description": "Specification for the new property values to be set on the update session." + }, + "ContentLibraryItemUpdatesessionCertificateInfo": { + "type": "object", + "properties": { + "issuer": { + "description": "Certificate issuer. For example: /C=US/ST=California/L=Palo Alto/O=VMware, Inc.", + "type": "string" + }, + "subject": { + "description": "Certificate subject. For example: C=US/ST=Massachusetts/L=Hopkinton/O=EMC Corporation/OU=EMC Avamar/CN=EMC Corporation.", + "type": "string" + }, + "self_signed": { + "description": "Whether the certificate is self-signed.", + "type": "boolean" + }, + "x509": { + "description": "The X509 representation of the certificate.", + "type": "string" + } + }, + "required": [ + "issuer", + "subject", + "self_signed", + "x509" + ] + }, + "ContentLibraryItemUpdatesessionFileAdd": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileAddSpec", + "description": "Specification for the file that needs to be added or updated. This includes whether the client wants to push the content or have the server pull it." + }, + "ContentLibraryItemUpdatesessionFileAddSpec": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file being uploaded.", + "type": "string" + }, + "source_type": { + "description": "The source type ({@enum.values SourceType}) from which the file content will be retrieved.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileSourceType" + }, + "source_endpoint": { + "description": "Location from which the Content Library Service will fetch the file, rather than requiring a client to upload the file.", + "$ref": "#/definitions/ContentLibraryItemTransferEndpoint" + }, + "size": { + "description": "The file size, in bytes.", + "type": "integer", + "format": "int64" + }, + "checksum_info": { + "description": "The checksum of the file. If specified, the server will verify the checksum once the file is received. If there is a mismatch, the upload will fail. For ova files, this value should not be set.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumInfo" + } + }, + "required": [ + "name", + "source_type" + ] + }, + "ContentLibraryItemUpdatesessionFileInfo": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "source_type": { + "description": "The source type ({@enum.values SourceType}) from which the file is being retrieved. This may be {@link SourceType#NONE} if the file is not being changed.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileSourceType" + }, + "size": { + "description": "The file size, in bytes as received by the server. This {@term field} is guaranteed to be set when the server has completely received the file.", + "type": "integer", + "format": "int64" + }, + "checksum_info": { + "description": "The checksum information of the file received by the server.", + "$ref": "#/definitions/ContentLibraryItemFileChecksumInfo" + }, + "source_endpoint": { + "description": "A source endpoint from which to retrieve the file.", + "$ref": "#/definitions/ContentLibraryItemTransferEndpoint" + }, + "upload_endpoint": { + "description": "An upload endpoint to which the client can push the content.", + "$ref": "#/definitions/ContentLibraryItemTransferEndpoint" + }, + "bytes_transferred": { + "description": "The number of bytes of this file that have been received by the server.", + "type": "integer", + "format": "int64" + }, + "status": { + "description": "The transfer status ({@enum.values TransferStatus}) of this file.", + "$ref": "#/definitions/ContentLibraryItemTransferStatus" + }, + "error_message": { + "description": "Details about the transfer error.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + }, + "keep_in_storage": { + "description": "Whether or not the file will be kept in storage upon update session completion. The flag is true for most files, and false for metadata files such as manifest and certificate file of update session with library item type OVF. Any file with {@link Info#keepInStorage} set to false will not show up in the list of files returned from {@link content.library.item.File#list} upon update session completion.", + "type": "boolean" + } + }, + "required": [ + "name", + "source_type", + "bytes_transferred", + "status" + ] + }, + "ContentLibraryItemUpdatesessionFileSourceType": { + "type": "string", + "description": "The {@name SourceType} {@term enumerated type} defines how the file content is retrieved.", + "enum": [ + "NONE", + "PUSH", + "PULL" + ] + }, + "ContentLibraryItemUpdatesessionFileValidationError": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "error_message": { + "description": "A message indicating why the file was considered invalid.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "required": [ + "name", + "error_message" + ] + }, + "ContentLibraryItemUpdatesessionFileValidationResult": { + "type": "object", + "properties": { + "has_errors": { + "description": "Whether the validation was succesful or not. In case of errors, the {@link #missingFiles} and {@link #invalidFiles} will contain at least one entry.", + "type": "boolean" + }, + "missing_files": { + "description": "A {@term set} containing the names of the files that are required but the client hasn't added.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "invalid_files": { + "description": "A {@term list} containing the files that have been identified as invalid and details about the error.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionFileValidationError" + } + } + }, + "required": [ + "has_errors", + "missing_files", + "invalid_files" + ] + }, + "ContentLibraryItemUpdatesessionPreviewInfo": { + "type": "object", + "properties": { + "state": { + "description": "Indicates the state of the preview of the update session.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionPreviewInfoState" + }, + "certificate_info": { + "description": "The certificate information of the signed update session content.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionCertificateInfo" + }, + "warnings": { + "description": "The list of warnings raised for this update session. Any warning which is not ignored by the client will, by default, fail the update session during session complete operation.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryItemUpdatesessionPreviewWarningInfo" + } + }, + "cert_chain": { + "description": "Certificate chain in base64 format.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "state" + ] + }, + "ContentLibraryItemUpdatesessionPreviewInfoState": { + "type": "string", + "description": "The {@name State} {@term enumerated type} defines the state of the update session's preview.", + "enum": [ + "UNAVAILABLE", + "NOT_APPLICABLE", + "PREPARING", + "AVAILABLE" + ] + }, + "ContentLibraryItemUpdatesessionPreviewWarningInfo": { + "type": "object", + "properties": { + "type": { + "description": "The warning type raised during preview of the update session.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionWarningType" + }, + "message": { + "description": "The message specifying more details about the warning.", + "$ref": "#/definitions/VapiStdLocalizableMessage" + }, + "ignored": { + "description": "Indicates if this warning will be ignored during session complete operation.", + "type": "boolean" + } + }, + "required": [ + "type", + "message", + "ignored" + ] + }, + "ContentLibraryItemUpdatesessionWarningBehavior": { + "type": "object", + "properties": { + "type": { + "description": "The warning type which may be raised during the update session.", + "$ref": "#/definitions/ContentLibraryItemUpdatesessionWarningType" + }, + "ignored": { + "description": "Indicates if this warning will be ignored during session complete operation.", + "type": "boolean" + } + }, + "required": [ + "type", + "ignored" + ] + }, + "ContentLibraryItemUpdatesessionWarningType": { + "type": "string", + "description": "The {@name WarningType} {@term enumerated type} defines the warnings which can be raised during the update session.", + "enum": [ + "SELF_SIGNED_CERTIFICATE", + "EXPIRED_CERTIFICATE", + "NOT_YET_VALID_CERTIFICATE", + "UNTRUSTED_CERTIFICATE" + ] + }, + "ContentLibraryModel": { + "type": "object", + "properties": { + "id": { + "description": "An identifier which uniquely identifies this {@name LibraryModel}.", + "type": "string" + }, + "creation_time": { + "description": "The date and time when this library was created.", + "type": "string", + "format": "date-time" + }, + "description": { + "description": "A human-readable description for this library.", + "type": "string" + }, + "last_modified_time": { + "description": "The date and time when this library was last updated.

This {@term field} is updated automatically when the library properties are changed. This {@term field} is not affected by adding, removing, or modifying a library item or its content within the library. Tagging the library or syncing the subscribed library does not alter this {@term field}.", + "type": "string", + "format": "date-time" + }, + "last_sync_time": { + "description": "The date and time when this library was last synchronized.

This {@term field} applies only to subscribed libraries. It is updated every time a synchronization is triggered on the library. The value is {@term unset} for a local library.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "The name of the library.

A Library is identified by a human-readable name. Library names cannot be undefined or an empty string. Names do not have to be unique.", + "type": "string" + }, + "storage_backings": { + "description": "The list of default storage backings which are available for this library.

A {@link StorageBacking} defines a default storage location which can be used to store files for library items in this library. Some library items, for instance, virtual machine template items, support files that may be distributed across various storage backings. One or more item files may or may not be located on the default storage backing.

Multiple default storage locations are not currently supported but may become supported in future releases.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryStorageBacking" + } + }, + "type": { + "description": "The type ({@enum.values LibraryModel.LibraryType}) of this library.

This value can be used to determine what additional services and information can be available for this library. This {@term field} is not used for the {@code create} and {@code update} {@term operations}. It will always be present in the result of a {@code get} {@term operation}.", + "$ref": "#/definitions/ContentLibraryModelLibraryType" + }, + "optimization_info": { + "description": "Defines various optimizations and optimization parameters applied to this library.", + "$ref": "#/definitions/ContentLibraryOptimizationInfo" + }, + "version": { + "description": "A version number which is updated on metadata changes. This value allows clients to detect concurrent updates and prevent accidental clobbering of data.

This value represents a number which is incremented every time library properties, such as name or description, are changed. It is not incremented by changes to a library item within the library, including adding or removing items. It is also not affected by tagging the library.", + "type": "string" + }, + "publish_info": { + "description": "Defines how this library is published so that it can be subscribed to by a remote subscribed library.

The {@link PublishInfo} defines where and how the metadata for this local library is accessible. A local library is only published publically if {@link PublishInfo#published} is {@code true}.", + "$ref": "#/definitions/ContentLibraryPublishInfo" + }, + "subscription_info": { + "description": "Defines the subscription behavior for this Library.

The {@link SubscriptionInfo} defines how this subscribed library synchronizes to a remote source. Setting the value will determine the remote source to which the library synchronizes, and how. Changing the subscription will result in synchronizing to a new source. If the new source differs from the old one, the old library items and data will be lost. Setting {@link SubscriptionInfo#automaticSyncEnabled} to false will halt subscription but will not remove existing cached data.", + "$ref": "#/definitions/ContentLibrarySubscriptionInfo" + }, + "server_guid": { + "description": "The unique identifier of the vCenter server where the library exists.", + "type": "string" + }, + "security_policy_id": { + "description": "Represents the security policy applied to this library.

Setting the {@term field} will make the library secure. This field is ignored in {@code update} {@term operation} if {@link #unsetSecurityPolicyId} is set to {@code true}.", + "type": "string" + }, + "unset_security_policy_id": { + "description": "This represents the intent of the change to {@link #securityPolicyId} in {@code update} {@term operation}.

If this field is set to {@code true}, any security policy applied to the library will be removed. If this field is set to {@code false}, any security policy applied to library will be changed to the value specified in {@link #securityPolicyId}, if any.", + "type": "boolean" + } + } + }, + "ContentLibraryModelLibraryType": { + "type": "string", + "description": "The {@name LibraryType} {@term enumerated type} defines the type of a {@link LibraryModel}.

The type of a library can be used to determine which additional services can be performed with a library.", + "enum": [ + "LOCAL", + "SUBSCRIBED" + ] + }, + "ContentLibraryOptimizationInfo": { + "type": "object", + "properties": { + "optimize_remote_publishing": { + "description": "If set to {@code true} then library would be optimized for remote publishing.

Turn it on if remote publishing is dominant use case for this library. Remote publishing means here that publisher and subscribers are not the part of the same {@name Vcenter} SSO domain.

Any optimizations could be done as result of turning on this optimization during library creation. For example, library content could be stored in different format but optimizations are not limited to just storage format.

Note, that value of this toggle could be set only during creation of the library and you would need to migrate your library in case you need to change this value (optimize the library for different use case).", + "type": "boolean" + } + } + }, + "ContentLibraryPublishInfo": { + "type": "object", + "properties": { + "authentication_method": { + "description": "Indicates how a subscribed library should authenticate ({@enum.values AuthenticationMethod}) to the published library endpoint.", + "$ref": "#/definitions/ContentLibraryPublishInfoAuthenticationMethod" + }, + "published": { + "description": "Whether the local library is published.", + "type": "boolean" + }, + "publish_url": { + "description": "The URL to which the library metadata is published by the Content Library Service.

This value can be used to set the {@link SubscriptionInfo#subscriptionUrl} property when creating a subscribed library.", + "type": "string", + "format": "uri" + }, + "user_name": { + "description": "The username to require for authentication.", + "type": "string" + }, + "password": { + "description": "The new password to require for authentication.", + "type": "string", + "format": "password" + }, + "current_password": { + "description": "The current password to verify. This {@term field} is available starting in vSphere 6.7.", + "type": "string", + "format": "password" + }, + "persist_json_enabled": { + "description": "Whether library and library item metadata are persisted in the storage backing as JSON files. This flag only applies if the local library is published.

Enabling JSON persistence allows you to synchronize a subscribed library manually instead of over HTTP. You copy the local library content and metadata to another storage backing manually and then create a subscribed library referencing the location of the library JSON file in the {@link SubscriptionInfo#subscriptionUrl}. When the subscribed library's storage backing matches the subscription URL, files do not need to be copied to the subscribed library.

For a library backed by a datastore, the library JSON file will be stored at the path contentlib-{library_id}/lib.json on the datastore.

For a library backed by a remote file system, the library JSON file will be stored at {library_id}/lib.json in the remote file system path.", + "type": "boolean" + } + } + }, + "ContentLibraryPublishInfoAuthenticationMethod": { + "type": "string", + "description": "The {@name AuthenticationMethod} {@term enumerated type} indicates how a subscribed library should authenticate to the published library endpoint.", + "enum": [ + "BASIC", + "NONE" + ] + }, + "ContentLibrarySourceInfo": { + "type": "object", + "properties": { + "source_library": { + "description": "Identifier of the published library.", + "type": "string" + }, + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + } + }, + "ContentLibraryStorageBacking": { + "type": "object", + "properties": { + "type": { + "description": "Type ({@enum.values Type}) of {@link StorageBacking}.", + "$ref": "#/definitions/ContentLibraryStorageBackingType" + }, + "datastore_id": { + "description": "Identifier of the datastore used to store the content in the library.", + "type": "string" + }, + "storage_uri": { + "description": "URI identifying the location used to store the content in the library.

The following URI formats are supported:

vSphere 6.5

  • nfs://server/path?version=4 (for vCenter Server Appliance only) - Specifies an NFS Version 4 server.
  • nfs://server/path (for vCenter Server Appliance only) - Specifies an NFS Version 3 server. The nfs://server:/path format is also supported.
  • smb://server/path - Specifies an SMB server or Windows share.

vSphere 6.0 Update 1

  • nfs://server:/path (for vCenter Server Appliance only)
  • file://unc-server/path (for vCenter Server for Windows only)
  • file:///mount/point (for vCenter Server Appliance only) - Local file URIs are supported only when the path is a local mount point for an NFS file system. Use of file URIs is strongly discouraged. Instead, use an NFS URI to specify the remote file system.

vSphere 6.0

  • nfs://server:/path (for vCenter Server Appliance only)
  • file://unc-server/path (for vCenter Server for Windows only)
  • file:///path - Local file URIs are supported but strongly discouraged because it may interfere with the performance of vCenter Server.
", + "type": "string", + "format": "uri" + } + } + }, + "ContentLibraryStorageBackingType": { + "type": "string", + "description": "The {@name Type} {@term enumerated type} specifies the type of the {@link StorageBacking}.", + "enum": [ + "DATASTORE", + "OTHER" + ] + }, + "ContentLibrarySubscribedItemSync": { + "type": "object", + "properties": { + "force_sync_content": { + "type": "boolean", + "description": "Whether to synchronize file content as well as metadata. This {@term parameter} applies only if the subscription is on-demand." + }, + "sync_optional_files": { + "type": "boolean", + "description": "Whether to synchronize optional files. This {@term parameter} applies to both types of subscriptions on-demand as well as sync-immediately." + } + }, + "required": [ + "force_sync_content" + ] + }, + "ContentLibrarySubscriptionInfo": { + "type": "object", + "properties": { + "authentication_method": { + "description": "Indicate how the subscribed library should authenticate ({@enum.values AuthenticationMethod}) with the published library endpoint.", + "$ref": "#/definitions/ContentLibrarySubscriptionInfoAuthenticationMethod" + }, + "automatic_sync_enabled": { + "description": "Whether the library should participate in automatic library synchronization. In order for automatic synchronization to happen, the global {@link ConfigurationModel#automaticSyncEnabled} option must also be true. The subscription is still active even when automatic synchronization is turned off, but synchronization is only activated with an explicit call to {@link SubscribedLibrary#sync} or {@link SubscribedItem#sync}. In other words, manual synchronization is still available even when automatic synchronization is disabled.", + "type": "boolean" + }, + "on_demand": { + "description": "Indicates whether a library item's content will be synchronized only on demand.

If this is set to {@code true}, then the library item's metadata will be synchronized but the item's content (its files) will not be synchronized. The Content Library Service will synchronize the content upon request only. This can cause the first use of the content to have a noticeable delay.

Items without synchronized content can be forcefully synchronized in advance using the {@link SubscribedItem#sync} call with {@param.name forceSyncContent} set to true. Once content has been synchronized, the content can removed with the {@link SubscribedItem#evict} call.

If this value is set to {@code false}, all content will be synchronized in advance.", + "type": "boolean" + }, + "password": { + "description": "The password to use when authenticating.

The password must be set when using a password-based authentication method; empty strings are not allowed.", + "type": "string", + "format": "password" + }, + "ssl_thumbprint": { + "description": "An optional SHA-1 hash of the SSL certificate for the remote endpoint.

If this value is defined the SSL certificate will be verified by comparing it to the SSL thumbprint. The SSL certificate must verify against the thumbprint. When specified, the standard certificate chain validation behavior is not used. The certificate chain is validated normally if this value is {@term unset}.", + "type": "string" + }, + "subscription_url": { + "description": "The URL of the endpoint where the metadata for the remotely published library is being served.

This URL can be the {@link PublishInfo#publishUrl} of the published library (for example, https://server/path/lib.json).

If the source content comes from a published library with {@link PublishInfo#persistJsonEnabled}, the subscription URL can be a URL pointing to the library JSON file on a datastore or remote file system. The supported formats are:

vSphere 6.5

  • ds:///vmfs/volumes/{uuid}/mylibrary/lib.json (for datastore)
  • nfs://server/path/mylibrary/lib.json (for NFSv3 server on vCenter Server Appliance)
  • nfs://server/path/mylibrary/lib.json?version=4 (for NFSv4 server on vCenter Server Appliance)
  • smb://server/path/mylibrary/lib.json (for SMB server)

vSphere 6.0

  • file://server/mylibrary/lib.json (for UNC server on vCenter Server for Windows)
  • file:///path/mylibrary/lib.json (for local file system)

When you specify a DS subscription URL, the datastore must be on the same vCenter Server as the subscribed library. When you specify an NFS or SMB subscription URL, the {@link StorageBacking#storageUri} of the subscribed library must be on the same remote file server and should share a common parent path with the subscription URL.", + "type": "string", + "format": "uri" + }, + "user_name": { + "description": "The username to use when authenticating.

The username must be set when using a password-based authentication method. Empty strings are allowed for usernames.", + "type": "string" + }, + "source_info": { + "description": "Information about the source published library. This {@term field} will be set for a subscribed library which is associated with a subscription of the published library.", + "$ref": "#/definitions/ContentLibrarySourceInfo" + } + } + }, + "ContentLibrarySubscriptionInfoAuthenticationMethod": { + "type": "string", + "description": "Indicate how the subscribed library should authenticate with the published library endpoint.", + "enum": [ + "BASIC", + "NONE" + ] + }, + "ContentLibrarySubscriptionsCreate": { + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpec", + "description": "Specification for the subscription." + }, + "ContentLibrarySubscriptionsCreateSpec": { + "type": "object", + "properties": { + "subscribed_library": { + "description": "Specification for the subscribed library to be associated with the subscription.", + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpecSubscribedLibrary" + } + }, + "required": [ + "subscribed_library" + ] + }, + "ContentLibrarySubscriptionsCreateSpecNewSubscribedLibrary": { + "type": "object", + "properties": { + "name": { + "description": "Name of the subscribed library.", + "type": "string" + }, + "description": { + "description": "Description of the subscribed library.", + "type": "string" + }, + "storage_backings": { + "description": "The list of default storage backings for this library.

The list must contain exactly one storage backing. Multiple default storage locations are not currently supported but may become supported in future releases.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentLibraryStorageBacking" + } + }, + "automatic_sync_enabled": { + "description": "Specifies whether the library should participate in automatic library synchronization.", + "type": "boolean" + }, + "on_demand": { + "description": "Specifies whether a library item's content will be synchronized only on demand.", + "type": "boolean" + } + }, + "required": [ + "name", + "storage_backings", + "automatic_sync_enabled", + "on_demand" + ] + }, + "ContentLibrarySubscriptionsCreateSpecPlacement": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}. If {@name #cluster} and {@name #host} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "ContentLibrarySubscriptionsCreateSpecSubscribedLibrary": { + "type": "object", + "properties": { + "target": { + "description": "Specifies whether the target subscribed library should be newly created or an existing subscribed library should be used.", + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpecSubscribedLibraryTarget" + }, + "new_subscribed_library": { + "description": "Specification for creating a new subscribed library associated with the subscription.", + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpecNewSubscribedLibrary" + }, + "subscribed_library": { + "description": "Identifier of the existing subscribed library to associate with the subscription. Only the subscribed libraries for which {@link SubscriptionInfo#subscriptionUrl} property is set to the {@link PublishInfo#publishUrl} of the published library can be associated with the subscription.", + "type": "string" + }, + "location": { + "description": "Location of the subscribed library relative to the published library.", + "$ref": "#/definitions/ContentLibrarySubscriptionsLocation" + }, + "vcenter": { + "description": "Specification for the subscribed library's vCenter Server instance.", + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpecVcenter" + }, + "placement": { + "description": "Placement specification for the virtual machine template library items on the subscribed library.", + "$ref": "#/definitions/ContentLibrarySubscriptionsCreateSpecPlacement" + } + }, + "required": [ + "target", + "location" + ] + }, + "ContentLibrarySubscriptionsCreateSpecSubscribedLibraryTarget": { + "type": "string", + "description": "The {@name Target} {@term enumerated type} defines the options related to the target subscribed library which will be associated with the subscription.", + "enum": [ + "CREATE_NEW", + "USE_EXISTING" + ] + }, + "ContentLibrarySubscriptionsCreateSpecVcenter": { + "type": "object", + "properties": { + "hostname": { + "description": "The hostname of the subscribed library's vCenter Server.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + } + }, + "required": [ + "hostname" + ] + }, + "ContentLibrarySubscriptionsInfo": { + "type": "object", + "properties": { + "subscribed_library": { + "description": "Identifier of the subscribed library associated with the subscription.", + "type": "string" + }, + "subscribed_library_name": { + "description": "Name of the subscribed library associated with the subscription.", + "type": "string" + }, + "subscribed_library_location": { + "description": "Location of the subscribed library relative to the published library.", + "$ref": "#/definitions/ContentLibrarySubscriptionsLocation" + }, + "subscribed_library_vcenter": { + "description": "Information about the vCenter Server instance where the subscribed library exists.", + "$ref": "#/definitions/ContentLibrarySubscriptionsVcenterInfo" + }, + "subscribed_library_placement": { + "description": "Placement information about the subscribed library's virtual machine template items.", + "$ref": "#/definitions/ContentLibrarySubscriptionsPlacementInfo" + } + }, + "required": [ + "subscribed_library", + "subscribed_library_name", + "subscribed_library_location", + "subscribed_library_placement" + ] + }, + "ContentLibrarySubscriptionsLocation": { + "type": "string", + "description": "The {@name Location} {@term enumerated type} defines the location of subscribed library relative to the published library.", + "enum": [ + "LOCAL", + "REMOTE" + ] + }, + "ContentLibrarySubscriptionsPlacementInfo": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "ContentLibrarySubscriptionsSummary": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription.", + "type": "string" + }, + "subscribed_library": { + "description": "Identifier of the subscribed library.", + "type": "string" + }, + "subscribed_library_name": { + "description": "Name of the subscribed library.", + "type": "string" + }, + "subscribed_library_vcenter_hostname": { + "description": "Hostname of the vCenter instance where the subscribed library exists.", + "type": "string" + } + }, + "required": [ + "subscription", + "subscribed_library", + "subscribed_library_name" + ] + }, + "ContentLibrarySubscriptionsUpdate": { + "$ref": "#/definitions/ContentLibrarySubscriptionsUpdateSpec", + "description": "Specification of the new property values to set on the subscription." + }, + "ContentLibrarySubscriptionsUpdateSpec": { + "type": "object", + "properties": { + "subscribed_library_vcenter": { + "description": "Specification for the subscribed library's vCenter Server instance.", + "$ref": "#/definitions/ContentLibrarySubscriptionsUpdateSpecVcenter" + }, + "subscribed_library_placement": { + "description": "Placement specification for the virtual machine template items of the subscribed library. Updating this information will only affect new or updated items, existing items will not be moved. The entire placement configuration of the subscribed library will replaced by the new specification.", + "$ref": "#/definitions/ContentLibrarySubscriptionsUpdateSpecPlacement" + } + } + }, + "ContentLibrarySubscriptionsUpdateSpecPlacement": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}. If {@name #cluster} and {@name #host} are both specified, {@name #host} must be a member of {@name #cluster}. If {@name #resourcePool} or {@name #host} is specified, it is recommended that this {@term field} be {@term unset}.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "ContentLibrarySubscriptionsUpdateSpecVcenter": { + "type": "object", + "properties": { + "hostname": { + "description": "The hostname of the subscribed library's vCenter Server.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + } + } + }, + "ContentLibrarySubscriptionsVcenterInfo": { + "type": "object", + "properties": { + "hostname": { + "description": "Hostname of the vCenter Server instance where the subscribed library exists.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + }, + "server_guid": { + "description": "The unique identifier of the vCenter Server where the subscribed library exists.", + "type": "string" + } + }, + "required": [ + "hostname", + "server_guid" + ] + }, + "ContentLibraryUpdate": { + "$ref": "#/definitions/ContentLibraryModel", + "description": "Specification of the new property values to set on the library." + }, + "ContentLocalLibraryCreate": { + "$ref": "#/definitions/ContentLibraryModel", + "description": "Specification for the new local library." + }, + "ContentLocalLibraryDestinationSpec": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + }, + "required": [ + "subscription" + ] + }, + "ContentLocalLibraryPublish": { + "type": "object", + "properties": { + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentLocalLibraryDestinationSpec" + }, + "description": "The list of subscriptions to publish this library to." + } + } + }, + "ContentLocalLibraryUpdate": { + "$ref": "#/definitions/ContentLibraryModel", + "description": "Specification of the new property values to set on the local library." + }, + "ContentSecurityPoliciesInfo": { + "type": "object", + "properties": { + "policy": { + "description": "Identifier of the security policy", + "type": "string" + }, + "name": { + "description": "Name of the security policy", + "type": "string" + }, + "item_type_rules": { + "description": "Map of content library item type and rule types The rules can be associated with a security policy. When the security policy is applied to a content library, these rules will be used to validate specific item type.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ContentSecurityRuleType" + } + } + }, + "required": [ + "policy", + "name", + "item_type_rules" + ] + }, + "ContentSecurityRuleType": { + "type": "string", + "description": "The {@name SecurityRuleType} {@term enumerated type} defines the security rules which can be applied to different item types.", + "enum": [ + "OVF_STRICT_VERIFICATION" + ] + }, + "ContentSubscribedLibraryCreate": { + "$ref": "#/definitions/ContentLibraryModel", + "description": "Specification for the new subscribed library." + }, + "ContentSubscribedLibraryProbe": { + "type": "object", + "properties": { + "subscription_info": { + "$ref": "#/definitions/ContentLibrarySubscriptionInfo", + "description": "The subscription info to be probed." + } + }, + "required": [ + "subscription_info" + ] + }, + "ContentSubscribedLibraryProbeResult": { + "type": "object", + "properties": { + "status": { + "description": "The status of probe result. This will be one of {@enum.values Status}.", + "$ref": "#/definitions/ContentSubscribedLibraryProbeResultStatus" + }, + "ssl_thumbprint": { + "description": "The SSL thumbprint for the remote endpoint.", + "type": "string" + }, + "error_messages": { + "description": "If the probe result is in an error status, this {@term field} will contain the detailed error messages.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + } + }, + "required": [ + "status", + "error_messages" + ] + }, + "ContentSubscribedLibraryProbeResultStatus": { + "type": "string", + "description": "The {@name Status} {@term enumerated type} defines the error status constants for the probe result.", + "enum": [ + "SUCCESS", + "INVALID_URL", + "TIMED_OUT", + "HOST_NOT_FOUND", + "RESOURCE_NOT_FOUND", + "INVALID_CREDENTIALS", + "CERTIFICATE_ERROR", + "UNKNOWN_ERROR" + ] + }, + "ContentSubscribedLibraryUpdate": { + "$ref": "#/definitions/ContentLibraryModel", + "description": "Specification of the new property values to set on the subscribed library." + }, + "ContentTrustedCertificatesCreate": { + "$ref": "#/definitions/ContentTrustedCertificatesCreateSpec", + "description": "Specification for the certificate to be added to content library trust store." + }, + "ContentTrustedCertificatesCreateSpec": { + "type": "object", + "properties": { + "cert_text": { + "description": "A certText is the certificate in Base64 encoded PEM format. The input must be a single line string with escape sequence for new-lines.", + "type": "string" + } + }, + "required": [ + "cert_text" + ] + }, + "ContentTrustedCertificatesInfo": { + "type": "object", + "properties": { + "cert_text": { + "description": "A certificate in Base64 encoding", + "type": "string" + } + }, + "required": [ + "cert_text" + ] + }, + "ContentTrustedCertificatesListResult": { + "type": "object", + "properties": { + "certificates": { + "description": "List of certificates.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentTrustedCertificatesSummary" + } + } + }, + "required": [ + "certificates" + ] + }, + "ContentTrustedCertificatesSummary": { + "type": "object", + "properties": { + "certificate": { + "description": "Unique identifier for the certificate. It is the TrustStore alias of the certificate. The alias is the SHA256 hash of the raw certificate data.", + "type": "string" + }, + "cert_text": { + "description": "Certificate in Base64 encoded PEM format..", + "type": "string" + } + }, + "required": [ + "certificate", + "cert_text" + ] + }, + "ContentTypeInfo": { + "type": "object", + "properties": { + "description": { + "description": "A description of the type support offered by the plugin.", + "type": "string" + }, + "name": { + "description": "The name of the plugin which provides the type support.", + "type": "string" + }, + "type": { + "description": "The type which the plugin supports.

To upload a library item of the type supported by the plugin, the {@link ItemModel#type} {@term field} of the item should be set to this value.", + "type": "string" + }, + "vendor": { + "description": "The name of the vendor who created the type support plugin.", + "type": "string" + }, + "version": { + "description": "The version number of the type support plugin.", + "type": "string" + }, + "supported_rules": { + "description": "List of security rules which can be applied to this item type.", + "type": "array", + "items": { + "$ref": "#/definitions/ContentSecurityRuleType" + } + } + }, + "required": [ + "description", + "name", + "type", + "vendor", + "version" + ] + }, + "VapiStdErrorsAlreadyExists": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsConcurrentChange": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsError": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsErrorType": { + "type": "string", + "description": "Enumeration of all standard errors. Used as discriminator in protocols that have no standard means for transporting the error type, e.g. REST.", + "enum": [ + "ERROR", + "ALREADY_EXISTS", + "ALREADY_IN_DESIRED_STATE", + "CANCELED", + "CONCURRENT_CHANGE", + "FEATURE_IN_USE", + "INTERNAL_SERVER_ERROR", + "INVALID_ARGUMENT", + "INVALID_ELEMENT_CONFIGURATION", + "INVALID_ELEMENT_TYPE", + "INVALID_REQUEST", + "NOT_ALLOWED_IN_CURRENT_STATE", + "NOT_FOUND", + "OPERATION_NOT_FOUND", + "RESOURCE_BUSY", + "RESOURCE_IN_USE", + "RESOURCE_INACCESSIBLE", + "SERVICE_UNAVAILABLE", + "TIMED_OUT", + "UNABLE_TO_ALLOCATE_RESOURCE", + "UNAUTHENTICATED", + "UNAUTHORIZED", + "UNEXPECTED_INPUT", + "UNSUPPORTED", + "UNVERIFIED_PEER" + ] + }, + "VapiStdErrorsInvalidArgument": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsInvalidElementConfiguration": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsInvalidElementType": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsNotAllowedInCurrentState": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsNotFound": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsResourceBusy": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsResourceInaccessible": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsUnauthenticated": { + "type": "object", + "properties": { + "challenge": { + "description": "Indicates the authentication challenges applicable to the target API provider. It can be used by a client to discover the correct authentication scheme to use. The exact syntax of the value is defined by the specific provider, the protocol and authentication schemes used.

For example, a provider using REST may adhere to the WWW-Authenticate HTTP header specification, RFC7235, section 4.1. In this case an example challenge value may be: SIGN realm=\"27da1358-2ba4-11e9-b210-d663bd873d93\",sts=\"http://vcenter/sso?vsphere.local\", Basic realm=\"vCenter\"", + "type": "string" + }, + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsUnauthorized": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdErrorsUnsupported": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/VapiStdLocalizableMessage" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/VapiStdErrorsErrorType" + } + }, + "required": [ + "messages" + ] + }, + "VapiStdLocalizableMessage": { + "type": "object", + "properties": { + "id": { + "description": "Unique identifier of the localizable string or message template.

This identifier is typically used to retrieve a locale-specific string or message template from a message catalog.", + "type": "string" + }, + "default_message": { + "description": "The value of this localizable string or message template in the {@code en_US} (English) locale. If {@link #id} refers to a message template, the default message will contain the substituted arguments. This value can be used by clients that do not need to display strings and messages in the native language of the user. It could also be used as a fallback if a client is unable to access the appropriate message catalog.", + "type": "string" + }, + "args": { + "description": "Positional arguments to be substituted into the message template. This list will be empty if the message uses named arguments or has no arguments.", + "type": "array", + "items": { + "type": "string" + } + }, + "params": { + "description": "Named arguments to be substituted into the message template.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/VapiStdLocalizationParam" + } + }, + "localized": { + "description": "Localized string value as per request requirements.", + "type": "string" + } + }, + "required": [ + "id", + "default_message", + "args" + ] + }, + "VapiStdLocalizationParam": { + "type": "object", + "properties": { + "s": { + "description": "{@term String} value associated with the parameter.", + "type": "string" + }, + "dt": { + "description": "Date and time value associated with the parameter. Use the {@name #format} {@term field} to specify date and time display style.", + "type": "string", + "format": "date-time" + }, + "i": { + "description": "{@term long} value associated with the parameter.", + "type": "integer", + "format": "int64" + }, + "d": { + "description": "The {@term double} value associated with the parameter. The number of displayed fractional digits is changed via {@name #precision} {@term field}.", + "type": "number", + "format": "double" + }, + "l": { + "description": "Nested localizable value associated with the parameter. This is useful construct to convert to human readable localized form {@term enumerated type} and {@term boolean} values. It can also be used for proper handling of pluralization and gender forms in localization. Recursive {@name NestedLocalizableMessage} instances can be used for localizing short lists of items.", + "$ref": "#/definitions/VapiStdNestedLocalizableMessage" + }, + "format": { + "description": "Format associated with the date and time value in {@name #dt} {@term field}. The {@term enumeration value} {@code SHORT_DATETIME} will be used as default.", + "$ref": "#/definitions/VapiStdLocalizationParamDateTimeFormat" + }, + "precision": { + "description": "Number of fractional digits to include in formatted {@term double} value.", + "type": "integer", + "format": "int64" + } + } + }, + "VapiStdLocalizationParamDateTimeFormat": { + "type": "string", + "description": "The {@name DateTimeFormat} {@term enumerated type} lists possible date and time formatting options. It combines the Unicode CLDR format types - full, long, medium and short with 3 different presentations - date only, time only and combined date and time presentation.", + "enum": [ + "SHORT_DATE", + "MED_DATE", + "LONG_DATE", + "FULL_DATE", + "SHORT_TIME", + "MED_TIME", + "LONG_TIME", + "FULL_TIME", + "SHORT_DATE_TIME", + "MED_DATE_TIME", + "LONG_DATE_TIME", + "FULL_DATE_TIME" + ] + }, + "VapiStdNestedLocalizableMessage": { + "type": "object", + "properties": { + "id": { + "description": "Unique identifier of the localizable string or message template.

This identifier is typically used to retrieve a locale-specific string or message template from a message catalog.", + "type": "string" + }, + "params": { + "description": "Named Arguments to be substituted into the message template.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/VapiStdLocalizationParam" + } + } + }, + "required": [ + "id" + ] + }, + "content.configuration_model": { + "type": "object", + "properties": { + "automatic_sync_enabled": { + "description": "Whether automatic synchronization is enabled.

When automatic synchronization is enabled, the Content Library Service will automatically synchronize all subscribed libraries on a daily basis. Subscribed libraries with the {@link SubscriptionInfo#automaticSyncEnabled} flag turned on will be synchronized every hour between {@link #automaticSyncStartHour} and {@link #automaticSyncStopHour}.", + "type": "boolean" + }, + "automatic_sync_start_hour": { + "description": "The hour at which the automatic synchronization will start. This value is between 0 (midnight) and 23 inclusive.", + "type": "integer", + "format": "int64" + }, + "automatic_sync_stop_hour": { + "description": "The hour at which the automatic synchronization will stop. Any active synchronization operation will continue to run, however no new synchronization operations will be triggered after the stop hour. This value is between 0 (midnight) and 23 inclusive.", + "type": "integer", + "format": "int64" + }, + "maximum_concurrent_item_syncs": { + "description": "The maximum allowed number of library items to synchronize concurrently from remote libraries. This must be a positive number. The service may not be able to guarantee the requested concurrency if there is no available capacity.

This setting is global across all subscribed libraries.", + "type": "integer", + "format": "int64" + } + } + }, + "content.configuration_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.configuration_model" + } + }, + "required": [ + "value" + ] + }, + "content.configuration_update": { + "type": "object", + "properties": { + "model": { + "$ref": "#/definitions/content.configuration_model", + "description": "The {@link ConfigurationModel} specifying the settings to update." + } + }, + "required": [ + "model" + ] + }, + "content.library.find_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.find_spec": { + "type": "object", + "properties": { + "name": { + "description": "Name of the library to search. The name is case-insensitive. See {@link LibraryModel#name}.", + "type": "string" + }, + "type": { + "description": "Library type to search. See {@link LibraryModel#type}.", + "$ref": "#/definitions/content.library_model.library_type" + } + } + }, + "content.library.item.cert_verification_status": { + "type": "string", + "description": "The {@name CertVerificationStatus} {@term enumerated type} defines the certificate verification status of a library item. Currently applicable only to ovf item type", + "enum": [ + "NOT_AVAILABLE", + "VERIFIED", + "INTERNAL", + "VERIFICATION_FAILURE", + "VERIFICATION_IN_PROGRESS", + "UNTRUSTED" + ] + }, + "content.library.item.certificate_verification_info": { + "type": "object", + "properties": { + "status": { + "description": "The certificate verification status of item.", + "$ref": "#/definitions/content.library.item.cert_verification_status" + }, + "cert_chain": { + "description": "A certificate in base64 encoding.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "status" + ] + }, + "content.library.item.changes.info": { + "type": "object", + "properties": { + "time": { + "description": "The date and time when the item content was changed.", + "type": "string", + "format": "date-time" + }, + "user": { + "description": "The user who made the content change.", + "type": "string" + }, + "message": { + "description": "The full message describing the content change.", + "type": "string" + } + }, + "required": [ + "time" + ] + }, + "content.library.item.changes.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.changes.summary" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.changes.summary": { + "type": "object", + "properties": { + "version": { + "description": "The version of the library item.", + "type": "string" + }, + "time": { + "description": "The date and time when the item content was changed.", + "type": "string", + "format": "date-time" + }, + "user": { + "description": "The user who made the content change.", + "type": "string" + }, + "short_message": { + "description": "The short message describing the content change. The message is truncated to the first 80 characters or first non-leading newline character, whichever length is shorter.", + "type": "string" + } + }, + "required": [ + "version", + "time" + ] + }, + "content.library.item.changes_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.changes.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.copy_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.destination_spec": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + }, + "required": [ + "subscription" + ] + }, + "content.library.item.download_session.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.download_session.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.download_session_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "A unique token generated by the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "create_spec": { + "$ref": "#/definitions/content.library.item.download_session_model", + "description": "Specification for the new download session to be created." + } + }, + "required": [ + "create_spec" + ] + }, + "content.library.item.download_session_fail": { + "type": "object", + "properties": { + "client_error_message": { + "type": "string", + "description": "Client side error message. This can be useful in providing some extra details about the client side failure. Note that the message won't be translated to the user's locale." + } + }, + "required": [ + "client_error_message" + ] + }, + "content.library.item.download_session_keep_alive": { + "type": "object", + "properties": { + "progress": { + "type": "integer", + "format": "int64", + "description": "Optional update to the progress property of the session. If specified, the new progress should be greater then the current progress. See {@link DownloadSessionModel#clientProgress}." + } + } + }, + "content.library.item.download_session_model": { + "type": "object", + "properties": { + "id": { + "description": "The identifier of this download session.", + "type": "string" + }, + "library_item_id": { + "description": "The identifier of the library item whose content is being downloaded.", + "type": "string" + }, + "library_item_content_version": { + "description": "The content version of the library item whose content is being downloaded. This value is the {@link ItemModel#contentVersion} at the time when the session is created for the library item.", + "type": "string" + }, + "error_message": { + "description": "If the session is in the {@link State#ERROR} status this property will have more details about the error.", + "$ref": "#/definitions/vapi.std.localizable_message" + }, + "client_progress": { + "description": "The progress that has been made with the download. This property is to be updated by the client during the download process to indicate the progress of its work in completing the download. The initial progress is 0 until updated by the client. The maximum value is 100, which indicates that the download is complete.", + "type": "integer", + "format": "int64" + }, + "state": { + "description": "The current state ({@enum.values State}) of the download session.", + "$ref": "#/definitions/content.library.item.download_session_model.state" + }, + "expiration_time": { + "description": "Indicates the time after which the session will expire. The session is guaranteed not to expire before this time.", + "type": "string", + "format": "date-time" + } + } + }, + "content.library.item.download_session_model.state": { + "type": "string", + "description": "The state of the download session.", + "enum": [ + "ACTIVE", + "CANCELED", + "ERROR" + ] + }, + "content.library.item.download_session_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.download_session_model" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.downloadsession.file.endpoint_type": { + "type": "string", + "description": "The {@name EndpointType} {@term enumerated type} defines the types of endpoints used to download the file.", + "enum": [ + "HTTPS", + "DIRECT" + ] + }, + "content.library.item.downloadsession.file.info": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes.", + "type": "integer", + "format": "int64" + }, + "bytes_transferred": { + "description": "The number of bytes that have been transferred by the server so far for making this file prepared for download. This value may stay at zero till the client starts downloading the file.", + "type": "integer", + "format": "int64" + }, + "status": { + "description": "The preparation status ({@enum.values PrepareStatus}) of the file.", + "$ref": "#/definitions/content.library.item.downloadsession.file.prepare_status" + }, + "download_endpoint": { + "description": "Endpoint at which the file is available for download. The value is valid only when the {@link #status} is {@link File.PrepareStatus#PREPARED}.", + "$ref": "#/definitions/content.library.item.transfer_endpoint" + }, + "checksum_info": { + "description": "The checksum information of the file. When the download is complete, you can retrieve the checksum from the {@link File#get} {@term operation} to verify the checksum for the downloaded file.", + "$ref": "#/definitions/content.library.item.file.checksum_info" + }, + "error_message": { + "description": "Error message for a failed preparation when the prepare status is {@link File.PrepareStatus#ERROR}.", + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "required": [ + "name", + "bytes_transferred", + "status" + ] + }, + "content.library.item.downloadsession.file.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.downloadsession.file.info" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.downloadsession.file.prepare_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.downloadsession.file.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.downloadsession.file.prepare_status": { + "type": "string", + "description": "The {@name PrepareStatus} {@term enumerated type} defines the state of the file in preparation for download.", + "enum": [ + "UNPREPARED", + "PREPARE_REQUESTED", + "PREPARING", + "PREPARED", + "ERROR" + ] + }, + "content.library.item.downloadsession.file_get": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file requested." + } + }, + "required": [ + "file_name" + ] + }, + "content.library.item.downloadsession.file_prepare": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file requested for download." + }, + "endpoint_type": { + "$ref": "#/definitions/content.library.item.downloadsession.file.endpoint_type", + "description": "Endpoint type request, one of {@enum.values EndpointType}. This will determine the type of the {@link File.Info#downloadEndpoint} that is generated when the file is prepared. The {@link EndpointType#DIRECT} is only available to users who have the ContentLibrary.ReadStorage privilege." + } + }, + "required": [ + "file_name" + ] + }, + "content.library.item.downloadsession.file_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.downloadsession.file.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.file.checksum_algorithm": { + "type": "string", + "description": "The {@name ChecksumAlgorithm} {@term enumerated type} defines the valid checksum algorithms.", + "enum": [ + "SHA1", + "MD5", + "SHA256", + "SHA512" + ] + }, + "content.library.item.file.checksum_info": { + "type": "object", + "properties": { + "algorithm": { + "description": "The checksum algorithm ({@enum.values ChecksumAlgorithm}) used to calculate the checksum.", + "$ref": "#/definitions/content.library.item.file.checksum_algorithm" + }, + "checksum": { + "description": "The checksum value calculated with {@link #algorithm}.", + "type": "string" + } + }, + "required": [ + "checksum" + ] + }, + "content.library.item.file.info": { + "type": "object", + "properties": { + "checksum_info": { + "description": "A checksum for validating the content of the file.

This value can be used to verify that a transfer was completed without errors.", + "$ref": "#/definitions/content.library.item.file.checksum_info" + }, + "name": { + "description": "The name of the file.

This value will be unique within the library item for each file. It cannot be an empty string.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes. The file size is the storage used and not the uploaded or provisioned size. For example, when uploading a disk to a datastore, the amount of storage that the disk consumes may be different from the disk file size. When the file is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "cached": { + "description": "Indicates whether the file is on disk or not.", + "type": "boolean" + }, + "version": { + "description": "The version of this file; incremented when a new copy of the file is uploaded.", + "type": "string" + } + }, + "required": [ + "name", + "size", + "cached", + "version" + ] + }, + "content.library.item.file.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.file.info" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.file_get": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the file in the library item whose information should be returned." + } + }, + "required": [ + "name" + ] + }, + "content.library.item.file_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.file.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.find_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.find_spec": { + "type": "object", + "properties": { + "name": { + "description": "The name of the library item. The name is case-insensitive. See {@link ItemModel#name}.", + "type": "string" + }, + "library_id": { + "description": "The identifier of the library containing the item. See {@link ItemModel#libraryId}.", + "type": "string" + }, + "source_id": { + "description": "The identifier of the library item as reported by the publisher. See {@link ItemModel#sourceId}.", + "type": "string" + }, + "type": { + "description": "The type of the library item. The type is case-insensitive. See {@link ItemModel#type}.", + "type": "string" + }, + "cached": { + "description": "Whether the item is cached. Possible values are 'true' or 'false'. See {@link ItemModel#cached}.", + "type": "boolean" + } + } + }, + "content.library.item.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.storage.info": { + "type": "object", + "properties": { + "storage_backing": { + "description": "The storage backing on which this object resides. This might not be the same as the default storage backing associated with the library.", + "$ref": "#/definitions/content.library.storage_backing" + }, + "storage_uris": { + "description": "URIs that identify the file on the storage backing.

These URIs may be specific to the backing and may need interpretation by the client. A client that understands a URI scheme in this list may use that URI to directly access the file on the storage backing. This can provide high-performance support for file manipulation.", + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "checksum_info": { + "description": "A checksum for validating the content of the file.

This value can be used to verify that a transfer was completed without errors.", + "$ref": "#/definitions/content.library.item.file.checksum_info" + }, + "name": { + "description": "The name of the file.

This value will be unique within the library item for each file. It cannot be an empty string.", + "type": "string" + }, + "size": { + "description": "The file size, in bytes. The file size is the storage used and not the uploaded or provisioned size. For example, when uploading a disk to a datastore, the amount of storage that the disk consumes may be different from the disk file size. When the file is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "cached": { + "description": "Indicates whether the file is on disk or not.", + "type": "boolean" + }, + "version": { + "description": "The version of this file; incremented when a new copy of the file is uploaded.", + "type": "string" + } + }, + "required": [ + "storage_backing", + "storage_uris", + "name", + "size", + "cached", + "version" + ] + }, + "content.library.item.storage.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.storage.info" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.storage_get": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file for which the storage information should be listed." + } + }, + "required": [ + "file_name" + ] + }, + "content.library.item.storage_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.storage.info" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.transfer_endpoint": { + "type": "object", + "properties": { + "uri": { + "description": "Transfer endpoint URI. The supported URI schemes are: {@code http}, {@code https}, and {@code ds}.

An endpoint URI with the {@code ds} scheme specifies the location of the file on the datastore. The format of the datastore URI is:

  • ds:///vmfs/volumes/uuid/path

When the transfer endpoint is a datastore location, the server can import the file directly from the storage backing without the overhead of streaming over HTTP.", + "type": "string", + "format": "uri" + }, + "ssl_certificate_thumbprint": { + "description": "Thumbprint of the expected SSL certificate for this endpoint. Only used for HTTPS connections. The thumbprint is the SHA-1 hash of the DER encoding of the remote endpoint's SSL certificate. If set, the remote endpoint's SSL certificate is only accepted if it matches this thumbprint, and no other certificate validation is performed.", + "type": "string" + } + }, + "required": [ + "uri" + ] + }, + "content.library.item.transfer_status": { + "type": "string", + "description": "The {@name TransferStatus} {@term enumerated type} defines the transfer state of a file.", + "enum": [ + "WAITING_FOR_TRANSFER", + "TRANSFERRING", + "READY", + "VALIDATING", + "ERROR" + ] + }, + "content.library.item.update_session.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.update_session.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.update_session_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "Unique token generated by the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "create_spec": { + "$ref": "#/definitions/content.library.item.update_session_model", + "description": "Specification for the new update session to be created." + } + }, + "required": [ + "create_spec" + ] + }, + "content.library.item.update_session_fail": { + "type": "object", + "properties": { + "client_error_message": { + "type": "string", + "description": "Client side error message. This can be useful in providing some extra details about the client side failure. Note that the message won't be translated to the user's locale." + } + }, + "required": [ + "client_error_message" + ] + }, + "content.library.item.update_session_keep_alive": { + "type": "object", + "properties": { + "client_progress": { + "type": "integer", + "format": "int64", + "description": "Optional update to the progress property of the session. If specified, the new progress should be greater then the current progress. See {@link UpdateSessionModel#clientProgress}." + } + } + }, + "content.library.item.update_session_model": { + "type": "object", + "properties": { + "id": { + "description": "The identifier of this update session.", + "type": "string" + }, + "library_item_id": { + "description": "The identifier of the library item to which content will be uploaded or removed.", + "type": "string" + }, + "library_item_content_version": { + "description": "The content version of the library item whose content is being modified. This value is the {@link ItemModel#contentVersion} at the time when the session is created for the library item.", + "type": "string" + }, + "error_message": { + "description": "If the session is in the {@link State#ERROR} status this property will have more details about the error.", + "$ref": "#/definitions/vapi.std.localizable_message" + }, + "client_progress": { + "description": "The progress that has been made with the upload. This property is to be updated by the client during the upload process to indicate the progress of its work in completing the upload. The initial progress is 0 until updated by the client. The maximum value is 100, which indicates that the update is complete.", + "type": "integer", + "format": "int64" + }, + "state": { + "description": "The current state ({@enum.values State}) of the update session.", + "$ref": "#/definitions/content.library.item.update_session_model.state" + }, + "expiration_time": { + "description": "Indicates the time after which the session will expire. The session is guaranteed not to expire earlier than this time.", + "type": "string", + "format": "date-time" + }, + "preview_info": { + "description": "A preview of the files currently being uploaded in the session. This property will be set only when the session is in the {@link State#ACTIVE}.", + "$ref": "#/definitions/content.library.item.updatesession.preview_info" + }, + "warning_behavior": { + "description": "Indicates the update session behavior if warnings are raised in the session preview. Any warning which is raised by session preview but not ignored by the client will, by default, fail the update session.", + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.updatesession.warning_behavior" + } + } + } + }, + "content.library.item.update_session_model.state": { + "type": "string", + "description": "The state of an update session.", + "enum": [ + "ACTIVE", + "DONE", + "ERROR", + "CANCELED" + ] + }, + "content.library.item.update_session_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.update_session_model" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.update_session_update": { + "type": "object", + "properties": { + "update_spec": { + "$ref": "#/definitions/content.library.item.update_session_model", + "description": "Specification for the new property values to be set on the update session." + } + }, + "required": [ + "update_spec" + ] + }, + "content.library.item.updatesession.certificate_info": { + "type": "object", + "properties": { + "issuer": { + "description": "Certificate issuer. For example: /C=US/ST=California/L=Palo Alto/O=VMware, Inc.", + "type": "string" + }, + "subject": { + "description": "Certificate subject. For example: C=US/ST=Massachusetts/L=Hopkinton/O=EMC Corporation/OU=EMC Avamar/CN=EMC Corporation.", + "type": "string" + }, + "self_signed": { + "description": "Whether the certificate is self-signed.", + "type": "boolean" + }, + "x509": { + "description": "The X509 representation of the certificate.", + "type": "string" + } + }, + "required": [ + "issuer", + "subject", + "self_signed", + "x509" + ] + }, + "content.library.item.updatesession.file.add_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.updatesession.file.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.updatesession.file.add_spec": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file being uploaded.", + "type": "string" + }, + "source_type": { + "description": "The source type ({@enum.values SourceType}) from which the file content will be retrieved.", + "$ref": "#/definitions/content.library.item.updatesession.file.source_type" + }, + "source_endpoint": { + "description": "Location from which the Content Library Service will fetch the file, rather than requiring a client to upload the file.", + "$ref": "#/definitions/content.library.item.transfer_endpoint" + }, + "size": { + "description": "The file size, in bytes.", + "type": "integer", + "format": "int64" + }, + "checksum_info": { + "description": "The checksum of the file. If specified, the server will verify the checksum once the file is received. If there is a mismatch, the upload will fail. For ova files, this value should not be set.", + "$ref": "#/definitions/content.library.item.file.checksum_info" + } + }, + "required": [ + "name", + "source_type" + ] + }, + "content.library.item.updatesession.file.info": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "source_type": { + "description": "The source type ({@enum.values SourceType}) from which the file is being retrieved. This may be {@link SourceType#NONE} if the file is not being changed.", + "$ref": "#/definitions/content.library.item.updatesession.file.source_type" + }, + "size": { + "description": "The file size, in bytes as received by the server. This {@term field} is guaranteed to be set when the server has completely received the file.", + "type": "integer", + "format": "int64" + }, + "checksum_info": { + "description": "The checksum information of the file received by the server.", + "$ref": "#/definitions/content.library.item.file.checksum_info" + }, + "source_endpoint": { + "description": "A source endpoint from which to retrieve the file.", + "$ref": "#/definitions/content.library.item.transfer_endpoint" + }, + "upload_endpoint": { + "description": "An upload endpoint to which the client can push the content.", + "$ref": "#/definitions/content.library.item.transfer_endpoint" + }, + "bytes_transferred": { + "description": "The number of bytes of this file that have been received by the server.", + "type": "integer", + "format": "int64" + }, + "status": { + "description": "The transfer status ({@enum.values TransferStatus}) of this file.", + "$ref": "#/definitions/content.library.item.transfer_status" + }, + "error_message": { + "description": "Details about the transfer error.", + "$ref": "#/definitions/vapi.std.localizable_message" + }, + "keep_in_storage": { + "description": "Whether or not the file will be kept in storage upon update session completion. The flag is true for most files, and false for metadata files such as manifest and certificate file of update session with library item type OVF. Any file with {@link Info#keepInStorage} set to false will not show up in the list of files returned from {@link content.library.item.File#list} upon update session completion.", + "type": "boolean" + } + }, + "required": [ + "name", + "source_type", + "bytes_transferred", + "status" + ] + }, + "content.library.item.updatesession.file.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.updatesession.file.info" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.item.updatesession.file.source_type": { + "type": "string", + "description": "The {@name SourceType} {@term enumerated type} defines how the file content is retrieved.", + "enum": [ + "NONE", + "PUSH", + "PULL" + ] + }, + "content.library.item.updatesession.file.validate_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.updatesession.file.validation_result" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.updatesession.file.validation_error": { + "type": "object", + "properties": { + "name": { + "description": "The name of the file.", + "type": "string" + }, + "error_message": { + "description": "A message indicating why the file was considered invalid.", + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "required": [ + "name", + "error_message" + ] + }, + "content.library.item.updatesession.file.validation_result": { + "type": "object", + "properties": { + "has_errors": { + "description": "Whether the validation was succesful or not. In case of errors, the {@link #missingFiles} and {@link #invalidFiles} will contain at least one entry.", + "type": "boolean" + }, + "missing_files": { + "description": "A {@term set} containing the names of the files that are required but the client hasn't added.", + "type": "array", + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "invalid_files": { + "description": "A {@term list} containing the files that have been identified as invalid and details about the error.", + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.updatesession.file.validation_error" + } + } + }, + "required": [ + "has_errors", + "missing_files", + "invalid_files" + ] + }, + "content.library.item.updatesession.file_add": { + "type": "object", + "properties": { + "file_spec": { + "$ref": "#/definitions/content.library.item.updatesession.file.add_spec", + "description": "Specification for the file that needs to be added or updated. This includes whether the client wants to push the content or have the server pull it." + } + }, + "required": [ + "file_spec" + ] + }, + "content.library.item.updatesession.file_get": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file." + } + }, + "required": [ + "file_name" + ] + }, + "content.library.item.updatesession.file_remove": { + "type": "object", + "properties": { + "file_name": { + "type": "string", + "description": "Name of the file to be removed." + } + }, + "required": [ + "file_name" + ] + }, + "content.library.item.updatesession.file_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item.updatesession.file.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.item.updatesession.preview_info": { + "type": "object", + "properties": { + "state": { + "description": "Indicates the state of the preview of the update session.", + "$ref": "#/definitions/content.library.item.updatesession.preview_info.state" + }, + "certificate_info": { + "description": "The certificate information of the signed update session content.", + "$ref": "#/definitions/content.library.item.updatesession.certificate_info" + }, + "warnings": { + "description": "The list of warnings raised for this update session. Any warning which is not ignored by the client will, by default, fail the update session during session complete operation.", + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.updatesession.preview_warning_info" + } + }, + "cert_chain": { + "description": "Certificate chain in base64 format.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "state" + ] + }, + "content.library.item.updatesession.preview_info.state": { + "type": "string", + "description": "The {@name State} {@term enumerated type} defines the state of the update session's preview.", + "enum": [ + "UNAVAILABLE", + "NOT_APPLICABLE", + "PREPARING", + "AVAILABLE" + ] + }, + "content.library.item.updatesession.preview_warning_info": { + "type": "object", + "properties": { + "type": { + "description": "The warning type raised during preview of the update session.", + "$ref": "#/definitions/content.library.item.updatesession.warning_type" + }, + "message": { + "description": "The message specifying more details about the warning.", + "$ref": "#/definitions/vapi.std.localizable_message" + }, + "ignored": { + "description": "Indicates if this warning will be ignored during session complete operation.", + "type": "boolean" + } + }, + "required": [ + "type", + "message", + "ignored" + ] + }, + "content.library.item.updatesession.warning_behavior": { + "type": "object", + "properties": { + "type": { + "description": "The warning type which may be raised during the update session.", + "$ref": "#/definitions/content.library.item.updatesession.warning_type" + }, + "ignored": { + "description": "Indicates if this warning will be ignored during session complete operation.", + "type": "boolean" + } + }, + "required": [ + "type", + "ignored" + ] + }, + "content.library.item.updatesession.warning_type": { + "type": "string", + "description": "The {@name WarningType} {@term enumerated type} defines the warnings which can be raised during the update session.", + "enum": [ + "SELF_SIGNED_CERTIFICATE", + "EXPIRED_CERTIFICATE", + "NOT_YET_VALID_CERTIFICATE", + "UNTRUSTED_CERTIFICATE" + ] + }, + "content.library.item_copy": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "A unique token generated on the client for each copy request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent copy." + }, + "destination_create_spec": { + "$ref": "#/definitions/content.library.item_model", + "description": "Specification for the new library item to be created." + } + }, + "required": [ + "destination_create_spec" + ] + }, + "content.library.item_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "create_spec": { + "$ref": "#/definitions/content.library.item_model", + "description": "Specification that defines the properties of the new library item." + } + }, + "required": [ + "create_spec" + ] + }, + "content.library.item_find": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/content.library.item.find_spec", + "description": "Specification describing what properties to filter on." + } + }, + "required": [ + "spec" + ] + }, + "content.library.item_model": { + "type": "object", + "properties": { + "id": { + "description": "A unique identifier for this library item.", + "type": "string" + }, + "library_id": { + "description": "The identifier of the {@link LibraryModel} to which this item belongs.", + "type": "string" + }, + "content_version": { + "description": "The latest version of the file content list of this library item.", + "type": "string" + }, + "creation_time": { + "description": "The date and time when this library item was created.", + "type": "string", + "format": "date-time" + }, + "description": { + "description": "A human-readable description for this library item.", + "type": "string" + }, + "last_modified_time": { + "description": "The date and time when the metadata for this library item was last changed.

This {@term field} is affected by changes to the properties or file content of this item. It is not modified by changes to the tags of the item, or by changes to the library which owns this item.", + "type": "string", + "format": "date-time" + }, + "last_sync_time": { + "description": "The date and time when this library item was last synchronized.

This {@term field} is updated every time a synchronization is triggered on the library item, including when a synchronization is triggered on the library to which this item belongs. The value is {@term unset} for a library item that belongs to a local library.", + "type": "string", + "format": "date-time" + }, + "metadata_version": { + "description": "A version number for the metadata of this library item.

This value is incremented with each change to the metadata of this item. Changes to name, description, and so on will increment this value. The value is not incremented by changes to the content or tags of the item or the library which owns it.", + "type": "string" + }, + "name": { + "description": "A human-readable name for this library item.

The name may not be {@term unset} or an empty string. The name does not have to be unique, even within the same library.", + "type": "string" + }, + "cached": { + "description": "The status that indicates whether the library item is on disk or not. The library item is cached when all its files are on disk.", + "type": "boolean" + }, + "size": { + "description": "The library item size, in bytes. The size is the sum of the size used on the storage backing for all the files in the item. When the library item is not cached, the size is 0.", + "type": "integer", + "format": "int64" + }, + "type": { + "description": "An optional type identifier which indicates the type adapter plugin to use.

This {@term field} may be set to a non-empty string value that corresponds to an identifier supported by a type adapter plugin present in the Content Library Service. A type adapter plugin, if present for the specified type, can provide additional information and services around the item content. A type adapter can guide the upload process by creating file entries that are in need of being uploaded to complete an item.

The types and plugins supported by the Content Library Service can be queried using the {@link Type} {@term service}.", + "type": "string" + }, + "version": { + "description": "A version number that is updated on metadata changes. This value is used to validate update requests to provide optimistic concurrency of changes.

This value represents a number that is incremented every time library item properties, such as name or description, are changed. It is not incremented by changes to the file content of the library item, including adding or removing files. It is also not affected by tagging the library item.", + "type": "string" + }, + "source_id": { + "description": "The identifier of the {@link ItemModel} to which this item is synchronized to if the item belongs to a subscribed library. The value is {@term unset} for a library item that belongs to a local library.", + "type": "string" + }, + "security_compliance": { + "description": "Shows the security compliance of {@link ItemModel}.", + "type": "boolean" + }, + "certificate_verification_info": { + "description": "Certificate verification status and {@link ItemModel}'s signing certificate . Currently, this field is available only in following cases 1. This item belongs to a secure content library 2. The item is of type ovf.", + "$ref": "#/definitions/content.library.item.certificate_verification_info" + } + } + }, + "content.library.item_publish": { + "type": "object", + "properties": { + "force_sync_content": { + "type": "boolean", + "description": "Whether to synchronize file content as well as metadata. This {@term parameter} applies only if the subscription is on-demand." + }, + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.item.destination_spec" + }, + "description": "The list of subscriptions to publish this library item to." + } + }, + "required": [ + "force_sync_content" + ] + }, + "content.library.item_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.item_model" + } + }, + "required": [ + "value" + ] + }, + "content.library.item_update": { + "type": "object", + "properties": { + "update_spec": { + "$ref": "#/definitions/content.library.item_model", + "description": "Specification of the properties to set." + } + }, + "required": [ + "update_spec" + ] + }, + "content.library.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.optimization_info": { + "type": "object", + "properties": { + "optimize_remote_publishing": { + "description": "If set to {@code true} then library would be optimized for remote publishing.

Turn it on if remote publishing is dominant use case for this library. Remote publishing means here that publisher and subscribers are not the part of the same {@name Vcenter} SSO domain.

Any optimizations could be done as result of turning on this optimization during library creation. For example, library content could be stored in different format but optimizations are not limited to just storage format.

Note, that value of this toggle could be set only during creation of the library and you would need to migrate your library in case you need to change this value (optimize the library for different use case).", + "type": "boolean" + } + } + }, + "content.library.publish_info": { + "type": "object", + "properties": { + "authentication_method": { + "description": "Indicates how a subscribed library should authenticate ({@enum.values AuthenticationMethod}) to the published library endpoint.", + "$ref": "#/definitions/content.library.publish_info.authentication_method" + }, + "published": { + "description": "Whether the local library is published.", + "type": "boolean" + }, + "publish_url": { + "description": "The URL to which the library metadata is published by the Content Library Service.

This value can be used to set the {@link SubscriptionInfo#subscriptionUrl} property when creating a subscribed library.", + "type": "string", + "format": "uri" + }, + "user_name": { + "description": "The username to require for authentication.", + "type": "string" + }, + "password": { + "description": "The new password to require for authentication.", + "type": "string", + "format": "password" + }, + "current_password": { + "description": "The current password to verify. This {@term field} is available starting in vSphere 6.7.", + "type": "string", + "format": "password" + }, + "persist_json_enabled": { + "description": "Whether library and library item metadata are persisted in the storage backing as JSON files. This flag only applies if the local library is published.

Enabling JSON persistence allows you to synchronize a subscribed library manually instead of over HTTP. You copy the local library content and metadata to another storage backing manually and then create a subscribed library referencing the location of the library JSON file in the {@link SubscriptionInfo#subscriptionUrl}. When the subscribed library's storage backing matches the subscription URL, files do not need to be copied to the subscribed library.

For a library backed by a datastore, the library JSON file will be stored at the path contentlib-{library_id}/lib.json on the datastore.

For a library backed by a remote file system, the library JSON file will be stored at {library_id}/lib.json in the remote file system path.", + "type": "boolean" + } + } + }, + "content.library.publish_info.authentication_method": { + "type": "string", + "description": "The {@name AuthenticationMethod} {@term enumerated type} indicates how a subscribed library should authenticate to the published library endpoint.", + "enum": [ + "BASIC", + "NONE" + ] + }, + "content.library.source_info": { + "type": "object", + "properties": { + "source_library": { + "description": "Identifier of the published library.", + "type": "string" + }, + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + } + }, + "content.library.storage_backing": { + "type": "object", + "properties": { + "type": { + "description": "Type ({@enum.values Type}) of {@link StorageBacking}.", + "$ref": "#/definitions/content.library.storage_backing.type" + }, + "datastore_id": { + "description": "Identifier of the datastore used to store the content in the library.", + "type": "string" + }, + "storage_uri": { + "description": "URI identifying the location used to store the content in the library.

The following URI formats are supported:

vSphere 6.5

  • nfs://server/path?version=4 (for vCenter Server Appliance only) - Specifies an NFS Version 4 server.
  • nfs://server/path (for vCenter Server Appliance only) - Specifies an NFS Version 3 server. The nfs://server:/path format is also supported.
  • smb://server/path - Specifies an SMB server or Windows share.

vSphere 6.0 Update 1

  • nfs://server:/path (for vCenter Server Appliance only)
  • file://unc-server/path (for vCenter Server for Windows only)
  • file:///mount/point (for vCenter Server Appliance only) - Local file URIs are supported only when the path is a local mount point for an NFS file system. Use of file URIs is strongly discouraged. Instead, use an NFS URI to specify the remote file system.

vSphere 6.0

  • nfs://server:/path (for vCenter Server Appliance only)
  • file://unc-server/path (for vCenter Server for Windows only)
  • file:///path - Local file URIs are supported but strongly discouraged because it may interfere with the performance of vCenter Server.
", + "type": "string", + "format": "uri" + } + } + }, + "content.library.storage_backing.type": { + "type": "string", + "description": "The {@name Type} {@term enumerated type} specifies the type of the {@link StorageBacking}.", + "enum": [ + "DATASTORE", + "OTHER" + ] + }, + "content.library.subscribed_item_sync": { + "type": "object", + "properties": { + "force_sync_content": { + "type": "boolean", + "description": "Whether to synchronize file content as well as metadata. This {@term parameter} applies only if the subscription is on-demand." + }, + "sync_optional_files": { + "type": "boolean", + "description": "Whether to synchronize optional files. This {@term parameter} applies to both types of subscriptions on-demand as well as sync-immediately." + } + }, + "required": [ + "force_sync_content" + ] + }, + "content.library.subscription_info": { + "type": "object", + "properties": { + "authentication_method": { + "description": "Indicate how the subscribed library should authenticate ({@enum.values AuthenticationMethod}) with the published library endpoint.", + "$ref": "#/definitions/content.library.subscription_info.authentication_method" + }, + "automatic_sync_enabled": { + "description": "Whether the library should participate in automatic library synchronization. In order for automatic synchronization to happen, the global {@link ConfigurationModel#automaticSyncEnabled} option must also be true. The subscription is still active even when automatic synchronization is turned off, but synchronization is only activated with an explicit call to {@link SubscribedLibrary#sync} or {@link SubscribedItem#sync}. In other words, manual synchronization is still available even when automatic synchronization is disabled.", + "type": "boolean" + }, + "on_demand": { + "description": "Indicates whether a library item's content will be synchronized only on demand.

If this is set to {@code true}, then the library item's metadata will be synchronized but the item's content (its files) will not be synchronized. The Content Library Service will synchronize the content upon request only. This can cause the first use of the content to have a noticeable delay.

Items without synchronized content can be forcefully synchronized in advance using the {@link SubscribedItem#sync} call with {@param.name forceSyncContent} set to true. Once content has been synchronized, the content can removed with the {@link SubscribedItem#evict} call.

If this value is set to {@code false}, all content will be synchronized in advance.", + "type": "boolean" + }, + "password": { + "description": "The password to use when authenticating.

The password must be set when using a password-based authentication method; empty strings are not allowed.", + "type": "string", + "format": "password" + }, + "ssl_thumbprint": { + "description": "An optional SHA-1 hash of the SSL certificate for the remote endpoint.

If this value is defined the SSL certificate will be verified by comparing it to the SSL thumbprint. The SSL certificate must verify against the thumbprint. When specified, the standard certificate chain validation behavior is not used. The certificate chain is validated normally if this value is {@term unset}.", + "type": "string" + }, + "subscription_url": { + "description": "The URL of the endpoint where the metadata for the remotely published library is being served.

This URL can be the {@link PublishInfo#publishUrl} of the published library (for example, https://server/path/lib.json).

If the source content comes from a published library with {@link PublishInfo#persistJsonEnabled}, the subscription URL can be a URL pointing to the library JSON file on a datastore or remote file system. The supported formats are:

vSphere 6.5

  • ds:///vmfs/volumes/{uuid}/mylibrary/lib.json (for datastore)
  • nfs://server/path/mylibrary/lib.json (for NFSv3 server on vCenter Server Appliance)
  • nfs://server/path/mylibrary/lib.json?version=4 (for NFSv4 server on vCenter Server Appliance)
  • smb://server/path/mylibrary/lib.json (for SMB server)

vSphere 6.0

  • file://server/mylibrary/lib.json (for UNC server on vCenter Server for Windows)
  • file:///path/mylibrary/lib.json (for local file system)

When you specify a DS subscription URL, the datastore must be on the same vCenter Server as the subscribed library. When you specify an NFS or SMB subscription URL, the {@link StorageBacking#storageUri} of the subscribed library must be on the same remote file server and should share a common parent path with the subscription URL.", + "type": "string", + "format": "uri" + }, + "user_name": { + "description": "The username to use when authenticating.

The username must be set when using a password-based authentication method. Empty strings are allowed for usernames.", + "type": "string" + }, + "source_info": { + "description": "Information about the source published library. This {@term field} will be set for a subscribed library which is associated with a subscription of the published library.", + "$ref": "#/definitions/content.library.source_info" + } + } + }, + "content.library.subscription_info.authentication_method": { + "type": "string", + "description": "Indicate how the subscribed library should authenticate with the published library endpoint.", + "enum": [ + "BASIC", + "NONE" + ] + }, + "content.library.subscriptions.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.library.subscriptions.create_spec": { + "type": "object", + "properties": { + "subscribed_library": { + "description": "Specification for the subscribed library to be associated with the subscription.", + "$ref": "#/definitions/content.library.subscriptions.create_spec_subscribed_library" + } + }, + "required": [ + "subscribed_library" + ] + }, + "content.library.subscriptions.create_spec_new_subscribed_library": { + "type": "object", + "properties": { + "name": { + "description": "Name of the subscribed library.", + "type": "string" + }, + "description": { + "description": "Description of the subscribed library.", + "type": "string" + }, + "storage_backings": { + "description": "The list of default storage backings for this library.

The list must contain exactly one storage backing. Multiple default storage locations are not currently supported but may become supported in future releases.", + "type": "array", + "items": { + "$ref": "#/definitions/content.library.storage_backing" + } + }, + "automatic_sync_enabled": { + "description": "Specifies whether the library should participate in automatic library synchronization.", + "type": "boolean" + }, + "on_demand": { + "description": "Specifies whether a library item's content will be synchronized only on demand.", + "type": "boolean" + } + }, + "required": [ + "name", + "storage_backings", + "automatic_sync_enabled", + "on_demand" + ] + }, + "content.library.subscriptions.create_spec_placement": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}. If {@name #cluster} and {@name #host} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "content.library.subscriptions.create_spec_subscribed_library": { + "type": "object", + "properties": { + "target": { + "description": "Specifies whether the target subscribed library should be newly created or an existing subscribed library should be used.", + "$ref": "#/definitions/content.library.subscriptions.create_spec_subscribed_library.target" + }, + "new_subscribed_library": { + "description": "Specification for creating a new subscribed library associated with the subscription.", + "$ref": "#/definitions/content.library.subscriptions.create_spec_new_subscribed_library" + }, + "subscribed_library": { + "description": "Identifier of the existing subscribed library to associate with the subscription. Only the subscribed libraries for which {@link SubscriptionInfo#subscriptionUrl} property is set to the {@link PublishInfo#publishUrl} of the published library can be associated with the subscription.", + "type": "string" + }, + "location": { + "description": "Location of the subscribed library relative to the published library.", + "$ref": "#/definitions/content.library.subscriptions.location" + }, + "vcenter": { + "description": "Specification for the subscribed library's vCenter Server instance.", + "$ref": "#/definitions/content.library.subscriptions.create_spec_vcenter" + }, + "placement": { + "description": "Placement specification for the virtual machine template library items on the subscribed library.", + "$ref": "#/definitions/content.library.subscriptions.create_spec_placement" + } + }, + "required": [ + "target", + "location" + ] + }, + "content.library.subscriptions.create_spec_subscribed_library.target": { + "type": "string", + "description": "The {@name Target} {@term enumerated type} defines the options related to the target subscribed library which will be associated with the subscription.", + "enum": [ + "CREATE_NEW", + "USE_EXISTING" + ] + }, + "content.library.subscriptions.create_spec_vcenter": { + "type": "object", + "properties": { + "hostname": { + "description": "The hostname of the subscribed library's vCenter Server.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + } + }, + "required": [ + "hostname" + ] + }, + "content.library.subscriptions.info": { + "type": "object", + "properties": { + "subscribed_library": { + "description": "Identifier of the subscribed library associated with the subscription.", + "type": "string" + }, + "subscribed_library_name": { + "description": "Name of the subscribed library associated with the subscription.", + "type": "string" + }, + "subscribed_library_location": { + "description": "Location of the subscribed library relative to the published library.", + "$ref": "#/definitions/content.library.subscriptions.location" + }, + "subscribed_library_vcenter": { + "description": "Information about the vCenter Server instance where the subscribed library exists.", + "$ref": "#/definitions/content.library.subscriptions.vcenter_info" + }, + "subscribed_library_placement": { + "description": "Placement information about the subscribed library's virtual machine template items.", + "$ref": "#/definitions/content.library.subscriptions.placement_info" + } + }, + "required": [ + "subscribed_library", + "subscribed_library_name", + "subscribed_library_location", + "subscribed_library_placement" + ] + }, + "content.library.subscriptions.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.library.subscriptions.summary" + } + } + }, + "required": [ + "value" + ] + }, + "content.library.subscriptions.location": { + "type": "string", + "description": "The {@name Location} {@term enumerated type} defines the location of subscribed library relative to the published library.", + "enum": [ + "LOCAL", + "REMOTE" + ] + }, + "content.library.subscriptions.placement_info": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "content.library.subscriptions.summary": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription.", + "type": "string" + }, + "subscribed_library": { + "description": "Identifier of the subscribed library.", + "type": "string" + }, + "subscribed_library_name": { + "description": "Name of the subscribed library.", + "type": "string" + }, + "subscribed_library_vcenter_hostname": { + "description": "Hostname of the vCenter instance where the subscribed library exists.", + "type": "string" + } + }, + "required": [ + "subscription", + "subscribed_library", + "subscribed_library_name" + ] + }, + "content.library.subscriptions.update_spec": { + "type": "object", + "properties": { + "subscribed_library_vcenter": { + "description": "Specification for the subscribed library's vCenter Server instance.", + "$ref": "#/definitions/content.library.subscriptions.update_spec_vcenter" + }, + "subscribed_library_placement": { + "description": "Placement specification for the virtual machine template items of the subscribed library. Updating this information will only affect new or updated items, existing items will not be moved. The entire placement configuration of the subscribed library will replaced by the new specification.", + "$ref": "#/definitions/content.library.subscriptions.update_spec_placement" + } + } + }, + "content.library.subscriptions.update_spec_placement": { + "type": "object", + "properties": { + "folder": { + "description": "Virtual machine folder into which the virtual machine template should be placed.", + "type": "string" + }, + "cluster": { + "description": "Cluster onto which the virtual machine template should be placed. If {@name #cluster} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #cluster}. If {@name #cluster} and {@name #host} are both specified, {@name #host} must be a member of {@name #cluster}. If {@name #resourcePool} or {@name #host} is specified, it is recommended that this {@term field} be {@term unset}.", + "type": "string" + }, + "resource_pool": { + "description": "Resource pool into which the virtual machine template should be placed.", + "type": "string" + }, + "host": { + "description": "Host onto which the virtual machine template should be placed. If {@name #host} and {@name #resourcePool} are both specified, {@name #resourcePool} must belong to {@name #host}. If {@name #host} and {@name #cluster} are both specified, {@name #host} must be a member of {@name #cluster}.", + "type": "string" + }, + "network": { + "description": "Network that backs the virtual Ethernet adapters in the virtual machine template.", + "type": "string" + } + } + }, + "content.library.subscriptions.update_spec_vcenter": { + "type": "object", + "properties": { + "hostname": { + "description": "The hostname of the subscribed library's vCenter Server.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + } + } + }, + "content.library.subscriptions.vcenter_info": { + "type": "object", + "properties": { + "hostname": { + "description": "Hostname of the vCenter Server instance where the subscribed library exists.", + "type": "string" + }, + "https_port": { + "description": "The HTTPS port of the vCenter Server instance where the subscribed library exists.", + "type": "integer", + "format": "int64" + }, + "server_guid": { + "description": "The unique identifier of the vCenter Server where the subscribed library exists.", + "type": "string" + } + }, + "required": [ + "hostname", + "server_guid" + ] + }, + "content.library.subscriptions_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "spec": { + "$ref": "#/definitions/content.library.subscriptions.create_spec", + "description": "Specification for the subscription." + } + }, + "required": [ + "spec" + ] + }, + "content.library.subscriptions_delete": { + "type": "object", + "properties": { + "subscription": { + "type": "string", + "description": "Subscription identifier." + } + }, + "required": [ + "subscription" + ] + }, + "content.library.subscriptions_get": { + "type": "object", + "properties": { + "subscription": { + "type": "string", + "description": "Identifier of the subscription." + } + }, + "required": [ + "subscription" + ] + }, + "content.library.subscriptions_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library.subscriptions.info" + } + }, + "required": [ + "value" + ] + }, + "content.library.subscriptions_update": { + "type": "object", + "properties": { + "subscription": { + "type": "string", + "description": "subscription identifier." + }, + "spec": { + "$ref": "#/definitions/content.library.subscriptions.update_spec", + "description": "Specification of the new property values to set on the subscription." + } + }, + "required": [ + "subscription", + "spec" + ] + }, + "content.library_find": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/content.library.find_spec", + "description": "Specification describing what properties to filter on." + } + }, + "required": [ + "spec" + ] + }, + "content.library_model": { + "type": "object", + "properties": { + "id": { + "description": "An identifier which uniquely identifies this {@name LibraryModel}.", + "type": "string" + }, + "creation_time": { + "description": "The date and time when this library was created.", + "type": "string", + "format": "date-time" + }, + "description": { + "description": "A human-readable description for this library.", + "type": "string" + }, + "last_modified_time": { + "description": "The date and time when this library was last updated.

This {@term field} is updated automatically when the library properties are changed. This {@term field} is not affected by adding, removing, or modifying a library item or its content within the library. Tagging the library or syncing the subscribed library does not alter this {@term field}.", + "type": "string", + "format": "date-time" + }, + "last_sync_time": { + "description": "The date and time when this library was last synchronized.

This {@term field} applies only to subscribed libraries. It is updated every time a synchronization is triggered on the library. The value is {@term unset} for a local library.", + "type": "string", + "format": "date-time" + }, + "name": { + "description": "The name of the library.

A Library is identified by a human-readable name. Library names cannot be undefined or an empty string. Names do not have to be unique.", + "type": "string" + }, + "storage_backings": { + "description": "The list of default storage backings which are available for this library.

A {@link StorageBacking} defines a default storage location which can be used to store files for library items in this library. Some library items, for instance, virtual machine template items, support files that may be distributed across various storage backings. One or more item files may or may not be located on the default storage backing.

Multiple default storage locations are not currently supported but may become supported in future releases.", + "type": "array", + "items": { + "$ref": "#/definitions/content.library.storage_backing" + } + }, + "type": { + "description": "The type ({@enum.values LibraryModel.LibraryType}) of this library.

This value can be used to determine what additional services and information can be available for this library. This {@term field} is not used for the {@code create} and {@code update} {@term operations}. It will always be present in the result of a {@code get} {@term operation}.", + "$ref": "#/definitions/content.library_model.library_type" + }, + "optimization_info": { + "description": "Defines various optimizations and optimization parameters applied to this library.", + "$ref": "#/definitions/content.library.optimization_info" + }, + "version": { + "description": "A version number which is updated on metadata changes. This value allows clients to detect concurrent updates and prevent accidental clobbering of data.

This value represents a number which is incremented every time library properties, such as name or description, are changed. It is not incremented by changes to a library item within the library, including adding or removing items. It is also not affected by tagging the library.", + "type": "string" + }, + "publish_info": { + "description": "Defines how this library is published so that it can be subscribed to by a remote subscribed library.

The {@link PublishInfo} defines where and how the metadata for this local library is accessible. A local library is only published publically if {@link PublishInfo#published} is {@code true}.", + "$ref": "#/definitions/content.library.publish_info" + }, + "subscription_info": { + "description": "Defines the subscription behavior for this Library.

The {@link SubscriptionInfo} defines how this subscribed library synchronizes to a remote source. Setting the value will determine the remote source to which the library synchronizes, and how. Changing the subscription will result in synchronizing to a new source. If the new source differs from the old one, the old library items and data will be lost. Setting {@link SubscriptionInfo#automaticSyncEnabled} to false will halt subscription but will not remove existing cached data.", + "$ref": "#/definitions/content.library.subscription_info" + }, + "server_guid": { + "description": "The unique identifier of the vCenter server where the library exists.", + "type": "string" + }, + "security_policy_id": { + "description": "Represents the security policy applied to this library.

Setting the {@term field} will make the library secure. This field is ignored in {@code update} {@term operation} if {@link #unsetSecurityPolicyId} is set to {@code true}.", + "type": "string" + }, + "unset_security_policy_id": { + "description": "This represents the intent of the change to {@link #securityPolicyId} in {@code update} {@term operation}.

If this field is set to {@code true}, any security policy applied to the library will be removed. If this field is set to {@code false}, any security policy applied to library will be changed to the value specified in {@link #securityPolicyId}, if any.", + "type": "boolean" + } + } + }, + "content.library_model.library_type": { + "type": "string", + "description": "The {@name LibraryType} {@term enumerated type} defines the type of a {@link LibraryModel}.

The type of a library can be used to determine which additional services can be performed with a library.", + "enum": [ + "LOCAL", + "SUBSCRIBED" + ] + }, + "content.library_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library_model" + } + }, + "required": [ + "value" + ] + }, + "content.library_update": { + "type": "object", + "properties": { + "update_spec": { + "$ref": "#/definitions/content.library_model", + "description": "Specification of the new property values to set on the library." + } + }, + "required": [ + "update_spec" + ] + }, + "content.local_library.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.local_library.destination_spec": { + "type": "object", + "properties": { + "subscription": { + "description": "Identifier of the subscription associated with the subscribed library.", + "type": "string" + } + }, + "required": [ + "subscription" + ] + }, + "content.local_library.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.local_library_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "A unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "create_spec": { + "$ref": "#/definitions/content.library_model", + "description": "Specification for the new local library." + } + }, + "required": [ + "create_spec" + ] + }, + "content.local_library_publish": { + "type": "object", + "properties": { + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/content.local_library.destination_spec" + }, + "description": "The list of subscriptions to publish this library to." + } + } + }, + "content.local_library_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library_model" + } + }, + "required": [ + "value" + ] + }, + "content.local_library_update": { + "type": "object", + "properties": { + "update_spec": { + "$ref": "#/definitions/content.library_model", + "description": "Specification of the new property values to set on the local library." + } + }, + "required": [ + "update_spec" + ] + }, + "content.security_rule_type": { + "type": "string", + "description": "The {@name SecurityRuleType} {@term enumerated type} defines the security rules which can be applied to different item types.", + "enum": [ + "OVF_STRICT_VERIFICATION" + ] + }, + "content.subscribed_library.create_resp": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + }, + "required": [ + "value" + ] + }, + "content.subscribed_library.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "value" + ] + }, + "content.subscribed_library.probe_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.subscribed_library.probe_result" + } + }, + "required": [ + "value" + ] + }, + "content.subscribed_library.probe_result": { + "type": "object", + "properties": { + "status": { + "description": "The status of probe result. This will be one of {@enum.values Status}.", + "$ref": "#/definitions/content.subscribed_library.probe_result.status" + }, + "ssl_thumbprint": { + "description": "The SSL thumbprint for the remote endpoint.", + "type": "string" + }, + "error_messages": { + "description": "If the probe result is in an error status, this {@term field} will contain the detailed error messages.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + } + }, + "required": [ + "status", + "error_messages" + ] + }, + "content.subscribed_library.probe_result.status": { + "type": "string", + "description": "The {@name Status} {@term enumerated type} defines the error status constants for the probe result.", + "enum": [ + "SUCCESS", + "INVALID_URL", + "TIMED_OUT", + "HOST_NOT_FOUND", + "RESOURCE_NOT_FOUND", + "INVALID_CREDENTIALS", + "CERTIFICATE_ERROR", + "UNKNOWN_ERROR" + ] + }, + "content.subscribed_library_create": { + "type": "object", + "properties": { + "client_token": { + "type": "string", + "description": "Unique token generated on the client for each creation request. The token should be a universally unique identifier (UUID), for example: {@code b8a2a2e3-2314-43cd-a871-6ede0f429751}. This token can be used to guarantee idempotent creation." + }, + "create_spec": { + "$ref": "#/definitions/content.library_model", + "description": "Specification for the new subscribed library." + } + }, + "required": [ + "create_spec" + ] + }, + "content.subscribed_library_probe": { + "type": "object", + "properties": { + "subscription_info": { + "$ref": "#/definitions/content.library.subscription_info", + "description": "The subscription info to be probed." + } + }, + "required": [ + "subscription_info" + ] + }, + "content.subscribed_library_resp": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/content.library_model" + } + }, + "required": [ + "value" + ] + }, + "content.subscribed_library_update": { + "type": "object", + "properties": { + "update_spec": { + "$ref": "#/definitions/content.library_model", + "description": "Specification of the new property values to set on the subscribed library." + } + }, + "required": [ + "update_spec" + ] + }, + "content.type.info": { + "type": "object", + "properties": { + "description": { + "description": "A description of the type support offered by the plugin.", + "type": "string" + }, + "name": { + "description": "The name of the plugin which provides the type support.", + "type": "string" + }, + "type": { + "description": "The type which the plugin supports.

To upload a library item of the type supported by the plugin, the {@link ItemModel#type} {@term field} of the item should be set to this value.", + "type": "string" + }, + "vendor": { + "description": "The name of the vendor who created the type support plugin.", + "type": "string" + }, + "version": { + "description": "The version number of the type support plugin.", + "type": "string" + }, + "supported_rules": { + "description": "List of security rules which can be applied to this item type.", + "type": "array", + "items": { + "$ref": "#/definitions/content.security_rule_type" + } + } + }, + "required": [ + "description", + "name", + "type", + "vendor", + "version" + ] + }, + "content.type.list_resp": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/content.type.info" + } + } + }, + "required": [ + "value" + ] + }, + "vapi.std.errors.already_exists": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.already_exists_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.already_exists" + } + } + }, + "vapi.std.errors.concurrent_change": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.concurrent_change_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.concurrent_change" + } + } + }, + "vapi.std.errors.error": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.error.type": { + "type": "string", + "description": "Enumeration of all standard errors. Used as discriminator in protocols that have no standard means for transporting the error type, e.g. REST.", + "enum": [ + "ERROR", + "ALREADY_EXISTS", + "ALREADY_IN_DESIRED_STATE", + "CANCELED", + "CONCURRENT_CHANGE", + "FEATURE_IN_USE", + "INTERNAL_SERVER_ERROR", + "INVALID_ARGUMENT", + "INVALID_ELEMENT_CONFIGURATION", + "INVALID_ELEMENT_TYPE", + "INVALID_REQUEST", + "NOT_ALLOWED_IN_CURRENT_STATE", + "NOT_FOUND", + "OPERATION_NOT_FOUND", + "RESOURCE_BUSY", + "RESOURCE_IN_USE", + "RESOURCE_INACCESSIBLE", + "SERVICE_UNAVAILABLE", + "TIMED_OUT", + "UNABLE_TO_ALLOCATE_RESOURCE", + "UNAUTHENTICATED", + "UNAUTHORIZED", + "UNEXPECTED_INPUT", + "UNSUPPORTED", + "UNVERIFIED_PEER" + ] + }, + "vapi.std.errors.error_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.error" + } + } + }, + "vapi.std.errors.invalid_argument": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.invalid_argument_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.invalid_argument" + } + } + }, + "vapi.std.errors.invalid_element_configuration": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.invalid_element_configuration_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.invalid_element_configuration" + } + } + }, + "vapi.std.errors.invalid_element_type": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.invalid_element_type_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.invalid_element_type" + } + } + }, + "vapi.std.errors.not_allowed_in_current_state": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.not_allowed_in_current_state_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.not_allowed_in_current_state" + } + } + }, + "vapi.std.errors.not_found": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.not_found_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.not_found" + } + } + }, + "vapi.std.errors.resource_busy": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.resource_busy_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.resource_busy" + } + } + }, + "vapi.std.errors.resource_inaccessible": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.resource_inaccessible_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.resource_inaccessible" + } + } + }, + "vapi.std.errors.unauthenticated": { + "type": "object", + "properties": { + "challenge": { + "description": "Indicates the authentication challenges applicable to the target API provider. It can be used by a client to discover the correct authentication scheme to use. The exact syntax of the value is defined by the specific provider, the protocol and authentication schemes used.

For example, a provider using REST may adhere to the WWW-Authenticate HTTP header specification, RFC7235, section 4.1. In this case an example challenge value may be: SIGN realm=\"27da1358-2ba4-11e9-b210-d663bd873d93\",sts=\"http://vcenter/sso?vsphere.local\", Basic realm=\"vCenter\"", + "type": "string" + }, + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.unauthenticated_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.unauthenticated" + } + } + }, + "vapi.std.errors.unauthorized": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.unauthorized_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.unauthorized" + } + } + }, + "vapi.std.errors.unsupported": { + "type": "object", + "properties": { + "messages": { + "description": "Stack of one or more localizable messages for human {@term error} consumers.

The message at the top of the stack (first in the list) describes the {@term error} from the perspective of the {@term operation} the client invoked. Each subsequent message in the stack describes the \"cause\" of the prior message.", + "type": "array", + "items": { + "$ref": "#/definitions/vapi.std.localizable_message" + } + }, + "data": { + "description": "Data to facilitate clients responding to the {@term operation} reporting a standard {@term error} to indicating that it was unable to complete successfully.

{@term Operations} may provide data that clients can use when responding to {@term errors}. Since the data that clients need may be specific to the context of the {@term operation} reporting the {@term error}, different {@term operations} that report the same {@term error} may provide different data in the {@term error}. The documentation for each each {@term operation} will describe what, if any, data it provides for each {@term error} it reports. The {@link ArgumentLocations}, {@link FileLocations}, and {@link TransientIndication} {@term structures} are intended as possible values for this {@term field}. {@link vapi.std.DynamicID} may also be useful as a value for this {@term field} (although that is not its primary purpose). Some {@term services} may provide their own specific {@term structures} for use as the value of this {@term field} when reporting {@term errors} from their {@term operations}.", + "type": "object" + }, + "error_type": { + "description": "Discriminator field to help API consumers identify the structure type.", + "$ref": "#/definitions/vapi.std.errors.error.type" + } + }, + "required": [ + "messages" + ] + }, + "vapi.std.errors.unsupported_error": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.errors.unsupported" + } + } + }, + "vapi.std.localizable_message": { + "type": "object", + "properties": { + "id": { + "description": "Unique identifier of the localizable string or message template.

This identifier is typically used to retrieve a locale-specific string or message template from a message catalog.", + "type": "string" + }, + "default_message": { + "description": "The value of this localizable string or message template in the {@code en_US} (English) locale. If {@link #id} refers to a message template, the default message will contain the substituted arguments. This value can be used by clients that do not need to display strings and messages in the native language of the user. It could also be used as a fallback if a client is unable to access the appropriate message catalog.", + "type": "string" + }, + "args": { + "description": "Positional arguments to be substituted into the message template. This list will be empty if the message uses named arguments or has no arguments.", + "type": "array", + "items": { + "type": "string" + } + }, + "params": { + "description": "Named arguments to be substituted into the message template.", + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.localization_param" + } + } + } + }, + "localized": { + "description": "Localized string value as per request requirements.", + "type": "string" + } + }, + "required": [ + "id", + "default_message", + "args" + ] + }, + "vapi.std.localization_param": { + "type": "object", + "properties": { + "s": { + "description": "{@term String} value associated with the parameter.", + "type": "string" + }, + "dt": { + "description": "Date and time value associated with the parameter. Use the {@name #format} {@term field} to specify date and time display style.", + "type": "string", + "format": "date-time" + }, + "i": { + "description": "{@term long} value associated with the parameter.", + "type": "integer", + "format": "int64" + }, + "d": { + "description": "The {@term double} value associated with the parameter. The number of displayed fractional digits is changed via {@name #precision} {@term field}.", + "type": "number", + "format": "double" + }, + "l": { + "description": "Nested localizable value associated with the parameter. This is useful construct to convert to human readable localized form {@term enumerated type} and {@term boolean} values. It can also be used for proper handling of pluralization and gender forms in localization. Recursive {@name NestedLocalizableMessage} instances can be used for localizing short lists of items.", + "$ref": "#/definitions/vapi.std.nested_localizable_message" + }, + "format": { + "description": "Format associated with the date and time value in {@name #dt} {@term field}. The {@term enumeration value} {@code SHORT_DATETIME} will be used as default.", + "$ref": "#/definitions/vapi.std.localization_param.date_time_format" + }, + "precision": { + "description": "Number of fractional digits to include in formatted {@term double} value.", + "type": "integer", + "format": "int64" + } + } + }, + "vapi.std.localization_param.date_time_format": { + "type": "string", + "description": "The {@name DateTimeFormat} {@term enumerated type} lists possible date and time formatting options. It combines the Unicode CLDR format types - full, long, medium and short with 3 different presentations - date only, time only and combined date and time presentation.", + "enum": [ + "SHORT_DATE", + "MED_DATE", + "LONG_DATE", + "FULL_DATE", + "SHORT_TIME", + "MED_TIME", + "LONG_TIME", + "FULL_TIME", + "SHORT_DATE_TIME", + "MED_DATE_TIME", + "LONG_DATE_TIME", + "FULL_DATE_TIME" + ] + }, + "vapi.std.nested_localizable_message": { + "type": "object", + "properties": { + "id": { + "description": "Unique identifier of the localizable string or message template.

This identifier is typically used to retrieve a locale-specific string or message template from a message catalog.", + "type": "string" + }, + "params": { + "description": "Named Arguments to be substituted into the message template.", + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "$ref": "#/definitions/vapi.std.localization_param" + } + } + } + } + }, + "required": [ + "id" + ] + } + } +} \ No newline at end of file diff --git a/SDKGenerator/nsxt_policyClient.orig b/SDKGenerator/nsxt_policyClient.orig new file mode 100644 index 0000000..9bd7fdb --- /dev/null +++ b/SDKGenerator/nsxt_policyClient.orig @@ -0,0 +1,57369 @@ +#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended." +#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword." +#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?' +#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ... +#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..." + +namespace SDKGenerator +{ + + public partial class nsxt_policyClient + { + private string _baseUrl = "https://nsxmanager.your.domain/policy/api/v1"; + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public nsxt_policyClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(() => + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + }); + } + + public string BaseUrl + { + get { return _baseUrl; } + set { _baseUrl = value; } + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + ///

Resolves the error + /// No Content + /// A server side error occurred. + public System.Threading.Tasks.Task ErrorAsync(ErrorResolverMetadataList errorResolverMetadataList) + { + return ErrorAsync(errorResolverMetadataList, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// Resolves the error + /// No Content + /// A server side error occurred. + public async System.Threading.Tasks.Task ErrorAsync(ErrorResolverMetadataList errorResolverMetadataList, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/error-resolver?action=resolve_error"); + + var client_ = _httpClient; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(errorResolverMetadataList, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + + PrepareRequest(client_, request_, urlBuilder_); + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = ((int)response_.StatusCode).ToString(); + if (status_ == "204") + { + return; + } + else + if (status_ == "404") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Not Found", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == "403") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Forbidden", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == "412") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Precondition Failed", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == "400") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Bad Request", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == "503") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Service Unavailable", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ == "500") + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_).ConfigureAwait(false); + throw new ApiException("Internal Server Error", (int)response_.StatusCode, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + if (status_ != "200" && status_ != "204") + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + (int)response_.StatusCode + ").", (int)response_.StatusCode, responseData_, headers_, null); + } + } + finally + { + if (response_ != null) + response_.Dispose(); + } + } + } + finally + { + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T), string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo) + { + if (value is System.Enum) + { + string name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + } + } + else if (value is bool) { + return System.Convert.ToString(value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value != null && value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + return System.Convert.ToString(value, cultureInfo); + } + } + + /// Abstract base type for Weekly or Interval Backup Schedule + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("IntervalBackupSchedule", typeof(IntervalBackupSchedule))] + [JsonInheritanceAttribute("WeeklyBackupSchedule", typeof(WeeklyBackupSchedule))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class BackupSchedule + { + + } + + /// IPFIX L2 data will be collected on collectors. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPFIXL2CollectorProfile : PolicyConfigResource + { + /// It accepts Multiple Collector objects. + [Newtonsoft.Json.JsonProperty("ipfix_l2_collectors", Required = Newtonsoft.Json.Required.AllowNull)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(4)] + public System.Collections.Generic.ICollection Ipfix_l2_collectors { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Root of the api result set for forming rows. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RowListField + { + /// Short name or alias of row list field, if any. If unspecified, the row list field can be referenced by its index in the array of row list fields as $<index> (for example, $0). + [Newtonsoft.Json.JsonProperty("alias", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Alias { get; set; } + + /// JSON path to the root of the api result set for forming rows. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Path { get; set; } + + + } + + /// Policy resource reference. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyResourceReference : ResourceReference + { + /// Absolute path of this object. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Path { get; set; } + + + } + + /// The passive type of LBMonitorProfile. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBPassiveMonitorProfile : LBMonitorProfile + { + /// When the consecutive failures reach this value, then the member is + /// considered temporarily unavailable for a configurable period + /// + [Newtonsoft.Json.JsonProperty("max_fails", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Max_fails { get; set; } = 5L; + + /// After this timeout period, the member is tried again for a new + /// connection to see if it is available. + /// + [Newtonsoft.Json.JsonProperty("timeout", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Timeout { get; set; } = 5L; + + + } + + /// Results from probing all LDAP servers in an LDAP identity source configuration. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LdapIdentitySourceProbeResults : Resource + { + /// Probe results for all probed LDAP servers. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Child wrapper object for PolicyMulticastConfig used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicyMulticastConfig : ChildPolicyConfigResource + { + /// Contains actual PolicyMulticastConfig. + /// + [Newtonsoft.Json.JsonProperty("PolicyMulticastConfig", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyMulticastConfig PolicyMulticastConfig { get; set; } + + + } + + /// Active healthchecks are disabled by default and can be enabled for a + /// server pool by binding a health monitor to the Group through the PolicyLbRule + /// object. This represents active health monitoring over HTTP. + /// Active healthchecks are initiated periodically, at a configurable + /// interval, to each member of the Group. Only if a healthcheck fails + /// consecutively for a specified number of times (fall_count) to a member will + /// the member status be marked DOWN. Once a member is DOWN, a specified + /// number of consecutive successful healthchecks (rise_count) will bring the + /// member back to UP state. After a healthcheck is initiated, if it does not + /// complete within a certain period, then also the healthcheck is considered + /// to be unsuccessful. + /// Completing a healthcheck within timeout means establishing a connection + /// (TCP or SSL), if applicable, sending the request and receiving the + /// response, all within the configured timeout. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class HttpPolicyLbMonitorProfile : PolicyLbMonitorProfile + { + /// For HTTP active healthchecks, the HTTP request url sent can be + /// customized and can include query parameters. + /// + [Newtonsoft.Json.JsonProperty("url", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Url { get; set; } = "/"; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyBgpNeighborStatus + { + /// Current state of the BGP session. + [Newtonsoft.Json.JsonProperty("connection_state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PolicyBgpNeighborStatusConnection_state? Connection_state { get; set; } + + /// Count of messages received from the neighbor + [Newtonsoft.Json.JsonProperty("messages_received", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Messages_received { get; set; } + + /// Time in ms to wait for HELLO packet from BGP peer + [Newtonsoft.Json.JsonProperty("keep_alive_interval", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Keep_alive_interval { get; set; } + + /// Policy path to Tier0 + [Newtonsoft.Json.JsonProperty("tier0_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tier0_path { get; set; } + + /// Router ID of the BGP neighbor. + [Newtonsoft.Json.JsonProperty("neighbor_router_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Neighbor_router_id { get; set; } + + /// Sum of out prefixes counts across all address families. + [Newtonsoft.Json.JsonProperty("total_out_prefix_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Total_out_prefix_count { get; set; } + + /// AS number of the BGP neighbor + [Newtonsoft.Json.JsonProperty("remote_as_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Remote_as_number { get; set; } + + /// Count of messages sent to the neighbor + [Newtonsoft.Json.JsonProperty("messages_sent", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Messages_sent { get; set; } + + /// Time(in seconds) since connection was established. + [Newtonsoft.Json.JsonProperty("time_since_established", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Time_since_established { get; set; } + + /// If a HELLO packet is not seen from BGP Peer withing hold_time + /// then BGP neighbor will be marked as down. + /// + [Newtonsoft.Json.JsonProperty("hold_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Hold_time { get; set; } + + /// Count of connections established + [Newtonsoft.Json.JsonProperty("established_connection_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Established_connection_count { get; set; } + + /// Current state of graceful restart of BGP neighbor. Possible + /// values are - + /// 1. GR_AND_HELPER - Graceful restart with Helper + /// 2. HELPER_ONLY - Helper only + /// 3. DISABLE - Disabled + /// + [Newtonsoft.Json.JsonProperty("graceful_restart_mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Graceful_restart_mode { get; set; } + + /// Count of connection drop + [Newtonsoft.Json.JsonProperty("connection_drop_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Connection_drop_count { get; set; } + + /// TCP port number of remote BGP Connection + [Newtonsoft.Json.JsonProperty("remote_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Remote_port { get; set; } + + /// Timestamp when the data was last updated, unset if data source has never updated the data. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + /// The Ip address of logical port + [Newtonsoft.Json.JsonProperty("source_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Source_address { get; set; } + + /// Sum of in prefixes counts across all address families. + [Newtonsoft.Json.JsonProperty("total_in_prefix_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Total_in_prefix_count { get; set; } + + /// Remote site details. + [Newtonsoft.Json.JsonProperty("remote_site", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ResourceReference Remote_site { get; set; } + + /// Transport node policy path + [Newtonsoft.Json.JsonProperty("edge_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Edge_path { get; set; } + + /// TCP port number of Local BGP connection + [Newtonsoft.Json.JsonProperty("local_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Local_port { get; set; } + + /// BGP capabilities sent to BGP neighbor. + [Newtonsoft.Json.JsonProperty("announced_capabilities", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Announced_capabilities { get; set; } + + /// BGP capabilities negotiated with BGP neighbor. + [Newtonsoft.Json.JsonProperty("negotiated_capability", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Negotiated_capability { get; set; } + + /// Address families of BGP neighbor + [Newtonsoft.Json.JsonProperty("address_families", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Address_families { get; set; } + + /// BGP neighbor type + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PolicyBgpNeighborStatusType? Type { get; set; } + + /// The IP of the BGP neighbor + [Newtonsoft.Json.JsonProperty("neighbor_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Neighbor_address { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SIDataCounter + { + /// The total packets or bytes + [Newtonsoft.Json.JsonProperty("total", Required = Newtonsoft.Json.Required.Always)] + public long Total { get; set; } + + /// The multicast and broadcast packets or bytes + [Newtonsoft.Json.JsonProperty("multicast_broadcast", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Multicast_broadcast { get; set; } + + /// The dropped packets or bytes + [Newtonsoft.Json.JsonProperty("dropped", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Dropped { get; set; } + + + } + + /// Advanced load balancer WafPolicyPSMGroup object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBWafPolicyPSMGroup : PolicyConfigResource + { + /// Enable or disable this WAF rule group. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("enable", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable { get; set; } = true; + + /// This field indicates that this group is used for learning. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("is_learning_group", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_learning_group { get; set; } = false; + + /// Positive Security Model locations. + /// These are used to partition the application name space. + /// Maximum of 16384 items allowed. + /// + [Newtonsoft.Json.JsonProperty("locations", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Locations { get; set; } + + /// If a rule in this group does not match the match_value + /// pattern, this action will be executed. + /// Allowed actions are WAF_ACTION_NO_OP and WAF_ACTION_BLOCK. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as WAF_ACTION_NO_OP. + /// + [Newtonsoft.Json.JsonProperty("miss_action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBWafPolicyPSMGroupMiss_action? Miss_action { get; set; } = SDKGenerator.ALBWafPolicyPSMGroupMiss_action.WAF_ACTION_NO_OP; + + /// If a rule in this group matches the match_value pattern, + /// this action will be executed. + /// Allowed actions are WAF_ACTION_NO_OP and + /// WAF_ACTION_ALLOW_PARAMETER. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as WAF_ACTION_ALLOW_PARAMETER. + /// + [Newtonsoft.Json.JsonProperty("hit_action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBWafPolicyPSMGroupHit_action? Hit_action { get; set; } = SDKGenerator.ALBWafPolicyPSMGroupHit_action.WAF_ACTION_ALLOW_PARAMETER; + + + } + + /// WafPolicyApiResponse + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBWafPolicyApiResponse : ListResult + { + /// count + /// + [Newtonsoft.Json.JsonProperty("count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Count { get; set; } + + /// Array of WafPolicy + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Paged collection of Firewall Flood Protection Profile Binding Maps + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyFirewallFloodProtectionProfileBindingMapListResult : ListResult + { + /// Firewall Flood Protection Profile Binding Map list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Virtual Hybrid Cloud is a construct that provides network isolation for all + /// its contents out of the box. It can be considered to be an equivalent of a + /// tenant in the networking world, where the compute and networking elements + /// within are isolated from other VHCs. The VHC will also be used to provide + /// hybridity across on-prem datacenters and the cloud, thus providing a means + /// of building private clouds with elements both on-prem and in the cloud. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Vhc : PolicyConfigResource + { + /// Information related to sites applicable for given VHC. + /// + [Newtonsoft.Json.JsonProperty("site_infos", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(4)] + public System.Collections.Generic.ICollection Site_infos { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// This is set of IP addresses that will be used for Public Application tiers. + /// + [Newtonsoft.Json.JsonProperty("public_ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Public_ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// This is set of IP addresses that will be used for Shared and Private Application tiers. + /// + [Newtonsoft.Json.JsonProperty("private_ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Private_ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Type of Services to be made available for the applications defined under VHC. + /// + [Newtonsoft.Json.JsonProperty("capabilities", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Capabilities { get; set; } + + /// The tier 0 has to be pre-created before VHC is created. The tier 0 typically provides connectivity to external world. + /// List of sites for VHC has to be subset of sites where the tier 0 spans. + /// + [Newtonsoft.Json.JsonProperty("tier_0s", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Tier_0s { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Enforcement point is the endpoint where policy configurations are applied. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class EnforcementPoint : PolicyConfigResource + { + /// Connection Info of the Enforcement Point. + [Newtonsoft.Json.JsonProperty("connection_info", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public EnforcementPointConnectionInfo Connection_info { get; set; } = new EnforcementPointConnectionInfo(); + + /// Version of the Enforcement point. + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Version { get; set; } + + /// Auto enforce flag suggests whether the policy objects shall be automatically + /// enforced on this enforcement point or not. When this flag is set to true, + /// all policy objects will be automatically enforced on this enforcement + /// point. If this flag is set to false, user shall rely on the usual means + /// of realization, i.e., deployment maps. + /// + [Newtonsoft.Json.JsonProperty("auto_enforce", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Auto_enforce { get; set; } = true; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class GatewayGeneralSecurityProfile : GeneralSecurityProfile + { + /// The flag to indicate double flow check is enabled or not. This option applies only to EDGE components. + [Newtonsoft.Json.JsonProperty("enable_double_flow", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_double_flow { get; set; } = false; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TunnelInterfaceIPSubnet + { + /// IPv4 Addresses + [Newtonsoft.Json.JsonProperty("ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Subnet Prefix Length + [Newtonsoft.Json.JsonProperty("prefix_length", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 31D)] + public long Prefix_length { get; set; } + + + } + + /// Paged Collection of L2BridgeEndpointProfile + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2BridgeEndpointProfileListResult : ListResult + { + /// L2BridgeEndpointProfile list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Wrapper object for PolicySIExcludeList + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicySIExcludeList : ChildPolicyConfigResource + { + /// Contains the actual policy exclude list object. + /// + [Newtonsoft.Json.JsonProperty("PolicySIExcludeList", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicySIExcludeList PolicySIExcludeList { get; set; } + + + } + + /// Defining access of a Group from a LBVirtualServer and binding to + /// LBMonitorProfile. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBPool : PolicyConfigResource + { + /// In case of active healthchecks, load balancer itself initiates new + /// connections (or sends ICMP ping) to the servers periodically to check + /// their health, completely independent of any data traffic. Active + /// healthchecks are disabled by default and can be enabled for a server + /// pool by binding a health monitor to the pool. If multiple active + /// monitors are configured, the pool member status is UP only when the + /// health check status for all the monitors are UP. + /// + [Newtonsoft.Json.JsonProperty("active_monitor_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Active_monitor_paths { get; set; } + + /// TCP multiplexing allows the same TCP connection between load balancer + /// and the backend server to be used for sending multiple client requests + /// from different client TCP connections. + /// + [Newtonsoft.Json.JsonProperty("tcp_multiplexing_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Tcp_multiplexing_enabled { get; set; } = false; + + /// Depending on the topology, Source NAT (SNAT) may be required to ensure + /// traffic from the server destined to the client is received by the load + /// balancer. SNAT can be enabled per pool. If SNAT is not enabled for a + /// pool, then load balancer uses the client IP and port (spoofing) while + /// establishing connections to the servers. This is referred to as no-SNAT + /// or TRANSPARENT mode. By default Source NAT is enabled as LBSnatAutoMap. + /// + [Newtonsoft.Json.JsonProperty("snat_translation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LBSnatTranslation Snat_translation { get; set; } + + /// Load balancer pool support grouping object as dynamic pool members. + /// When member group is defined, members setting should not be specified. + /// + [Newtonsoft.Json.JsonProperty("member_group", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LBPoolMemberGroup Member_group { get; set; } + + /// Load Balancing algorithm chooses a server for each new connection by going + /// through the list of servers in the pool. Currently, following load balancing + /// algorithms are supported with ROUND_ROBIN as the default. + /// ROUND_ROBIN means that a server is selected in a round-robin fashion. The + /// weight would be ignored even if it is configured. + /// WEIGHTED_ROUND_ROBIN means that a server is selected in a weighted + /// round-robin fashion. Default weight of 1 is used if weight is not configured. + /// LEAST_CONNECTION means that a server is selected when it has the least + /// number of connections. The weight would be ignored even if it is configured. + /// Slow start would be enabled by default. + /// WEIGHTED_LEAST_CONNECTION means that a server is selected in a weighted + /// least connection fashion. Default weight of 1 is used if weight is not + /// configured. Slow start would be enabled by default. + /// IP_HASH means that consistent hash is performed on the source IP address of + /// the incoming connection. This ensures that the same client IP address will + /// always reach the same server as long as no server goes down or up. It may + /// be used on the Internet to provide a best-effort stickiness to clients + /// which refuse session cookies. + /// + [Newtonsoft.Json.JsonProperty("algorithm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBPoolAlgorithm? Algorithm { get; set; } = SDKGenerator.LBPoolAlgorithm.ROUND_ROBIN; + + /// The maximum number of TCP connections per pool that are idly kept alive + /// for sending future client requests. + /// + [Newtonsoft.Json.JsonProperty("tcp_multiplexing_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 2147483647D)] + public long? Tcp_multiplexing_number { get; set; } = 6L; + + /// Server pool consists of one or more pool members. Each pool member + /// is identified, typically, by an IP address and a port. + /// + [Newtonsoft.Json.JsonProperty("members", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Members { get; set; } + + /// Passive healthchecks are disabled by default and can be enabled by + /// attaching a passive health monitor to a server pool. + /// Each time a client connection to a pool member fails, its failed count + /// is incremented. For pools bound to L7 virtual servers, a connection is + /// considered to be failed and failed count is incremented if any TCP + /// connection errors (e.g. TCP RST or failure to send data) or SSL + /// handshake failures occur. For pools bound to L4 virtual servers, if no + /// response is received to a TCP SYN sent to the pool member or if a TCP + /// RST is received in response to a TCP SYN, then the pool member is + /// considered to have failed and the failed count is incremented. + /// + [Newtonsoft.Json.JsonProperty("passive_monitor_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Passive_monitor_path { get; set; } + + /// A pool is considered active if there are at least certain + /// minimum number of members. + /// + [Newtonsoft.Json.JsonProperty("min_active_members", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Min_active_members { get; set; } = 1L; + + + } + + /// A rule indicates the action to be performed for various types of traffic flowing between workload groups. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class BaseRule : PolicyConfigResource + { + /// Flag to disable the rule. Default is enabled. + [Newtonsoft.Json.JsonProperty("disabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Disabled { get; set; } = false; + + /// Define direction of traffic. + /// + [Newtonsoft.Json.JsonProperty("direction", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public BaseRuleDirection? Direction { get; set; } = SDKGenerator.BaseRuleDirection.IN_OUT; + + /// Type of IP packet that should be matched while enforcing the rule. + /// The value is set to IPV4_IPV6 for Layer3 rule if not specified. + /// For Layer2/Ether rule the value must be null. + /// + [Newtonsoft.Json.JsonProperty("ip_protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public BaseRuleIp_protocol? Ip_protocol { get; set; } + + /// Text for additional notes on changes. + [Newtonsoft.Json.JsonProperty("notes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(2048)] + public string Notes { get; set; } + + /// Flag to enable packet logging. Default is disabled. + [Newtonsoft.Json.JsonProperty("logged", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Logged { get; set; } = false; + + /// Holds the list of layer 7 service profile paths. These profiles accept + /// attributes and sub-attributes of various network services + /// (e.g. L4 AppId, encryption algorithm, domain name, etc) as key value + /// pairs. + /// + [Newtonsoft.Json.JsonProperty("profiles", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Profiles { get; set; } + + /// This is a unique 4 byte positive number that is assigned by the system. + /// This rule id is passed all the way down to the data path. The first 1GB + /// (1000 to 2^30) will be shared by GM and LM with zebra style striped + /// number space. For E.g 1000 to (1Million -1) by LM, (1M - 2M-1) by GM + /// and so on. + /// + [Newtonsoft.Json.JsonProperty("rule_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Rule_id { get; set; } + + /// A flag to indicate whether rule is a default rule. + [Newtonsoft.Json.JsonProperty("is_default", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_default { get; set; } + + /// User level field which will be printed in CLI and packet logs. + /// + [Newtonsoft.Json.JsonProperty("tag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tag { get; set; } + + /// We need paths as duplicate names may exist for groups under different + /// domains. Along with paths we support IP Address of type IPv4 and IPv6. + /// IP Address can be in one of the format(CIDR, IP Address, Range of IP Address). + /// In order to specify all groups, use the constant "ANY". This + /// is case insensitive. If "ANY" is used, it should be the ONLY element + /// in the group array. Error will be thrown if ANY is used in conjunction + /// with other values. + /// + [Newtonsoft.Json.JsonProperty("source_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Source_groups { get; set; } + + /// We need paths as duplicate names may exist for groups under different + /// domains. Along with paths we support IP Address of type IPv4 and IPv6. + /// IP Address can be in one of the format(CIDR, IP Address, Range of IP Address). + /// In order to specify all groups, use the constant "ANY". This + /// is case insensitive. If "ANY" is used, it should be the ONLY element + /// in the group array. Error will be thrown if ANY is used in conjunction + /// with other values. + /// + [Newtonsoft.Json.JsonProperty("destination_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Destination_groups { get; set; } + + /// In order to specify all services, use the constant "ANY". + /// This is case insensitive. If "ANY" is used, it should + /// be the ONLY element in the services array. Error will be thrown + /// if ANY is used in conjunction with other values. + /// + [Newtonsoft.Json.JsonProperty("services", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Services { get; set; } + + /// The list of policy paths where the rule is applied + /// LR/Edge/T0/T1/LRP etc. Note that a given rule can be applied + /// on multiple LRs/LRPs. + /// + [Newtonsoft.Json.JsonProperty("scope", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Scope { get; set; } + + /// In order to specify raw services this can be used, + /// along with services which contains path to services. + /// This can be empty or null. + /// + [Newtonsoft.Json.JsonProperty("service_entries", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Service_entries { get; set; } + + /// If set to true, the rule gets applied on all the groups that are + /// NOT part of the destination groups. If false, the rule applies to the + /// destination groups + /// + [Newtonsoft.Json.JsonProperty("destinations_excluded", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Destinations_excluded { get; set; } = false; + + /// This field is used to resolve conflicts between multiple + /// Rules under Security or Gateway Policy for a Domain + /// If no sequence number is specified in the payload, a value of 0 is + /// assigned by default. If there are multiple rules with the same + /// sequence number then their order is not deterministic. If a specific + /// order of rules is desired, then one has to specify unique sequence + /// numbers or use the POST request on the rule entity with + /// a query parameter action=revise to let the framework assign a + /// sequence number + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, int.MaxValue)] + public long? Sequence_number { get; set; } + + /// If set to true, the rule gets applied on all the groups that are + /// NOT part of the source groups. If false, the rule applies to the + /// source groups + /// + [Newtonsoft.Json.JsonProperty("sources_excluded", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Sources_excluded { get; set; } = false; + + + } + + /// Vidm Info + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VidmInfo + { + /// User's Full Name Or User Group's Display Name + [Newtonsoft.Json.JsonProperty("display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Display_name { get; set; } + + /// Type + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public VidmInfoType? Type { get; set; } + + /// Username Or Groupname + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } + + + } + + /// Advanced load balancer Pool object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBPool : PolicyConfigResource + { + /// The load balancing algorithm will pick a server within the + /// pool's list of available servers. + /// Values LB_ALGORITHM_NEAREST_SERVER and + /// LB_ALGORITHM_TOPOLOGY are only allowed for GSLB pool. + /// Enum options - LB_ALGORITHM_LEAST_CONNECTIONS, + /// LB_ALGORITHM_ROUND_ROBIN, LB_ALGORITHM_FASTEST_RESPONSE, + /// LB_ALGORITHM_CONSISTENT_HASH, LB_ALGORITHM_LEAST_LOAD, + /// LB_ALGORITHM_FEWEST_SERVERS, LB_ALGORITHM_RANDOM, + /// LB_ALGORITHM_FEWEST_TASKS, LB_ALGORITHM_NEAREST_SERVER, + /// LB_ALGORITHM_CORE_AFFINITY, LB_ALGORITHM_TOPOLOGY. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as + /// LB_ALGORITHM_LEAST_CONNECTIONS. + /// + [Newtonsoft.Json.JsonProperty("lb_algorithm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBPoolLb_algorithm? Lb_algorithm { get; set; } = SDKGenerator.ALBPoolLb_algorithm.LB_ALGORITHM_LEAST_CONNECTIONS; + + /// Do not translate the client's destination port when sending + /// the connection to the server. + /// The pool or servers specified service port will still be + /// used for health monitoring. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("use_service_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Use_service_port { get; set; } = false; + + /// Rewrite incoming Host Header to server name of the server + /// to which the request is proxied. + /// Enabling this feature rewrites Host Header for requests to + /// all servers in the pool. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("rewrite_host_header_to_server_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Rewrite_host_header_to_server_name { get; set; } = false; + + /// Enable common name check for server certificate. + /// If enabled and no explicit domain name is specified, Avi + /// will use the incoming host header to do the match. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("host_check_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Host_check_enabled { get; set; } = false; + + /// Connnection pool properties. + [Newtonsoft.Json.JsonProperty("conn_pool_properties", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBConnPoolProperties Conn_pool_properties { get; set; } + + /// If SNI server name is specified, rewrite incoming host + /// header to the SNI server name. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("rewrite_host_header_to_sni", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Rewrite_host_header_to_sni { get; set; } = false; + + /// Indicates whether existing IPs are disabled(false) or + /// deleted(true) on dns hostname refreshDetail -- On a dns + /// refresh, some IPs set on pool may no longer be returned by + /// the resolver. + /// These IPs are deleted from the pool when this knob is set + /// to true. + /// They are disabled, if the knob is set to false. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("delete_server_on_dns_refresh", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Delete_server_on_dns_refresh { get; set; } = true; + + /// Inline estimation of capacity of servers. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("capacity_estimation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Capacity_estimation { get; set; } = false; + + /// Rate Limit connections to each server. + [Newtonsoft.Json.JsonProperty("max_conn_rate_per_server", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBRateProfile Max_conn_rate_per_server { get; set; } + + /// The pool directs load balanced traffic to this list of + /// destination servers. + /// The servers can be configured by IP address, name, network + /// or via IP Address Group. + /// Maximum of 5000 items allowed. + /// + [Newtonsoft.Json.JsonProperty("servers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Servers { get; set; } + + /// Periodicity of feedback for fewest tasks server selection + /// algorithm. + /// Allowed values are 1-300. + /// Unit is SEC. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 10. + /// + [Newtonsoft.Json.JsonProperty("fewest_tasks_feedback_delay", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 300D)] + public long? Fewest_tasks_feedback_delay { get; set; } = 10L; + + /// Use list of servers from Ip Address Group. + /// It is a reference to an object of type IpAddrGroup. + /// + [Newtonsoft.Json.JsonProperty("ipaddrgroup_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ipaddrgroup_path { get; set; } + + /// Creator name. + [Newtonsoft.Json.JsonProperty("created_by", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Created_by { get; set; } + + /// The maximum time-to-first-byte of a server. + /// Allowed values are 1-5000. + /// Special values are 0 - 'Automatic'. + /// Unit is MILLISECONDS. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("capacity_estimation_ttfb_thresh", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 5000D)] + public long? Capacity_estimation_ttfb_thresh { get; set; } = 0L; + + /// Minimum number of servers in UP state for marking the pool + /// UP. + /// + [Newtonsoft.Json.JsonProperty("min_servers_up", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Min_servers_up { get; set; } + + /// Enable an action - Close Connection, HTTP Redirect or Local + /// HTTP Response - when a pool failure happens. + /// By default, a connection will be closed, in case the pool + /// experiences a failure. + /// + [Newtonsoft.Json.JsonProperty("fail_action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBFailAction Fail_action { get; set; } + + /// Allow server lookup by name. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("lookup_server_by_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Lookup_server_by_name { get; set; } = false; + + /// (internal-use) Networks designated as containing servers + /// for this pool. + /// The servers may be further narrowed down by a filter. + /// This field is used internally by Avi, not editable by the + /// user. + /// + [Newtonsoft.Json.JsonProperty("networks", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Networks { get; set; } + + /// Criteria used as a key for determining the hash between the + /// client and server. + /// Enum options - + /// LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS, + /// LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS_AND_PORT, + /// LB_ALGORITHM_CONSISTENT_HASH_URI, + /// LB_ALGORITHM_CONSISTENT_HASH_CUSTOM_HEADER, + /// LB_ALGORITHM_CONSISTENT_HASH_CUSTOM_STRING, + /// LB_ALGORITHM_CONSISTENT_HASH_CALLID. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as + /// LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS. + /// + [Newtonsoft.Json.JsonProperty("lb_algorithm_hash", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBPoolLb_algorithm_hash? Lb_algorithm_hash { get; set; } = SDKGenerator.ALBPoolLb_algorithm_hash.LB_ALGORITHM_CONSISTENT_HASH_SOURCE_IP_ADDRESS; + + /// Metadata pertaining to the service provided by this Pool. + /// In Openshift/Kubernetes environments, app metadata info is + /// stored. + /// Any user input to this field will be overwritten by Avi + /// Vantage. + /// + [Newtonsoft.Json.JsonProperty("service_metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Service_metadata { get; set; } + + /// Enable TLS SNI for server connections. + /// If disabled, Avi will not send the SNI extension as part of + /// the handshake. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("sni_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Sni_enabled { get; set; } = true; + + /// Fully qualified DNS hostname which will be used in the TLS + /// SNI extension in server connections if SNI is enabled. + /// If no value is specified, Avi will use the incoming host + /// header instead. + /// + [Newtonsoft.Json.JsonProperty("server_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Server_name { get; set; } + + /// This tier1_lr field should be set same as VirtualService + /// associated for NSX-T. + /// + [Newtonsoft.Json.JsonProperty("tier1_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tier1_path { get; set; } + + /// Comma separated list of domain names which will be used to + /// verify the common names or subject alternative names + /// presented by server certificates. + /// It is performed only when common name check + /// host_check_enabled is enabled. + /// + [Newtonsoft.Json.JsonProperty("domain_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Domain_name { get; set; } + + /// Enable HTTP/2 for traffic from VirtualService to all + /// backend servers in this pool. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("enable_http2", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_http2 { get; set; } = false; + + /// Synchronize Cisco APIC EPG members with pool servers. + [Newtonsoft.Json.JsonProperty("apic_epg_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Apic_epg_name { get; set; } + + /// Server reselect configuration for HTTP requests. + [Newtonsoft.Json.JsonProperty("server_reselect", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHTTPServerReselect Server_reselect { get; set; } + + /// If configured then Avi will trigger orchestration of pool + /// server creation and deletion. + /// It is a reference to an object of type + /// AutoScaleLaunchConfig. + /// + [Newtonsoft.Json.JsonProperty("autoscale_launch_config_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Autoscale_launch_config_path { get; set; } + + /// Minimum number of health monitors in UP state to mark + /// server UP. + /// + [Newtonsoft.Json.JsonProperty("min_health_monitors_up", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Min_health_monitors_up { get; set; } + + /// Degree of non-affinity for core affinity based server + /// selection. + /// Allowed values are 1-65535. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 2. + /// + [Newtonsoft.Json.JsonProperty("lb_algorithm_core_nonaffinity", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Lb_algorithm_core_nonaffinity { get; set; } = 2L; + + /// Inherited config from VirtualService. + [Newtonsoft.Json.JsonProperty("east_west", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? East_west { get; set; } + + /// The Passive monitor will monitor client to server + /// connections and requests and adjust traffic load to servers + /// based on successful responses. + /// This may alter the expected behavior of the LB method, such + /// as Round Robin. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("inline_health_monitor", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Inline_health_monitor { get; set; } = true; + + /// Traffic sent to servers will use this destination server + /// port unless overridden by the server's specific port + /// attribute. + /// The SSL checkbox enables Avi to server encryption. + /// Allowed values are 1-65535. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 80. + /// + [Newtonsoft.Json.JsonProperty("default_server_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Default_server_port { get; set; } = 80L; + + /// Minimum number of requests to be queued when pool is full. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 128. + /// + [Newtonsoft.Json.JsonProperty("request_queue_depth", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Request_queue_depth { get; set; } = 128L; + + /// Used to gracefully disable a server. + /// Virtual service waits for the specified time before + /// terminating the existing connections to the servers that + /// are disabled. + /// Allowed values are 1-7200. + /// Special values are 0 - 'Immediate', -1 - 'Infinite'. + /// Unit is MIN. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 1. + /// + [Newtonsoft.Json.JsonProperty("graceful_disable_timeout", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(-1D, 7200D)] + public long? Graceful_disable_timeout { get; set; } = 1L; + + /// Enable to do routing when this pool is selected to send + /// traffic. + /// No servers present in routing pool. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("routing_pool", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Routing_pool { get; set; } = false; + + /// When enabled, Avi re-encrypts traffic to the backend + /// servers. + /// The specific SSL profile defines which ciphers and SSL + /// versions will be supported. + /// It is a reference to an object of type SSLProfile. + /// + [Newtonsoft.Json.JsonProperty("ssl_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ssl_profile_path { get; set; } + + /// Verify server health by applying one or more health + /// monitors. + /// Active monitors generate synthetic traffic from each + /// Service Engine and mark a server up or down based on the + /// response. + /// The Passive monitor listens only to client to server + /// communication. + /// It raises or lowers the ratio of traffic destined to a + /// server based on successful responses. + /// It is a reference to an object of type HealthMonitor. + /// Maximum of 50 items allowed. + /// + [Newtonsoft.Json.JsonProperty("health_monitor_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Health_monitor_paths { get; set; } + + /// Specifies settings related to analytics. + /// It is a reference to an object of type AnalyticsProfile. + /// + [Newtonsoft.Json.JsonProperty("analytics_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Analytics_profile_path { get; set; } + + /// Server timeout value specifies the time within which a + /// server connection needs to be established and a + /// request-response exchange completes between AVI and the + /// server. + /// Value of 0 results in using default timeout of 60 minutes. + /// Allowed values are 0-3600000. + /// Unit is MILLISECONDS. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("server_timeout", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 3600000D)] + public long? Server_timeout { get; set; } = 0L; + + /// Enable request queue when pool is full. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("request_queue_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Request_queue_enabled { get; set; } = false; + + /// Reference to Server Autoscale Policy. + /// It is a reference to an object of type + /// ServerAutoScalePolicy. + /// + [Newtonsoft.Json.JsonProperty("autoscale_policy_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Autoscale_policy_path { get; set; } + + /// The maximum number of concurrent connections allowed to + /// each server within the pool. + /// NOTE applied value will be no less than the number of + /// service engines that the pool is placed on. + /// If set to 0, no limit is applied. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("max_concurrent_connections_per_server", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Max_concurrent_connections_per_server { get; set; } = 0L; + + /// Avi will validate the SSL certificate present by a server + /// against the selected PKI Profile. + /// It is a reference to an object of type PKIProfile. + /// + [Newtonsoft.Json.JsonProperty("pki_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Pki_profile_path { get; set; } + + /// A list of NSX Groups where the Servers for the Pool are + /// created . + /// + [Newtonsoft.Json.JsonProperty("group_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Group_paths { get; set; } + + /// Enable or disable the pool. + /// Disabling will terminate all open connections and pause + /// health monitors. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enabled { get; set; } = true; + + /// Network Ids for the launch configuration. + [Newtonsoft.Json.JsonProperty("autoscale_networks", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Autoscale_networks { get; set; } + + /// HTTP header name to be used for the hash key. + [Newtonsoft.Json.JsonProperty("lb_algorithm_consistent_hash_hdr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lb_algorithm_consistent_hash_hdr { get; set; } + + /// Duration for which new connections will be gradually ramped + /// up to a server recently brought online. + /// Useful for LB algorithms that are least connection based. + /// Allowed values are 1-300. + /// Special values are 0 - 'Immediate'. + /// Unit is MIN. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 10. + /// + [Newtonsoft.Json.JsonProperty("connection_ramp_duration", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 300D)] + public long? Connection_ramp_duration { get; set; } = 10L; + + /// Checksum of cloud configuration for Pool. + /// Internally set by cloud connector. + /// + [Newtonsoft.Json.JsonProperty("cloud_config_cksum", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Cloud_config_cksum { get; set; } + + /// Determines analytics settings for the pool. + [Newtonsoft.Json.JsonProperty("analytics_policy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPoolAnalyticsPolicy Analytics_policy { get; set; } + + /// Names of external auto-scale groups for pool servers. + /// Currently available only for AWS and Azure. + /// + [Newtonsoft.Json.JsonProperty("external_autoscale_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection External_autoscale_groups { get; set; } + + /// Persistence will ensure the same user sticks to the same + /// server for a desired duration of time. + /// It is a reference to an object of type + /// ApplicationPersistenceProfile. + /// + [Newtonsoft.Json.JsonProperty("application_persistence_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Application_persistence_profile_path { get; set; } + + /// Ignore the server port in building the load balancing + /// state.Applicable only for consistent hash load balancing + /// algorithm or Disable Port translation (use_service_port) use + /// cases. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("ignore_server_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Ignore_server_port { get; set; } = false; + + /// Manually select the networks and subnets used to provide + /// reachability to the pool's servers. + /// Specify the Subnet using the following syntax 10-1-1-0/24. + /// Use static routes in VRF configuration when pool servers + /// are not directly connected but routable from the service + /// engine. + /// + [Newtonsoft.Json.JsonProperty("placement_networks", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Placement_networks { get; set; } + + /// Service Engines will present a client SSL certificate to + /// the server. + /// It is a reference to an object of type + /// SSLKeyAndCertificate. + /// + [Newtonsoft.Json.JsonProperty("ssl_key_and_certificate_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ssl_key_and_certificate_path { get; set; } + + /// Indicates if the pool is a site-persistence pool. + [Newtonsoft.Json.JsonProperty("gslb_sp_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Gslb_sp_enabled { get; set; } + + + } + + /// Child wrapper for ALBL4PolicySet, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBL4PolicySet : ChildPolicyConfigResource + { + /// Contains the actual ALBL4PolicySet object. + /// + [Newtonsoft.Json.JsonProperty("ALBL4PolicySet", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBL4PolicySet ALBL4PolicySet { get; set; } + + + } + + /// Advanced load balancer HTTPResponseRule object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHTTPResponseRule + { + /// Location header rewrite action. + [Newtonsoft.Json.JsonProperty("loc_hdr_action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHTTPRewriteLocHdrAction Loc_hdr_action { get; set; } + + /// Index of the rule. + [Newtonsoft.Json.JsonProperty("index", Required = Newtonsoft.Json.Required.Always)] + public long Index { get; set; } + + /// Enable or disable the rule. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("enable", Required = Newtonsoft.Json.Required.Always)] + public bool Enable { get; set; } = true; + + /// Log HTTP request upon rule match. + [Newtonsoft.Json.JsonProperty("log", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Log { get; set; } + + /// Name of the rule. + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Name { get; set; } + + /// Log all HTTP headers upon rule match. + [Newtonsoft.Json.JsonProperty("all_headers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? All_headers { get; set; } + + /// Add match criteria to the rule. + [Newtonsoft.Json.JsonProperty("match", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBResponseMatchTarget Match { get; set; } + + /// HTTP header rewrite action. + [Newtonsoft.Json.JsonProperty("hdr_action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Hdr_action { get; set; } + + + } + + /// Paged collection of Segment Discovery Profile Binding Maps + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentDiscoveryProfileBindingMapListResult : ListResult + { + /// Segment Discovery Profile Binding Map list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Details of Container Ingress Policy. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ContainerIngressPolicy : DiscoveredResource + { + /// Network status of container ingress. + [Newtonsoft.Json.JsonProperty("network_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ContainerIngressPolicyNetwork_status? Network_status { get; set; } + + /// Identifier of the container cluster this ingress policy belongs to. + [Newtonsoft.Json.JsonProperty("container_cluster_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Container_cluster_id { get; set; } + + /// List of identifiers of the container application , on which ingress policy + /// is applied. e.g. IDs of all services on which the ingress is applied in + /// kubernetes. + /// + [Newtonsoft.Json.JsonProperty("container_application_ids", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Container_application_ids { get; set; } + + /// Array of additional specific properties of container ingress + /// in key-value format. + /// + [Newtonsoft.Json.JsonProperty("origin_properties", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Origin_properties { get; set; } + + /// Identifier of the container ingress policy. + [Newtonsoft.Json.JsonProperty("external_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string External_id { get; set; } + + /// Identifier of the project which this container ingress belongs to. + [Newtonsoft.Json.JsonProperty("container_project_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Container_project_id { get; set; } + + /// List of network errors related to container ingress. + [Newtonsoft.Json.JsonProperty("network_errors", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Network_errors { get; set; } + + /// Container ingress policy specification. + [Newtonsoft.Json.JsonProperty("spec", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Spec { get; set; } + + + } + + /// Child wrapper object for VirtualEndpoint used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildVirtualEndpoint : ChildPolicyConfigResource + { + /// Contains reference to actual VirtualEndpoint. + /// + [Newtonsoft.Json.JsonProperty("VirtualEndpoint", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public VirtualEndpoint VirtualEndpoint { get; set; } + + + } + + /// Paged Collection of flood protection profiles + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class FloodProtectionProfileListResult : ListResult + { + /// Flood protection profile list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Child wrapper object for IpAddressBlock, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildIpAddressBlock : ChildPolicyConfigResource + { + /// Contains the actual IpAddressBlock object + /// + [Newtonsoft.Json.JsonProperty("IpAddressBlock", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public IpAddressBlock IpAddressBlock { get; set; } + + + } + + /// Child wrapper for StaticRouteBfdPeer, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildStaticRouteBfdPeer : ChildPolicyConfigResource + { + /// Contains the actual StaticRouteBfdPeer object. + /// + [Newtonsoft.Json.JsonProperty("BfdPeer", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public StaticRouteBfdPeer BfdPeer { get; set; } + + + } + + /// Child wrapper for ALBTrafficCloneProfile, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBTrafficCloneProfile : ChildPolicyConfigResource + { + /// Contains the actual ALBTrafficCloneProfile object. + /// + [Newtonsoft.Json.JsonProperty("ALBTrafficCloneProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBTrafficCloneProfile ALBTrafficCloneProfile { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TraceflowObservationReplicationLogical : TraceflowObservation + { + /// The label of VTEP + [Newtonsoft.Json.JsonProperty("vtep_label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Vtep_label { get; set; } + + /// This field specifies the type of replication message TX_VTEP - Transmit replication to all VTEPs TX_MTEP - Transmit replication to all MTEPs RX - Receive replication + [Newtonsoft.Json.JsonProperty("replication_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceflowObservationReplicationLogicalReplication_type? Replication_type { get; set; } + + /// Local IP address of the component that replicates the packet. + [Newtonsoft.Json.JsonProperty("local_ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Local_ip_address { get; set; } + + /// The name of uplink + [Newtonsoft.Json.JsonProperty("uplink_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Uplink_name { get; set; } + + + } + + /// Advanced load balancer DnsSrvRdata object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsSrvRdata + { + /// Priority of the target hosting the service, low value + /// implies higher priority for this service record. + /// Allowed values are 0-65535. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("priority", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Priority { get; set; } = 0L; + + /// Service port. + /// Allowed values are 0-65535. + /// + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long Port { get; set; } + + /// Relative weight for service records with same priority, + /// high value implies higher preference for this service + /// record. + /// Allowed values are 0-65535. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("weight", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Weight { get; set; } = 0L; + + /// Canonical hostname, of the machine hosting the service, + /// with no trailing period. + /// 'default.host' is valid but not 'default.host.'. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as default.host. + /// + [Newtonsoft.Json.JsonProperty("target", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Target { get; set; } = "default.host"; + + + } + + /// Server SSL profile binding. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBServerSslProfileBinding + { + /// If server auth type is REQUIRED, server certificate must be signed by + /// one of the trusted Certificate Authorities (CAs), also referred to as + /// root CAs, whose self signed certificates are specified. + /// + [Newtonsoft.Json.JsonProperty("server_auth_ca_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Server_auth_ca_paths { get; set; } + + /// To support client authentication (load balancer acting as a client + /// authenticating to the backend server), client certificate can be + /// specified in the server-side SSL profile binding + /// + [Newtonsoft.Json.JsonProperty("client_certificate_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Client_certificate_path { get; set; } + + /// Server authentication mode. + [Newtonsoft.Json.JsonProperty("server_auth", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBServerSslProfileBindingServer_auth? Server_auth { get; set; } = SDKGenerator.LBServerSslProfileBindingServer_auth.AUTO_APPLY; + + /// Authentication depth is used to set the verification depth in the server + /// certificates chain. + /// + [Newtonsoft.Json.JsonProperty("certificate_chain_depth", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Certificate_chain_depth { get; set; } = 3L; + + /// A Certificate Revocation List (CRL) can be specified in the server-side + /// SSL profile binding to disallow compromised server certificates. + /// + [Newtonsoft.Json.JsonProperty("server_auth_crl_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Server_auth_crl_paths { get; set; } + + /// Server SSL profile defines reusable, application-independent server side + /// SSL properties. + /// + [Newtonsoft.Json.JsonProperty("ssl_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ssl_profile_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyTraceflowObservationRelayedLogical : TraceflowObservationRelayedLogical + { + /// This field specifies the logical component that relay service located on. + [Newtonsoft.Json.JsonProperty("logical_component_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Logical_component_path { get; set; } + + + } + + /// Child wrapper object for StaticRoutes, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildStaticRoutes : ChildPolicyConfigResource + { + /// Contains the actual StaticRoutes object. + /// + [Newtonsoft.Json.JsonProperty("StaticRoutes", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public StaticRoutes StaticRoutes { get; set; } + + + } + + /// LBServiceStatus on specific Enforcement Point + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("LBServiceStatus", typeof(LBServiceStatus))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBServiceStatusPerEP : PolicyRuntimeInfoPerEP + { + + } + + /// Directory domain synchronization statistics + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DirectoryDomainSyncStats + { + /// Directory domain previous sync status. It could be one of the following two states. + [Newtonsoft.Json.JsonProperty("prev_sync_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public DirectoryDomainSyncStatsPrev_sync_status? Prev_sync_status { get; set; } + + /// All the historical full sync are counted in calculating the average full sync time in milliseconds. + [Newtonsoft.Json.JsonProperty("avg_full_sync_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Avg_full_sync_time { get; set; } + + /// Directory domain previous sync type. It could be one of the following five states. Right after the directory domain is configured, this field is set to IDLE. + [Newtonsoft.Json.JsonProperty("prev_sync_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public DirectoryDomainSyncStatsPrev_sync_type? Prev_sync_type { get; set; } + + /// number of successful historical full sync initiated either by system or by API request. + [Newtonsoft.Json.JsonProperty("num_full_sync", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Num_full_sync { get; set; } + + /// Since what time the current state has begun. The time is expressed in millisecond epoch time. + [Newtonsoft.Json.JsonProperty("current_state_begin_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Current_state_begin_time { get; set; } + + /// All the historical delta sync are counted in calculating the average delta sync time in milliseconds. + [Newtonsoft.Json.JsonProperty("avg_delta_sync_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Avg_delta_sync_time { get; set; } + + /// Directory domain previous sync status error if last status was failure. + [Newtonsoft.Json.JsonProperty("prev_sync_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Prev_sync_error { get; set; } + + /// Current running state of the directory domain in synchronization life cycle. It could be one of the following five states. SELECTIVE_FULL_SYNC and SELECTIVE_DELTA_SYNC are sync states for selective sync. + [Newtonsoft.Json.JsonProperty("current_state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public DirectoryDomainSyncStatsCurrent_state? Current_state { get; set; } + + /// number of successful historical delta sync initiated either by system or by API request. + [Newtonsoft.Json.JsonProperty("num_delta_sync", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Num_delta_sync { get; set; } + + /// Directory domain previous sync ending time expressed in millisecond epoch time. + [Newtonsoft.Json.JsonProperty("prev_sync_end_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Prev_sync_end_time { get; set; } + + + } + + /// Represents configuration for dropdown filter widget. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DropdownFilterWidgetConfiguration : FilterWidgetConfiguration + { + /// Expression to specify default value of filter. + [Newtonsoft.Json.JsonProperty("default_value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Default_value { get; set; } + + /// Additional static items to be added in dropdown filter. Example can be 'ALL'. + [Newtonsoft.Json.JsonProperty("static_filters", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Static_filters { get; set; } + + /// Defines the item of a dropdown. + [Newtonsoft.Json.JsonProperty("dropdown_item", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public DropdownItem Dropdown_item { get; set; } = new DropdownItem(); + + /// If the condition is met then the static filter will be added. If no condition is provided, then the static filters will be applied unconditionally. + [Newtonsoft.Json.JsonProperty("static_filter_condition", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Static_filter_condition { get; set; } + + /// Placeholder message to be displayed in dropdown filter. + [Newtonsoft.Json.JsonProperty("placeholder_msg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Placeholder_msg { get; set; } + + + } + + /// Tier-0 vrf configuration. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Tier0VrfConfig + { + /// Route targets. + [Newtonsoft.Json.JsonProperty("route_targets", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Route_targets { get; set; } + + /// L3 VNI associated with the VRF for overlay traffic of ethernet virtual + /// private network (EVPN). It must be unique and available from the VNI + /// pool defined for EVPN service. It is required for VRF to participate + /// in the EVPN service in INLINE mode. + /// + [Newtonsoft.Json.JsonProperty("evpn_transit_vni", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Evpn_transit_vni { get; set; } + + /// Default tier0 path. Cannot be modified after realization. + /// + [Newtonsoft.Json.JsonProperty("tier0_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Tier0_path { get; set; } + + /// Route distinguisher with format in IPAddress:<number> or ASN:<number>. + [Newtonsoft.Json.JsonProperty("route_distinguisher", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Route_distinguisher { get; set; } + + /// It is required for VRF to participate in the EVPN service in ROUTE_SERVER + /// mode. + /// + [Newtonsoft.Json.JsonProperty("evpn_l2_vni_config", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public VrfEvpnL2VniConfig Evpn_l2_vni_config { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IcmpEchoRequestHeader + { + /// ICMP id + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Id { get; set; } = 0L; + + /// ICMP sequence number + [Newtonsoft.Json.JsonProperty("sequence", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Sequence { get; set; } = 0L; + + + } + + /// Consolidated Status of an intent object. Status Consolidation of an intent happens at + /// multiple levels: + /// - Per Enforcement Point: calculation of the consolidated status is performed using all + /// realized entities that the intent objet maps to on a specific enforcement point. + /// - Across Enforcement Points: calculation of the consolidated status is performend + /// aggregating the consolidated status from each enforcement point. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ConsolidatedStatus + { + /// Consolidated Realized Status of an intent object. + [Newtonsoft.Json.JsonProperty("consolidated_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ConsolidatedStatusConsolidated_status? Consolidated_status { get; set; } + + + } + + /// Remote file server + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RemoteFileServer + { + /// Remote server directory to copy bundle files to + [Newtonsoft.Json.JsonProperty("directory_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Directory_path { get; set; } + + /// Protocol to use to copy file + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public FileTransferProtocol Protocol { get; set; } = new FileTransferProtocol(); + + /// Server port + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Port { get; set; } = 22L; + + /// Remote server hostname or IP address + [Newtonsoft.Json.JsonProperty("server", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Server { get; set; } + + + } + + /// Nested expressions is a list of condition expressions that must follow the + /// below criteria: + /// 0. Only allowed expressions in a NestedExpression are Condition and + /// ConjunctionOperator. + /// 1. A non-empty expression list, must be of odd size. In a list, with + /// indices starting from 0, all condition expressions must be at even indices, + /// separated by the conjunction expressions AND at odd indices. + /// 2. There may be at most 5 condition expressions inside a list. + /// 3. NestedExpressions are homogeneous in nature, i.e, all expressions inside + /// a nested expression must have the same member type. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class NestedExpression : Expression + { + /// Expression. + [Newtonsoft.Json.JsonProperty("expressions", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + public System.Collections.Generic.ICollection Expressions { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer ResponseMatchTarget object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBResponseMatchTarget + { + /// Configure the HTTP status code(s). + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHTTPStatusMatch Status { get; set; } + + /// Configure client ip addresses. + [Newtonsoft.Json.JsonProperty("client_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBIpAddrMatch Client_ip { get; set; } + + /// Configure the type of HTTP protocol. + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBProtocolMatch Protocol { get; set; } + + /// Configure HTTP headers. + [Newtonsoft.Json.JsonProperty("hdrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Hdrs { get; set; } + + /// Configure the location header. + [Newtonsoft.Json.JsonProperty("loc_hdr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBLocationHdrMatch Loc_hdr { get; set; } + + /// Configure the host header. + [Newtonsoft.Json.JsonProperty("host_hdr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHostHdrMatch Host_hdr { get; set; } + + /// Configure virtual service ports. + [Newtonsoft.Json.JsonProperty("vs_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPortMatch Vs_port { get; set; } + + /// Configure the HTTP headers in response. + [Newtonsoft.Json.JsonProperty("rsp_hdrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Rsp_hdrs { get; set; } + + /// Configure HTTP cookie(s). + [Newtonsoft.Json.JsonProperty("cookie", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBCookieMatch Cookie { get; set; } + + /// Configure versions of the HTTP protocol. + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHTTPVersionMatch Version { get; set; } + + /// Configure request query. + [Newtonsoft.Json.JsonProperty("query", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBQueryMatch Query { get; set; } + + /// Configure request paths. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPathMatch Path { get; set; } + + /// Configure HTTP methods. + [Newtonsoft.Json.JsonProperty("method", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBMethodMatch Method { get; set; } + + + } + + /// Group. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Group : PolicyConfigResource + { + /// Realization state of this group + [Newtonsoft.Json.JsonProperty("state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public GroupState? State { get; set; } + + /// Extended Expression allows additional higher level context to be + /// specified for grouping criteria. (e.g. user AD group) + /// This field allow users to specified user context as the source of a + /// firewall rule for IDFW feature. + /// Current version only support a single IdentityGroupExpression. In the + /// future, this might expand to support other conjunction and non-conjunction + /// expression. + /// + /// The extended expression list must follow below criteria: + /// 1. Contains a single IdentityGroupExpression. No conjunction expression is + /// supported. + /// 2. No other non-conjunction expression is supported, except for + /// IdentityGroupExpression. + /// 3. Each expression must be a valid Expression. See the definition of + /// the Expression type for more information. + /// 4. Extended expression are implicitly AND with expression. + /// 5. No nesting can be supported if this value is used. + /// 6. If a Group is using extended expression, this group must be the only + /// member in the source field of an communication map. + /// + [Newtonsoft.Json.JsonProperty("extended_expression", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Extended_expression { get; set; } + + /// The expression list must follow below criteria: + /// 1. A non-empty expression list, must be of odd size. In a list, with + /// indices starting from 0, all non-conjunction expressions must be at + /// even indices, separated by a conjunction expression at odd + /// indices. + /// 2. The total of ConditionExpression and NestedExpression in a list + /// should not exceed 5. + /// 3. The total of IPAddressExpression, MACAddressExpression, external + /// IDs in an ExternalIDExpression and paths in a PathExpression must not exceed + /// 500. + /// 4. Each expression must be a valid Expression. See the definition of + /// the Expression type for more information. + /// + [Newtonsoft.Json.JsonProperty("expression", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Expression { get; set; } + + /// If true, indicates that this is a remote reference group. Such group will have + /// span different from the its parent domain. Default value is false. + /// + [Newtonsoft.Json.JsonProperty("reference", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Reference { get; set; } = false; + + + } + + /// LBAccessListControl is used to define how IP access list control can filter + /// the connections from clients. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBAccessListControl + { + /// ALLOW means connections matching grouping object IP list are allowed + /// and requests not matching grouping object IP list are dropped. + /// DROP means connections matching grouping object IP list are dropped + /// and requests not matching grouping object IP list are allowed. + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBAccessListControlAction Action { get; set; } + + /// The path of grouping object which defines the IP addresses or + /// ranges to match the client IP. + /// + [Newtonsoft.Json.JsonProperty("group_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Group_path { get; set; } + + /// The enabled flag indicates whether to enable access list control option. + /// It is false by default. + /// + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enabled { get; set; } = false; + + + } + + /// Aggregate of IPSec VPN Session Statistics across Enforcement Points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateIPSecVpnSessionStatistics : AggregatePolicyRuntimeInfo + { + /// List of IPSec VPN Session Statistics per Enforcement Point. + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Advanced load balancer SSLRating object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBSSLRating + { + /// Enum options - SSL_SCORE_NOT_SECURE, SSL_SCORE_VERY_BAD, + /// SSL_SCORE_BAD, SSL_SCORE_AVERAGE, SSL_SCORE_GOOD, + /// SSL_SCORE_EXCELLENT. + /// + [Newtonsoft.Json.JsonProperty("performance_rating", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBSSLRatingPerformance_rating? Performance_rating { get; set; } + + /// security_score of SSLRating. + [Newtonsoft.Json.JsonProperty("security_score", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Security_score { get; set; } + + /// Enum options - SSL_SCORE_NOT_SECURE, SSL_SCORE_VERY_BAD, + /// SSL_SCORE_BAD, SSL_SCORE_AVERAGE, SSL_SCORE_GOOD, + /// SSL_SCORE_EXCELLENT. + /// + [Newtonsoft.Json.JsonProperty("compatibility_rating", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBSSLRatingCompatibility_rating? Compatibility_rating { get; set; } + + + } + + /// This object holds the information of the task. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyTask : TaskProperties + { + /// This property holds the reason of the task failure, if any. + /// + [Newtonsoft.Json.JsonProperty("failure_msg", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Failure_msg { get; set; } + + + } + + /// The server will populate this field when returing the resource. Ignored on PUT and POST. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SelfResourceLink : ResourceLink + { + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyTraceflowObservationDelivered : TraceflowObservationDelivered + { + /// The path of the segment port or router port into which the traceflow packet was delivered + [Newtonsoft.Json.JsonProperty("segment_port_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Segment_port_path { get; set; } + + + } + + /// Session cookie time. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBSessionCookieTime : LBCookieTime + { + /// Instead of using HTTP Cookie max-age and relying on client to expire + /// the cookie, max idle time and/or max lifetime of the cookie can be used. + /// Max idle time, if configured, specifies the maximum interval the cookie + /// is valid for from the last time it was seen in a request. + /// It is available for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_max_idle", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Cookie_max_idle { get; set; } + + /// Max life time, if configured, specifies the maximum interval the cookie + /// is valid for from the first time the cookie was seen in a request. + /// It is available for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_max_life", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 2147483647D)] + public long? Cookie_max_life { get; set; } + + + } + + /// IPSec VPN tunnel profile is a reusable profile that captures phase two negotiation parameters and IPSec tunnel properties. Any changes affects all IPSec VPN sessions consuming this profile. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnTunnelProfile : PolicyConfigResource + { + /// Collection of type specific properties. As of now, to hold + /// encapsulation mode and transform protocol. + /// + [Newtonsoft.Json.JsonProperty("extended_attributes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Extended_attributes { get; set; } + + /// Algorithm to be used for message digest. Default digest algorithm is implicitly covered by default encryption algorithm "AES_GCM_128". + [Newtonsoft.Json.JsonProperty("digest_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Digest_algorithms { get; set; } + + /// Encryption algorithm to encrypt/decrypt the messages exchanged between IPSec VPN initiator and responder during tunnel negotiation. Default is AES_GCM_128. + [Newtonsoft.Json.JsonProperty("encryption_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Encryption_algorithms { get; set; } + + /// If true, perfect forward secrecy (PFS) is enabled. + [Newtonsoft.Json.JsonProperty("enable_perfect_forward_secrecy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_perfect_forward_secrecy { get; set; } = true; + + /// Diffie-Hellman group to be used if PFS is enabled. Default is GROUP14. + [Newtonsoft.Json.JsonProperty("dh_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Dh_groups { get; set; } + + /// Defragmentation policy helps to handle defragmentation bit present in the inner packet. COPY copies the defragmentation bit from the inner IP packet into the outer packet. CLEAR ignores the defragmentation bit present in the inner packet. + [Newtonsoft.Json.JsonProperty("df_policy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IPSecVpnTunnelProfileDf_policy? Df_policy { get; set; } = SDKGenerator.IPSecVpnTunnelProfileDf_policy.COPY; + + /// SA life time specifies the expiry time of security association. Default is 3600 seconds. + [Newtonsoft.Json.JsonProperty("sa_life_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(900D, 31536000D)] + public long? Sa_life_time { get; set; } = 3600L; + + + } + + /// Paged collection of port security profile binding maps + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PortSecurityProfileBindingMapListResult : ListResult + { + /// Port security profile binding map list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Represents a label-value pair. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PropertyItem + { + /// Represents field value of the property. + [Newtonsoft.Json.JsonProperty("field", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Field { get; set; } + + /// If true, separates this property in a widget. + [Newtonsoft.Json.JsonProperty("separator", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Separator { get; set; } = false; + + /// Hyperlink of the specified UI page that provides details. This will be linked with value of the property. + [Newtonsoft.Json.JsonProperty("navigation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Navigation { get; set; } + + /// Render configuration to be applied, if any. + [Newtonsoft.Json.JsonProperty("render_configuration", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Render_configuration { get; set; } + + /// Data type of the field. + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PropertyItemType Type { get; set; } = SDKGenerator.PropertyItemType.String; + + /// Set to true if the field is a heading. Default is false. + [Newtonsoft.Json.JsonProperty("heading", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Heading { get; set; } = false; + + /// If the condition is met then the property will be displayed. Examples of expression syntax are provided under 'example_request' section of 'CreateWidgetConfiguration' API. + [Newtonsoft.Json.JsonProperty("condition", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Condition { get; set; } + + /// If a field represents a heading, then label is not needed + [Newtonsoft.Json.JsonProperty("label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Label Label { get; set; } + + + } + + /// Render configuration to be applied to the widget. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RenderConfiguration + { + /// The color to use when rendering an entity. For example, set color as 'RED' to render a portion of donut in red. + [Newtonsoft.Json.JsonProperty("color", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public RenderConfigurationColor? Color { get; set; } + + /// If the condition is met then the rendering specified for the condition will be applied. Examples of expression syntax are provided under 'example_request' section of 'CreateWidgetConfiguration' API. + [Newtonsoft.Json.JsonProperty("condition", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Condition { get; set; } + + /// If specified, overrides the field value. This can be used to display a meaningful value in situations where field value is not available or not configured. + [Newtonsoft.Json.JsonProperty("display_value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Display_value { get; set; } + + /// Multi-line text to be shown on tooltip while hovering over the UI element if the condition is met. + [Newtonsoft.Json.JsonProperty("tooltip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Tooltip { get; set; } + + /// Icons to be applied at dashboard for widgets and UI elements. + [Newtonsoft.Json.JsonProperty("icons", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Icons { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class InterfaceArpTableInCsvFormat : CsvListResult + { + /// Timestamp when the data was last updated; unset if data source has never updated the data. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// OSPF Routes. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class OspfRoutesListResult : ListResult + { + /// Policy path to Tier0 gateway. + /// + [Newtonsoft.Json.JsonProperty("gateway_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Gateway_path { get; set; } + + /// Timestamp when the data was last updated, unset if data source has never updated the data. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Represents which federated global resources have been overrriden on + /// a specific Site. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class OverriddenResource : PolicyConfigResource + { + /// Site path to the specific site that has overridden the global resource. + /// + [Newtonsoft.Json.JsonProperty("site_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Site_path { get; set; } + + /// Policy resource path of the overridden resource. + /// + [Newtonsoft.Json.JsonProperty("intent_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Intent_path { get; set; } + + + } + + /// A rule indicates the action to be performed for various types of traffic flowing between workload groups. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Rule : BaseRule + { + /// The action to be applied to all the services + /// The JUMP_TO_APPLICATION action is only supported for rules created in the + /// Environment category. Once a match is hit then the rule processing + /// will jump to the rules present in the Application category, skipping + /// all further rules in the Environment category. If no rules match in + /// the Application category then the default application rule will be hit. + /// This is applicable only for DFW. + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public RuleAction? Action { get; set; } + + + } + + /// Advanced load balancer CompressionFilter object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBCompressionFilter + { + /// It is a reference to an object of type IpAddrGroup. + [Newtonsoft.Json.JsonProperty("ip_addrs_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ip_addrs_path { get; set; } + + /// Placeholder for description of property ip_addr_ranges of + /// obj type CompressionFilter field type str type array. + /// + [Newtonsoft.Json.JsonProperty("ip_addr_ranges", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_addr_ranges { get; set; } + + /// It is a reference to an object of type StringGroup. + [Newtonsoft.Json.JsonProperty("devices_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Devices_path { get; set; } + + /// Name of the object. + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Name { get; set; } + + /// Number of index. + [Newtonsoft.Json.JsonProperty("index", Required = Newtonsoft.Json.Required.Always)] + public long Index { get; set; } + + /// Placeholder for description of property ip_addr_prefixes of + /// obj type CompressionFilter field type str type array. + /// + [Newtonsoft.Json.JsonProperty("ip_addr_prefixes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_addr_prefixes { get; set; } + + /// Enum options - AGGRESSIVE_COMPRESSION, NORMAL_COMPRESSION, + /// NO_COMPRESSION. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as NORMAL_COMPRESSION. + /// + [Newtonsoft.Json.JsonProperty("level", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBCompressionFilterLevel Level { get; set; } = SDKGenerator.ALBCompressionFilterLevel.NORMAL_COMPRESSION; + + /// Placeholder for description of property ip_addrs of obj + /// type CompressionFilter field type str type array. + /// + [Newtonsoft.Json.JsonProperty("ip_addrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_addrs { get; set; } + + /// Whether to apply Filter when group criteria is matched or + /// not. + /// Enum options - IS_IN, IS_NOT_IN. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as IS_IN. + /// + [Newtonsoft.Json.JsonProperty("match", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBCompressionFilterMatch? Match { get; set; } = SDKGenerator.ALBCompressionFilterMatch.IS_IN; + + /// Placeholder for description of property user_agent of obj + /// type CompressionFilter field type str type array. + /// + [Newtonsoft.Json.JsonProperty("user_agent", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection User_agent { get; set; } + + + } + + /// Local endpoint represents a tier-0/tier-1 on which tunnel needs to be terminated. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnLocalEndpoint : PolicyConfigResource + { + /// IPV4 Address of local endpoint. + [Newtonsoft.Json.JsonProperty("local_address", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Local_address { get; set; } + + /// List of policy paths referencing certificate authority (CA) to verify peer certificates. + [Newtonsoft.Json.JsonProperty("trust_ca_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Trust_ca_paths { get; set; } + + /// Local identifier. + [Newtonsoft.Json.JsonProperty("local_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Local_id { get; set; } + + /// List of policy paths referencing certificate revocation list (CRL) to peer certificates. + [Newtonsoft.Json.JsonProperty("trust_crl_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Trust_crl_paths { get; set; } + + /// Policy path referencing site certificate. + [Newtonsoft.Json.JsonProperty("certificate_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Certificate_path { get; set; } + + + } + + /// A ServiceEntry that represents nesting service + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class NestedServiceServiceEntry : ServiceEntry + { + /// path of nested service + [Newtonsoft.Json.JsonProperty("nested_service_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Nested_service_path { get; set; } + + + } + + /// Directory Domain + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("DirectoryAdDomain", typeof(DirectoryAdDomain))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DirectoryDomain : ManagedResource + { + /// Directory domain LDAP servers' information including host, name, port, protocol and so on. + [Newtonsoft.Json.JsonProperty("ldap_servers", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(50)] + public System.Collections.Generic.ICollection Ldap_servers { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Directory domain name which best describes the domain. It could be unique fqdn name or it could also be descriptive. There is no unique contraint for domain name among different domains. + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Name { get; set; } + + + } + + /// PriorityLabelsApiResponse + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBPriorityLabelsApiResponse : ListResult + { + /// count + /// + [Newtonsoft.Json.JsonProperty("count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Count { get; set; } + + /// Array of PriorityLabels + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Child wrapper for ALBErrorPageProfile, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBErrorPageProfile : ChildPolicyConfigResource + { + /// Contains the actual ALBErrorPageProfile object. + /// + [Newtonsoft.Json.JsonProperty("ALBErrorPageProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBErrorPageProfile ALBErrorPageProfile { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentCrossSiteTrafficStats + { + /// Total sent data counters. + [Newtonsoft.Json.JsonProperty("tx_stats", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public InterSitePortCounters Tx_stats { get; set; } + + /// Timestamp when the l2 forwarder statistics was last updated. + /// + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + /// Total received data counters. + [Newtonsoft.Json.JsonProperty("rx_stats", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public InterSitePortCounters Rx_stats { get; set; } + + /// Policy path of Segment to attach interface. + /// + [Newtonsoft.Json.JsonProperty("segment_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Segment_path { get; set; } + + + } + + /// Child wrapper object for SecurityZoneRule, used in hierarchical API This type is deprecated. Use the type ChildRule instead. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildSecurityZoneRule : ChildPolicyConfigResource + { + /// Contains the actual SecurityZoneRule object. + /// + [Newtonsoft.Json.JsonProperty("SecurityZoneRule", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public SecurityZoneRule SecurityZoneRule { get; set; } + + + } + + /// Header of a widget that provides additional information. This will be shown at the container level. It includes details as label value pairs. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Header + { + /// Alignment of header labels. + [Newtonsoft.Json.JsonProperty("content_alignment", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public HeaderContent_alignment? Content_alignment { get; set; } = SDKGenerator.HeaderContent_alignment.RIGHT; + + /// If the condition is met then the header will be applied. Examples of expression syntax are provided under 'example_request' section of 'CreateWidgetConfiguration' API. + [Newtonsoft.Json.JsonProperty("condition", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Condition { get; set; } + + /// An array of label-value properties. + [Newtonsoft.Json.JsonProperty("sub_headers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Sub_headers { get; set; } + + + } + + /// Routing table entry. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RoutingEntry + { + /// Logical router component(Service Router/Distributed Router) id + [Newtonsoft.Json.JsonProperty("lr_component_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lr_component_id { get; set; } + + /// Next hop address. + /// + [Newtonsoft.Json.JsonProperty("next_hop", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Next_hop { get; set; } + + /// Logical router component(Service Router/Distributed Router) type + [Newtonsoft.Json.JsonProperty("lr_component_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lr_component_type { get; set; } + + /// Network CIDR. + /// + [Newtonsoft.Json.JsonProperty("network", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Network { get; set; } + + /// Route type in routing table. + /// t0c - Tier-0 Connected + /// t0s - Tier-0 Static + /// b - BGP + /// t0n - Tier-0 NAT + /// t1s - Tier-1 Static + /// t1c - Tier-1 Connected + /// t1n: Tier-1 NAT + /// t1l: Tier-1 LB VIP + /// t1ls: Tier-1 LB SNAT + /// t1d: Tier-1 DNS FORWARDER + /// t1ipsec: Tier-1 IPSec + /// isr: Inter-SR + /// + [Newtonsoft.Json.JsonProperty("route_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Route_type { get; set; } + + /// The policy path of the interface which is used as the next hop + [Newtonsoft.Json.JsonProperty("interface", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Interface { get; set; } + + /// Admin distance. + /// + [Newtonsoft.Json.JsonProperty("admin_distance", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Admin_distance { get; set; } + + + } + + /// Advanced load balancer L4Rule object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBL4Rule + { + /// Action to be performed upon successful rule match. + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBL4RuleAction Action { get; set; } + + /// Index of the rule. + [Newtonsoft.Json.JsonProperty("index", Required = Newtonsoft.Json.Required.Always)] + public long Index { get; set; } + + /// Enable or disable the rule. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("enable", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable { get; set; } = true; + + /// Name of the rule. + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Name { get; set; } + + /// Match criteria of the rule. + [Newtonsoft.Json.JsonProperty("match", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBL4RuleMatchTarget Match { get; set; } + + + } + + /// Advanced load balancer AuthProfileHTTPClientParams object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAuthProfileHTTPClientParams + { + /// The max allowed length of time a clients authentication is + /// cached. + /// Allowed values are 1-30. + /// Unit is SEC. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 5. + /// + [Newtonsoft.Json.JsonProperty("cache_expiration_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 30D)] + public long? Cache_expiration_time { get; set; } = 5L; + + /// A user should be a member of these groups. + /// Each group is defined by the DN. + /// For example, + /// CN=testgroup,OU=groups,dc=example,dc=avinetworks,DC=com. + /// + [Newtonsoft.Json.JsonProperty("require_user_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Require_user_groups { get; set; } + + /// Insert an HTTP header. + /// This field is used to define the header name. + /// The value of the header is set to the client's HTTP Auth + /// user ID. + /// + [Newtonsoft.Json.JsonProperty("request_header", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Request_header { get; set; } + + + } + + /// Gives the Statistics of a NAT rule. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyNatRuleStatisticsPerTransportNode : PolicyNATRuleCounters + { + /// Timestamp when the data was last updated. + /// + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + /// Policy path of the Edge Node. + /// + [Newtonsoft.Json.JsonProperty("transport_node_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Transport_node_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VrfL2VniConfig + { + /// L2 VNI associated with the VRF. It must be unique and available from the VNI + /// pool defined for EVPN service. + /// + [Newtonsoft.Json.JsonProperty("l2_vni", Required = Newtonsoft.Json.Required.Always)] + public long L2_vni { get; set; } + + /// Route targets. + [Newtonsoft.Json.JsonProperty("route_targets", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Route_targets { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// This is a 64 bit number which disambiguates overlapping logical networks, with + /// format in IPAddress:<number> or ASN:<number>. + /// + [Newtonsoft.Json.JsonProperty("route_distinguisher", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Route_distinguisher { get; set; } + + + } + + /// Collection of OSPF area configuration. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class OspfAreaConfigListResult : ListResult + { + /// OSPF area configuration list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Vlan-Vni mapping pair resource in EvpnTenantConfig for ROUTE-SERVER Evpn mode + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VlanVniRangePair + { + /// List of VNI ids and VNI ranges (specified with '-'). The vni id is used for VXLAN transmission for a given tenant Vlan ID in ROUTE-SERVER Evpn. + [Newtonsoft.Json.JsonProperty("vnis", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Vnis { get; set; } + + /// List of VLAN ids and VLAN ranges (specified with '-'). + [Newtonsoft.Json.JsonProperty("vlans", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Vlans { get; set; } + + + } + + /// Duplicate address binding information + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DuplicateAddressBindingEntry : AddressBindingEntry + { + /// Provides the ID of the port on which the same address bidning exists + /// + [Newtonsoft.Json.JsonProperty("conflicting_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Conflicting_port { get; set; } + + + } + + /// Contains IPv6 related discovery options. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPv6DiscoveryOptions + { + /// Indicates ND snooping options + [Newtonsoft.Json.JsonProperty("nd_snooping_config", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public NdSnoopingConfig Nd_snooping_config { get; set; } + + /// Enable this method will snoop the DHCPv6 message transaction + /// which a VM makes with a DHCPv6 server. From the transaction, we + /// learn the IPv6 addresses assigned by the DHCPv6 server to this VM + /// along with its lease time. + /// + [Newtonsoft.Json.JsonProperty("dhcp_snooping_v6_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Dhcp_snooping_v6_enabled { get; set; } = false; + + /// Enable this method will learn the IPv6 addresses which are + /// configured on interfaces of a VM with the help of the VMTools software. + /// + [Newtonsoft.Json.JsonProperty("vmtools_v6_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Vmtools_v6_enabled { get; set; } = false; + + + } + + /// A CRL is a time-stamped list identifying revoked certificates. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class X509Crl + { + /// Next update time for the CRL. + [Newtonsoft.Json.JsonProperty("next_update", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Next_update { get; set; } + + /// CRL's version number either 1 or 2. + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Version { get; set; } + + /// List of X509CrlEntry. + [Newtonsoft.Json.JsonProperty("crl_entries", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Crl_entries { get; set; } + + /// Issuer's distinguished name. (DN) + [Newtonsoft.Json.JsonProperty("issuer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Issuer { get; set; } + + + } + + /// Collection of IP Addresses. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPAddressList + { + /// The array contains IP addresses. + [Newtonsoft.Json.JsonProperty("ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(4000)] + public System.Collections.Generic.ICollection Ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Ipv6NdraProfile : PolicyConfigResource + { + /// RA Mode + [Newtonsoft.Json.JsonProperty("ra_mode", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public Ipv6NdraProfileRa_mode Ra_mode { get; set; } = SDKGenerator.Ipv6NdraProfileRa_mode.SLAAC_DNS_THROUGH_RA; + + /// RA Configuration + [Newtonsoft.Json.JsonProperty("ra_config", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public RAConfig Ra_config { get; set; } = new RAConfig(); + + /// The time, in milliseconds, between retransmitted neighbour + /// solicitation messages. A value of 0 means unspecified. + /// + [Newtonsoft.Json.JsonProperty("retransmit_interval", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 4294967295D)] + public long? Retransmit_interval { get; set; } = 1000L; + + /// DNS Configurations + [Newtonsoft.Json.JsonProperty("dns_config", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public RaDNSConfig Dns_config { get; set; } + + /// Neighbour reachable time duration in milliseconds. + /// A value of 0 means unspecified. + /// + [Newtonsoft.Json.JsonProperty("reachable_timer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 3600000D)] + public long? Reachable_timer { get; set; } = 0L; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MulticastRouteCsvRecord : CsvRecord + { + /// Transport node uuid or policy path. + [Newtonsoft.Json.JsonProperty("transport_node", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Transport_node { get; set; } + + /// Time for which multicast route entry is active. + [Newtonsoft.Json.JsonProperty("uptime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Uptime { get; set; } + + /// Multicast group address. + [Newtonsoft.Json.JsonProperty("group", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Group { get; set; } + + /// Time-to-live value for multicast packets. + [Newtonsoft.Json.JsonProperty("ttl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Ttl { get; set; } + + /// Ingress interface on which multicast traffic is learned. + [Newtonsoft.Json.JsonProperty("input_interface", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Input_interface { get; set; } + + /// Multicast source address. + [Newtonsoft.Json.JsonProperty("source_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Source_address { get; set; } + + /// Egress interface on which multicast traffic is forwarded. + [Newtonsoft.Json.JsonProperty("output_interface", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Output_interface { get; set; } + + + } + + /// Realized NSService + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedNSService : RealizedService + { + /// Realized nsservice type + [Newtonsoft.Json.JsonProperty("service_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public RealizedNSServiceService_type? Service_type { get; set; } + + + } + + /// Segment configuration to attach workloads. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Segment : PolicyConfigResource + { + /// Subnet configuration. Max 1 subnet + [Newtonsoft.Json.JsonProperty("subnets", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Subnets { get; set; } + + /// Policy path to the connecting Tier-0 or Tier-1. + /// Valid only for segments created under Infra. + /// This field can only be used for overlay segments. + /// VLAN backed segments cannot have connectivity path set. + /// + [Newtonsoft.Json.JsonProperty("connectivity_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Connectivity_path { get; set; } + + /// This property could be used for vendor specific configuration in key value + /// string pairs, the setting in extra_configs will be automatically inheritted + /// by segment ports in the Segment. + /// + [Newtonsoft.Json.JsonProperty("extra_configs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Extra_configs { get; set; } + + /// Advanced configuration for Segment. + /// + [Newtonsoft.Json.JsonProperty("advanced_config", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public SegmentAdvancedConfig Advanced_config { get; set; } + + /// Static address binding used for the Segment. This field is deprecated and will be removed in a future release. Please use address_bindings in SegmentPort to configure static bindings. + [Newtonsoft.Json.JsonProperty("address_bindings", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(512)] + public System.Collections.Generic.ICollection Address_bindings { get; set; } + + /// Additional config for federation. + [Newtonsoft.Json.JsonProperty("federation_config", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public FederationConnectivityConfig Federation_config { get; set; } + + /// Policy path to the EvpnTenantConfig resource. Supported only for Route-Server Evpn Mode. + /// Supported only for Overlay Segments. This will be populated for both Parent and Child segments + /// participating in Evpn Route-Server Mode. + /// + [Newtonsoft.Json.JsonProperty("evpn_tenant_config_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Evpn_tenant_config_path { get; set; } + + /// Mac pool id that associated with a Segment. + [Newtonsoft.Json.JsonProperty("mac_pool_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Mac_pool_id { get; set; } + + /// Multiple distinct L2 bridge profiles can be configured. + [Newtonsoft.Json.JsonProperty("bridge_profiles", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Bridge_profiles { get; set; } + + /// VLAN ids for a VLAN backed Segment. + /// Can be a VLAN id or a range of VLAN ids specified with '-' in between. + /// + [Newtonsoft.Json.JsonProperty("vlan_ids", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Vlan_ids { get; set; } + + /// DNS domain name + [Newtonsoft.Json.JsonProperty("domain_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Domain_name { get; set; } + + /// Used for overlay connectivity of segments. The overlay_id + /// should be allocated from the pool as definied by enforcement-point. + /// If not provided, it is auto-allocated from the default pool on the + /// enforcement-point. + /// + [Newtonsoft.Json.JsonProperty("overlay_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 2147483647D)] + public long? Overlay_id { get; set; } + + /// Policy path to DHCP server or relay configuration to use for all + /// IPv4 & IPv6 subnets configured on this segment. + /// + [Newtonsoft.Json.JsonProperty("dhcp_config_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dhcp_config_path { get; set; } + + /// This property is deprecated. The property will continue to work as + /// expected for existing segments. The segments that are newly created + /// with ls_id will be ignored. + /// Sepcify pre-creted logical switch id for Segment. + /// + [Newtonsoft.Json.JsonProperty("ls_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ls_id { get; set; } + + /// Flag to indicate if the Segment is a Child-Segment of type EVPN. + [Newtonsoft.Json.JsonProperty("evpn_segment", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Evpn_segment { get; set; } + + /// Represents Desired state of the Segment + [Newtonsoft.Json.JsonProperty("admin_state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public SegmentAdmin_state? Admin_state { get; set; } = SDKGenerator.SegmentAdmin_state.UP; + + /// Policy path to metadata proxy configuration. Multiple distinct MD proxies can be configured. + [Newtonsoft.Json.JsonProperty("metadata_proxy_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Metadata_proxy_paths { get; set; } + + /// Segment type based on configuration. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public SegmentType? Type { get; set; } + + /// Configuration for extending Segment through L2 VPN + [Newtonsoft.Json.JsonProperty("l2_extension", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public L2Extension L2_extension { get; set; } + + /// Policy path to the transport zone. Supported for VLAN backed segments + /// as well as Overlay Segments. + /// - This field is required for VLAN backed Segments. + /// - For overlay Segments, it is auto assigned if only one transport zone + /// exists in the enforcement point. Default transport zone is auto + /// assigned for overlay segments if none specified. + /// + [Newtonsoft.Json.JsonProperty("transport_zone_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Transport_zone_path { get; set; } + + /// If this field is not set for overlay segment, then the default of MTEP + /// will be used. + /// + [Newtonsoft.Json.JsonProperty("replication_mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public SegmentReplication_mode? Replication_mode { get; set; } = SDKGenerator.SegmentReplication_mode.MTEP; + + + } + + /// Consolidated Realized Status of an intent object across enforcement points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ConsolidatedRealizedStatus : AggregatePolicyRuntimeInfo + { + /// Represent highest intent version across all realized objects + [Newtonsoft.Json.JsonProperty("intent_version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Intent_version { get; set; } + + /// Aggregated Realization state of this object + [Newtonsoft.Json.JsonProperty("publish_status", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ConsolidatedRealizedStatusPublish_status Publish_status { get; set; } + + /// Consolidated Realized Status across enforcement points. + [Newtonsoft.Json.JsonProperty("consolidated_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ConsolidatedStatus Consolidated_status { get; set; } + + /// List of Consolidated Realized Status per enforcement point. + [Newtonsoft.Json.JsonProperty("consolidated_status_per_enforcement_point", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Consolidated_status_per_enforcement_point { get; set; } + + + } + + /// Forwarding rule that determine how to forward traffic from a VM. + /// Traffic from VM can either be routed via Overlay or Underlay when VM is on hybrid port. + /// Additionally NAT can be performed for VM or container on overlay to route traffic to/from underlay + /// ROUTE_TO_UNDERLAY - Access a service on underlay space from a VM connected to hybrid port. Eg access to AWS S3 on AWS underlay + /// ROUTE_TO_OVERLAY - Access a service on overlay space from a VM connected to hybrid port. + /// ROUTE_FROM_UNDERLAY - Access a service hosted on a VM (that is connected to hybrid port) from underlay space. Eg access from AWS ELB to VM + /// ROUTE_FROM_OVERLAY - Access a service hosted on a VM (that is connected to hybrid port) from overlay space + /// NAT_FROM_UNDERLAY - Access a service on overlay VM/container from underlay space using DNAT from underlay IP to overlay IP + /// NAT_TO_UNDERLAY - Access an underlay service from a VM/container on overlay space using SNAT from overlay IP to underlay IP + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ForwardingRule : BaseRule + { + /// The action to be applied to all the services + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ForwardingRuleAction? Action { get; set; } + + + } + + /// Service Reference List + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ServiceReferenceListResult : ListResult + { + /// Service Reference list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Related attribute on the target resource for conditional constraints based + /// on related attribute value. + /// Example - destinationGroups/service/action is related attribute of + /// sourceGroups in communcation entry. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RelatedAttribute + { + /// Related attribute name on the target entity. + [Newtonsoft.Json.JsonProperty("attribute", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Attribute { get; set; } + + + } + + /// Network error related to container objects. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class NetworkError + { + /// Detailed message of network related error. + [Newtonsoft.Json.JsonProperty("error_message", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Error_message { get; set; } + + /// Error code of network related error. + [Newtonsoft.Json.JsonProperty("error_code", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Error_code { get; set; } + + /// Additional error information in json format. + [Newtonsoft.Json.JsonProperty("spec", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Spec { get; set; } + + + } + + /// This entity will be used to establish association between qos profile + /// and Segment. Using this entity, you can specify intent for applying + /// qos profile to particular segment. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentQoSProfileBindingMap : QoSProfileBindingMap + { + /// PolicyPath of associated QoS Profile + [Newtonsoft.Json.JsonProperty("qos_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Qos_profile_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RuntimeInterfaceStatistics : SIAggregatedDataCounterEx + { + /// Timestamp when the data was last updated; unset if data source has never updated the data. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + /// Index of the interface + [Newtonsoft.Json.JsonProperty("interface_index", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Interface_index { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class FeaturePermissionArray + { + /// Array of FeaturePermission + [Newtonsoft.Json.JsonProperty("feature_permissions", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Feature_permissions { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// DistributedVirtualSwitch on a VC + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DistributedVirtualSwitch : VirtualSwitch + { + /// Array of discovered nodes connected to this switch. + [Newtonsoft.Json.JsonProperty("discovered_nodes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Discovered_nodes { get; set; } + + /// Uplink portgroup of distributed virtual switch + [Newtonsoft.Json.JsonProperty("uplink_portgroup", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public DistributedVirtualPortgroup Uplink_portgroup { get; set; } + + /// UUID of the switch + [Newtonsoft.Json.JsonProperty("uuid", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Uuid { get; set; } + + /// Key-Value map of additional properties of switch + [Newtonsoft.Json.JsonProperty("origin_properties", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Origin_properties { get; set; } + + /// It contains information about VMware specific multiple dynamic + /// LACP groups. + /// + [Newtonsoft.Json.JsonProperty("lacp_group_configs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Lacp_group_configs { get; set; } + + /// The uniform name of uplink ports on each host. + [Newtonsoft.Json.JsonProperty("uplink_port_names", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Uplink_port_names { get; set; } + + + } + + /// Answer of dns nslookup + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class NsxTDnsAnswer : PolicyDnsAnswerPerEnforcementPoint + { + /// Authoritative answers + [Newtonsoft.Json.JsonProperty("authoritative_answers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(256)] + public System.Collections.Generic.ICollection Authoritative_answers { get; set; } + + /// ID of the edge node that performed the query. + /// + [Newtonsoft.Json.JsonProperty("edge_node_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Edge_node_id { get; set; } + + /// Dns server ip address and port, format is "ip address#port". + /// + [Newtonsoft.Json.JsonProperty("dns_server", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Dns_server { get; set; } + + /// Non authoritative answers + [Newtonsoft.Json.JsonProperty("non_authoritative_answers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(256)] + public System.Collections.Generic.ICollection Non_authoritative_answers { get; set; } + + /// It can be NXDOMAIN or error message which is not consisted of + /// authoritative_answer or non_authoritative_answer. + /// + [Newtonsoft.Json.JsonProperty("raw_answer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Raw_answer { get; set; } + + + } + + /// Child wrapper object for ServiceSegment, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildServiceSegment : ChildPolicyConfigResource + { + /// Contains the actual ServiceSegment objects + /// + [Newtonsoft.Json.JsonProperty("ServiceSegment", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ServiceSegment ServiceSegment { get; set; } + + + } + + /// Represents an entity or portion to be plotted on a donut or stats chart. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DonutPart + { + /// A numerical value that represents the portion or entity of the donut or stats chart. + [Newtonsoft.Json.JsonProperty("field", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.StringLength(1024)] + public string Field { get; set; } + + /// If true, legend will be shown only if the data for the part is available. This is applicable only if legends are specified in widget configuration. + [Newtonsoft.Json.JsonProperty("hide_empty_legend", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Hide_empty_legend { get; set; } = false; + + /// If the condition is met then the part will be displayed. Examples of expression syntax are provided under 'example_request' section of 'CreateWidgetConfiguration' API. + [Newtonsoft.Json.JsonProperty("condition", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Condition { get; set; } + + /// Id of drilldown widget, if any. Id should be a valid id of an existing widget. A widget is considered as drilldown widget when it is associated with any other widget and provides more detailed information about any data item from the parent widget. + [Newtonsoft.Json.JsonProperty("drilldown_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Drilldown_id { get; set; } + + /// If a section 'template' holds this donut or stats part, then the label is auto-generated from the fetched field values after applying the template. + [Newtonsoft.Json.JsonProperty("label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Label Label { get; set; } + + /// Hyperlink of the specified UI page that provides details. If drilldown_id is provided, then navigation cannot be used. + [Newtonsoft.Json.JsonProperty("navigation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Navigation { get; set; } + + /// Multi-line text to be shown on tooltip while hovering over the portion. + [Newtonsoft.Json.JsonProperty("tooltip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Tooltip { get; set; } + + /// Additional rendering or conditional evaluation of the field values to be performed, if any. + [Newtonsoft.Json.JsonProperty("render_configuration", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Render_configuration { get; set; } + + + } + + /// Snat auto map. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBSnatAutoMap : LBSnatTranslation + { + + } + + /// This condition is used to match URI arguments aka query string of Http + /// request messages, for example, in URI http://exaple.com?foo=1&bar=2, the + /// "foo=1&bar=2" is the query string containing URI arguments. In an URI + /// scheme, query string is indicated by the first question mark ("?") + /// character and terminated by a number sign ("#") character or by the end of + /// the URI. + /// The uri_arguments field can be specified as a regular expression(Set + /// match_type to REGEX). For example, "foo=(?&lt;x&gt;\d+)". It matches HTTP + /// requests whose URI arguments containing "foo", the value of foo contains + /// only digits. And the value of foo is captured as $x which can be used in + /// LBRuleAction fields which support variables. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBHttpRequestUriArgumentsCondition : LBRuleCondition + { + /// URI arguments, aka query string of URI. + /// + [Newtonsoft.Json.JsonProperty("uri_arguments", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Uri_arguments { get; set; } + + /// Match type of URI arguments + [Newtonsoft.Json.JsonProperty("match_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBHttpRequestUriArgumentsConditionMatch_type? Match_type { get; set; } = SDKGenerator.LBHttpRequestUriArgumentsConditionMatch_type.REGEX; + + /// If true, case is significant when comparing URI arguments. + /// + [Newtonsoft.Json.JsonProperty("case_sensitive", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Case_sensitive { get; set; } = true; + + + } + + /// Returns the certificate and thumbprint of a remote TLS listener, if the + /// listener is running and accepting requests. If the certificate cannot be + /// retrieved, the result property describes the problem. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TlsListenerCertificate + { + /// Result of get certificate operation. + [Newtonsoft.Json.JsonProperty("result", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TlsListenerCertificateResult? Result { get; set; } + + /// The certificate of the TLS listener. + [Newtonsoft.Json.JsonProperty("certificate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public X509Certificate Certificate { get; set; } + + /// The SHA-256 thumbprint of the TLS listener. + [Newtonsoft.Json.JsonProperty("thumbprint", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Thumbprint { get; set; } + + + } + + /// Paged Collection of L2VPNServices + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VPNServiceListResult : ListResult + { + /// L2VPNService list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer DnsServiceApplicationProfile object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsServiceApplicationProfile + { + /// Enable DNS query/response over TCP. + /// This enables analytics for pass-through queries as well. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("dns_over_tcp_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Dns_over_tcp_enabled { get; set; } = true; + + /// Specifies the IP address prefix length to use in the EDNS + /// client subnet (ECS) option. + /// When the incoming request does not have any ECS option and + /// the prefix length is specified, an ECS option is inserted in + /// the request passed to upstream server. + /// If the incoming request already has an ECS option, the + /// prefix length (and correspondingly the address) in the ECS + /// option is updated, with the minimum of the prefix length + /// present in the incoming and the configured prefix length, + /// before passing the request to upstream server. + /// Allowed values are 1-32. + /// + [Newtonsoft.Json.JsonProperty("edns_client_subnet_prefix_len", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 32D)] + public long? Edns_client_subnet_prefix_len { get; set; } + + /// The <domain-name> of the name server that was the original + /// or primary source of data for this zone. + /// This field is used in SOA records (mname) pertaining to all + /// domain names specified as authoritative domain names. + /// If not configured, domain name is used as name server in + /// SOA response. + /// + [Newtonsoft.Json.JsonProperty("name_server", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name_server { get; set; } + + /// Enable stripping of EDNS client subnet (ecs) option towards + /// client if DNS service inserts ecs option in the DNS query + /// towards upstream servers. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("ecs_stripping_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Ecs_stripping_enabled { get; set; } = true; + + /// Subdomain names serviced by this Virtual Service. + /// These are configured as Ends-With semantics. + /// Maximum of 100 items allowed. + /// + [Newtonsoft.Json.JsonProperty("domain_names", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Domain_names { get; set; } + + /// Specifies the TTL value (in seconds) for SOA (Start of + /// Authority) (corresponding to a authoritative domain owned by + /// this DNS Virtual Service) record's minimum TTL served by the + /// DNS Virtual Service. + /// Allowed values are 0-86400. + /// Unit is SEC. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 30. + /// + [Newtonsoft.Json.JsonProperty("negative_caching_ttl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 86400D)] + public long? Negative_caching_ttl { get; set; } = 30L; + + /// Respond to AAAA queries with empty response when there are + /// only IPV4 records. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("aaaa_empty_response", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Aaaa_empty_response { get; set; } = true; + + /// Specifies the number of IP addresses returned by the DNS + /// Service. + /// Enter 0 to return all IP addresses. + /// Allowed values are 1-20. + /// Special values are 0- 'Return all IP addresses'. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 1. + /// + [Newtonsoft.Json.JsonProperty("num_dns_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 20D)] + public long? Num_dns_ip { get; set; } = 1L; + + /// Drop or respond to client when the DNS service encounters + /// an error processing a client query. + /// By default, such a request is dropped without any response, + /// or passed through to a passthrough pool, if configured. + /// When set to respond, an appropriate response is sent to + /// client, e.g. + /// NXDOMAIN response for non-existent records, empty NOERROR + /// response for unsupported queries, etc. + /// Enum options - DNS_ERROR_RESPONSE_ERROR, + /// DNS_ERROR_RESPONSE_NONE. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as DNS_ERROR_RESPONSE_NONE. + /// + [Newtonsoft.Json.JsonProperty("error_response", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBDnsServiceApplicationProfileError_response? Error_response { get; set; } = SDKGenerator.ALBDnsServiceApplicationProfileError_response.DNS_ERROR_RESPONSE_NONE; + + /// Specifies the TTL value (in seconds) for records served by + /// DNS Service. + /// Allowed values are 0-86400. + /// Unit is SEC. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 30. + /// + [Newtonsoft.Json.JsonProperty("ttl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 86400D)] + public long? Ttl { get; set; } = 30L; + + /// Enable DNS service to be aware of EDNS (Extension mechanism + /// for DNS). + /// EDNS extensions are parsed and shown in logs. + /// For GSLB services, the EDNS client subnet option can be + /// used to influence Load Balancing. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("edns", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Edns { get; set; } = true; + + /// Email address of the administrator responsible for this + /// zone. + /// This field is used in SOA records (rname) pertaining to all + /// domain names specified as authoritative domain names. + /// If not configured, the default value 'hostmaster' is used + /// in SOA responses. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as hostmaster. + /// + [Newtonsoft.Json.JsonProperty("admin_email", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Admin_email { get; set; } = "hostmaster"; + + /// DNS zones hosted on this Virtual Service. + /// Maximum of 100 items allowed. + /// + [Newtonsoft.Json.JsonProperty("dns_zones", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Dns_zones { get; set; } + + + } + + /// Advanced load balancer SSLCertificate object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBSSLCertificate + { + /// subjectAltName that provides additional subject identities. + [Newtonsoft.Json.JsonProperty("subject_alt_names", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Subject_alt_names { get; set; } + + /// public_key of SSLCertificate. + [Newtonsoft.Json.JsonProperty("public_key", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Public_key { get; set; } + + /// Placeholder for description of property self_signed of obj + /// type SSLCertificate field type str type boolean. + /// + [Newtonsoft.Json.JsonProperty("self_signed", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Self_signed { get; set; } + + /// certificate of SSLCertificate. + [Newtonsoft.Json.JsonProperty("certificate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Certificate { get; set; } + + /// Placeholder for description of property issuer of obj type + /// SSLCertificate field type str type ref. + /// + [Newtonsoft.Json.JsonProperty("issuer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBSSLCertificateDescription Issuer { get; set; } + + /// certificate_signing_request of SSLCertificate. + [Newtonsoft.Json.JsonProperty("certificate_signing_request", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Certificate_signing_request { get; set; } + + /// not_after of SSLCertificate. + [Newtonsoft.Json.JsonProperty("not_after", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Not_after { get; set; } + + /// signature_algorithm of SSLCertificate. + [Newtonsoft.Json.JsonProperty("signature_algorithm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Signature_algorithm { get; set; } + + /// Enum options - SSL_CERTIFICATE_GOOD, + /// SSL_CERTIFICATE_EXPIRY_WARNING, SSL_CERTIFICATE_EXPIRED. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as SSL_CERTIFICATE_GOOD. + /// + [Newtonsoft.Json.JsonProperty("expiry_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBSSLCertificateExpiry_status? Expiry_status { get; set; } = SDKGenerator.ALBSSLCertificateExpiry_status.SSL_CERTIFICATE_GOOD; + + /// Placeholder for description of property chain_verified of + /// obj type SSLCertificate field type str type boolean. + /// + [Newtonsoft.Json.JsonProperty("chain_verified", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Chain_verified { get; set; } + + /// version of SSLCertificate. + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Version { get; set; } + + /// text of SSLCertificate. + [Newtonsoft.Json.JsonProperty("text", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Text { get; set; } + + /// fingerprint of SSLCertificate. + [Newtonsoft.Json.JsonProperty("fingerprint", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Fingerprint { get; set; } + + /// Placeholder for description of property key_params of obj + /// type SSLCertificate field type str type ref. + /// + [Newtonsoft.Json.JsonProperty("key_params", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBSSLKeyParams Key_params { get; set; } + + /// serial_number of SSLCertificate. + [Newtonsoft.Json.JsonProperty("serial_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Serial_number { get; set; } + + /// Number of days_until_expire. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 365. + /// + [Newtonsoft.Json.JsonProperty("days_until_expire", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Days_until_expire { get; set; } = 365L; + + /// signature of SSLCertificate. + [Newtonsoft.Json.JsonProperty("signature", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Signature { get; set; } + + /// not_before of SSLCertificate. + [Newtonsoft.Json.JsonProperty("not_before", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Not_before { get; set; } + + /// Placeholder for description of property subject of obj type + /// SSLCertificate field type str type ref. + /// + [Newtonsoft.Json.JsonProperty("subject", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBSSLCertificateDescription Subject { get; set; } + + + } + + /// Child wrapper object for PolicyFirewallSessionTimerProfile, + /// used in hierarchical API + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicyFirewallSessionTimerProfile : ChildPolicyConfigResource + { + /// Contains the actual PolicyFirewallSessionTimerProfile object + /// + [Newtonsoft.Json.JsonProperty("PolicyFirewallSessionTimerProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyFirewallSessionTimerProfile PolicyFirewallSessionTimerProfile { get; set; } + + + } + + /// This entity will be used to establish association between Firewall Timer session + /// profile and Group. Using this entity, user can specify intent for applying + /// Firewall Timer session profile to particular Group. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyFirewallSessionTimerProfileBindingMap : PolicyConfigResource + { + /// Sequence number is used to resolve conflicts when two profiles get applied + /// to a single port. Lower value gets higher precedence. Two binding maps + /// having the same profile path should have the same sequence number. + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Sequence_number { get; set; } + + /// PolicyPath of associated Firewall Timer Session Profile + [Newtonsoft.Json.JsonProperty("firewall_session_timer_profile_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Firewall_session_timer_profile_path { get; set; } + + + } + + /// Multicast forwarding interface details. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MulticastForwardingInterface + { + /// Interface id. + [Newtonsoft.Json.JsonProperty("ifuid", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ifuid { get; set; } + + + } + + /// Active Directory Domain + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DirectoryAdDomain : DirectoryDomain + { + /// Each active directory domain has a domain naming context (NC), which contains domain-specific data. The root of this naming context is represented by a domain's distinguished name (DN) and is typically referred to as the NC head. + [Newtonsoft.Json.JsonProperty("base_distinguished_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Base_distinguished_name { get; set; } + + /// Each domain sync settings can be changed using this object. It is not required since there are default values used if there is no specification for this object. + [Newtonsoft.Json.JsonProperty("sync_settings", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public DirectoryDomainSyncSettings Sync_settings { get; set; } + + /// NetBIOS names can contain all alphanumeric characters except for the certain disallowed characters. Names can contain a period, but names cannot start with a period. NetBIOS is similar to DNS in that it can serve as a directory service, but more limited as it has no provisions for a name hierarchy and names are limited to 15 characters. The netbios name is case insensitive and is stored in upper case regardless of input case. + [Newtonsoft.Json.JsonProperty("netbios_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Netbios_name { get; set; } + + /// SelectiveSync settings toggle the SelectiveSync feature and + /// selected OrgUnits. If this is not specified, SelectiveSync is + /// disabled by default. + /// + [Newtonsoft.Json.JsonProperty("selective_sync_settings", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public SelectiveSyncSettings Selective_sync_settings { get; set; } + + + } + + /// Paged Collection of Sites. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SiteListResult : ListResult + { + /// Site list result. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Endpoint Rule comes from user configuration. User configures Endpoint Rule to specify what services are applied on the groups. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class EndpointRule : PolicyConfigResource + { + /// The policy paths of service profiles are listed here. It pecifies what + /// services are applied on the group. Currently only one is allowed. + /// + [Newtonsoft.Json.JsonProperty("service_profiles", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Service_profiles { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// We need paths as duplicate names may exist for groups under different + /// domains. In order to specify all groups, use the constant "ANY". This + /// is case insensitive. If "ANY" is used, it should be the ONLY element + /// in the group array. Error will be thrown if ANY is used in conjunction + /// with other values. + /// + [Newtonsoft.Json.JsonProperty("groups", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MaxLength(50)] + public System.Collections.Generic.ICollection Groups { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// This field is used to resolve conflicts between multiple + /// entries under EndpointPolicy. It will be system default value when not specified + /// by user. + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 499D)] + public long? Sequence_number { get; set; } = 0L; + + + } + + /// A Policy Based VPN requires to define protect rules that match local and peer subnets. IPSec security associations is negotiated for each pair of local and peer subnet. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyBasedIPSecVpnSession : IPSecVpnSession + { + /// Rules + [Newtonsoft.Json.JsonProperty("rules", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + public System.Collections.Generic.ICollection Rules { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Child wrapper object for SecurityZone, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildSecurityZone : ChildPolicyConfigResource + { + /// Contains the actual SecurityZone object + /// + [Newtonsoft.Json.JsonProperty("SecurityZone", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public SecurityZone SecurityZone { get; set; } + + + } + + /// Paged Collection of ForwardingRules + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ForwardingRuleListResult : BaseRuleListResult + { + /// Rule list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Defining access of a Group from a PolicyLbVirtualServer and binding to + /// PolicyLbMonitorProfile. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyLbPoolAccess : PolicyConfigResource + { + /// Port for LoadBalancer to send connections to the PolicyLbPoolAccess's + /// Group. Pool_port could be optional, if it is not specified, LB will use + /// PolicyLbVirtualServer port to connect to backend servers. If the + /// PolicyLbMonitorProfile is configured in PolicyLbPoolAccess and active + /// monitor IP protocol is TCP/UDP(which requires TCP or UDP port number), + /// monitor_port should be specified if pool_port is unset. + /// + [Newtonsoft.Json.JsonProperty("pool_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Pool_port { get; set; } + + /// IP Port list for applications within the Group to allow + /// for non-uniform port usage by applications + /// + [Newtonsoft.Json.JsonProperty("ip_port_list", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_port_list { get; set; } + + /// Depending on the topology, Source NAT (SNAT) may be required to ensure + /// traffic from the server destined to the client is received by the load + /// balancer. SNAT can be enabled per pool. If SNAT is not enabled for a + /// pool, then load balancer uses the client IP and port (spoofing) while + /// establishing connections to the servers. This is referred to as no-SNAT + /// or TRANSPARENT mode. SNAT is enabled by default and will use the + /// load balancer interface IP and an ephemeral port as the source IP and + /// port of the server side connection. + /// + [Newtonsoft.Json.JsonProperty("source_nat", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PolicyLbPoolAccessSource_nat? Source_nat { get; set; } = SDKGenerator.PolicyLbPoolAccessSource_nat.ENABLED; + + /// Load balanding algorithm controls how the incoming + /// connections are distributed among the members. + /// - ROUND_ROBIN - requests to the application servers are distributed + /// in a round-robin fashion, + /// - LEAST_CONNECTION - next request is assigned to the server with the + /// least number of active connections + /// + [Newtonsoft.Json.JsonProperty("algorithm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PolicyLbPoolAccessAlgorithm? Algorithm { get; set; } = SDKGenerator.PolicyLbPoolAccessAlgorithm.ROUND_ROBIN; + + /// Path of the PolicyLbMonitorProfile to actively monitor the + /// PolicyLbPoolAccess's Group + /// + [Newtonsoft.Json.JsonProperty("lb_monitor_profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lb_monitor_profile { get; set; } + + + } + + /// Advanced load balancer URIParamToken object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBURIParamToken + { + /// Constant string to use as a token. + [Newtonsoft.Json.JsonProperty("str_value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Str_value { get; set; } + + /// Token type for constructing the URI. + /// Enum options - URI_TOKEN_TYPE_HOST, URI_TOKEN_TYPE_PATH, + /// URI_TOKEN_TYPE_STRING, URI_TOKEN_TYPE_STRING_GROUP, + /// URI_TOKEN_TYPE_REGEX. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBURIParamTokenType Type { get; set; } + + /// Index of the starting token in the incoming URI. + [Newtonsoft.Json.JsonProperty("start_index", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Start_index { get; set; } + + /// Index of the ending token in the incoming URI. + /// Allowed values are 0-65534. + /// Special values are 65535 - 'end of string'. + /// + [Newtonsoft.Json.JsonProperty("end_index", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? End_index { get; set; } + + + } + + /// Match condition for client certficate subject DN. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBClientCertificateSubjectDnCondition + { + /// If true, case is significant when comparing subject DN value. + /// + [Newtonsoft.Json.JsonProperty("case_sensitive", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Case_sensitive { get; set; } = true; + + /// Match type of subject DN. + [Newtonsoft.Json.JsonProperty("match_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBClientCertificateSubjectDnConditionMatch_type? Match_type { get; set; } = SDKGenerator.LBClientCertificateSubjectDnConditionMatch_type.REGEX; + + /// Value of subject DN. + [Newtonsoft.Json.JsonProperty("subject_dn", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Subject_dn { get; set; } + + + } + + /// Mac Discovery Profile + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MacDiscoveryProfile : PolicyConfigResource + { + /// Indicates how long learned MAC address remain. + [Newtonsoft.Json.JsonProperty("mac_learning_aging_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Mac_learning_aging_time { get; set; } = 600L; + + /// Allowing source MAC address learning + [Newtonsoft.Json.JsonProperty("mac_learning_enabled", Required = Newtonsoft.Json.Required.Always)] + public bool Mac_learning_enabled { get; set; } + + /// The policy after MAC Limit is exceeded + [Newtonsoft.Json.JsonProperty("mac_limit_policy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public MacDiscoveryProfileMac_limit_policy? Mac_limit_policy { get; set; } = SDKGenerator.MacDiscoveryProfileMac_limit_policy.ALLOW; + + /// This property specifies the limit on the maximum number of MACs + /// learned for a remote virtual machine's MAC to VTEP binding per + /// overlay logical switch. + /// + [Newtonsoft.Json.JsonProperty("remote_overlay_mac_limit", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(2048D, 8192D)] + public long? Remote_overlay_mac_limit { get; set; } = 2048L; + + /// The maximum number of MAC addresses that can be learned on this port + [Newtonsoft.Json.JsonProperty("mac_limit", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 4096D)] + public long? Mac_limit { get; set; } = 4096L; + + /// Allowing source MAC address change + [Newtonsoft.Json.JsonProperty("mac_change_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Mac_change_enabled { get; set; } = false; + + /// Allowing flooding for unlearned MAC for ingress traffic + [Newtonsoft.Json.JsonProperty("unknown_unicast_flooding_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Unknown_unicast_flooding_enabled { get; set; } = true; + + + } + + /// Advanced load balancer L4Policies object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBL4Policies + { + /// ID of the virtual service L4 policy set. + /// It is a reference to an object of type L4PolicySet. + /// + [Newtonsoft.Json.JsonProperty("l4_policy_set_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string L4_policy_set_path { get; set; } + + /// Index of the virtual service L4 policy set. + [Newtonsoft.Json.JsonProperty("index", Required = Newtonsoft.Json.Required.Always)] + public long Index { get; set; } + + + } + + /// This entity will be used to establish association between monitoring profile + /// and Segment. Using this entity, you can specify intent for applying + /// monitoring profile to particular segment. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentMonitoringProfileBindingMap : MonitoringProfileBindingMap + { + /// PolicyPath of associated IPFIX L2 Profile + [Newtonsoft.Json.JsonProperty("ipfix_l2_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ipfix_l2_profile_path { get; set; } + + /// PolicyPath of associated Port Mirroring Profile + [Newtonsoft.Json.JsonProperty("port_mirroring_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Port_mirroring_profile_path { get; set; } + + + } + + /// IPSec VPN session status summary, gives total, failed, degraded and established IPSec VPN sessions. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPsecVPNIKESessionSummary + { + /// Number of established sessions. + [Newtonsoft.Json.JsonProperty("established_sessions", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Established_sessions { get; set; } + + /// Total sessions configured. + [Newtonsoft.Json.JsonProperty("total_sessions", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Total_sessions { get; set; } + + /// Number of failed sessions. + [Newtonsoft.Json.JsonProperty("failed_sessions", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Failed_sessions { get; set; } + + /// Number of degraded sessions. + [Newtonsoft.Json.JsonProperty("degraded_sessions", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Degraded_sessions { get; set; } + + + } + + /// Search response + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SearchResponse : ListResult + { + /// List of records matching the search query. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// ServiceProfileGroups contains list of Groups referenced in Service Insertion Rules.To be considered, Service profile must be part of a Service chain and that Service chain must be used in a Rule. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ServiceProfileGroups : ManagedResource + { + /// List of Groups Used in ServiceInsertion Rules. + [Newtonsoft.Json.JsonProperty("groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Groups { get; set; } + + + } + + /// All the filtering criteria objects extend from this abstract class. + /// This is present for extensibility. + /// + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("IdsProfileConjunctionOperator", typeof(IdsProfileConjunctionOperator))] + [JsonInheritanceAttribute("IdsProfileFilterCriteria", typeof(IdsProfileFilterCriteria))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdsProfileCriteria + { + + } + + /// Collection of resource info objects + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ResourceInfoListResult : ListResult + { + /// Resource info list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer WafPSMLocationMatch object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBWafPSMLocationMatch + { + /// Apply the rules only to requests that match the specified + /// URI. + /// If this is not set, the path will not be checked. + /// + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPathMatch Path { get; set; } + + /// Apply the rules only to requests that match the specified + /// Host header. + /// If this is not set, the host header will not be checked. + /// + [Newtonsoft.Json.JsonProperty("host", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHostHdrMatch Host { get; set; } + + /// Apply the rules only to requests that have the specified + /// methods. + /// If this is not set, the method will not be checked. + /// + [Newtonsoft.Json.JsonProperty("methods", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBMethodMatch Methods { get; set; } + + + } + + /// Detailed Realized Status Per Transport Node. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class EnforcedStatusPerTransportNode + { + /// Realized Status of an Intent object on this Transport Node. + /// + [Newtonsoft.Json.JsonProperty("enforced_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public EnforcedStatusNsxT Enforced_status { get; set; } + + /// Policy Path referencing the transport node. + /// + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Path { get; set; } + + /// UUID identifying uniquely the Transport Node. + /// + [Newtonsoft.Json.JsonProperty("nsx_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Nsx_id { get; set; } + + /// Display name of the transport node. + /// + [Newtonsoft.Json.JsonProperty("display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Display_name { get; set; } + + + } + + /// A profile holding TCP, UDP and ICMP session timeout configuration. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyFirewallSessionTimerProfile : PolicyConfigResource + { + /// The timeout value of connection in seconds after one endpoint sends an RST. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_closed", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Tcp_closed { get; set; } = 20L; + + /// The timeout value of connection in seconds after a second packet has been transferred. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_opening", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Tcp_opening { get; set; } = 30L; + + /// The timeout value of connection in seconds if the source host sends more than one packet but the destination host has never sent one back. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("udp_single", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Udp_single { get; set; } = 30L; + + /// The timeout value of connection in seconds after both FINs have been exchanged and connection is closed. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_finwait", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Tcp_finwait { get; set; } = 45L; + + /// The timeout value of connection in seconds after the first packet has been sent. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_first_packet", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Tcp_first_packet { get; set; } = 120L; + + /// The timeout value of connection in seconds after the first FIN has been sent. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_closing", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Tcp_closing { get; set; } = 120L; + + /// The timeout value of connection in seconds once the connection has become fully established. The default value for Edges (i.e, Gateway,or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("tcp_established", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(120D, 4320000D)] + public long Tcp_established { get; set; } = 43200L; + + /// The timeout value of connection in seconds if both hosts have sent packets. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("udp_multiple", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Udp_multiple { get; set; } = 60L; + + /// The timeout value for the connection after an ICMP error came back in response to an ICMP packet. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("icmp_error_reply", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Icmp_error_reply { get; set; } = 10L; + + /// The timeout value of connection in seconds after the first packet. This will be the initial timeout for the new UDP flow. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("udp_first_packet", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Udp_first_packet { get; set; } = 60L; + + /// The timeout value of connection in seconds after the first packet. This will be the initial timeout for the new ICMP flow. The default value for Edges (i.e, Gateway, or Logical Router) may be different than Distributed Firewall hosts. + [Newtonsoft.Json.JsonProperty("icmp_first_packet", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(10D, 4320000D)] + public long Icmp_first_packet { get; set; } = 20L; + + + } + + /// All the types of the expression extend from this abstract class. + /// This is present for extensibility. + /// + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("EntityInstanceCountConstraintExpression", typeof(EntityInstanceCountConstraintExpression))] + [JsonInheritanceAttribute("ValueConstraintExpression", typeof(ValueConstraintExpression))] + [JsonInheritanceAttribute("RelatedAttributeConditionalExpression", typeof(RelatedAttributeConditionalExpression))] + [JsonInheritanceAttribute("FieldSanityConstraintExpression", typeof(FieldSanityConstraintExpression))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ConstraintExpression : ManagedResource + { + + } + + /// Advanced load balancer PriorityLabels object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBPriorityLabels : PolicyConfigResource + { + /// Equivalent priority labels in descending order. + [Newtonsoft.Json.JsonProperty("equivalent_labels", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Equivalent_labels { get; set; } + + + } + + /// Traffic statistics for a segment. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VpnPerSegmentTrafficStatistics + { + /// Total number of outgoing packets. + /// + [Newtonsoft.Json.JsonProperty("packets_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_out { get; set; } + + /// Total number of incoming packets dropped. + /// + [Newtonsoft.Json.JsonProperty("packets_receive_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_receive_error { get; set; } + + /// Total number of incoming bytes. + /// + [Newtonsoft.Json.JsonProperty("bytes_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bytes_in { get; set; } + + /// Total number of incoming Broadcast, Unknown unicast and Multicast (BUM) packets. + /// + [Newtonsoft.Json.JsonProperty("bum_packets_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bum_packets_in { get; set; } + + /// Policy path referencing the segment on which stats are gathered. + /// + [Newtonsoft.Json.JsonProperty("segment_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Segment_path { get; set; } + + /// Total number of outgoing Broadcast, Unknown unicast and Multicast (BUM) bytes. + /// + [Newtonsoft.Json.JsonProperty("bum_bytes_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bum_bytes_out { get; set; } + + /// Total number of outgoing bytes. + /// + [Newtonsoft.Json.JsonProperty("bytes_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bytes_out { get; set; } + + /// Total number of packets dropped while sending for any reason. + /// + [Newtonsoft.Json.JsonProperty("packets_sent_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_sent_error { get; set; } + + /// Total number of outgoing Broadcast, Unknown unicast and Multicast (BUM) packets. + /// + [Newtonsoft.Json.JsonProperty("bum_packets_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bum_packets_out { get; set; } + + /// Total number of incoming packets. + /// + [Newtonsoft.Json.JsonProperty("packets_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_in { get; set; } + + /// Total number of incoming Broadcast, Unknown unicast and Multicast (BUM) bytes. + /// + [Newtonsoft.Json.JsonProperty("bum_bytes_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bum_bytes_in { get; set; } + + + } + + /// SSL protocol + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LbSslProtocolInfo + { + /// Default SSL protocol flag + [Newtonsoft.Json.JsonProperty("is_default", Required = Newtonsoft.Json.Required.Always)] + public bool Is_default { get; set; } + + /// Secure/insecure SSL protocol flag + [Newtonsoft.Json.JsonProperty("is_secure", Required = Newtonsoft.Json.Required.Always)] + public bool Is_secure { get; set; } + + /// SSL protocol + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LbSslProtocolInfoProtocol Protocol { get; set; } + + + } + + /// Status of the Identity Firewall compute collection's VM. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdfwVirtualMachineCondition + { + /// VM IDFW Status. + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IdfwVirtualMachineConditionStatus Status { get; set; } + + /// IDFW compute collection's VM condition. + [Newtonsoft.Json.JsonProperty("status_detail", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Status_detail { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LdapIdentitySourceSearchResultItem + { + /// Distinguished name (DN) of the entry. + [Newtonsoft.Json.JsonProperty("dn", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dn { get; set; } + + /// The Common Name (CN) of the entry, if available. + [Newtonsoft.Json.JsonProperty("common_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Common_name { get; set; } + + /// For Active Directory (AD) users, this will be the user principal name (UPN), in the format user@domain. For non-AD users, this will be the user's uid property, followed by "@" and the domain of the directory. For groups, this will be the group's common name, followed by "@" and the domain of the directory. + [Newtonsoft.Json.JsonProperty("principal_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Principal_name { get; set; } + + /// Describes the type of the entry + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LdapIdentitySourceSearchResultItemType? Type { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SIAggregatedDataCounterEx : SIAggregatedDataCounter + { + [Newtonsoft.Json.JsonProperty("mac_learning", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public SIMacLearningCounters Mac_learning { get; set; } + + [Newtonsoft.Json.JsonProperty("dropped_by_security_packets", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public SIPacketsDroppedBySecurity Dropped_by_security_packets { get; set; } + + + } + + /// Parameters to let the admin specify a relative position of a security + /// policy or rule w.r.t to another one. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyInsertParameters + { + /// The security policy/rule path if operation is 'insert_after' or + /// 'insert_before' + /// + [Newtonsoft.Json.JsonProperty("anchor_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Anchor_path { get; set; } + + /// Operation + [Newtonsoft.Json.JsonProperty("operation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PolicyInsertParametersOperation? Operation { get; set; } = SDKGenerator.PolicyInsertParametersOperation.Insert_top; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyEdgeClusterInterSiteBgpSummary + { + /// Edge cluster path whose status is being reported. + [Newtonsoft.Json.JsonProperty("edge_cluster_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Edge_cluster_path { get; set; } + + /// Status of all edge nodes within cluster. + [Newtonsoft.Json.JsonProperty("edge_nodes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Edge_nodes { get; set; } + + + } + + /// Paged collection of Tier-0 Interfaces + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Tier0InterfaceListResult : ListResult + { + /// Tier-0 Interface list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Credential info to connect to a node in the federated remote site. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SiteNodeConnectionInfo + { + /// Username to connect to Site's Local Manager. + [Newtonsoft.Json.JsonProperty("username", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Username { get; set; } + + /// Password to connect to Site's Local Manager. + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Password { get; set; } + + /// Please specify the fqdn of the Management Node of your site. + /// + [Newtonsoft.Json.JsonProperty("fqdn", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Fqdn { get; set; } + + /// Thumbprint of Site's Local Manager in the form of a SHA-256 hash represented in lower case HEX. + /// + [Newtonsoft.Json.JsonProperty("thumbprint", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Thumbprint { get; set; } + + + } + + /// Error along with its metadata + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ErrorResolverMetadata + { + /// The error id as reported by the entity where the error occurred. + [Newtonsoft.Json.JsonProperty("error_id", Required = Newtonsoft.Json.Required.Always)] + public long Error_id { get; set; } + + /// This can come from some external system like syslog collector + [Newtonsoft.Json.JsonProperty("system_metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ErrorResolverSystemMetadata System_metadata { get; set; } + + /// The entity/node UUID where the error has occurred. + [Newtonsoft.Json.JsonProperty("entity_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Entity_id { get; set; } + + /// User supplied metadata that might be required by the resolver + [Newtonsoft.Json.JsonProperty("user_metadata", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ErrorResolverUserMetadata User_metadata { get; set; } + + + } + + /// Advanced load balancer StringGroup object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBStringGroup : PolicyConfigResource + { + /// Enable the longest match, default is the shortest match. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("longest_match", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Longest_match { get; set; } = false; + + /// Type of StringGroup. + /// Enum options - SG_TYPE_STRING, SG_TYPE_KEYVAL. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as SG_TYPE_STRING. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBStringGroupType Type { get; set; } = SDKGenerator.ALBStringGroupType.SG_TYPE_STRING; + + /// Configure Key Value in the string group. + [Newtonsoft.Json.JsonProperty("kv", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Kv { get; set; } + + + } + + /// Realized Virtual Machine + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedVirtualMachine : PolicyRealizedResource + { + /// Id of the host on which the vm exists. + [Newtonsoft.Json.JsonProperty("host_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Host_id { get; set; } + + /// Id of the vm unique within the host. + [Newtonsoft.Json.JsonProperty("local_id_on_host", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Local_id_on_host { get; set; } + + /// Current power state of this virtual machine in the system. + [Newtonsoft.Json.JsonProperty("power_state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public RealizedVirtualMachinePower_state? Power_state { get; set; } + + /// List of external compute ids of the virtual machine in the format 'id-type-key:value' , list of external compute ids ['uuid:xxxx-xxxx-xxxx-xxxx', 'moIdOnHost:moref-11', 'instanceUuid:xxxx-xxxx-xxxx-xxxx'] + [Newtonsoft.Json.JsonProperty("compute_ids", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Compute_ids { get; set; } + + + } + + /// LDAP server of directory domain + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DirectoryLdapServer : ManagedResource + { + /// Directory LDAP server connection user name. + [Newtonsoft.Json.JsonProperty("username", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Username { get; set; } + + /// Directory LDAP server DNS host name or ip address which is reachable by NSX manager to be connected and do object synchronization. + [Newtonsoft.Json.JsonProperty("host", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Host { get; set; } + + /// Directory LDAP server connection protocol which is either LDAP or LDAPS. + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public DirectoryLdapServerProtocol? Protocol { get; set; } = SDKGenerator.DirectoryLdapServerProtocol.LDAP; + + /// Directory LDAP server certificate thumbprint used in secure LDAPS connection. + [Newtonsoft.Json.JsonProperty("thumbprint", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Thumbprint { get; set; } + + /// Directory LDAP server connection password. + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Password { get; set; } + + /// Directory domain name which best describes the domain. It could be unique fqdn name or it could also be descriptive. There is no unique contraint for domain name among different domains. + [Newtonsoft.Json.JsonProperty("domain_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Domain_name { get; set; } + + /// Directory LDAP server connection TCP/UDP port. + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Port { get; set; } = 389L; + + + } + + /// Advanced load balancer SSLCertificateDescription object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBSSLCertificateDescription + { + /// common_name of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("common_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Common_name { get; set; } + + /// state of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string State { get; set; } + + /// organization of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("organization", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Organization { get; set; } + + /// locality of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("locality", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Locality { get; set; } + + /// distinguished_name of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("distinguished_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Distinguished_name { get; set; } + + /// country of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("country", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Country { get; set; } + + /// organization_unit of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("organization_unit", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Organization_unit { get; set; } + + /// email_address of SSLCertificateDescription. + [Newtonsoft.Json.JsonProperty("email_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Email_address { get; set; } + + + } + + /// GroupInfo contains information about a particular Group used in Redirection Rules. It also contains information about policy path, if the group is created from Policy. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class GroupInfo + { + /// Group Data. + [Newtonsoft.Json.JsonProperty("group", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ResourceReference Group { get; set; } + + /// Policy path of a particular Group. + [Newtonsoft.Json.JsonProperty("group_policy_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Group_policy_path { get; set; } + + + } + + /// Allocation parameters for the IP address (e.g. specific IP address) can be specified. Tags, display_name and description attributes are not supported in this release. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IpAddressAllocation : PolicyConfigResource + { + /// Address that is allocated from pool + [Newtonsoft.Json.JsonProperty("allocation_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Allocation_ip { get; set; } + + + } + + /// Represents MAC address expressions in the form of an array, to support addition of MAC addresses in a group. Avoid creating groups with multiple MACAddressExpression. In future releases, group will be restricted to contain a single MACAddressExpression. To group MAC addresses, use nested groups instead of multiple MACAddressExpression. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MACAddressExpression : Expression + { + /// This array can consist of one or more MAC addresses. + [Newtonsoft.Json.JsonProperty("mac_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(4000)] + public System.Collections.Generic.ICollection Mac_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class BgpNeighborRoutesListResult : ListResult + { + /// Paged Collection of Bgp neighbor routes. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// DHCP configuration of IPv4 subnet in a segment + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentDhcpV4Config : SegmentDhcpConfig + { + /// IPv4 DHCP options for segment subnet. + /// + [Newtonsoft.Json.JsonProperty("options", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public DhcpV4Options Options { get; set; } + + + } + + /// Paged Collection of IPSecVpnDpdProfile. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnDpdProfileListResult : ListResult + { + /// IPSecVpnDpdProfile list results. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// This entity will be used to establish association between Session Timer + /// profile and Logical Routers. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SessionTimerProfileBindingMap : ProfileBindingMap + { + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Dhcpv6Header + { + /// This is used to specify the DHCP v6 message. To request the assignment of one or more IPv6 addresses, a client first locates a DHCP server and then requests the assignment of addresses and other configuration information from the server. The client sends a Solicit message to the All_DHCP_Relay_Agents_and_Servers address to find available DHCP servers. Any server that can meet the client's requirements responds with an Advertise message. The client then chooses one of the servers and sends a Request message to the server asking for confirmed assignment of addresses and other configuration information. The server responds with a Reply message that contains the confirmed addresses and configuration. SOLICIT - A client sends a Solicit message to locate servers. ADVERTISE - A server sends and Advertise message to indicate that it is available. REQUEST - A client sends a Request message to request configuration parameters. REPLY - A server sends a Reply message containing assigned addresses and configuration parameters. + [Newtonsoft.Json.JsonProperty("msg_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public Dhcpv6HeaderMsg_type? Msg_type { get; set; } = SDKGenerator.Dhcpv6HeaderMsg_type.SOLICIT; + + + } + + /// A ServiceEntry that represents an ethertype protocol + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class EtherTypeServiceEntry : ServiceEntry + { + /// Type of the encapsulated protocol + [Newtonsoft.Json.JsonProperty("ether_type", Required = Newtonsoft.Json.Required.Always)] + public long Ether_type { get; set; } + + + } + + /// L2VPN Service defines if service running as server or client. It also + /// defines all the common properties for the multiple L2VPN Sessions + /// associated with this service. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VPNService : PolicyConfigResource + { + /// IP Pool to allocate local and peer endpoint IPs for + /// L2VpnSession logical tap. + /// + [Newtonsoft.Json.JsonProperty("encap_ip_pool", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Encap_ip_pool { get; set; } + + /// Specify an L2VPN service mode as SERVER or CLIENT. + [Newtonsoft.Json.JsonProperty("mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public L2VPNServiceMode? Mode { get; set; } = SDKGenerator.L2VPNServiceMode.SERVER; + + /// This property applies only in SERVER mode. If set to true, + /// traffic from any client will be replicated to all other clients. + /// If set to false, traffic received from clients is only replicated + /// to the local VPN endpoint. + /// + [Newtonsoft.Json.JsonProperty("enable_hub", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_hub { get; set; } = false; + + + } + + /// List of routes to be aggregated + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RouteAggregationEntry + { + /// Send only summarized route. + /// Summarization reduces number of routes advertised by representing + /// multiple related routes with prefix property. + /// + [Newtonsoft.Json.JsonProperty("summary_only", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Summary_only { get; set; } = true; + + /// CIDR of aggregate address + [Newtonsoft.Json.JsonProperty("prefix", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Prefix { get; set; } + + + } + + /// IPSec VPN tunnel traffic statistics. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnTunnelTrafficStatistics + { + /// Total number of packets dropped while sending for any reason. + /// + [Newtonsoft.Json.JsonProperty("packets_sent_other_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_sent_other_error { get; set; } + + /// Total number of outgoing packets on outbound Security association. + /// + [Newtonsoft.Json.JsonProperty("packets_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_out { get; set; } + + /// Total number of outgoing packets dropped on outbound security association. + /// + [Newtonsoft.Json.JsonProperty("dropped_packets_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Dropped_packets_out { get; set; } + + /// Total number of packets dropped due to integrity failures. + /// + [Newtonsoft.Json.JsonProperty("integrity_failures", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Integrity_failures { get; set; } + + /// Number of packets dropped because of no matching policy is available. + /// + [Newtonsoft.Json.JsonProperty("nomatching_policy_errors", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Nomatching_policy_errors { get; set; } + + /// Totoal number of security association mismatch errors on incoming packets. + /// + [Newtonsoft.Json.JsonProperty("sa_mismatch_errors_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Sa_mismatch_errors_in { get; set; } + + /// Total number of incoming packets dropped on inbound Security association. + /// + [Newtonsoft.Json.JsonProperty("packets_received_other_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_received_other_error { get; set; } + + /// Total number of packets dropped due to replay check on that Security association. + /// + [Newtonsoft.Json.JsonProperty("replay_errors", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Replay_errors { get; set; } + + /// Total number of outgoing bytes on outbound Security association. + /// + [Newtonsoft.Json.JsonProperty("bytes_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bytes_out { get; set; } + + /// Local subnet to which a tunnel belongs. + /// + [Newtonsoft.Json.JsonProperty("local_subnet", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Local_subnet { get; set; } + + /// Total number of incoming packets dropped on inbound security association. + /// + [Newtonsoft.Json.JsonProperty("dropped_packets_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Dropped_packets_in { get; set; } + + /// Total number of packets dropped because of failure in encryption. + /// + [Newtonsoft.Json.JsonProperty("encryption_failures", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Encryption_failures { get; set; } + + /// Totoal number of security association mismatch errors on outgoing packets. + /// + [Newtonsoft.Json.JsonProperty("sa_mismatch_errors_out", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Sa_mismatch_errors_out { get; set; } + + /// Gives the detailed reason about the tunnel when it is down. If tunnel + /// is UP tunnel down reason will be empty. + /// + [Newtonsoft.Json.JsonProperty("tunnel_down_reason", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tunnel_down_reason { get; set; } + + /// Total number of incoming bytes on inbound Security association. + /// + [Newtonsoft.Json.JsonProperty("bytes_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Bytes_in { get; set; } + + /// Total number of packets dropped due to decryption failures. + /// + [Newtonsoft.Json.JsonProperty("decryption_failures", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Decryption_failures { get; set; } + + /// Total number of packets dropped while sending due to overflow in sequence number. + /// + [Newtonsoft.Json.JsonProperty("seq_number_overflow_error", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Seq_number_overflow_error { get; set; } + + /// Peer subnet to which a tunnel belongs. + /// + [Newtonsoft.Json.JsonProperty("remote_subnet", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Remote_subnet { get; set; } + + /// Total number of incoming packets on inbound Security association. + /// + [Newtonsoft.Json.JsonProperty("packets_in", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Packets_in { get; set; } + + /// Specifies the status of tunnel, if it is UP/DOWN. + /// + [Newtonsoft.Json.JsonProperty("tunnel_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IPSecVpnTunnelTrafficStatisticsTunnel_status? Tunnel_status { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PktcapActionConfig + { + /// Sample argument for packet capture + [Newtonsoft.Json.JsonProperty("sampling_argument", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public SamplingArgument Sampling_argument { get; set; } + + /// Action argument for packet capture + [Newtonsoft.Json.JsonProperty("action_argument", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public PktcapActionArgument Action_argument { get; set; } + + + } + + /// Paged collection of IDS profiles + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdsProfileListResult : ListResult + { + /// IDS profile list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer DnsQueryTypeMatch object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsQueryTypeMatch + { + /// DNS query types in the request query. + /// Enum options - DNS_RECORD_OTHER, DNS_RECORD_A, + /// DNS_RECORD_NS, DNS_RECORD_CNAME, DNS_RECORD_SOA, + /// DNS_RECORD_PTR, DNS_RECORD_HINFO, DNS_RECORD_MX, + /// DNS_RECORD_TXT, DNS_RECORD_RP, DNS_RECORD_DNSKEY, + /// DNS_RECORD_AAAA, DNS_RECORD_SRV, DNS_RECORD_OPT, + /// DNS_RECORD_RRSIG, DNS_RECORD_AXFR, DNS_RECORD_ANY. + /// + [Newtonsoft.Json.JsonProperty("query_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Query_type { get; set; } + + /// Criterion to use for matching the DNS query typein the + /// question section. + /// Enum options - IS_IN, IS_NOT_IN. + /// + [Newtonsoft.Json.JsonProperty("match_criteria", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBDnsQueryTypeMatchMatch_criteria Match_criteria { get; set; } + + + } + + /// Paged Collection of Deployment Zones. + /// This is a deprecated type. DeploymentZone has been renamed to Site. + /// Use SiteListResult. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DeploymentZoneListResult : ListResult + { + /// Deployment Zones + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer LdapAuthSettings object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBLdapAuthSettings + { + /// LDAP anonymous bind configuration. + [Newtonsoft.Json.JsonProperty("user_bind", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBLdapUserBindSettings User_bind { get; set; } + + /// LDAP connection security mode. + /// Enum options - AUTH_LDAP_SECURE_NONE, + /// AUTH_LDAP_SECURE_USE_LDAPS. + /// + [Newtonsoft.Json.JsonProperty("security_mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBLdapAuthSettingsSecurity_mode? Security_mode { get; set; } + + /// LDAP attribute that refers to user's full name. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as name. + /// + [Newtonsoft.Json.JsonProperty("full_name_attribute", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Full_name_attribute { get; set; } = "name"; + + /// LDAP full directory configuration with administrator + /// credentials. + /// + [Newtonsoft.Json.JsonProperty("settings", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBLdapDirectorySettings Settings { get; set; } + + /// The LDAP base DN. + /// For example, avinetworks.com would be + /// DC=avinetworks,DC=com. + /// + [Newtonsoft.Json.JsonProperty("base_dn", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Base_dn { get; set; } + + /// LDAP attribute that refers to user email. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as email. + /// + [Newtonsoft.Json.JsonProperty("email_attribute", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Email_attribute { get; set; } = "email"; + + /// LDAP administrator credentials are used to search for users + /// and group memberships. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("bind_as_administrator", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Bind_as_administrator { get; set; } = true; + + /// Query the LDAP servers on this port. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 389. + /// + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Port { get; set; } = 389L; + + /// LDAP server IP address or Hostname. + /// Use IP address if an auth profile is used to configure + /// Virtual Service. + /// Minimum of 1 items required. + /// + [Newtonsoft.Json.JsonProperty("server", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Server { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Cookie time. + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "type")] + [JsonInheritanceAttribute("LBSessionCookieTime", typeof(LBSessionCookieTime))] + [JsonInheritanceAttribute("LBPersistenceCookieTime", typeof(LBPersistenceCookieTime))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBCookieTime + { + + } + + /// Authenticated User Info + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class UserInfo + { + /// User Name + [Newtonsoft.Json.JsonProperty("user_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string User_name { get; set; } + + /// Permissions + [Newtonsoft.Json.JsonProperty("roles", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Roles { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PacketTypeAndCounter + { + /// The number of packets. + [Newtonsoft.Json.JsonProperty("counter", Required = Newtonsoft.Json.Required.Always)] + public long Counter { get; set; } + + /// The type of the packets + [Newtonsoft.Json.JsonProperty("packet_type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Packet_type { get; set; } + + + } + + /// Represents a reference to a widget that is held by a container or a multi-widget or a View. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class WidgetItem + { + /// Aligns widget either left or right. + [Newtonsoft.Json.JsonProperty("alignment", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public WidgetItemAlignment? Alignment { get; set; } = SDKGenerator.WidgetItemAlignment.LEFT; + + /// If true, separates this widget in a container. + [Newtonsoft.Json.JsonProperty("separator", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Separator { get; set; } = false; + + /// Id of the widget configuration that is held by a multi-widget or a container or a view. + [Newtonsoft.Json.JsonProperty("widget_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Widget_id { get; set; } + + /// Determines placement of widget or container relative to other widgets and containers. The lower the weight, the higher it is in the placement order. + [Newtonsoft.Json.JsonProperty("weight", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Weight { get; set; } = 10000L; + + /// Applicable for 'DonutConfiguration' and 'StatsConfiguration' reports only. If label is not specified, then it defaults to the label of the donut or stats report. + [Newtonsoft.Json.JsonProperty("label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Label Label { get; set; } + + + } + + /// This action is used to create a new variable and assign value to it. + /// One action can be used to create one variable. To create multiple + /// variables, multiple actions must be defined. + /// The variables can be used by LBVariableCondition, etc. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBVariableAssignmentAction : LBRuleAction + { + /// Value of variable. + [Newtonsoft.Json.JsonProperty("variable_value", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Variable_value { get; set; } + + /// Name of the variable to be assigned. + [Newtonsoft.Json.JsonProperty("variable_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Variable_name { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TraceActionArgument + { + /// Please keep this aligned with pktcap_config, if you + /// specify reverse_filter at pktcap_config. + /// + [Newtonsoft.Json.JsonProperty("reverse_filter", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LiveTraceFilterData Reverse_filter { get; set; } + + /// Please keep this aligned with pktcap_config, if you + /// specify dest_lport at pktcap_config. + /// + [Newtonsoft.Json.JsonProperty("dest_lport", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dest_lport { get; set; } + + /// Type of trace + [Newtonsoft.Json.JsonProperty("trace_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceActionArgumentTrace_type? Trace_type { get; set; } + + + } + + /// Paged Collection of TraceflowConfigs + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TraceflowConfigListResult : ListResult + { + /// TraceflowConfig list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// DHCP options for IPv4 server. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DhcpV4Options + { + /// DHCP option 121 to define classless static routes. + /// + [Newtonsoft.Json.JsonProperty("option121", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public DhcpOption121 Option121 { get; set; } + + /// To define DHCP options other than option 121 in generic format. + /// Please note, only the following options can be defined in generic + /// format. Those other options will be accepted without validation + /// but will not take effect. + /// -------------------------- + /// Code Name + /// -------------------------- + /// 2 Time Offset + /// 6 Domain Name Server + /// 13 Boot File Size + /// 19 Forward On/Off + /// 26 MTU Interface + /// 28 Broadcast Address + /// 35 ARP Timeout + /// 40 NIS Domain + /// 41 NIS Servers + /// 42 NTP Servers + /// 44 NETBIOS Name Srv + /// 45 NETBIOS Dist Srv + /// 46 NETBIOS Node Type + /// 47 NETBIOS Scope + /// 58 Renewal Time + /// 59 Rebinding Time + /// 64 NIS+-Domain-Name + /// 65 NIS+-Server-Addr + /// 66 TFTP Server-Name (used by PXE) + /// 67 Bootfile-Name (used by PXE) + /// 93 PXE: Client system architecture + /// 94 PXE: Client NDI + /// 97 PXE: UUID/UNDI + /// 117 Name Service Search + /// 119 Domain Search + /// 150 TFTP server address (used by PXE) + /// 175 Etherboot + /// 209 PXE Configuration File + /// 210 PXE Path Prefix + /// 211 PXE Reboot Time + /// + [Newtonsoft.Json.JsonProperty("others", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(255)] + public System.Collections.Generic.ICollection Others { get; set; } + + + } + + /// Snat disabled. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBSnatDisabled : LBSnatTranslation + { + + } + + /// Aggregate of L2VPN Session Statistics across Enforcement Points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateL2VPNSessionStatistics : AggregatePolicyRuntimeInfo + { + /// List of L2VPN Session Statistics per Enforcement Point. + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Paged Collection of LBVirtualServers + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBVirtualServerListResult : ListResult + { + /// LBVirtualServer list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer HSMThalesNetHsm object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHSMThalesNetHsm + { + /// Priority class of the nethsm in an high availability setup. + /// 1 is the highest priority and 100 is the lowest priority. + /// Allowed values are 1-100. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 100. + /// + [Newtonsoft.Json.JsonProperty("priority", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 100D)] + public long Priority { get; set; } = 100L; + + /// Hash of the key that netHSM device uses to authenticate + /// itself. + /// Use Thales anonkneti utility to find the netHSM keyhash. + /// + [Newtonsoft.Json.JsonProperty("keyhash", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Keyhash { get; set; } + + /// Local module id of the netHSM device. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("module_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Module_id { get; set; } = 0L; + + /// Electronic serial number of the netHSM device. + /// Use Thales anonkneti utility to find the netHSM ESN. + /// + [Newtonsoft.Json.JsonProperty("esn", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Esn { get; set; } + + /// Port at which the netHSM device accepts the connection. + /// Allowed values are 1-65535. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 9004. + /// + [Newtonsoft.Json.JsonProperty("remote_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Remote_port { get; set; } = 9004L; + + /// IP address of the netHSM device. + [Newtonsoft.Json.JsonProperty("remote_ip", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBIpAddr Remote_ip { get; set; } = new ALBIpAddr(); + + + } + + /// IPFIX data for the NSX distributed firewall will be sent to the specified + /// IPFIX collectors. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPFIXDFWCollectorProfile : PolicyConfigResource + { + /// It accepts Multiple Collectors. + [Newtonsoft.Json.JsonProperty("ipfix_dfw_collectors", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + public System.Collections.Generic.ICollection Ipfix_dfw_collectors { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// List SegmentPort objects + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SegmentPortListResult : ListResult + { + /// Place holder for the list result + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer SSLKeyECParams object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBSSLKeyECParams + { + /// Enum options - SSL_KEY_EC_CURVE_SECP256R1, + /// SSL_KEY_EC_CURVE_SECP384R1, SSL_KEY_EC_CURVE_SECP521R1. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as SSL_KEY_EC_CURVE_SECP256R1. + /// + [Newtonsoft.Json.JsonProperty("curve", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBSSLKeyECParamsCurve? Curve { get; set; } = SDKGenerator.ALBSSLKeyECParamsCurve.SSL_KEY_EC_CURVE_SECP256R1; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MetadataProxyConfigListResult : ListResult + { + /// Paginated list of metadata proxy configurations + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// This condition is used to match the HTTP protocol version of the HTTP + /// request messages. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBHttpRequestVersionCondition : LBRuleCondition + { + /// HTTP version + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBHttpRequestVersionConditionVersion Version { get; set; } + + + } + + /// PKIProfileApiResponse + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBPKIProfileApiResponse : ListResult + { + /// count + /// + [Newtonsoft.Json.JsonProperty("count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Count { get; set; } + + /// Array of PKIProfile + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Describes the configuration of a widget to be displayed on the dashboard. WidgetConfiguration is a base type that provides attributes of a widget in-general. + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("DropdownFilterWidgetConfiguration", typeof(DropdownFilterWidgetConfiguration))] + [JsonInheritanceAttribute("FilterWidgetConfiguration", typeof(FilterWidgetConfiguration))] + [JsonInheritanceAttribute("ContainerConfiguration", typeof(ContainerConfiguration))] + [JsonInheritanceAttribute("GridConfiguration", typeof(GridConfiguration))] + [JsonInheritanceAttribute("MultiWidgetConfiguration", typeof(MultiWidgetConfiguration))] + [JsonInheritanceAttribute("LabelValueConfiguration", typeof(LabelValueConfiguration))] + [JsonInheritanceAttribute("DonutConfiguration", typeof(DonutConfiguration))] + [JsonInheritanceAttribute("GraphConfiguration", typeof(GraphConfiguration))] + [JsonInheritanceAttribute("StatsConfiguration", typeof(StatsConfiguration))] + [JsonInheritanceAttribute("CustomWidgetConfiguration", typeof(CustomWidgetConfiguration))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class WidgetConfiguration : ManagedResource + { + /// Features required to view the widget. + [Newtonsoft.Json.JsonProperty("feature_set", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public FeatureSet Feature_set { get; set; } + + /// Default filter values to be passed to datasources. This will be used when the report is requested without filter values. + [Newtonsoft.Json.JsonProperty("default_filter_value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Default_filter_value { get; set; } + + /// Title of the widget. If display_name is omitted, the widget will be shown without a title. + [Newtonsoft.Json.JsonProperty("display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Display_name { get; set; } + + /// The 'datasources' represent the sources from which data will be fetched. Currently, only NSX-API is supported as a 'default' datasource. An example of specifying 'default' datasource along with the urls to fetch data from is given at 'example_request' section of 'CreateWidgetConfiguration' API. + [Newtonsoft.Json.JsonProperty("datasources", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Datasources { get; set; } + + /// Specify relavite weight in WidgetItem for placement in a view. Please see WidgetItem for details. + [Newtonsoft.Json.JsonProperty("weight", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Weight { get; set; } + + [Newtonsoft.Json.JsonProperty("footer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Footer Footer { get; set; } + + /// Flag to indicate that widget will continue to work without filter value. If this flag is set to false then default_filter_value is manadatory. + [Newtonsoft.Json.JsonProperty("filter_value_required", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Filter_value_required { get; set; } = true; + + /// Represents the horizontal span of the widget / container. + [Newtonsoft.Json.JsonProperty("span", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 12D)] + public long? Span { get; set; } + + /// Icons to be applied at dashboard for widgets and UI elements. + [Newtonsoft.Json.JsonProperty("icons", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Icons { get; set; } + + /// Set to true if this widget should be used as a drilldown. + [Newtonsoft.Json.JsonProperty("is_drilldown", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_drilldown { get; set; } = false; + + /// Id of filter widget for subscription, if any. Id should be a valid id of an existing filter widget. Filter widget should be from the same view. Datasource URLs should have placeholder values equal to filter alias to accept the filter value on filter change. + [Newtonsoft.Json.JsonProperty("filter", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Filter { get; set; } + + /// Id of drilldown widget, if any. Id should be a valid id of an existing widget. A widget is considered as drilldown widget when it is associated with any other widget and provides more detailed information about any data item from the parent widget. + [Newtonsoft.Json.JsonProperty("drilldown_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Drilldown_id { get; set; } + + /// Please use the property 'shared' of View instead of this. The widgets of a shared view are visible to other users. + [Newtonsoft.Json.JsonProperty("shared", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Shared { get; set; } + + /// Legend to be displayed. If legend is not needed, do not include it. + [Newtonsoft.Json.JsonProperty("legend", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Legend Legend { get; set; } + + + } + + /// Transport tunnel status. + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("IPSecVpnTransportStatus", typeof(IPSecVpnTransportStatus))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VPNSessionTransportTunnelStatus + { + /// Policy path referencing Transport Tunnel. + [Newtonsoft.Json.JsonProperty("transport_tunnel_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Transport_tunnel_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VirtualNetworkInterfaceListResult : ListResult + { + /// VirtualNetworkInterface list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Paged Collection of Domains + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DomainListResult : ListResult + { + /// Domain list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TraceflowObservationDropped : TraceflowObservation + { + /// The ID of the NAT rule that was applied to forward the traceflow packet + [Newtonsoft.Json.JsonProperty("nat_rule_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Nat_rule_id { get; set; } + + /// The reason traceflow packet was dropped + [Newtonsoft.Json.JsonProperty("reason", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceflowObservationDroppedReason? Reason { get; set; } + + /// The id of the logical port at which the traceflow packet was dropped + [Newtonsoft.Json.JsonProperty("lport_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lport_id { get; set; } + + /// The name of the logical port at which the traceflow packet was dropped + [Newtonsoft.Json.JsonProperty("lport_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lport_name { get; set; } + + /// The id of the acl rule that was applied to drop the traceflow packet + [Newtonsoft.Json.JsonProperty("acl_rule_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Acl_rule_id { get; set; } + + /// This field specifies the ARP fails reason ARP_TIMEOUT - ARP failure due to query control plane timeout ARP_CPFAIL - ARP failure due post ARP query message to control plane failure ARP_FROMCP - ARP failure due to deleting ARP entry from control plane ARP_PORTDESTROY - ARP failure due to port destruction ARP_TABLEDESTROY - ARP failure due to ARP table destruction ARP_NETDESTROY - ARP failure due to overlay network destruction + [Newtonsoft.Json.JsonProperty("arp_fail_reason", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceflowObservationDroppedArp_fail_reason? Arp_fail_reason { get; set; } + + + } + + /// Advanced load balancer DnsRuleAction object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsRuleAction + { + /// Select a pool or pool group for the passthrough DNS query + /// which cannot be served locally but could be served by + /// upstream servers. + /// + [Newtonsoft.Json.JsonProperty("pool_switching", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsRuleActionPoolSwitching Pool_switching { get; set; } + + /// Select a specific GSLB site for the DNS query. + /// This action should be used only when GSLB services have + /// been configured for the DNS virtual service. + /// + [Newtonsoft.Json.JsonProperty("gslb_site_selection", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsRuleActionGslbSiteSelection Gslb_site_selection { get; set; } + + /// Generate a response for the DNS query. + [Newtonsoft.Json.JsonProperty("response", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsRuleActionResponse Response { get; set; } + + /// Allow or drop the DNS query. + [Newtonsoft.Json.JsonProperty("allow", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsRuleActionAllowDrop Allow { get; set; } + + /// Rate limits the DNS requests. + [Newtonsoft.Json.JsonProperty("dns_rate_limiter", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsRateLimiter Dns_rate_limiter { get; set; } + + + } + + /// Ipaddress information of the fabric node. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IpAddressInfo + { + /// Source of the ipaddress information. + [Newtonsoft.Json.JsonProperty("source", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IpAddressInfoSource? Source { get; set; } + + /// IP Addresses of the the virtual network interface, as discovered in the source. + [Newtonsoft.Json.JsonProperty("ip_addresses", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_addresses { get; set; } + + + } + + /// Restore step info + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RestoreStep + { + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public PerStepRestoreStatus Status { get; set; } + + /// Restore step number + [Newtonsoft.Json.JsonProperty("step_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Step_number { get; set; } + + /// Restore step description + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Description { get; set; } + + /// Restore step value + [Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Value { get; set; } + + + } + + /// LBVirtualServerStatus on specific Enforcement Point + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("LBVirtualServerStatus", typeof(LBVirtualServerStatus))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBVirtualServerStatusPerEP : PolicyRuntimeInfoPerEP + { + + } + + /// Child wrapper object for L2Vpn, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildL2Vpn : ChildPolicyConfigResource + { + /// Contains the actual L2Vpn object. + /// + [Newtonsoft.Json.JsonProperty("L2Vpn", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public L2Vpn L2Vpn { get; set; } + + + } + + /// Unary Operation. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class UnaryOperation + { + /// Logical Operator describing the operation to apply to the operand. + [Newtonsoft.Json.JsonProperty("operator", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public UnaryOperationOperator Operator { get; set; } + + /// Represents an argument of the operation pointing to a specific field value. + [Newtonsoft.Json.JsonProperty("operand", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ResourceFieldPointer Operand { get; set; } = new ResourceFieldPointer(); + + + } + + /// Paged collection of IDS signatures + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdsSignatureListResult : ListResult + { + /// IDS signature list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class CapacityThresholdList : ManagedResource + { + /// List of capacity thresholds for NSX Objects + [Newtonsoft.Json.JsonProperty("capacity_thresholds", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Capacity_thresholds { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedFirewallSectionListResult : ListResult + { + /// Paged Collection of firewall sections + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// RBAC Objects qualifier + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ObjectRolePermissionGroup : ManagedResource + { + /// Allowed operation + [Newtonsoft.Json.JsonProperty("operation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ObjectRolePermissionGroupOperation? Operation { get; set; } + + /// Role name + [Newtonsoft.Json.JsonProperty("role_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Role_name { get; set; } + + /// Is rule disabled or not + [Newtonsoft.Json.JsonProperty("rule_disabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Rule_disabled { get; set; } = false; + + /// Does children of this object inherit this rule + [Newtonsoft.Json.JsonProperty("inheritance_disabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Inheritance_disabled { get; set; } = false; + + /// Path prefix + [Newtonsoft.Json.JsonProperty("path_prefix", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Path_prefix { get; set; } + + + } + + /// Paged Collection of LBMonitorProfiles + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBMonitorProfileListResult : ListResult + { + /// LBMonitorProfile list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DhcpStatistics + { + /// The total number of DHCP errors + [Newtonsoft.Json.JsonProperty("errors", Required = Newtonsoft.Json.Required.Always)] + public long Errors { get; set; } + + /// The total number of DHCP RELEASE packets + [Newtonsoft.Json.JsonProperty("releases", Required = Newtonsoft.Json.Required.Always)] + public long Releases { get; set; } + + /// The total number of DHCP INFORM packets + [Newtonsoft.Json.JsonProperty("informs", Required = Newtonsoft.Json.Required.Always)] + public long Informs { get; set; } + + /// The total number of DHCP DECLINE packets + [Newtonsoft.Json.JsonProperty("declines", Required = Newtonsoft.Json.Required.Always)] + public long Declines { get; set; } + + /// dhcp server uuid + [Newtonsoft.Json.JsonProperty("dhcp_server_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Dhcp_server_id { get; set; } + + /// The total number of DHCP NACK packets + [Newtonsoft.Json.JsonProperty("nacks", Required = Newtonsoft.Json.Required.Always)] + public long Nacks { get; set; } + + /// The total number of DHCP OFFER packets + [Newtonsoft.Json.JsonProperty("offers", Required = Newtonsoft.Json.Required.Always)] + public long Offers { get; set; } + + /// The total number of DHCP DISCOVER packets + [Newtonsoft.Json.JsonProperty("discovers", Required = Newtonsoft.Json.Required.Always)] + public long Discovers { get; set; } + + /// The total number of DHCP ACK packets + [Newtonsoft.Json.JsonProperty("acks", Required = Newtonsoft.Json.Required.Always)] + public long Acks { get; set; } + + /// timestamp of the statistics + [Newtonsoft.Json.JsonProperty("timestamp", Required = Newtonsoft.Json.Required.Always)] + public long Timestamp { get; set; } + + /// The total number of DHCP REQUEST packets + [Newtonsoft.Json.JsonProperty("requests", Required = Newtonsoft.Json.Required.Always)] + public long Requests { get; set; } + + /// The DHCP ip pool usage statistics + [Newtonsoft.Json.JsonProperty("ip_pool_stats", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_pool_stats { get; set; } + + + } + + /// Paged Collection of IPFIX Switch Collection Instances + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPFIXSwitchCollectionInstanceListResult : ListResult + { + /// IPFIX Switch Collection Instances list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregatedDataCounterEx : AggregatedDataCounter + { + [Newtonsoft.Json.JsonProperty("mac_learning", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public MacLearningCounters Mac_learning { get; set; } + + [Newtonsoft.Json.JsonProperty("dropped_by_security_packets", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public PacketsDroppedBySecurity Dropped_by_security_packets { get; set; } + + + } + + /// Local Egress is used on both server and client sites so that the gateway + /// is used for N-S traffic and overhead on L2VPN tunnel is reduced. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LocalEgress + { + /// Gateway IP for Local Egress. Local egress is enabled only when this + /// list is not empty. + /// + [Newtonsoft.Json.JsonProperty("optimized_ips", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Optimized_ips { get; set; } + + + } + + /// Paged Collection of DNS Forwarder Zones + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyDnsForwarderZoneListResult : ListResult + { + /// Dns Forwarder Zone list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DhcpStaticBindingState : ConfigurationState + { + + } + + /// Configuration where backup files are stored for restore + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RestoreConfiguration + { + /// The server from which backup files will be retrieved for restore. + [Newtonsoft.Json.JsonProperty("remote_file_server", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public RemoteFileServer Remote_file_server { get; set; } = new RemoteFileServer(); + + /// Passphrase used to encrypt backup files. + [Newtonsoft.Json.JsonProperty("passphrase", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Passphrase { get; set; } + + + } + + /// Child wrapper object for PolicyFirewallFloodProtectionProfileBindingMap, + /// used in hierarchical API + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicyFirewallFloodProtectionProfileBindingMap : ChildPolicyConfigResource + { + /// Contains the actual PolicyFirewallFloodProtectionProfileBindingMap object + /// + [Newtonsoft.Json.JsonProperty("PolicyFirewallFloodProtectionProfileBindingMap", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyFirewallFloodProtectionProfileBindingMap PolicyFirewallFloodProtectionProfileBindingMap { get; set; } + + + } + + /// WafPolicyPSMGroupApiResponse + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBWafPolicyPSMGroupApiResponse : ListResult + { + /// count + /// + [Newtonsoft.Json.JsonProperty("count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Count { get; set; } + + /// Array of WafPolicyPSMGroup + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// It represents tag operation status for a resource and details of the failure if any. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ResourceTagStatus + { + /// Status of tag apply or remove operation + [Newtonsoft.Json.JsonProperty("tag_status", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ResourceTagStatusTag_status Tag_status { get; set; } + + /// Details about the error if any + [Newtonsoft.Json.JsonProperty("details", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Details { get; set; } + + /// Resource display name + [Newtonsoft.Json.JsonProperty("resource_display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Resource_display_name { get; set; } + + /// Resource id + [Newtonsoft.Json.JsonProperty("resource_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Resource_id { get; set; } + + + } + + /// Child wrapper object for Tier-0, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildTier0 : ChildPolicyConfigResource + { + /// Contains the actual Tier-0 object. + /// + [Newtonsoft.Json.JsonProperty("Tier0", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public Tier0 Tier0 { get; set; } + + + } + + /// Child wrapper object for Tier-1 , used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildTier1 : ChildPolicyConfigResource + { + /// Contains the actual Tier-1 object. + /// + [Newtonsoft.Json.JsonProperty("Tier1", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public Tier1 Tier1 { get; set; } + + + } + + /// Child wrapper object for IPSecVpnTunnelProfile, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildIPSecVpnTunnelProfile : ChildPolicyConfigResource + { + /// Contains the actual IPSecVpnTunnelProfile object + /// + [Newtonsoft.Json.JsonProperty("IPSecVpnTunnelProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public IPSecVpnTunnelProfile IPSecVpnTunnelProfile { get; set; } + + + } + + /// Advanced load balancer WafProfile object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBWafProfile : PolicyConfigResource + { + /// List of Data Files Used for WAF Rules. + /// Maximum of 64 items allowed. + /// + [Newtonsoft.Json.JsonProperty("files", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Files { get; set; } + + /// Config params for WAF. + [Newtonsoft.Json.JsonProperty("config", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBWafConfig Config { get; set; } = new ALBWafConfig(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class TraceflowObservationForwarded : TraceflowObservation + { + /// The name of the uplink the traceflow packet is forwarded on + [Newtonsoft.Json.JsonProperty("uplink_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Uplink_name { get; set; } + + /// The virtual tunnel endpoint label + [Newtonsoft.Json.JsonProperty("vtep_label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Vtep_label { get; set; } + + /// IP address of the destination end of the tunnel + [Newtonsoft.Json.JsonProperty("remote_ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Remote_ip_address { get; set; } + + /// The 64bit tunnel context carried on the wire + [Newtonsoft.Json.JsonProperty("context", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Context { get; set; } + + /// IP address of the source end of the tunnel + [Newtonsoft.Json.JsonProperty("local_ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Local_ip_address { get; set; } + + /// This field will not be always available. Use remote_ip_address when this field is not set. + [Newtonsoft.Json.JsonProperty("dst_transport_node_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dst_transport_node_id { get; set; } + + /// The name of the transport node to which the traceflow packet is forwarded + [Newtonsoft.Json.JsonProperty("dst_transport_node_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dst_transport_node_name { get; set; } + + + } + + /// Represents IP address expressions in the form of an array, to support addition of IP addresses in a group. Avoid creating groups with multiple IPAddressExpression. In future releases, group will be restricted to contain a single IPAddressExpression. To group IPAddresses, use nested groups instead of multiple IPAddressExpressions. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPAddressExpression : Expression + { + /// This array can consist of a single IP address, IP address range or a subnet. Its type can be of either IPv4 or IPv6. Both IPv4 and IPv6 addresses within one expression is not allowed. Supported list of formats are, "192.168.1.1", "192.168.1.1-192.168.1.100", "192.168.0.0/24", "fe80::250:56ff:fe83:318c", "fe80::250:56ff:fe83:3181-fe80::250:56ff:fe83:318c", "fe80::250:56ff:fe83:318c/64". + [Newtonsoft.Json.JsonProperty("ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(4000)] + public System.Collections.Generic.ICollection Ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer MatchTarget object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBMatchTarget + { + /// Configure the host header. + [Newtonsoft.Json.JsonProperty("host_hdr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHostHdrMatch Host_hdr { get; set; } + + /// Configure client ip addresses. + [Newtonsoft.Json.JsonProperty("client_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBIpAddrMatch Client_ip { get; set; } + + /// Configure versions of the HTTP protocol. + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHTTPVersionMatch Version { get; set; } + + /// Configure the type of HTTP protocol. + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBProtocolMatch Protocol { get; set; } + + /// Configure HTTP header(s). + [Newtonsoft.Json.JsonProperty("hdrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Hdrs { get; set; } + + /// Configure request query. + [Newtonsoft.Json.JsonProperty("query", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBQueryMatch Query { get; set; } + + /// Configure HTTP cookie(s). + [Newtonsoft.Json.JsonProperty("cookie", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBCookieMatch Cookie { get; set; } + + /// Configure request paths. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPathMatch Path { get; set; } + + /// Configure virtual service ports. + [Newtonsoft.Json.JsonProperty("vs_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPortMatch Vs_port { get; set; } + + /// Configure HTTP methods. + [Newtonsoft.Json.JsonProperty("method", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBMethodMatch Method { get; set; } + + + } + + /// Advanced load balancer DnsNsRdata object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsNsRdata + { + /// IPv6 address for Name Server. + [Newtonsoft.Json.JsonProperty("ip6_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBIpAddr Ip6_address { get; set; } + + /// IP address for Name Server. + [Newtonsoft.Json.JsonProperty("ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBIpAddr Ip_address { get; set; } + + /// Name Server name. + [Newtonsoft.Json.JsonProperty("nsname", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Nsname { get; set; } + + + } + + /// Advanced load balancer AuthorizationMatch object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAuthorizationMatch + { + /// Host header value to be matched. + [Newtonsoft.Json.JsonProperty("host_hdr", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBHostHdrMatch Host_hdr { get; set; } + + /// Paths/URLs to be matched. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBPathMatch Path { get; set; } + + /// HTTP methods to be matched. + [Newtonsoft.Json.JsonProperty("method", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBMethodMatch Method { get; set; } + + /// Attributes whose values need to be matched . + [Newtonsoft.Json.JsonProperty("attr_matches", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Attr_matches { get; set; } + + + } + + /// It define redirection rule for service insertion + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RedirectionRule : BaseRule + { + /// The action to be applied to all the services + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public RedirectionRuleAction? Action { get; set; } + + + } + + /// Advanced load balancer HTTPCookieData object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHTTPCookieData + { + /// Cookie name. + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } + + /// Cookie value. + [Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Value { get; set; } + + + } + + /// Advanced load balancer AutoScaleMesosSettings object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAutoScaleMesosSettings + { + /// Apply scaleout even when there are deployments inprogress. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("force", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Force { get; set; } = true; + + + } + + /// Child wrapper object for group, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildGroup : ChildPolicyConfigResource + { + /// Contains the actual group objects. + /// + [Newtonsoft.Json.JsonProperty("Group", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public Group Group { get; set; } + + + } + + /// Binding of Tier-1 to the enforcement point. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Tier1DeploymentMap : PolicyConfigResource + { + /// Path of enforcement point on which Tier-1 shall be deployed. + [Newtonsoft.Json.JsonProperty("enforcement_point", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Enforcement_point { get; set; } + + + } + + /// This holds the request parameters required to invoke export task. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ExportRequestParameter + { + /// Policy path of a draft which is to be exported. + /// If not provided, current firewall configuration will then be exported. + /// + [Newtonsoft.Json.JsonProperty("draft_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Draft_path { get; set; } + + /// Passphrase to sign exported files. + /// The passphrase specified must be at least 8 characters in length and + /// must contain at least one lowercase, one uppercase, one numeric + /// character and one non-space special character. + /// + [Newtonsoft.Json.JsonProperty("passphrase", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(int.MaxValue, MinimumLength = 8)] + public string Passphrase { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyBgpNeighborsStatusListResult : ListResult + { + /// Status of BGP neighbors of the Tier0 + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// IDS configuration to enable/disable IDS on cluster level. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdsClusterConfig : PolicyConfigResource + { + /// Contains policy resource reference object + [Newtonsoft.Json.JsonProperty("cluster", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyResourceReference Cluster { get; set; } + + /// If set to true, IDS is enabled on the respective cluster + [Newtonsoft.Json.JsonProperty("ids_enabled", Required = Newtonsoft.Json.Required.Always)] + public bool Ids_enabled { get; set; } + + + } + + /// L2Vpn Context provides meta-data information about the parent Tier-0. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VpnContext : PolicyConfigResource + { + /// If enabled, the tier-0 acts as a Hub and replicates traffic received from + /// peer to all other peers. If disabled, the tier-0 acts as a Spoke and + /// replicates only the local. + /// + [Newtonsoft.Json.JsonProperty("enable_hub", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_hub { get; set; } = false; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VrfEvpnL2VniConfig + { + /// Define L2 VNI and its related route distinguiser and route targets. + /// + [Newtonsoft.Json.JsonProperty("l2_vni_configs", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection L2_vni_configs { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// This is used to enable or disable the creation of vtep groups. Each vtep group + /// is used to group vteps with the same MAC for L2 ECMP usage. + /// + [Newtonsoft.Json.JsonProperty("enable_vtep_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_vtep_groups { get; set; } = false; + + + } + + /// Layer 2 Auto assigned Route Distinguisher + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2AutoRD + { + /// Layer 2 Virtual Network Interface + [Newtonsoft.Json.JsonProperty("l2_vni", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string L2_vni { get; set; } + + /// Layer 2 auto assigned route distinghusher + [Newtonsoft.Json.JsonProperty("l2_auto_rd", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string L2_auto_rd { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Traceflow : ManagedResource + { + /// Represents the traceflow operation state + [Newtonsoft.Json.JsonProperty("operation_state", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceflowOperation_state? Operation_state { get; set; } + + /// counters of observations from logical components + [Newtonsoft.Json.JsonProperty("logical_counters", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public TraceflowObservationCounters Logical_counters { get; set; } + + /// Maximum time (in ms) the management plane will be waiting for this traceflow round. + [Newtonsoft.Json.JsonProperty("timeout", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(5000D, 15000D)] + public long? Timeout { get; set; } + + /// A flag, when set true, indicates some observations were deleted from the result set. + [Newtonsoft.Json.JsonProperty("result_overflowed", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Result_overflowed { get; set; } + + /// id of the source logical port used for injecting the traceflow packet + [Newtonsoft.Json.JsonProperty("lport_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Lport_id { get; set; } + + /// observation counters + [Newtonsoft.Json.JsonProperty("counters", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public TraceflowObservationCounters Counters { get; set; } + + /// The status of the traceflow RPC request. SUCCESS - The traceflow request is sent successfully. TIMEOUT - The traceflow request gets timeout. SOURCE_PORT_NOT_FOUND - The source port of the request cannot be found. DATA_PATH_NOT_READY - The datapath component cannot be ready to receive request. CONNECTION_ERROR - There is connection error on datapath component. UNKNOWN - The status of traceflow request cannot be determined. + [Newtonsoft.Json.JsonProperty("request_status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public TraceflowRequest_status? Request_status { get; set; } + + /// Traceflow result analysis notes + [Newtonsoft.Json.JsonProperty("analysis", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Analysis { get; set; } + + /// The id of the traceflow round + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Id { get; set; } + + + } + + /// Realized group + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("RealizedSecurityGroup", typeof(RealizedSecurityGroup))] + [JsonInheritanceAttribute("RealizedNSGroup", typeof(RealizedNSGroup))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedGroup : PolicyRealizedResource + { + + } + + /// Child wrapper object for SessionTimerProfileBindingMap, + /// used in hierarchical API + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildSessionTimerProfileBindingMap : ChildPolicyConfigResource + { + /// Contains the actual SessionTimerProfileBindingMap object + /// + [Newtonsoft.Json.JsonProperty("SessionTimerProfileBindingMap", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public SessionTimerProfileBindingMap SessionTimerProfileBindingMap { get; set; } + + + } + + /// A list of fields to include in query results + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IncludedFieldsParameters + { + /// Comma separated list of fields that should be included in query result + [Newtonsoft.Json.JsonProperty("included_fields", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Included_fields { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class FirstNSampling : SamplingArgument + { + /// Number of packets to be sampled + [Newtonsoft.Json.JsonProperty("match_number", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 50D)] + public long Match_number { get; set; } + + + } + + /// Metadata fetched from an external system like Syslog or LogInsight. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ErrorResolverSystemMetadata + { + /// The value fetched from another system + [Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Value { get; set; } + + + } + + /// IGMP Memberships Per Edge. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IgmpMembershipsPerEdge + { + [Newtonsoft.Json.JsonProperty("igmp_memberships", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Igmp_memberships { get; set; } + + /// Policy path to edge node. + /// + [Newtonsoft.Json.JsonProperty("edge_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Edge_path { get; set; } + + + } + + /// The service count for specific load balancer usage severity. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBServiceCountPerSeverity + { + /// Service count for specific serverity. + /// + [Newtonsoft.Json.JsonProperty("service_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Service_count { get; set; } + + /// The severity calculation is based on current usage percentage + /// for one load balancer service. + /// + [Newtonsoft.Json.JsonProperty("severity", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBServiceCountPerSeveritySeverity? Severity { get; set; } + + + } + + /// Paged Collection of IPSecVpnTunnelProfile. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnTunnelProfileListResult : ListResult + { + /// IPSecVpnTunnelProfile list results. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VersionList : ManagedResource + { + /// List of component versions + [Newtonsoft.Json.JsonProperty("acceptable_versions", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Acceptable_versions { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBPoolMemberStatistics + { + /// Pool member statistics counter. + [Newtonsoft.Json.JsonProperty("statistics", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LBStatisticsCounter Statistics { get; set; } + + /// Pool member IP address. + [Newtonsoft.Json.JsonProperty("ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ip_address { get; set; } + + /// The port is configured in pool member. For virtual server port range + /// case, pool member port must be null. + /// + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Port { get; set; } + + + } + + /// A Route Based VPN is more flexible, more powerful and recommended over policy based VPN. IP Tunnel port is created and all traffic routed via tunnel port is protected. Routes can be configured statically or can be learned through BGP. A route based VPN is must for establishing redundant VPN session to remote site. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RouteBasedIPSecVpnSession : IPSecVpnSession + { + /// If true the default firewall rule Action is set to DROP, otherwise set to ALLOW. + /// This filed is deprecated and recommended to change Rule action filed. Note that this + /// filed is not synchornied with default rule field. + /// + [Newtonsoft.Json.JsonProperty("force_whitelisting", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Force_whitelisting { get; set; } = false; + + /// IP Tunnel interfaces. + [Newtonsoft.Json.JsonProperty("tunnel_interfaces", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Tunnel_interfaces { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Constant Field Value. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ConstantFieldValue : FieldSettingValue + { + /// Constant Value that the field must be set to. + /// + [Newtonsoft.Json.JsonProperty("constant", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public object Constant { get; set; } + + + } + + /// Policy Service Profile List + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyServiceProfileListResult : ListResult + { + /// Service Profile list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Child wrapper for ALBNetworkSecurityPolicy, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBNetworkSecurityPolicy : ChildPolicyConfigResource + { + /// Contains the actual ALBNetworkSecurityPolicy object. + /// + [Newtonsoft.Json.JsonProperty("ALBNetworkSecurityPolicy", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBNetworkSecurityPolicy ALBNetworkSecurityPolicy { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class InterfaceArpEntry + { + /// The IP address + [Newtonsoft.Json.JsonProperty("ip", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Ip { get; set; } + + /// The MAC address + [Newtonsoft.Json.JsonProperty("mac_address", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Mac_address { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyTepListResult : ListResult + { + /// Timestamp when the data was last updated; unset if data source has never updated the data. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + /// Transport node identifier + [Newtonsoft.Json.JsonProperty("transport_node_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Transport_node_id { get; set; } + + + } + + /// Child wrapper for ALBWafPolicy, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBWafPolicy : ChildPolicyConfigResource + { + /// Contains the actual ALBWafPolicy object. + /// + [Newtonsoft.Json.JsonProperty("ALBWafPolicy", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBWafPolicy ALBWafPolicy { get; set; } + + + } + + /// Advanced load balancer DnsGeoLocationMatch object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsGeoLocationMatch + { + /// Geographical location of the client IP to be used in the + /// match. + /// This location is of the format Country/State/City e.g. + /// US/CA/Santa Clara. + /// + [Newtonsoft.Json.JsonProperty("geolocation_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Geolocation_name { get; set; } + + /// Use the IP address from the EDNS client subnet option, if + /// available, to derive geo location of the DNS query. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("use_edns_client_subnet_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Use_edns_client_subnet_ip { get; set; } = true; + + /// Geolocation tag for the client IP. + /// This could be any string value for the client IP, e.g. + /// client IPs from US East Coast geolocation would be tagged + /// as 'East Coast'. + /// + [Newtonsoft.Json.JsonProperty("geolocation_tag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Geolocation_tag { get; set; } + + /// Criterion to use for matching the client IP's geographical + /// location. + /// Enum options - IS_IN, IS_NOT_IN. + /// + [Newtonsoft.Json.JsonProperty("match_criteria", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBDnsGeoLocationMatchMatch_criteria Match_criteria { get; set; } + + + } + + /// Aggregate of L3Vpn Statistics across Enforcement Points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateL3VpnStatistics + { + /// List of L3Vpn Statistics per Enforcement Point. + /// + [Newtonsoft.Json.JsonProperty("l3vpn_statistics_per_enforcement_point", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection L3vpn_statistics_per_enforcement_point { get; set; } + + /// Intent path of object, forward slashes must be escaped using %2F. + /// + [Newtonsoft.Json.JsonProperty("intent_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Intent_path { get; set; } + + + } + + /// This object holds the information of the import task. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ImportTask : PolicyTask + { + /// Policy path of a draft in which the imported configuration gets stored + /// after completion of import task. + /// + [Newtonsoft.Json.JsonProperty("draft_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Draft_path { get; set; } + + + } + + /// OSPF Neighbor Per Edge. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class OspfNeighbor + { + [Newtonsoft.Json.JsonProperty("neighbors", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Neighbors { get; set; } + + /// Policy path to edge node. + /// + [Newtonsoft.Json.JsonProperty("edge_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Edge_path { get; set; } + + /// Display name to edge node. + /// + [Newtonsoft.Json.JsonProperty("edge_display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Edge_display_name { get; set; } + + + } + + /// Loadbalancer Service. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBService : PolicyConfigResource + { + /// Flag to enable access log + [Newtonsoft.Json.JsonProperty("access_log_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Access_log_enabled { get; set; } + + /// LBS could be instantiated (or created) on the Tier-1, etc. + /// For now, only the Tier-1 object is supported. + /// + [Newtonsoft.Json.JsonProperty("connectivity_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Connectivity_path { get; set; } + + /// Load balancer engine writes information about encountered issues of + /// different severity levels to the error log. This setting is used to + /// define the severity level of the error log. + /// + [Newtonsoft.Json.JsonProperty("error_log_level", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBServiceError_log_level? Error_log_level { get; set; } = SDKGenerator.LBServiceError_log_level.INFO; + + /// If relax_scale_validation is true, the scale validations for virtual + /// servers/pools/pool members/rules are relaxed for load balancer service. + /// When load balancer service is deployed on edge nodes, the scale of + /// virtual servers/pools/pool members for the load balancer service should + /// not exceed the scale number of the largest load balancer size which + /// could be configured on a certain edge form factor. For example, the + /// largest load balancer size supported on a MEDIUM edge node is MEDIUM. + /// So one SMALL load balancer deployed on MEDIUM edge nodes can support + /// the scale number of MEDIUM load balancer. It is not recommended to + /// enable active monitors if relax_scale_validation is true due to + /// performance consideration. + /// If relax_scale_validation is false, scale numbers should be validated + /// for load balancer service. + /// + [Newtonsoft.Json.JsonProperty("relax_scale_validation", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Relax_scale_validation { get; set; } = false; + + /// Flag to enable the load balancer service. + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enabled { get; set; } = true; + + /// Load balancer service size. + [Newtonsoft.Json.JsonProperty("size", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBServiceSize? Size { get; set; } = SDKGenerator.LBServiceSize.SMALL; + + + } + + /// Child wrapper object for Constraint, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildConstraint : ChildPolicyConfigResource + { + /// Contains the actual Constraint object + /// + [Newtonsoft.Json.JsonProperty("Constraint", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public Constraint Constraint { get; set; } + + + } + + /// Child wrapper object for PolicyDnsForwarderZone, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicyDnsForwarderZone : ChildPolicyConfigResource + { + /// Contains the actual PolicyDnsForwarderZone object + /// + [Newtonsoft.Json.JsonProperty("PolicyDnsForwarderZone", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyDnsForwarderZone PolicyDnsForwarderZone { get; set; } + + + } + + /// Represents the leaf level constraint to restrict the number instances of an entity + /// type can be created. This is useful in restricting number of CGWs or MGWs or + /// Providers that can created in a system. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class EntityInstanceCountConstraintExpression : ConstraintExpression + { + /// Operations supported '<' and '<='. + [Newtonsoft.Json.JsonProperty("operator", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Operator { get; set; } + + /// Instance count. + [Newtonsoft.Json.JsonProperty("count", Required = Newtonsoft.Json.Required.Always)] + public long Count { get; set; } + + + } + + /// Child wrapper object for IPSecVpnDpdProfile, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildIPSecVpnDpdProfile : ChildPolicyConfigResource + { + /// Contains the actual IPSecVpnDpdProfile object. + /// + [Newtonsoft.Json.JsonProperty("IPSecVpnDpdProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public IPSecVpnDpdProfile IPSecVpnDpdProfile { get; set; } + + + } + + /// Aggregate of L2Vpn Statistics across Enforcement Points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateL2VpnStatistics + { + /// List of L2Vpn Statistics per Enforcement Point. + /// + [Newtonsoft.Json.JsonProperty("l2vpn_statistics_per_enforcement_point", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection L2vpn_statistics_per_enforcement_point { get; set; } + + /// Intent path of object, forward slashes must be escaped using %2F. + /// + [Newtonsoft.Json.JsonProperty("intent_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Intent_path { get; set; } + + + } + + /// IPv6 DAD status + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPv6DADStatus + { + /// DAD status for IP address on the port. + /// + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IPv6DADStatusStatus? Status { get; set; } + + /// Array of transport node id on which DAD status is reported for + /// given IP address. + /// + [Newtonsoft.Json.JsonProperty("transport_node", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Transport_node { get; set; } + + /// IP address on the port for which DAD status is reported. + /// + [Newtonsoft.Json.JsonProperty("ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ip_address { get; set; } + + + } + + /// VM ID and status of the Identity Firewall Compute collection. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdfwVirtualMachineStatusListResult : ListResult + { + /// List of VM's on Identity Firewall Compute collection. + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// This condition is used to match SSL SNI in client hello. This condition is + /// only supported in TRANSPORT phase and HTTP_FORWARDING. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBSslSniCondition : LBRuleCondition + { + /// If true, case is significant when comparing SNI value. + /// + [Newtonsoft.Json.JsonProperty("case_sensitive", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Case_sensitive { get; set; } = true; + + /// Match type of SNI + [Newtonsoft.Json.JsonProperty("match_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBSslSniConditionMatch_type? Match_type { get; set; } = SDKGenerator.LBSslSniConditionMatch_type.REGEX; + + /// The SNI(Server Name indication) in client hello message. + /// + [Newtonsoft.Json.JsonProperty("sni", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Sni { get; set; } + + + } + + /// Contains information necessary to configure IPSec VPN. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L3Vpn : PolicyConfigResource + { + /// This field is used to resolve conflicts in case of a remote site being + /// behind NAT as remote public ip address is not enough. If it is not the + /// case the remote public address should be provided here. If not provided, + /// the value of this field is set to remote_public_address. + /// + [Newtonsoft.Json.JsonProperty("remote_private_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Remote_private_address { get; set; } + + /// Algorithm to be used for message digest during tunnel establishment. + /// Default algorithm is empty. + /// + [Newtonsoft.Json.JsonProperty("tunnel_digest_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Tunnel_digest_algorithms { get; set; } + + /// List of IPSec pre-shared keys used for IPSec authentication. If not + /// specified, the older passphrase values are retained if there are any. + /// + [Newtonsoft.Json.JsonProperty("passphrases", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Passphrases { get; set; } + + /// If true, perfect forward secrecy (PFS) is enabled. + /// + [Newtonsoft.Json.JsonProperty("enable_perfect_forward_secrecy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable_perfect_forward_secrecy { get; set; } = true; + + /// Algorithm to be used for message digest during Internet Key Exchange(IKE) + /// negotiation. Default is SHA2_256. + /// + [Newtonsoft.Json.JsonProperty("ike_digest_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Ike_digest_algorithms { get; set; } + + /// IKE protocol version to be used. IKE-Flex will initiate IKE-V2 and responds + /// to both IKE-V1 and IKE-V2. + /// + [Newtonsoft.Json.JsonProperty("ike_version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public L3VpnIke_version? Ike_version { get; set; } = SDKGenerator.L3VpnIke_version.IKE_V2; + + /// Algorithm to be used during Internet Key Exchange(IKE) negotiation. + /// Default is AES_128. + /// + [Newtonsoft.Json.JsonProperty("ike_encryption_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Ike_encryption_algorithms { get; set; } + + /// IPv4 address of local gateway + [Newtonsoft.Json.JsonProperty("local_address", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Local_address { get; set; } + + /// L3Vpn Session + [Newtonsoft.Json.JsonProperty("l3vpn_session", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public L3VpnSession L3vpn_session { get; set; } = new L3VpnSession(); + + /// Diffie-Hellman group to be used if PFS is enabled. Default group is GROUP14. + /// + [Newtonsoft.Json.JsonProperty("dh_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Dh_groups { get; set; } + + /// Encryption algorithm to encrypt/decrypt the messages exchanged between + /// IPSec VPN initiator and responder during tunnel negotiation. Default is + /// AES_GCM_128. + /// + [Newtonsoft.Json.JsonProperty("tunnel_encryption_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + [System.ComponentModel.DataAnnotations.MaxLength(1)] + public System.Collections.Generic.ICollection Tunnel_encryption_algorithms { get; set; } + + /// Flag to enable L3Vpn. Default is enabled. + /// + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enabled { get; set; } = true; + + /// Public IPv4 address of remote gateway + [Newtonsoft.Json.JsonProperty("remote_public_address", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Remote_public_address { get; set; } + + + } + + /// Paginated collection of IP members belonging to a Group. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyGroupIPMembersListResult : ListResult + { + /// Paged Collection of IP addresses that belong to the given Group + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// IKE Profile is a reusable profile that captures IKE phase one negotiation parameters. Any changes affects all IPSec VPN sessions consuming this profile. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IPSecVpnIkeProfile : PolicyConfigResource + { + /// Algorithm to be used for message digest during Internet Key Exchange(IKE) negotiation. Default is SHA2_256. + [Newtonsoft.Json.JsonProperty("digest_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Digest_algorithms { get; set; } + + /// Encryption algorithm is used during Internet Key Exchange(IKE) negotiation. Default is AES_128. + [Newtonsoft.Json.JsonProperty("encryption_algorithms", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Encryption_algorithms { get; set; } + + /// Diffie-Hellman group to be used if PFS is enabled. Default is GROUP14. + [Newtonsoft.Json.JsonProperty("dh_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Dh_groups { get; set; } + + /// Life time for security association. Default is 86400 seconds (1 day). + [Newtonsoft.Json.JsonProperty("sa_life_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(21600D, 31536000D)] + public long? Sa_life_time { get; set; } = 86400L; + + /// IKE protocol version to be used. IKE-Flex will initiate IKE-V2 and responds to both IKE-V1 and IKE-V2. + [Newtonsoft.Json.JsonProperty("ike_version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public IPSecVpnIkeProfileIke_version? Ike_version { get; set; } = SDKGenerator.IPSecVpnIkeProfileIke_version.IKE_V2; + + + } + + /// Advanced load balancer ServicePoolSelector object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBServicePoolSelector + { + /// Destination protocol to match for the pool selection. + /// If not specified, it will match any protocol. + /// Enum options - PROTOCOL_TYPE_TCP_PROXY, + /// PROTOCOL_TYPE_TCP_FAST_PATH, PROTOCOL_TYPE_UDP_FAST_PATH, + /// PROTOCOL_TYPE_UDP_PROXY. + /// + [Newtonsoft.Json.JsonProperty("service_protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBServicePoolSelectorService_protocol? Service_protocol { get; set; } + + /// It is a reference to an object of type Pool. + [Newtonsoft.Json.JsonProperty("service_pool_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Service_pool_path { get; set; } + + /// The end of the Service port number range. + /// Allowed values are 1-65535. + /// Special values are 0- 'single port'. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 0. + /// + [Newtonsoft.Json.JsonProperty("service_port_range_end", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 65535D)] + public long? Service_port_range_end { get; set; } = 0L; + + /// It is a reference to an object of type PoolGroup. + [Newtonsoft.Json.JsonProperty("service_pool_group_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Service_pool_group_path { get; set; } + + /// Pool based destination port. + /// Allowed values are 1-65535. + /// + [Newtonsoft.Json.JsonProperty("service_port", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long Service_port { get; set; } + + + } + + /// A ServiceEntry that represents IPv4 or IPv6 ICMP protocol + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ICMPTypeServiceEntry : ServiceEntry + { + /// ICMP message code + [Newtonsoft.Json.JsonProperty("icmp_code", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 255D)] + public long? Icmp_code { get; set; } + + /// ICMP message type + [Newtonsoft.Json.JsonProperty("icmp_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 255D)] + public long? Icmp_type { get; set; } + + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ICMPTypeServiceEntryProtocol Protocol { get; set; } + + + } + + /// Active healthchecks are disabled by default and can be enabled for a + /// server pool by binding a health monitor to the Group through the PolicyLbRule + /// object. This represents active health monitoring over UDP. Active + /// healthchecks are initiated periodically, at a configurable interval, to + /// each member of the Group. Only if a healthcheck fails consecutively for a + /// specified number of times (fall_count) to a member will the member status + /// be marked DOWN. Once a member is DOWN, a specified number of consecutive + /// successful healthchecks (rise_count) will bring the member back to UP + /// state. After a healthcheck is initiated, if it does not complete within a + /// certain period, then also the healthcheck is considered to be + /// unsuccessful. Completing a healthcheck within timeout means establishing + /// a connection (TCP or SSL), if applicable, sending the request and + /// receiving the response, all within the configured timeout. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class UdpPolicyLbMonitorProfile : PolicyLbMonitorProfile + { + /// Expected data, can be anywhere in the response and it has to be a + /// string, regular expressions are not supported. + /// UDP healthcheck is considered failed if there is no server response + /// within the timeout period. + /// + [Newtonsoft.Json.JsonProperty("receive", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Receive { get; set; } + + /// The data to be sent to the monitored server. + /// + [Newtonsoft.Json.JsonProperty("send", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Send { get; set; } + + + } + + /// VM or vmknic entity attached to LogicalPort + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PortAttacher + { + /// TransportNode on which the attacher resides + [Newtonsoft.Json.JsonProperty("host", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Host { get; set; } + + /// This is a vmknic name if the attacher is vmknic. Otherwise, it is + /// full path of the attached VM's config file + /// + [Newtonsoft.Json.JsonProperty("entity", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Entity { get; set; } + + + } + + /// Child wrapper for PolicyLbVirtualServer, used in hierarchical API + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPolicyLbVirtualServer : ChildPolicyConfigResource + { + /// Contains the actual PolicyLbVirtualServer object + /// + [Newtonsoft.Json.JsonProperty("PolicyLbVirtualServer", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicyLbVirtualServer PolicyLbVirtualServer { get; set; } + + + } + + /// Advanced load balancer L4RuleActionSelectPool object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBL4RuleActionSelectPool + { + /// ID of the pool of servers to serve the request. + /// It is a reference to an object of type Pool. + /// + [Newtonsoft.Json.JsonProperty("pool_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Pool_path { get; set; } + + /// Indicates action to take on rule match. + /// Enum options - L4_RULE_ACTION_SELECT_POOL, + /// L4_RULE_ACTION_SELECT_POOLGROUP. + /// + [Newtonsoft.Json.JsonProperty("action_type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBL4RuleActionSelectPoolAction_type Action_type { get; set; } + + /// ID of the pool group to serve the request. + /// It is a reference to an object of type PoolGroup. + /// + [Newtonsoft.Json.JsonProperty("pool_group_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Pool_group_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyTepTableEntry + { + /// The tunnel endpoint label + [Newtonsoft.Json.JsonProperty("tep_label", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Tep_label { get; set; } + + /// The segment Id + [Newtonsoft.Json.JsonProperty("segment_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Segment_id { get; set; } + + /// The tunnel endpoint MAC address + [Newtonsoft.Json.JsonProperty("tep_mac_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tep_mac_address { get; set; } + + /// The tunnel endpoint IP address + [Newtonsoft.Json.JsonProperty("tep_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Tep_ip { get; set; } + + + } + + /// This condition is used to match the message body of an HTTP request. + /// Typically, only HTTP POST, PATCH, or PUT requests have request body. + /// The match_type field defines how body_value field is used to match the body + /// of HTTP requests. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBHttpRequestBodyCondition : LBRuleCondition + { + /// HTTP request body + [Newtonsoft.Json.JsonProperty("body_value", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Body_value { get; set; } + + /// Match type of HTTP body + [Newtonsoft.Json.JsonProperty("match_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBHttpRequestBodyConditionMatch_type? Match_type { get; set; } = SDKGenerator.LBHttpRequestBodyConditionMatch_type.REGEX; + + /// If true, case is significant when comparing HTTP body value. + /// + [Newtonsoft.Json.JsonProperty("case_sensitive", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Case_sensitive { get; set; } = true; + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class X509Certificate + { + /// The order of the middle term(s) of the reduction polynomial in elliptic curve (EC) | characteristic 2 finite field.| Contents of this array are copied to protect against subsequent modification in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_ec_field_f2mks", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ecdsa_ec_field_f2mks { get; set; } + + /// Certificate version (default v1). + [Newtonsoft.Json.JsonProperty("version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Version { get; set; } + + /// True if this is a CA certificate. + [Newtonsoft.Json.JsonProperty("is_ca", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_ca { get; set; } + + /// The algorithm used by the Certificate Authority to sign the certificate. + [Newtonsoft.Json.JsonProperty("signature_algorithm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Signature_algorithm { get; set; } + + /// The first coefficient of this elliptic curve in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_a", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_public_key_a { get; set; } + + /// An RSA public key is made up of the modulus and the public exponent. Exponent is a power number. + [Newtonsoft.Json.JsonProperty("rsa_public_key_exponent", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Rsa_public_key_exponent { get; set; } + + /// The first coefficient of this elliptic curve in elliptic curve (EC) | characteristic 2 finite field for ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_ec_field_f2mm", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Ecdsa_ec_field_f2mm { get; set; } + + /// The certificate issuer's common name. + [Newtonsoft.Json.JsonProperty("issuer_cn", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Issuer_cn { get; set; } + + /// The certificate owner's common name. + [Newtonsoft.Json.JsonProperty("subject_cn", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Subject_cn { get; set; } + + /// The order of generator G in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_order", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_public_key_order { get; set; } + + /// The value whose i-th bit corresponds to the i-th coefficient of the reduction polynomial | in elliptic curve (EC) characteristic 2 finite field for ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_ec_field_f2mrp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_ec_field_f2mrp { get; set; } + + /// Size measured in bits of the public/private keys used in a cryptographic algorithm. + [Newtonsoft.Json.JsonProperty("public_key_length", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Public_key_length { get; set; } + + /// The time in epoch milliseconds at which the certificate becomes valid. + [Newtonsoft.Json.JsonProperty("not_before", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Not_before { get; set; } + + /// The specified prime for the elliptic curve prime finite field in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_ec_field_f2pp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_ec_field_f2pp { get; set; } + + /// The certificate issuers complete distinguished name. + [Newtonsoft.Json.JsonProperty("issuer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Issuer { get; set; } + + /// The second coefficient of this elliptic curve in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_b", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_public_key_b { get; set; } + + /// An RSA public key is made up of the modulus and the public exponent. Modulus is wrap around number. + [Newtonsoft.Json.JsonProperty("rsa_public_key_modulus", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Rsa_public_key_modulus { get; set; } + + /// One of the DSA cryptogaphic algorithm's strength parameters. + [Newtonsoft.Json.JsonProperty("dsa_public_key_y", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dsa_public_key_y { get; set; } + + /// The co-factor in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_cofactor", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Ecdsa_public_key_cofactor { get; set; } + + /// The time in epoch milliseconds at which the certificate becomes invalid. + [Newtonsoft.Json.JsonProperty("not_after", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Not_after { get; set; } + + /// One of the DSA cryptogaphic algorithm's strength parameters, sub-prime. + [Newtonsoft.Json.JsonProperty("dsa_public_key_q", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dsa_public_key_q { get; set; } + + /// One of the DSA cryptogaphic algorithm's strength parameters, prime. + [Newtonsoft.Json.JsonProperty("dsa_public_key_p", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dsa_public_key_p { get; set; } + + /// Y co-ordinate of G (the generator which is also known as the base point) in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_generator_y", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_public_key_generator_y { get; set; } + + /// X co-ordinate of G (the generator which is also known as the base point) in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_generator_x", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_public_key_generator_x { get; set; } + + /// Cryptographic algorithm used by the public key for data encryption. + [Newtonsoft.Json.JsonProperty("public_key_algo", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public X509CertificatePublic_key_algo? Public_key_algo { get; set; } + + /// True if this certificate is valid. + [Newtonsoft.Json.JsonProperty("is_valid", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_valid { get; set; } + + /// The bytes used during curve generation for later validation in ECDSA.| Contents of this array are copied to protect against subsequent modification. + [Newtonsoft.Json.JsonProperty("ecdsa_public_key_seed", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ecdsa_public_key_seed { get; set; } + + /// The signature value(the raw signature bits) used for signing and validate the cert. + [Newtonsoft.Json.JsonProperty("signature", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Signature { get; set; } + + /// Certificate's serial number. + [Newtonsoft.Json.JsonProperty("serial_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Serial_number { get; set; } + + /// One of the DSA cryptogaphic algorithm's strength parameters, base. + [Newtonsoft.Json.JsonProperty("dsa_public_key_g", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dsa_public_key_g { get; set; } + + /// The certificate owners complete distinguished name. + [Newtonsoft.Json.JsonProperty("subject", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Subject { get; set; } + + /// Represents an elliptic curve (EC) finite field in ECDSA. + [Newtonsoft.Json.JsonProperty("ecdsa_ec_field", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public X509CertificateEcdsa_ec_field? Ecdsa_ec_field { get; set; } + + /// The Curve name for the ECDSA certificate. + [Newtonsoft.Json.JsonProperty("ecdsa_curve_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ecdsa_curve_name { get; set; } + + + } + + /// Paged collection of IDS security policies + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IdsSecurityPolicyListResult : PolicyListResult + { + /// IDS security policy list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Paginated collection of members belonging to a Group. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyGroupMembersListResult : ListResult + { + /// Paged Collection of members that belong to the given Group + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Advanced load balancer CRL object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBCRL + { + /// Certificate Revocation list from a given issuer in PEM + /// format. + /// This can either be configured directly or via the + /// server_url. + /// + [Newtonsoft.Json.JsonProperty("body", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Body { get; set; } + + /// Distinguished name of the issuer in the Certificate + /// Revocation list. + /// + [Newtonsoft.Json.JsonProperty("distinguished_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Distinguished_name { get; set; } + + /// Certificate Revocation list in plain text for readability. + [Newtonsoft.Json.JsonProperty("text", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Text { get; set; } + + /// URL of a server that issues the Certificate Revocation + /// list. + /// If this is configured, CRL will be periodically downloaded + /// either based on the configured update interval or the next + /// update interval in the CRL. + /// CRL itself is stored in the body. + /// + [Newtonsoft.Json.JsonProperty("server_url", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Server_url { get; set; } + + /// The date when this CRL was last issued. + [Newtonsoft.Json.JsonProperty("last_update", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Last_update { get; set; } + + /// Last time CRL was refreshed by the system. + /// This is an internal field used by the system. + /// + [Newtonsoft.Json.JsonProperty("last_refreshed", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Last_refreshed { get; set; } + + /// Cached etag to optimize the download of the CRL. + [Newtonsoft.Json.JsonProperty("etag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Etag { get; set; } + + /// Fingerprint of the CRL. + /// Used to avoid configuring duplicates. + /// + [Newtonsoft.Json.JsonProperty("fingerprint", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Fingerprint { get; set; } + + /// Common name of the issuer in the Certificate Revocation + /// list. + /// + [Newtonsoft.Json.JsonProperty("common_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Common_name { get; set; } + + /// The date when a newer CRL will be available. + /// Also conveys the date after which the CRL should be + /// considered obsolete. + /// + [Newtonsoft.Json.JsonProperty("next_update", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Next_update { get; set; } + + /// Interval in minutes to check for CRL update. + /// If not specified, interval will be 1 day. + /// Allowed values are 30-525600. + /// Unit is MIN. + /// + [Newtonsoft.Json.JsonProperty("update_interval", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(30D, 525600D)] + public long? Update_interval { get; set; } + + + } + + /// The Attached interface is only effective for the segment port on Bare metal server. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AttachedInterfaceEntry + { + /// Routing rules + [Newtonsoft.Json.JsonProperty("routing_table", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Routing_table { get; set; } + + /// IP configuration on migrate_intf will migrate to app_intf_name. It is used for Management and Application sharing the same IP. + [Newtonsoft.Json.JsonProperty("migrate_intf", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Migrate_intf { get; set; } + + /// The name of application interface + [Newtonsoft.Json.JsonProperty("app_intf_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string App_intf_name { get; set; } + + /// Gateway IP + [Newtonsoft.Json.JsonProperty("default_gateway", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Default_gateway { get; set; } + + + } + + /// Advanced load balancer HTTPResponsePolicy object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHTTPResponsePolicy + { + /// Add rules to the HTTP response policy. + [Newtonsoft.Json.JsonProperty("rules", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Rules { get; set; } + + + } + + /// Ordered list of Rules. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SecurityPolicy : Policy + { + /// Rules that are a part of this SecurityPolicy + [Newtonsoft.Json.JsonProperty("rules", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Rules { get; set; } + + /// This field indicates the default connectivity policy for the security + /// policy. Based on the connectivitiy strategy, a default rule for this + /// security policy will be created. An appropriate action will be set on + /// the rule based on the value of the connectivity strategy. If NONE is + /// selected or no connectivity strategy is specified, then no default + /// rule for the security policy gets created. The default rule that gets + /// created will be a any-any rule and applied to entities specified in the + /// scope of the security policy. Specifying the connectivity_strategy + /// without specifying the scope is not allowed. The scope has to be a + /// Group and one cannot specify IPAddress directly in the group that is + /// used as scope. This default rule is only applicable for the Layer3 + /// security policies. + /// WHITELIST - Adds a default drop rule. Administrator can then use "allow" + /// rules (aka whitelist) to allow traffic between groups + /// BLACKLIST - Adds a default allow rule. Admin can then use "drop" rules + /// (aka blacklist) to block traffic between groups + /// WHITELIST_ENABLE_LOGGING - Whitelising with logging enabled + /// BLACKLIST_ENABLE_LOGGING - Blacklisting with logging enabled + /// NONE - No default rule is created. + /// + [Newtonsoft.Json.JsonProperty("connectivity_strategy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public SecurityPolicyConnectivity_strategy? Connectivity_strategy { get; set; } + + /// This field indicates the application connectivity policy for the security + /// policy. + /// + [Newtonsoft.Json.JsonProperty("application_connectivity_strategy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(2)] + public System.Collections.Generic.ICollection Application_connectivity_strategy { get; set; } + + /// Flag to enable logging for all the rules in the security policy. + /// If the value is true then logging will be enabled for all the rules + /// in the security policy. If the value is false, then the rule level + /// logging value will be honored. + /// + [Newtonsoft.Json.JsonProperty("logging_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Logging_enabled { get; set; } = false; + + /// Based on the value of the connectivity strategy, a default rule is + /// created for the security policy. The rule id is internally assigned + /// by the system for this default rule. + /// + [Newtonsoft.Json.JsonProperty("default_rule_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Default_rule_id { get; set; } + + + } + + /// Aggregate of L2VPN Session Status across Enforcement Points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateL2VPNSessionStatus : AggregatePolicyRuntimeInfo + { + /// List of L2VPN Session Status per Enforcement Point. + /// + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Results { get; set; } + + + } + + /// Allows more granular policies for application workloads + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ApplicationConnectivityStrategy + { + /// Flag to enable packet logging. Default is disabled. + [Newtonsoft.Json.JsonProperty("logging_enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Logging_enabled { get; set; } = false; + + /// Based on the value of the app connectivity strategy, a default rule is + /// created for the security policy. The rule id is internally assigned + /// by the system for this default rule. + /// + [Newtonsoft.Json.JsonProperty("default_application_rule_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Default_application_rule_id { get; set; } + + /// App connectivity strategies + /// + [Newtonsoft.Json.JsonProperty("application_connectivity_strategy", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ApplicationConnectivityStrategyApplication_connectivity_strategy Application_connectivity_strategy { get; set; } + + + } + + /// LBVirtualServerStatistics on specific Enforcement Point + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("LBVirtualServerStatistics", typeof(LBVirtualServerStatistics))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBVirtualServerStatisticsPerEP : PolicyRuntimeInfoPerEP + { + + } + + /// Child wrapper object for SpoofGuardProfile, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildSpoofGuardProfile : ChildPolicyConfigResource + { + /// Contains the actual SpoofGuardProfile object + /// + [Newtonsoft.Json.JsonProperty("SpoofGuardProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public SpoofGuardProfile SpoofGuardProfile { get; set; } + + + } + + /// Realized Security Group member evaluation + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedSecurityGroupMemberEvaluation : PolicyRealizedResource + { + /// list of virtual machines + [Newtonsoft.Json.JsonProperty("virtual_machines", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Virtual_machines { get; set; } + + /// Count of the members added to this Security Group + [Newtonsoft.Json.JsonProperty("member_count", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Member_count { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PktcapActionArgument + { + /// Type of packet capture + [Newtonsoft.Json.JsonProperty("pktcap_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PktcapActionArgumentPktcap_type? Pktcap_type { get; set; } + + /// Please keep this aligned with trace_config, if you + /// specify dest_lport at trace_config. + /// + [Newtonsoft.Json.JsonProperty("dest_lport", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Dest_lport { get; set; } + + /// Please keep this aligned with trace_config, if you + /// specify dest_lport at trace_config. + /// + [Newtonsoft.Json.JsonProperty("reverse_filter", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LiveTraceFilterData Reverse_filter { get; set; } + + + } + + /// This action is used to drop the connections. There is no extra propery in + /// this action. If there is no match condition specified, the connection will + /// be always dropped. This action can be specified at HTTP_ACCESS or + /// HTTP_FORWARDING pahse. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBConnectionDropAction : LBRuleAction + { + + } + + /// Advanced load balancer SidebandProfile object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBSidebandProfile + { + /// IP Address of the sideband server. + [Newtonsoft.Json.JsonProperty("ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip { get; set; } + + /// Maximum size of the request body that will be sent on the + /// sideband. + /// Allowed values are 0-16384. + /// Unit is BYTES. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 1024. + /// + [Newtonsoft.Json.JsonProperty("sideband_max_request_body_size", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(0D, 16384D)] + public long? Sideband_max_request_body_size { get; set; } = 1024L; + + + } + + /// Represents a list of views. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ViewList + { + /// Array of views + [Newtonsoft.Json.JsonProperty("views", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Views { get; set; } + + + } + + /// Advanced load balancer AuthenticationAction object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAuthenticationAction + { + /// Authentication Action to be taken for a matched Rule. + /// Enum options - SKIP_AUTHENTICATION, + /// USE_DEFAULT_AUTHENTICATION. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as USE_DEFAULT_AUTHENTICATION. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBAuthenticationActionType? Type { get; set; } = SDKGenerator.ALBAuthenticationActionType.USE_DEFAULT_AUTHENTICATION; + + + } + + /// This entity will be used to establish association between DNS security profile and + /// Group. With this entity, user can specify intent for applying DNS security profile + /// profile to particular Group. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class DnsSecurityProfileBindingMap : ProfileBindingMap + { + /// Sequence number used to resolve conflicts betweeen two profiles applied on + /// the same group. Lower sequence number takes higher precedence. Two binding + /// maps applied to the same profile must have the same sequence number. + /// User defined sequence numbers range from 1 through 100,000. + /// System defined sequence numbers range from 100,001 through 200,000. + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 100000D)] + public long? Sequence_number { get; set; } + + + } + + /// It represents the resource information which could identify resource. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ResourceInfo + { + /// It will represent resource identifiers. For example, policy objects will be + /// represented with paths and virtual machine will be represented with external + /// ids. + /// + [Newtonsoft.Json.JsonProperty("resource_ids", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Resource_ids { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// It will represent resource type on which tag bulk operation to be performed. + /// Supported resource type is VirtualMachine. + /// + [Newtonsoft.Json.JsonProperty("resource_type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Resource_type { get; set; } + + + } + + /// L2Vpn Statistics Per Enforcement Point. + /// + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("L2VpnSessionStatistics", typeof(L2VpnSessionStatistics))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class L2VpnStatisticsPerEnforcementPoint + { + /// Policy Path referencing the enforcement point wehere the statistics are fetched. + /// + [Newtonsoft.Json.JsonProperty("enforcement_point_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Enforcement_point_path { get; set; } + + + } + + /// Child wrapper for TlsCrl, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildTlsCrl : ChildPolicyConfigResource + { + /// Contains the actual TlsCrl object. + [Newtonsoft.Json.JsonProperty("TlsCrl", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public TlsCrl TlsCrl { get; set; } + + + } + + /// Advanced load balancer HSMSafenetLuna object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHSMSafenetLuna + { + /// Node specific information. + [Newtonsoft.Json.JsonProperty("node_info", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Node_info { get; set; } + + /// Set to indicate HA across more than one servers. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("is_ha", Required = Newtonsoft.Json.Required.Always)] + public bool Is_ha { get; set; } = false; + + /// Generated File - server.pem. + [Newtonsoft.Json.JsonProperty("server_pem", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Server_pem { get; set; } + + /// If enabled, dedicated network is used to communicate with + /// HSM,else, the management network is used. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("use_dedicated_network", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Use_dedicated_network { get; set; } = false; + + /// Group Number of generated HA Group. + [Newtonsoft.Json.JsonProperty("ha_group_num", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Ha_group_num { get; set; } + + /// SafeNet/Gemalto HSM Servers used for crypto operations. + [Newtonsoft.Json.JsonProperty("server", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Server { get; set; } + + + } + + /// List of URL reputation severities. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyUrlReputationSeverityListResult : ListResult + { + /// Reputation Severity list + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// A SecurityZoneRule specifies the security policy that applies to the tiers + /// associated with the security zones. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SecurityZoneRule : PolicyConfigResource + { + /// Flag to disable the rule. Default is enabled. + [Newtonsoft.Json.JsonProperty("disabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Disabled { get; set; } = false; + + /// Source field indicates the source path of the Rule. + /// It could be; + /// - Path of the current/other zone + /// - One/more tiers associated with the zone + /// - Shared Group + /// - ANY (It should be the ONLY element in the services array. Error will be thrown + /// if ANY is used in conjunction with other values.) + /// Note that either Source or Destination has to be associated with the current Zone. + /// + [Newtonsoft.Json.JsonProperty("source", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Source { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// User level field which will be printed in CLI and packet logs. + /// + [Newtonsoft.Json.JsonProperty("tag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(32)] + public string Tag { get; set; } + + /// ID of the Service that is defined in Infra space. e.g. HTTPS. + /// In order to specify all services, use the constant "ANY". If "ANY" is used, + /// it should be the ONLY element in the services array. Error will be thrown + /// if ANY is used in conjunction with other values. + /// + [Newtonsoft.Json.JsonProperty("services", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Services { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Text for additional notes on changes. + [Newtonsoft.Json.JsonProperty("notes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Notes { get; set; } + + /// Destination field indicates the destination path of the Rule. + /// It could be; + /// - Path of the current/other zone + /// - One/more tiers associated with the zone + /// - Shared Group + /// - ANY (It should be the ONLY element in the services array. Error will be thrown + /// if ANY is used in conjunction with other values.) + /// Note that either Source or Destination has to be associated with the current Zone. + /// + [Newtonsoft.Json.JsonProperty("destination", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Destination { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Flag to enable packet logging. Default is disabled. + [Newtonsoft.Json.JsonProperty("logged", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Logged { get; set; } = false; + + /// The action to be applied to all the services. + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public SecurityZoneRuleAction Action { get; set; } + + /// This field is used to resolve conflicts between multiple + /// SecurityZoneRule under same securityZone + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Sequence_number { get; set; } + + + } + + /// Advanced load balancer AuthProfile object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAuthProfile : PolicyConfigResource + { + /// HTTP user authentication params. + [Newtonsoft.Json.JsonProperty("http", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBAuthProfileHTTPClientParams Http { get; set; } + + /// SAML settings. + [Newtonsoft.Json.JsonProperty("saml", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBSamlSettings Saml { get; set; } + + /// Type of the Auth Profile. + /// Enum options - AUTH_PROFILE_LDAP, AUTH_PROFILE_TACACS_PLUS, + /// AUTH_PROFILE_SAML, AUTH_PROFILE_PINGACCESS, + /// AUTH_PROFILE_JWT. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBAuthProfileType Type { get; set; } + + /// TACACS+ settings. + [Newtonsoft.Json.JsonProperty("tacacs_plus", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBTacacsPlusAuthSettings Tacacs_plus { get; set; } + + /// LDAP server and directory settings. + [Newtonsoft.Json.JsonProperty("ldap", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBLdapAuthSettings Ldap { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBPoolStatus : LBPoolStatusPerEP + { + /// UP means that all primary members are in UP status. + /// PARTIALLY_UP means that some(not all) primary members are in UP + /// status, the number of these active members is larger or equal to + /// certain number(min_active_members) which is defined in LBPool. + /// When there are no backup members which are in the UP status, the + /// number(min_active_members) would be ignored. + /// PRIMARY_DOWN means that less than certain(min_active_members) primary + /// members are in UP status but backup members are in UP status, + /// connections to this pool would be dispatched to backup members. + /// DOWN means that all primary and backup members are DOWN. + /// DETACHED means that the pool is not bound to any virtual server. + /// UNKOWN means that no status reported from transport-nodes. The + /// associated load balancer service may be working(or not working). + /// + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBPoolStatusStatus? Status { get; set; } + + /// Timestamp when the data was last updated. + [Newtonsoft.Json.JsonProperty("last_update_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Last_update_timestamp { get; set; } + + /// Load balancer pool object path. + [Newtonsoft.Json.JsonProperty("pool_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Pool_path { get; set; } + + /// Status of load balancer pool members. + [Newtonsoft.Json.JsonProperty("members", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Members { get; set; } + + + } + + /// Detailed information about errors from API call to an enforcement point + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyRelatedApiError + { + /// The module name where the error occurred + [Newtonsoft.Json.JsonProperty("module_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Module_name { get; set; } + + /// A description of the error + [Newtonsoft.Json.JsonProperty("error_message", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Error_message { get; set; } + + /// A numeric error code + [Newtonsoft.Json.JsonProperty("error_code", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Error_code { get; set; } + + /// Further details about the error + [Newtonsoft.Json.JsonProperty("details", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Details { get; set; } + + /// Additional data about the error + [Newtonsoft.Json.JsonProperty("error_data", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public object Error_data { get; set; } + + + } + + /// Ordered list of CommunicationEntries. This object is created by default + /// along with the Domain. + /// This type is deprecated. Use the type SecurityPolicy instead. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class CommunicationMap : PolicyConfigResource + { + /// CommunicationEntries that are a part of this CommunicationMap + [Newtonsoft.Json.JsonProperty("communication_entries", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Communication_entries { get; set; } + + /// - Distributed Firewall - + /// Policy framework for Distributed Firewall provides four pre-defined + /// categories for classifying a communication map. They are + /// "Emergency", "Infrastructure", "Environment" and "Application". + /// Amongst the layer 3 communication maps,there is a pre-determined + /// order in which the policy framework manages the priority of these + /// communication maps. Emergency category has the highest priority + /// followed by Infrastructure, Environment and then Application rules. + /// Administrator can choose to categorize a communication map into the + /// above categories or can choose to leave it empty. If empty it will + /// have the least precedence w.r.t the above four layer 3 categories. + /// + [Newtonsoft.Json.JsonProperty("category", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Category { get; set; } + + /// This field is used to resolve conflicts between communication maps + /// across domains. In order to change the precedence of a communication + /// map one can fire a POST request on the communication map entity with + /// a query parameter action=revise + /// The precedence field will reflect the value of the computed precedence + /// upon execution of the above mentioned POST request. + /// For scenarios where the administrator is using a template to update + /// several communication maps, the only way to set the precedence is to + /// explicitly specify the precedence number for each communication map. + /// If no precedence is specified in the payload, a value of 0 is + /// assigned by default. If there are multiple communication maps with + /// the same precedence then their order is not deterministic. If a + /// specific order of communication map is desired, then one has to + /// specify a unique precedence or use the POST request on the + /// communication map entity with a query parameter action=revise to let + /// the framework assign a precedence + /// + [Newtonsoft.Json.JsonProperty("precedence", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Precedence { get; set; } + + + } + + /// Advanced load balancer DnsZone object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsZone + { + /// Email address of the administrator responsible for this + /// zone. + /// This field is used in SOA records as rname (RFC 1035). + /// If not configured, it is inherited from the DNS service + /// profile. + /// + [Newtonsoft.Json.JsonProperty("admin_email", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Admin_email { get; set; } + + /// Domain name authoritatively serviced by this Virtual + /// Service. + /// Queries for FQDNs that are sub domains of this domain and + /// do not have any DNS record in Avi are dropped or NXDomain + /// response sent. + /// For domains which are present, SOA parameters are sent in + /// answer section of response if query type is SOA. + /// + [Newtonsoft.Json.JsonProperty("domain_name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Domain_name { get; set; } + + /// The primary name server for this zone. + /// This field is used in SOA records as mname (RFC 1035). + /// If not configured, it is inherited from the DNS service + /// profile. + /// If even that is not configured, the domain name is used + /// instead. + /// + [Newtonsoft.Json.JsonProperty("name_server", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name_server { get; set; } + + + } + + /// Realized Enforcement Point + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class RealizedEnforcementPoint : PolicyRealizedResource + { + /// Root of Realized Firewalls + [Newtonsoft.Json.JsonProperty("realized_firewalls", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public RealizedFirewalls Realized_firewalls { get; set; } + + /// Root of Realized Services + [Newtonsoft.Json.JsonProperty("realized_services", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public RealizedServices Realized_services { get; set; } + + /// Root of Realized Groups + [Newtonsoft.Json.JsonProperty("realized_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public RealizedGroups Realized_groups { get; set; } + + + } + + /// Advanced load balancer IpAddrMatch object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBIpAddrMatch + { + /// IP address prefix(es). + [Newtonsoft.Json.JsonProperty("prefixes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Prefixes { get; set; } + + /// IP address range(s). + [Newtonsoft.Json.JsonProperty("ranges", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ranges { get; set; } + + /// path of IP address group(s). + /// It is a reference to an object of type IpAddrGroup. + /// + [Newtonsoft.Json.JsonProperty("group_paths", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Group_paths { get; set; } + + /// IP address(es). + [Newtonsoft.Json.JsonProperty("addrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Addrs { get; set; } + + /// Criterion to use for IP address matching the HTTP request. + /// Enum options - IS_IN, IS_NOT_IN. + /// + [Newtonsoft.Json.JsonProperty("match_criteria", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBIpAddrMatchMatch_criteria Match_criteria { get; set; } + + + } + + /// Binding object to bind Security Zone and Application Tier + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class SecurityZoneBinding : PolicyConfigResource + { + /// Path of the security zone. + /// + [Newtonsoft.Json.JsonProperty("security_zone_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Security_zone_path { get; set; } + + + } + + /// Subnet specification for interface connectivity + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class InterfaceSubnet + { + /// IP addresses assigned to interface + [Newtonsoft.Json.JsonProperty("ip_addresses", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Ip_addresses { get; set; } = new System.Collections.ObjectModel.Collection(); + + /// Subnet prefix length + [Newtonsoft.Json.JsonProperty("prefix_len", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 128D)] + public long Prefix_len { get; set; } + + + } + + /// Advanced load balancer HTTPSecurityActionRateProfile object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHTTPSecurityActionRateProfile + { + /// The action to take when the rate limit has been reached. + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBRateLimiterAction Action { get; set; } = new ALBRateLimiterAction(); + + /// The rate limiter used when this action is triggered. + [Newtonsoft.Json.JsonProperty("rate_limiter", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBRateLimiter Rate_limiter { get; set; } = new ALBRateLimiter(); + + /// Rate limiting should be done on a per request uri path + /// basis. + /// + [Newtonsoft.Json.JsonProperty("per_uri_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Per_uri_path { get; set; } + + /// Rate limiting should be done on a per client ip basis. + [Newtonsoft.Json.JsonProperty("per_client_ip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Per_client_ip { get; set; } + + + } + + /// Child wrapper for LBAppProfile, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildLBAppProfile : ChildPolicyConfigResource + { + /// Contains the actual LBAppProfile object. + /// + [Newtonsoft.Json.JsonProperty("LBAppProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public LBAppProfile LBAppProfile { get; set; } + + + } + + /// Child wrapper for ALBWebhook, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBWebhook : ChildPolicyConfigResource + { + /// Contains the actual ALBWebhook object. + /// + [Newtonsoft.Json.JsonProperty("ALBWebhook", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBWebhook ALBWebhook { get; set; } + + + } + + /// Represents an object on the desired state. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyConfigResource : PolicyResource + { + /// subtree for this type within policy tree containing nested elements. + /// + [Newtonsoft.Json.JsonProperty("children", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Children { get; set; } + + /// Global intent objects cannot be modified by the user. + /// However, certain global intent objects can be overridden locally by use + /// of this property. In such cases, the overridden local values take + /// precedence over the globally defined values for the properties. + /// + [Newtonsoft.Json.JsonProperty("overridden", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Overridden { get; set; } = false; + + /// Intent objects are not directly deleted from the system when a delete + /// is invoked on them. They are marked for deletion and only when all the + /// realized entities for that intent object gets deleted, the intent object + /// is deleted. Objects that are marked for deletion are not returned in + /// GET call. One can use the search API to get these objects. + /// + [Newtonsoft.Json.JsonProperty("marked_for_delete", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Marked_for_delete { get; set; } = false; + + + } + + /// Advanced load balancer IpAddrGroup object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBIpAddrGroup : PolicyConfigResource + { + /// Configure IP address range(s). + [Newtonsoft.Json.JsonProperty("ranges", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ranges { get; set; } + + /// Configure IP address prefix(es). + [Newtonsoft.Json.JsonProperty("prefixes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Prefixes { get; set; } + + /// Populate IP addresses from tasks of this Marathon app. + [Newtonsoft.Json.JsonProperty("marathon_app_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Marathon_app_name { get; set; } + + /// Configure IP address(es). + [Newtonsoft.Json.JsonProperty("addrs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Addrs { get; set; } + + /// Populate the IP address ranges from the geo database for + /// this country. + /// + [Newtonsoft.Json.JsonProperty("country_codes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Country_codes { get; set; } + + /// Task port associated with marathon service port. + /// If Marathon app has multiple service ports, this is + /// required. + /// Else, the first task port is used. + /// + [Newtonsoft.Json.JsonProperty("marathon_service_port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Marathon_service_port { get; set; } + + /// Configure (IP address, port) tuple(s). + [Newtonsoft.Json.JsonProperty("ip_ports", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Ip_ports { get; set; } + + /// Populate IP addresses from members of this Cisco APIC EPG. + [Newtonsoft.Json.JsonProperty("apic_epg_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Apic_epg_name { get; set; } + + + } + + /// Advanced load balancer HTTPRewriteLocHdrAction object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHTTPRewriteLocHdrAction + { + /// Keep or drop the query from the server side redirect URI. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as true. + /// + [Newtonsoft.Json.JsonProperty("keep_query", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Keep_query { get; set; } = true; + + /// Path config. + [Newtonsoft.Json.JsonProperty("path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBURIParam Path { get; set; } + + /// Host config. + [Newtonsoft.Json.JsonProperty("host", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBURIParam Host { get; set; } + + /// HTTP protocol type. + /// Enum options - HTTP, HTTPS. + /// + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBHTTPRewriteLocHdrActionProtocol Protocol { get; set; } + + /// Port to use in the redirected URI. + /// Allowed values are 1-65535. + /// + [Newtonsoft.Json.JsonProperty("port", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 65535D)] + public long? Port { get; set; } + + + } + + /// Paged collection of Static Routes + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class StaticRoutesListResult : ListResult + { + /// Static Routes list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// A communication entry indicates the action to be performed for various types of traffic flowing between workload groups. This type is deprecated. Use the type Rule instead. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class CommunicationEntry : PolicyConfigResource + { + /// Define direction of traffic. + /// + [Newtonsoft.Json.JsonProperty("direction", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public CommunicationEntryDirection? Direction { get; set; } = SDKGenerator.CommunicationEntryDirection.IN_OUT; + + /// Text for additional notes on changes. + [Newtonsoft.Json.JsonProperty("notes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Notes { get; set; } + + /// Flag to enable packet logging. Default is disabled. + [Newtonsoft.Json.JsonProperty("logged", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Logged { get; set; } = false; + + /// Flag to disable the rule. Default is enabled. + [Newtonsoft.Json.JsonProperty("disabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Disabled { get; set; } = false; + + /// In order to specify all services, use the constant "ANY". + /// This is case insensitive. If "ANY" is used, it should + /// be the ONLY element in the services array. Error will be thrown + /// if ANY is used in conjunction with other values. + /// + [Newtonsoft.Json.JsonProperty("services", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Services { get; set; } + + /// User level field which will be printed in CLI and packet logs. + /// + [Newtonsoft.Json.JsonProperty("tag", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(32)] + public string Tag { get; set; } + + /// We need paths as duplicate names may exist for groups under different + /// domains.In order to specify all groups, use the constant "ANY". This + /// is case insensitive. If "ANY" is used, it should be the ONLY element + /// in the group array. Error will be thrown if ANY is used in conjunction + /// with other values. + /// + [Newtonsoft.Json.JsonProperty("destination_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Destination_groups { get; set; } + + /// The action to be applied to all the services. + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public CommunicationEntryAction? Action { get; set; } + + /// The list of policy paths where the communication entry is applied + /// Edge/LR/T0/T1/LRP/CGW/MGW/etc. Note that a given rule can be applied + /// on multiple LRs/LRPs. + /// + [Newtonsoft.Json.JsonProperty("scope", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Scope { get; set; } + + /// This field is used to resolve conflicts between multiple + /// CommunicationEntries under CommunicationMap for a Domain + /// If no sequence number is specified in the payload, a value of 0 is + /// assigned by default. If there are multiple communication entries with + /// the same sequence number then their order is not deterministic. If a + /// specific order of communication entry is desired, then one has to + /// specify unique sequence numbers or use the POST request on the + /// communication entry entity with a query parameter action=revise to let + /// the framework assign a sequence number + /// + [Newtonsoft.Json.JsonProperty("sequence_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Sequence_number { get; set; } + + /// We need paths as duplicate names may exist for groups under different + /// domains. In order to specify all groups, use the constant "ANY". This + /// is case insensitive. If "ANY" is used, it should be the ONLY element + /// in the group array. Error will be thrown if ANY is used in conjunction + /// with other values. + /// + [Newtonsoft.Json.JsonProperty("source_groups", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(128)] + public System.Collections.Generic.ICollection Source_groups { get; set; } + + + } + + /// Child wrapper object for EndpointRule used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildEndpointRule : ChildPolicyConfigResource + { + /// Contains actual EndpointRule. + /// + [Newtonsoft.Json.JsonProperty("EndpointRule", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public EndpointRule EndpointRule { get; set; } + + + } + + /// Child wrapper for ALBStringGroup, used in hierarchical API. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildALBStringGroup : ChildPolicyConfigResource + { + /// Contains the actual ALBStringGroup object. + /// + [Newtonsoft.Json.JsonProperty("ALBStringGroup", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ALBStringGroup ALBStringGroup { get; set; } + + + } + + /// Advanced load balancer NetworkProfileUnion object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBNetworkProfileUnion + { + /// Configure one of either proxy or fast path profiles. + /// Enum options - PROTOCOL_TYPE_TCP_PROXY, + /// PROTOCOL_TYPE_TCP_FAST_PATH, PROTOCOL_TYPE_UDP_FAST_PATH, + /// PROTOCOL_TYPE_UDP_PROXY. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as PROTOCOL_TYPE_TCP_PROXY. + /// + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBNetworkProfileUnionType Type { get; set; } = SDKGenerator.ALBNetworkProfileUnionType.PROTOCOL_TYPE_TCP_PROXY; + + /// Placeholder for description of property tcp_proxy_profile + /// of obj type NetworkProfileUnion field type str type ref. + /// + [Newtonsoft.Json.JsonProperty("tcp_proxy_profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBTCPProxyProfile Tcp_proxy_profile { get; set; } + + /// Placeholder for description of property + /// tcp_fast_path_profile of obj type NetworkProfileUnion field + /// type str type ref. + /// + [Newtonsoft.Json.JsonProperty("tcp_fast_path_profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBTCPFastPathProfile Tcp_fast_path_profile { get; set; } + + /// Configure UDP Proxy network profile. + [Newtonsoft.Json.JsonProperty("udp_proxy_profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBUDPProxyProfile Udp_proxy_profile { get; set; } + + /// Placeholder for description of property + /// udp_fast_path_profile of obj type NetworkProfileUnion field + /// type str type ref. + /// + [Newtonsoft.Json.JsonProperty("udp_fast_path_profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBUDPFastPathProfile Udp_fast_path_profile { get; set; } + + + } + + /// Paged collection of RBAC Objects + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ObjectRolePermissionGroupListResult : ListResult + { + /// ObjectRolePermissionGroup list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Wrapper object for PolicySIStatusConfiguration + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildSIStatusConfiguration : ChildPolicyConfigResource + { + /// Contains the actual service insertion status configuration list object. + /// + [Newtonsoft.Json.JsonProperty("PolicySIStatusConfiguration", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PolicySIStatusConfiguration PolicySIStatusConfiguration { get; set; } + + + } + + /// Contains OSPF routing configurations. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class OspfRoutingConfig : PolicyConfigResource + { + /// List of summary address configruation to summarize or filter external routes based on the + /// setting of advertise flag in each OspfSummaryAddressConfig + /// + [Newtonsoft.Json.JsonProperty("summary_addresses", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.MaxLength(1000)] + public System.Collections.Generic.ICollection Summary_addresses { get; set; } + + /// Flag to enable/disable advertisement of default route into OSPF domain. + /// The default route should be present in the edge only then it redistributes the + /// same into OSPF domain only if this flag is set to TRUE. + /// + [Newtonsoft.Json.JsonProperty("default_originate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Default_originate { get; set; } = false; + + /// Configuration field to hold OSPF Restart mode . + [Newtonsoft.Json.JsonProperty("graceful_restart_mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public OspfRoutingConfigGraceful_restart_mode? Graceful_restart_mode { get; set; } = SDKGenerator.OspfRoutingConfigGraceful_restart_mode.HELPER_ONLY; + + /// Flag to enable OSPF routing protocol. Disabling will stop feature and + /// OSPF peering. + /// + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enabled { get; set; } = false; + + /// Flag to enable ECMP. + /// + [Newtonsoft.Json.JsonProperty("ecmp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Ecmp { get; set; } = true; + + + } + + /// Label to reference group of policy entities of same type. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyLabel : PolicyConfigResource + { + /// Policy entity paths referred by the label instance + [Newtonsoft.Json.JsonProperty("refs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Refs { get; set; } + + /// Policy intent entity type from PolicyResourceType + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Type { get; set; } + + + } + + /// Multicast Routes Per Edge. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class MulticastRoutesPerEdge + { + [Newtonsoft.Json.JsonProperty("mcast_routes", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Mcast_routes { get; set; } + + /// Policy path to edge node. + /// + [Newtonsoft.Json.JsonProperty("edge_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Edge_path { get; set; } + + + } + + /// NSX global configs for VRNI global collector + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VrniGlobalCollector : GlobalCollectorConfig + { + /// Report interval for operation data in seconds. + [Newtonsoft.Json.JsonProperty("report_interval", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Range(1D, 1800D)] + public long Report_interval { get; set; } = 30L; + + + } + + /// A weak reference to an NSX resource. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ResourceReference + { + /// Display name of the NSX resource. + [Newtonsoft.Json.JsonProperty("target_display_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Target_display_name { get; set; } + + /// Will be set to false if the referenced NSX resource has been deleted. + [Newtonsoft.Json.JsonProperty("is_valid", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Is_valid { get; set; } + + /// Identifier of the NSX resource. + [Newtonsoft.Json.JsonProperty("target_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(64)] + public string Target_id { get; set; } + + /// Type of the NSX resource. + [Newtonsoft.Json.JsonProperty("target_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.StringLength(255)] + public string Target_type { get; set; } + + + } + + /// Advanced load balancer AnalyticsPolicy object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAnalyticsPolicy + { + /// Placeholder for description of property client_log_filters + /// of obj type AnalyticsPolicy field type str type array. + /// + [Newtonsoft.Json.JsonProperty("client_log_filters", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Client_log_filters { get; set; } + + /// This setting limits the total number of UDF logs generated + /// per second for this VS on each SE. + /// UDF logs are generated due to the configured client log + /// filters or the rules with logging enabled. + /// Default is 10 logs per second. + /// Set it to zero (0) to deactivate throttling. + /// Unit is PER_SECOND. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 10. + /// + [Newtonsoft.Json.JsonProperty("udf_log_throttle", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Udf_log_throttle { get; set; } = 10L; + + /// Settings to turn on realtime metrics and set duration for + /// realtime updates. + /// + [Newtonsoft.Json.JsonProperty("metrics_realtime_update", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBMetricsRealTimeUpdate Metrics_realtime_update { get; set; } + + /// This setting limits the number of significant logs + /// generated per second for this VS on each SE. + /// Default is 10 logs per second. + /// Set it to zero (0) to deactivate throttling. + /// Unit is PER_SECOND. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as 10. + /// + [Newtonsoft.Json.JsonProperty("significant_log_throttle", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Significant_log_throttle { get; set; } = 10L; + + /// Gain insights from sampled client to server HTTP requests + /// and responses. + /// Enum options - NO_INSIGHTS, PASSIVE, ACTIVE. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as NO_INSIGHTS. + /// + [Newtonsoft.Json.JsonProperty("client_insights", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBAnalyticsPolicyClient_insights? Client_insights { get; set; } = SDKGenerator.ALBAnalyticsPolicyClient_insights.NO_INSIGHTS; + + /// Log all headers. + /// Default value when not specified in API or module is + /// interpreted by ALB Controller as false. + /// + [Newtonsoft.Json.JsonProperty("all_headers", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? All_headers { get; set; } = false; + + /// Placeholder for description of property + /// client_insights_sampling of obj type AnalyticsPolicy field + /// type str type ref. + /// + [Newtonsoft.Json.JsonProperty("client_insights_sampling", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBClientInsightsSampling Client_insights_sampling { get; set; } + + /// Placeholder for description of property full_client_logs of + /// obj type AnalyticsPolicy field type str type ref. + /// + [Newtonsoft.Json.JsonProperty("full_client_logs", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBFullClientLogs Full_client_logs { get; set; } + + + } + + /// Some applications maintain state and require all relevant connections + /// to be sent to the same server as the application state is not + /// synchronized among servers. Persistence is enabled on a + /// LBVirtualServer by binding a persistence profile to it. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LBCookiePersistenceProfile : LBPersistenceProfile + { + /// If garble is set to true, cookie value (server IP and port) would be + /// encrypted. + /// If garble is set to false, cookie value would be plain text. + /// + [Newtonsoft.Json.JsonProperty("cookie_garble", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Cookie_garble { get; set; } = true; + + /// If cookie secure flag is true, it prevents the browser from sending a + /// cookie over http. The cookie is sent only over https. Only available + /// for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_secure", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Cookie_secure { get; set; } = false; + + /// If fallback is true, once the cookie points to a server that is down + /// (i.e. admin state DISABLED or healthcheck state is DOWN), then a new + /// server is selected by default to handle that request. + /// If fallback is false, it will cause the request to be rejected if + /// cookie points to a server. + /// + [Newtonsoft.Json.JsonProperty("cookie_fallback", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Cookie_fallback { get; set; } = true; + + /// Cookie persistence mode. + [Newtonsoft.Json.JsonProperty("cookie_mode", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LBCookiePersistenceProfileCookie_mode? Cookie_mode { get; set; } = SDKGenerator.LBCookiePersistenceProfileCookie_mode.INSERT; + + /// HTTP cookie domain could be configured, only available for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_domain", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Cookie_domain { get; set; } + + /// If cookie httponly flag is true, it prevents a script running in the + /// browser from accessing the cookie. Only available for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_httponly", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Cookie_httponly { get; set; } = false; + + /// Cookie name. + [Newtonsoft.Json.JsonProperty("cookie_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Cookie_name { get; set; } = "NSXLB"; + + /// Both session cookie and persistence cookie are supported, if not + /// specified, it's a session cookie. It expires when the browser is + /// closed. + /// + [Newtonsoft.Json.JsonProperty("cookie_time", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public LBCookieTime Cookie_time { get; set; } + + /// HTTP cookie path could be set, only available for insert mode. + /// + [Newtonsoft.Json.JsonProperty("cookie_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Cookie_path { get; set; } + + + } + + /// Child wrapper object for PortMirroringProfile, used in hierarchical API + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildPortMirroringProfile : ChildPolicyConfigResource + { + /// Contains the actual PortMirroringProfile object + /// + [Newtonsoft.Json.JsonProperty("PortMirroringProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public PortMirroringProfile PortMirroringProfile { get; set; } + + + } + + /// Advanced load balancer DnsRuleMatchTarget object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBDnsRuleMatchTarget + { + /// DNS query types to match against request query type. + [Newtonsoft.Json.JsonProperty("query_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsQueryTypeMatch Query_type { get; set; } + + /// Geographical location attribute to match against that of + /// the client IP. + /// + [Newtonsoft.Json.JsonProperty("geo_location", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsGeoLocationMatch Geo_location { get; set; } + + /// Domain names to match against query name. + [Newtonsoft.Json.JsonProperty("query_name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsQueryNameMatch Query_name { get; set; } + + /// DNS transport protocol match. + [Newtonsoft.Json.JsonProperty("protocol", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsTransportProtocolMatch Protocol { get; set; } + + /// IP addresses to match against client IP or the EDNS client + /// subnet IP. + /// + [Newtonsoft.Json.JsonProperty("client_ip_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public ALBDnsClientIpMatch Client_ip_address { get; set; } + + + } + + /// RouteMap for redistributing routes to BGP and other routing protocols + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class Tier0RouteMap : PolicyConfigResource + { + /// Ordered list of route map entries. + /// + [Newtonsoft.Json.JsonProperty("entries", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.MinLength(1)] + [System.ComponentModel.DataAnnotations.MaxLength(1000)] + public System.Collections.Generic.ICollection Entries { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Intersite gateway configuration. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IntersiteGatewayConfig + { + /// IPv4 subnet for inter-site transit segment connecting service routers + /// across sites for stretched gateway. For IPv6 link local subnet is + /// auto configured. + /// + [Newtonsoft.Json.JsonProperty("intersite_transit_subnet", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Intersite_transit_subnet { get; set; } = "169.254.32.0/20"; + + /// Primary egress site for gateway. T0/T1 gateway in Active/Standby mode + /// supports stateful services on primary site. In this mode primary site + /// must be set if gateway is stretched to more than one site. For T0 gateway + /// in Active/Active primary site is optional field. If set then secondary site + /// prefers routes learned from primary over locally learned routes. This field + /// is not applicable for T1 gateway with no services. + /// + [Newtonsoft.Json.JsonProperty("primary_site_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Primary_site_path { get; set; } + + /// Epoch(in seconds) is auto updated based on system current timestamp + /// when primary locale service is updated. It is used for resolving conflict + /// during site failover. If system clock not in sync then User can optionally + /// override this. New value must be higher than the current value. + /// + [Newtonsoft.Json.JsonProperty("last_admin_active_epoch", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(int.MinValue, 4294967295D)] + public long? Last_admin_active_epoch { get; set; } + + /// Fallback site to be used as new primary site on current primary site + /// failure. Disaster recovery must be initiated via API/UI. Fallback site + /// configuration is supported only for T0 gateway. T1 gateway will follow + /// T0 gateway's primary site during disaster recovery. + /// + [Newtonsoft.Json.JsonProperty("fallback_sites", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Fallback_sites { get; set; } + + + } + + /// An address binding entry is a combination of the IP-MAC-VLAN binding for + /// a logical port. The address bindings can be obtained via various methods + /// like ARP snooping, DHCP snooping etc. or by user configuration. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AddressBindingEntry + { + /// Source from which the address binding entry was obtained + [Newtonsoft.Json.JsonProperty("source", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public AddressBindingEntrySource? Source { get; set; } = SDKGenerator.AddressBindingEntrySource.UNKNOWN; + + /// Combination of IP-MAC-VLAN binding + [Newtonsoft.Json.JsonProperty("binding", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public PacketAddressClassifier Binding { get; set; } + + /// Timestamp at which the binding was discovered via snooping or manually + /// specified by the user + /// + [Newtonsoft.Json.JsonProperty("binding_timestamp", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Binding_timestamp { get; set; } + + + } + + /// Advanced load balancer HSMSafenetClientInfo object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBHSMSafenetClientInfo + { + /// Name prepended to client key and certificate filename. + [Newtonsoft.Json.JsonProperty("client_ip", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Client_ip { get; set; } + + /// Client Private Key generated by createCert. + [Newtonsoft.Json.JsonProperty("client_priv_key", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Client_priv_key { get; set; } + + /// Minor number of the sesseion. + [Newtonsoft.Json.JsonProperty("session_minor_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Session_minor_number { get; set; } + + /// Generated File - Chrystoki.conf . + [Newtonsoft.Json.JsonProperty("chrystoki_conf", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Chrystoki_conf { get; set; } + + /// Major number of the sesseion. + [Newtonsoft.Json.JsonProperty("session_major_number", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Session_major_number { get; set; } + + /// Client Certificate generated by createCert. + [Newtonsoft.Json.JsonProperty("client_cert", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Client_cert { get; set; } + + + } + + /// IGMP (Internet Group Management Protocol) membership details. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IgmpMembership + { + /// Multicast group membership active time. + [Newtonsoft.Json.JsonProperty("uptime", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Uptime { get; set; } + + /// Multicast group address. + [Newtonsoft.Json.JsonProperty("group", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Group { get; set; } + + /// Interface on which multicast group membership is learned. + /// + [Newtonsoft.Json.JsonProperty("interface", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Interface { get; set; } + + /// Number of multicast sources. + [Newtonsoft.Json.JsonProperty("no_of_sources", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string No_of_sources { get; set; } + + /// IP address of multicast source. + [Newtonsoft.Json.JsonProperty("source_address", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Source_address { get; set; } + + /// IGMP version. + [Newtonsoft.Json.JsonProperty("igmp_version", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public long? Igmp_version { get; set; } + + + } + + /// SSL cipher + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class LbSslCipherInfo + { + /// Default SSL cipher flag + [Newtonsoft.Json.JsonProperty("is_default", Required = Newtonsoft.Json.Required.Always)] + public bool Is_default { get; set; } + + /// Secure/insecure SSL cipher flag + [Newtonsoft.Json.JsonProperty("is_secure", Required = Newtonsoft.Json.Required.Always)] + public bool Is_secure { get; set; } + + /// Several cipher groups might contain the same cipher suite, each cipher + /// suite could have multiple cipher group labels. + /// + [Newtonsoft.Json.JsonProperty("cipher_group_labels", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public System.Collections.Generic.ICollection Cipher_group_labels { get; set; } + + /// SSL cipher + [Newtonsoft.Json.JsonProperty("cipher", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public LbSslCipherInfoCipher Cipher { get; set; } + + + } + + /// Data for a single backup/restore card + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class BackupOverview : ClusterBackupInfoListResult + { + /// Backup status decribes type, phase, success/failure and time of a | latest backup execution + [Newtonsoft.Json.JsonProperty("current_backup_operation_status", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public CurrentBackupOperationStatus Current_backup_operation_status { get; set; } = new CurrentBackupOperationStatus(); + + /// Status of the last backup execution per component + [Newtonsoft.Json.JsonProperty("backup_operation_history", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public BackupOperationHistory Backup_operation_history { get; set; } = new BackupOperationHistory(); + + /// Configuration to generate a manual/automated backup + [Newtonsoft.Json.JsonProperty("backup_config", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public BackupConfiguration Backup_config { get; set; } = new BackupConfiguration(); + + /// Status of restore process executing/executed on appliance + [Newtonsoft.Json.JsonProperty("restore_status", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public ClusterRestoreStatus Restore_status { get; set; } = new ClusterRestoreStatus(); + + + } + + /// Virtual switch on a compute manager + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class VirtualSwitch : DiscoveredResource + { + /// ID of the virtual switch in compute manager + [Newtonsoft.Json.JsonProperty("cm_local_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Cm_local_id { get; set; } + + /// External id of the virtual switch + [Newtonsoft.Json.JsonProperty("external_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string External_id { get; set; } + + /// Switch type like VmwareDistributedVirtualSwitch + [Newtonsoft.Json.JsonProperty("origin_type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Origin_type { get; set; } + + /// ID of the compute manager where this virtual switch is discovered. + /// + [Newtonsoft.Json.JsonProperty("origin_id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Origin_id { get; set; } + + + } + + /// Child wrapper object for GeneralSecurityProfile, + /// used in hierarchical API + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildGeneralSecurityProfile : ChildPolicyConfigResource + { + /// Contains the actual GeneralSecurityProfile object + /// + [Newtonsoft.Json.JsonProperty("GeneralSecurityProfile", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public GeneralSecurityProfile GeneralSecurityProfile { get; set; } + + + } + + /// Child wrapper object for Tier0Interface, used in hierarchical API. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ChildTier0Interface : ChildPolicyConfigResource + { + /// Contains the actual Tier0Interface object. + /// + [Newtonsoft.Json.JsonProperty("Tier0Interface", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public Tier0Interface Tier0Interface { get; set; } + + + } + + /// IpAddressPoolSubnet can either be carved out of a PolicyBlock or statically specified by the user. In the first case where the subnet is carved out of a IpAddressBlock, the user must specify the ID of the block from which this subnet is to be derived. This block must be pre-created. The subnet range is auto populated by the system. In the second case, the user configures the subnet range directly. No IpAddressBlock is required. + [Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "resource_type")] + [JsonInheritanceAttribute("IpAddressPoolBlockSubnet", typeof(IpAddressPoolBlockSubnet))] + [JsonInheritanceAttribute("IpAddressPoolStaticSubnet", typeof(IpAddressPoolStaticSubnet))] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class IpAddressPoolSubnet : PolicyConfigResource + { + + } + + /// Mirrors Data from source to destination + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PortMirroringInstance : PolicyConfigResource + { + /// If this property is set, the packet will be truncated to the provided + /// length. If this property is unset, entire packet will be mirrored. + /// + [Newtonsoft.Json.JsonProperty("snap_length", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(60D, 65535D)] + public long? Snap_length { get; set; } + + /// Port mirroring instance direction + [Newtonsoft.Json.JsonProperty("direction", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public PortMirroringInstanceDirection? Direction { get; set; } + + /// Data from source group will be copied to members of + /// destination group. + /// + [Newtonsoft.Json.JsonProperty("destination_group", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Destination_group { get; set; } + + + } + + /// This entity will be used to establish association between monitoring + /// profile and Group. Using this entity, you can specify intent for applying + /// monitoring profile to particular Group. Group with membership criteria vm + /// only supported as source group. Port mirroring is only supported on group + /// with five vms. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class GroupMonitoringProfileBindingMap : MonitoringProfileBindingMap + { + /// PolicyPath of associated IPFIX L2 Profile + [Newtonsoft.Json.JsonProperty("ipfix_l2_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ipfix_l2_profile_path { get; set; } + + /// PolicyPath of associated IPFIX DFW Profile + [Newtonsoft.Json.JsonProperty("ipfix_dfw_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Ipfix_dfw_profile_path { get; set; } + + /// PolicyPath of associated Port Mirroring Profile + [Newtonsoft.Json.JsonProperty("port_mirroring_profile_path", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Port_mirroring_profile_path { get; set; } + + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class GatewayFloodProtectionProfile : FloodProtectionProfile + { + /// The maximum limit of active NAT connections. This limit only apply to EDGE components (such as, gateway). If this property is omitted, or set to null, then there is no limit on the specific component. Meanwhile there is an implicit limit which depends on the underlying hardware resource. + [Newtonsoft.Json.JsonProperty("nat_active_conn_limit", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1D, 4294967295D)] + public long? Nat_active_conn_limit { get; set; } = 4294967295L; + + + } + + /// Advanced load balancer ClientLogStreamingFormat object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBClientLogStreamingFormat + { + /// List of log fields to be streamed, when selective fields + /// (LOG_STREAMING_FORMAT_JSON_SELECTED) option is chosen. + /// Only top-level fields in application or connection logs are + /// supported. + /// + [Newtonsoft.Json.JsonProperty("included_fields", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Included_fields { get; set; } + + /// Format for the streamed logs. + /// Enum options - LOG_STREAMING_FORMAT_JSON_FULL, + /// LOG_STREAMING_FORMAT_JSON_SELECTED. + /// + [Newtonsoft.Json.JsonProperty("format", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public ALBClientLogStreamingFormatFormat Format { get; set; } + + + } + + /// Advanced load balancer AuthorizationPolicy object + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ALBAuthorizationPolicy + { + /// Authorization Policy Rules. + [Newtonsoft.Json.JsonProperty("authz_rules", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Authz_rules { get; set; } + + + } + + /// Paged collection of Firewall Session Timer Profile Binding Maps + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class PolicyFirewallSessionTimerProfileBindingMapListResult : ListResult + { + /// Firewall Session Timer Profile Binding Map list results + [Newtonsoft.Json.JsonProperty("results", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Results { get; set; } = new System.Collections.ObjectModel.Collection(); + + + } + + /// Aggregate of DNS forwarder status across enforcement points. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class AggregateDNSForwarderStatus + { + /// List of DNS forwarder status per enforcement point. + /// + [Newtonsoft.Json.JsonProperty("status_per_enforcement_point", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Status_per_enforcement_point { get; set; } + + /// String path of the DNS forwarder intent. + /// + [Newtonsoft.Json.JsonProperty("intent_path", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Intent_path { get; set; } + + + } + + /// Global IDS signature. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class GlobalIdsSignature : PolicyConfigResource + { + /// It denotes the global action of a IDS Signature. + /// This will take precedence over IDS signature's action. + /// + [Newtonsoft.Json.JsonProperty("action", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] + public GlobalIdsSignatureAction? Action { get; set; } + + /// Represents the Signature's id. + /// + [Newtonsoft.Json.JsonProperty("signature_id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required(AllowEmptyStrings = true)] + public string Signature_id { get; set; } + + /// Flag through which user can Enable/Disable a Signature at Global Level. + /// + [Newtonsoft.Json.JsonProperty("enable", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool? Enable { get; set; } = true; + + + } + + /// Represents a container to group widgets that belong to a common category or have a common purpose. + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.0.22.0 (Newtonsoft.Json v11.0.0.0)")] + public partial class ContainerConfiguration : WidgetConfiguration + { + /// If not specified, creates an empty container. + [Newtonsoft.Json.JsonProperty("widgets", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Widgets { get; set; } + + /// Layout of widgets can be either vertical or horizontal. If layout is not specified a default horizontal layout is applied. + [Newtonsoft.Json.JsonProperty("layout", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Layout Layout { get; set; } + + /// Labels for the container. + [Newtonsoft.Json.JsonProperty("labels", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection