{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "allOf": [
    {
      "$ref": "#/definitions/nswagDocument"
    },
    {
      "properties": {
        "codeGenerators": {
          "$ref": "#/definitions/codeGenerators"
        }
      }
    }
  ],
  "definitions": {
    "nswagDocument": {
      "type": "object",
      "properties": {
        "runtime": {
          "type": "string",
          "enum": [
            "Default",
            "WinX64",
            "WinX86",
            "NetCore10",
            "NetCore11",
            "NetCore20",
            "NetCore21",
            "NetCore22",
            "NetCore30",
            "Debug"
          ]
        },
        "defaultVariables": {
          "type": [
            "string",
            "null"
          ]
        },
        "documentGenerator": {
          "type": "object",
          "properties": {
            "fromDocument": {
              "type": "object",
              "properties": {
                "json": {
                  "type": "string",
                  "description": "Path to file or JSON text."
                },
                "url": {
                  "type": "string",
                  "description": "Document URL. Dont used if 'json' property is set."
                },
                "output": {
                  "type": "null"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "json"
                  ]
                },
                {
                  "required": [
                    "url"
                  ]
                }
              ]
            },
            "jsonSchemaToOpenApi": {
              "properties": {
                "name": {
                  "type": "string",
                  "description": "Name of schema`"
                },
                "schema": {
                  "type": "string",
                  "description": "Path to file or text of schema."
                }
              },
              "required": [
                "name",
                "schema"
              ]
            },
            "preprocessors": {
              "additionalProperties": {
                "type": "object"
              },
              "description": "List of using preprocessors."
            }
          },
          "anyOf": [
            {
              "required": [
                "fromDocument"
              ]
            },
            {
              "required": [
                "jsonSchemaToOpenApi"
              ]
            },
            {
              "required": [
                "preprocessors"
              ]
            }
          ]
        }
      },
      "required": [
        "codeGenerators"
      ]
    },
    "codeGenerators": {
      "description": "Generator used for code generation.",
      "type": "object",
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "openApiToCSharpClient": {
              "description": "Generates a client in C#.",
              "$ref": "#/definitions/csClientGeneratorSettings"
            }
          },
          "required": [
            "openApiToCSharpClient"
          ]
        },
        {
          "additionalProperties": false,
          "properties": {
            "openApiToCSharpController": {
              "description": "Generates a contoller for ASP.NET Core in C#",
              "$ref": "#/definitions/csControllerGeneratorSettings"
            }
          },
          "required": [
            "openApiToCSharpController"
          ]
        },
        {
          "additionalProperties": false,
          "properties": {
            "openApiToTypeScriptClient": {
              "description": "Generates a client in TypeScript.",
              "$ref": "#/definitions/tsClientGeneratorSettings"
            }
          },
          "required": [
            "openApiToTypeScriptClient"
          ]
        }
      ]
    },
    "codeGeneratorSettingsBase": {
      "properties": {
        "excludedTypeNames": {
          "description": "List of types excluded from generation.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "generateDefaultValues": {
          "type": "boolean",
          "description": "Indicating whether to generate default values for properties (when JSON Schema default is set).",
          "default": true
        },
        "inlineNamedAny": {
          "type": "boolean",
          "description": "Value indicating whether named/referenced any schemas should be inlined or generated as class."
        },
        "templateDirectory": {
          "type": "string",
          "description": "Template directory path."
        }
      }
    },
    "csGeneratorSettings": {
      "allOf": [
        {
          "$ref": "#/definitions/codeGeneratorSettingsBase"
        },
        {
          "properties": {
            "additionalNamespaceUsages": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Additional namespaces included in the file."
            },
            "anyType": {
              "type": "string",
              "description": "The .NET type used if not set in the schema (default: object).",
              "default": "object"
            },
            "arrayType": {
              "type": "string",
              "description": "The .NET type used for arrays (default: ICollection).",
              "default": "System.Collections.Generic.ICollection"
            },
            "arrayInstanceType": {
              "type": "string",
              "description": "The .NET type used to instantiate an array (default: Collection).",
              "default": "System.Collections.ObjectModel.Collection"
            },
            "arrayBaseType": {
              "type": "string",
              "description": "The .NET type used as a base for arrays (default: Collection).",
              "default": "System.Collections.ObjectModel.Collection"
            },
            "classStyle": {
              "type": "string",
              "description": "The C# class style (default: Poco). Poco - class, Inpc - class implemeted INotifyPropertyChanged interface, Prism - class for Prism library, Record - C# record.",
              "enum": [
                "Poco",
                "Inpc",
                "Prism",
                "Record"
              ],
              "default": "Poco"
            },
            "dateType": {
              "type": "string",
              "description": "The .NET type used for dates (default: DateTimeOffset).",
              "default": "DateTimeOffset"
            },
            "dateTimeType": {
              "type": "string",
              "description": "The.NET type used for date time (default: DateTimeOffset).",
              "default": "DateTimeOffset"
            },
            "dictionaryType": {
              "type": "string",
              "description": "The .NET type used for dictionary (default: IDictionary).",
              "default": "System.Collections.Generic.IDictionary"
            },
            "dictionaryInstanceType": {
              "type": "string",
              "description": "The .NET type used for instantiate an dictionary (default: Dictionary).",
              "default": "System.Collections.Generic.Dictionary"
            },
            "dictionaryBaseType": {
              "type": "string",
              "description": "The .NET type used as a base for dictionary (default: Dictionary).",
              "default": "System.Collections.Generic.Dictionary"
            },
            "enforceFlagEnums": {
              "type": "boolean",
              "description": "Indicating whether enums should be always generated as bit flags (default: false).",
              "default": false
            },
            "generateDataAnnotations": {
              "type": "boolean",
              "description": "indicating whether to generated attributes from System.ComponentModel.Annotations (default: true).",
              "default": true
            },
            "generateImmutableArrayProperties": {
              "type": "boolean",
              "description": "Indicating whether to remove the setter for non-nullable array properties (default: false).",
              "default": false
            },
            "generateImmutableDictionaryProperties": {
              "type": "boolean",
              "description": "Indicating whether to remove the setter for non-nullable dictionary properties (default: false).",
              "default": false
            },
            "generateJsonMethods": {
              "type": "boolean",
              "description": "Indicating whether to render ToJson() and FromJson() methods (default: false).",
              "default": false
            },
            "generateOptionalPropertiesAsNullable": {
              "type": "boolean",
              "description": "Indicating whether optional schema properties (not required) are generated as nullable properties (default: false).",
              "default": false
            },
            "generateNativeRecords": {
              "type": "boolean",
              "description": "Generate C# 9.0 record types instead of record-like classes. (default: false).",
              "default": false
            },
            "generateNullableReferenceTypes": {
              "type": "boolean",
              "description": "Indicating whether to generate Nullable Reference Type annotations (default: false).",
              "default": false
            },
            "handleReferences": {
              "type": "boolean",
              "description": "Indicating whether to use preserve references handling (All) in the JSON serializer (default: false)",
              "default": false
            },
            "inlineNamedDictionaries": {
              "type": "boolean",
              "description": "Indicating whether named/referenced dictionaries should be inlined or generated as class with dictionary inheritance. (default: false)",
              "default": false
            },
            "InlineNamedTuples ": {
              "type": "boolean",
              "description": "Indicating whether named/referenced tuples should be inlined or generated as class with tuple inheritance. (default: false)",
              "default": false
            },
            "inlineNamedArrays ": {
              "type": "boolean",
              "description": "Indicating whether named/referenced arrays should be inlined or generated as class with array inheritance. (default: false)",
              "default": false
            },
            "jsonConverters": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "The custom Json.NET converters (class names) which are registered for serialization and deserialization."
            },
            "jsonLibrary": {
              "description": "The CSharp JSON library to use (default: NewtonsoftJson)",
              "type": "string",
              "default": "NewtonsoftJson",
              "enum": [
                "NewtonsoftJson",
                "SystemTextJson"
              ]
            },
            "jsonSerializerSettingsTransformationMethod": {
              "type": "string",
              "description": "The name of a static method which is called to transform the JsonSerializerSettings (for Newtonsoft.Json) or the JsonSerializerOptions (for System.Text.Json) used in the generated ToJson()/FromJson() methods (default: null)."
            },
            "namespace": {
              "type": "string",
              "description": "The .NET namespace of the generated types (default: MyNamespace).",
              "default": "MyNamespace"
            },
            "numberType": {
              "type": "string",
              "description": "The .NET type used for number (default: double).",
              "default": "double"
            },
            "numberDoubleType": {
              "type": "string",
              "description": "The .NET type used for number with double format (default: double).",
              "default": "double"
            },
            "numberFloatType": {
              "type": "string",
              "description": "The .NET type used for number with float format (default: float).",
              "default": "float"
            },
            "numberDecimalType": {
              "type": "string",
              "description": "The .NET type used for number with decimal format (default: decimal).",
              "default": "decimal"
            },
            "propertySetterAccessModifier": {
              "type": "string",
              "description": "The access modifier of property setters (default: '').",
              "default": ""
            },
            "requiredPropertiesMustBeDefined": {
              "type": "boolean",
              "description": "Sets Required.Always when the property is required (default: true).",
              "default": true
            },
            "timeType": {
              "type": "string",
              "description": "The .NET type used for time (default: TimeSpan).",
              "default": "TimeSpan"
            },
            "timeSpanType": {
              "type": "string",
              "description": "The .NET type used for time span (default: TimeSpan).",
              "default": "TimeSpan"
            },
            "typeAccessModifier": {
              "type": "string",
              "description": "The access modifier of generated classes and interfaces (default: public)",
              "default": "public"
            }
          }
        }
      ]
    },
    "tsGeneratorSettings": {
      "type": "object",
      "properties": {
        "classTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The type names which always generate plain TypeScript classes."
        },
        "convertConstructorInterfaceData": {
          "type": "boolean",
          "description": "Indicating whether POJO objects in the constructor data are converted to DTO instances (GenerateConstructorInterface must be enabled, default: false).",
          "default": false
        },
        "convertDateToLocalTimezone": {
          "type": "boolean",
          "description": "Whether to use UTC (default) or local time zone when deserializing dates 'yyyy-MM-dd' (default: 'false').\nOnly applicable if DateTimeType is Date.\nOther DateTimeTypes use local timezone by default.",
          "default": false
        },
        "dateTimeType": {
          "type": "string",
          "default": "Date",
          "enum": [
            "Date",
            "MomentJS",
            "String",
            "OffsetMomentJS",
            "Luxon",
            "DayJS"
          ],
          "description": "The type used for date time (default: Date)."
        },
        "enumStyle": {
          "type": "string",
          "default": "Enum",
          "description": "The enum style. default: Enum",
          "enum": [
            "Enum",
            "StringLiteral"
          ]
        },
        "exportTypes": {
          "type": "boolean",
          "description": "indicating whether the export keyword should be added to all classes and enums (default: true).",
          "default": true
        },
        "extendedClasses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of extended classes (the classes must be implemented in the ExtensionCode)."
        },
        "extensionCode": {
          "type": "string",
          "description": "The extension code to append to the generated code."
        },
        "generateCloneMethod": {
          "type": "boolean",
          "description": "Indicating whether a clone() method should be generated in the DTO classes.",
          "default": false
        },
        "generateConstructorInterface": {
          "type": "boolean",
          "description": "Indicating whether to generate an class interface which is used in the constructor to initialize the class (default: true).",
          "default": true
        },
        "generateTypeCheckFunctions": {
          "type": "boolean",
          "description": "Indicating whether to generate type check functions (for type style interface only, default: false).",
          "default": false
        },
        "handleReferences": {
          "type": "boolean",
          "description": "Indicating whether to handle JSON references (supports $ref, $id, $values, default: false).",
          "default": false
        },
        "inlineNamedDictionaries": {
          "type": "boolean",
          "description": "Indicating whether named/referenced dictionaries should be inlined or generated as class with an indexer (default: false).",
          "default": false
        },
        "markOptionalProperties": {
          "type": "boolean",
          "default": false,
          "description": "Indicating whether to mark optional properties with ? (default: false)."
        },
        "moduleName": {
          "type": "string",
          "default": "",
          "description": "The TypeScript module name (default: '', no module)."
        },
        "namespace": {
          "type": "string",
          "description": "The TypeScript namespace (default: '', no namespace).",
          "default": ""
        },
        "nullValue": {
          "type": "string",
          "enum": [
            "Null",
            "Undefined"
          ],
          "default": "Undefined",
          "description": "The TypeScript null value."
        },
        "typeScriptVersion": {
          "type": "number",
          "default": 2.7,
          "description": "The target TypeScript version (default: 2.7)."
        },
        "typeStyle": {
          "type": "string",
          "default": "Class",
          "description": "The type style (default: Class).",
          "enum": [
            "Class",
            "Interface",
            "KnockoutClass"
          ]
        },
        "useLeafType": {
          "type": "boolean",
          "description": "Generate leaf types for an object with discriminator (default: false).",
          "default": false
        }
      },
      "dependencies": {
        "convertConstructorInterfaceData": [
          "generateConstructorInterface"
        ]
      }
    },
    "replaceNameCollectionSettings": {
      "type": "object",
      "properties": {
        "replaceNameCollection": {
          "type": "object",
          "additionalProperties": true,
          "description": "Список замен символов. Имя свойства представляет замещаемый символ, а значение подставляемый."
        }
      }
    },
    "clientGeneratorBaseSettings": {
      "type": "object",
      "properties": {
        "className": {
          "type": "string",
          "description": "The class name of the service client or controller. Use '{controller}' placeholder for multiple clients."
        },
        "excludedParameterNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The globally excluded parameter names."
        },
        "generateClientClasses": {
          "type": "boolean",
          "description": "Indicating whether to generate client types (default: true)",
          "default": true
        },
        "generateClientInterfaces": {
          "type": "boolean",
          "description": "Indicating whether to generate interfaces for the client classes (default: false).",
          "default": false
        },
        "generateDtoTypes": {
          "type": "boolean",
          "description": "Indicating whether to generate DTO classes (default: true).",
          "default": true
        },
        "generateOptionalParameters": {
          "type": "boolean",
          "description": "Indicating whether to reorder parameters (required first, optional at the end) and generate optional parameters.",
          "default": false
        },
        "generateResponseClasses": {
          "type": "boolean",
          "description": "Indicating whether to generate the response classes (only needed when WrapResponses == true, default: true).",
          "default": false
        },
        "operationGenerationMode": {
          "type": "string",
          "description": "Operation generation mode. (default: MultipleClientsFromOperationIdOperationNameGenerator). Avalible values (must be added from extensions) https://github.com/RicoSuter/NSwag/blob/master/src/NSwag.Commands/Commands/CodeGeneration/OperationGenerationMode.cs"
        },
        "responseClass": {
          "type": "string",
          "description": "The name of the response class (supports the '{controller}' placeholder)."
        },
        "suppressClientInterfacesOutput": {
          "type": "boolean",
          "description": "Indicating whether to generate the output of interfaces for the client classes (default: false).",
          "default": false
        },
        "suppressClientClassesOutput": {
          "type": "boolean",
          "description": "Indicating whether to generate the output of client types (default: false).",
          "default": false
        },
        "wrapResponses": {
          "type": "boolean",
          "description": "Indicating whether to wrap success responses to allow full response access. For restrict methods fill in 'wrapResponseMethods'.",
          "default": false
        },
        "wrapResponseMethods": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of methods where responses are wrapped (\"ControllerName.MethodName\", WrapResponses must be true)."
        }
      }
    },
    "csGeneratorBaseSettings": {
      "anyOf": [
        {
          "$ref": "#/definitions/csGeneratorSettings"
        },
        {
          "$ref": "#/definitions/clientGeneratorBaseSettings"
        },
        {
          "$ref": "#/definitions/replaceNameCollectionSettings"
        }
      ],
      "type": "object",
      "properties": {
        "additionalContractNamespaceUsages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional contract namespace usages."
        },
        "parameterArrayType": {
          "type": "string",
          "description": "The array type of operation parameters (default: System.Collections.Generic.IEnumerable).",
          "default": "System.Collections.Generic.IEnumerable"
        },
        "parameterDictionaryType": {
          "type": "string",
          "description": "The dictionary type of operation parameters (default: System.Collections.Generic.IDictionary).",
          "default": "System.Collections.Generic.IDictionary"
        },
        "responseArrayType": {
          "type": "string",
          "description": "The array type of operation responses (i.e. the method return type, default: System.Collections.Generic.ICollection).",
          "default": "System.Collections.Generic.ICollection"
        },
        "responseDictionaryType": {
          "type": "string",
          "description": "Tthe dictionary type of operation responses (i.e. the method return type, default: System.Collections.Generic.IDictionary).",
          "default": "System.Collections.Generic.IDictionary"
        }
      }
    },
    "csClientGeneratorSettings": {
      "allOf": [
        {
          "$ref": "#/definitions/csGeneratorBaseSettings"
        },
        {
          "type": "object",
          "properties": {
            "clientBaseClass": {
              "type": "string",
              "description": "The full name of the base class."
            },
            "clientBaseInterface": {
              "type": "string",
              "description": "The full name of the base interface."
            },
            "clientClassAccessModifier": {
              "type": "string",
              "description": "The client class access modifier (default: public).",
              "default": "public"
            },
            "configurationClass": {
              "type": "string",
              "description": "The full name of the configuration class (\"ClientBaseClass\" must be set)."
            },
            "exceptionClass": {
              "type": "string",
              "description": "The name of the exception class (supports the '{controller}' placeholder, default 'ApiException').",
              "default": "ApiException"
            },
            "exposeJsonSerializerSettings": {
              "type": "boolean",
              "description": "Value indicating whether to expose the JsonSerializerSettings property (default: false)",
              "default": false
            },
            "disposeHttpClient": {
              "type": "boolean",
              "description": "Indicating whether to dispose the HttpClient (injected HttpClient is never disposed, default: true).",
              "default": true
            },
            "generateBaseUrlProperty": {
              "type": "boolean",
              "description": "Indicating whether to generate the BaseUrl property, must be defined on the base class otherwise (default: true)",
              "default": true
            },
            "generateExceptionClasses": {
              "type": "boolean",
              "description": "Indicating whether to generate exception classes (default: true).",
              "default": true
            },
            "generatePrepareRequestAndProcessResponseAsAsyncMethods ": {
              "type": "boolean",
              "description": "Gets or sets a value indicating whether to create PrepareRequest and ProcessResponse as async methods, or as partial synchronous methods.\nIf value is set to true, PrepareRequestAsync and ProcessResponseAsync methods must be implemented as part of the client base class (if it has one) or as part of the partial client class.\nIf value is set to false, PrepareRequest and ProcessResponse methods will be partial methods, and implement them is optional."
            },
            "generateSyncMethods": {
              "type": "boolean",
              "description": "Indicating whether to generate synchronous methods (not recommended, default: false).",
              "default": false
            },
            "generateUpdateJsonSerializerSettingsMethod": {
              "type": "boolean",
              "description": "Indicating whether to generate the UpdateJsonSerializerSettings method (must be implemented in the base class otherwise, default: true)",
              "default": true
            },
            "httpClientType": {
              "type": "string",
              "description": "Gets or sets the HttpClient type which will be used in the generation of the client code. By default the System.Net.Http.HttpClient will be used, but this can be overridden. Just keep in mind that the type you specify has the same default HttpClient method signatures."
            },
            "injectHttpClient": {
              "type": "boolean",
              "description": "Indicating whether an HttpClient instance is injected into the client (default: true).",
              "default": true
            },
            "parameterDateFormat": {
              "type": "string",
              "description": "Format for Date type method parameters (default: \"yyyy-MM-dd\").",
              "default": "yyyy-MM-dd"
            },
            "parameterDateTimeFormat": {
              "type": "string",
              "description": "Format for DateTime type method parameters (default: \"s\")",
              "default": "s"
            },
            "protectedMethods": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "The list of methods with a protected access modifier (\"classname.methodname\")."
            },
            "queryNullValue": {
              "type": "string",
              "description": "The null value used for query parameters which are null (default: '').",
              "default": ""
            },
            "serializeTypeInformation": {
              "type": "boolean",
              "description": "Indicating whether to serialize the type information in a $type property (not recommended, also sets TypeNameHandling = Auto)"
            },
            "useHttpClientCreationMethod": {
              "type": "boolean",
              "description": "Indicating whether to call CreateHttpClientAsync on the base class to create a new HttpClient instance (cannot be used when the HttpClient is injected).",
              "default": false
            },
            "useBaseUrl": {
              "type": "boolean",
              "description": "Indicating whether to use and expose the base URL (default: true)",
              "default": true
            },
            "useHttpRequestMessageCreationMethod": {
              "type": "boolean",
              "description": "Indicating whether to call CreateHttpRequestMessageAsync on the base class to create a new HttpRequestMethod.",
              "default": false
            },
            "useRequestAndResponseSerializationSettings": {
              "type": "boolean",
              "description": "Indicating whether to generate different request and response serialization settings (default: false)",
              "default": false
            },
            "wrapDtoExceptions": {
              "type": "boolean",
              "description": "Indicating whether DTO exceptions are wrapped in a SwaggerException instance (default: true).",
              "default": true
            }
          },
          "dependencies": {
            "configurationClass": [
              "clientBaseClass"
            ]
          }
        }
      ],
      "required": [
        "namespace"
      ]
    },
    "csControllerGeneratorSettings": {
      "allOf": [
        {
          "$ref": "#/definitions/csGeneratorBaseSettings"
        },
        {
          "type": "object",
          "properties": {
            "basePath": {
              "type": "string",
              "description": "The base path on which the API is served, which is relative to the Host."
            },
            "controllerBaseClass": {
              "type": "string",
              "description": "The full name of the base class."
            },
            "controllerStyle": {
              "type": "string",
              "enum": [
                "Partial",
                "Abstract"
              ],
              "description": "The controller generation style (partial, abstract; default: partial).",
              "default": "Partial"
            },
            "controllerTarget": {
              "type": "string",
              "enum": [
                "AspNet",
                "AspNetCore"
              ],
              "description": "The controller target framework.",
              "default": "AspNetCore"
            },
            "generateModelValidationAttributes": {
              "type": "boolean",
              "description": "Value indicating whether to add model validation attributes. (default: false)",
              "default": false
            },
            "routeNamingStrategy": {
              "type": "string",
              "enum": [
                "None",
                "OperationId"
              ],
              "description": "The strategy for naming routes (default: CSharpRouteNamingStrategy.None).",
              "default": "None"
            },
            "useActionResultType": {
              "type": "boolean",
              "description": "Indicating whether ASP.Net Core (2.1) ActionResult type is used (default: false).",
              "default": false
            },
            "useCancellationToken": {
              "type": "boolean",
              "description": "Indicating whether to allow adding cancellation token (default: false)",
              "default": false
            }
          }
        }
      ]
    },
    "tsClientGeneratorSettings": {
      "description": "Generates a client in TypeScript.",
      "allOf": [
        {
          "$ref": "#/definitions/codeGeneratorSettingsBase"
        },
        {
          "$ref": "#/definitions/tsGeneratorSettings"
        },
        {
          "type": "object",
          "properties": {
            "baseUrlTokenName": {
              "type": "string",
              "description": "The token name for injecting the API base URL string (used in the Angular2 template, default: '').",
              "default": ""
            },
            "clientBaseClass": {
              "type": "string",
              "description": "The client base class."
            },
            "configurationClass": {
              "type": "string",
              "description": "The full name of the configuration class (ClientBaseClass must be set)."
            },
            "exceptionClass": {
              "type": "string",
              "description": "The name of the exception class (supports the {contoller} placeholder, default 'ApiException').",
              "default": "ApiException"
            },
            "importRequiredTypes": {
              "type": "boolean",
              "description": "Indicating whether required types should be imported (default: true).",
              "default": true
            },
            "promiseType": {
              "type": "string",
              "description": "The promise type. default: Promise",
              "default": "Promise",
              "enum": [
                "Promise",
                "QPromise"
              ]
            },
            "protectedMethods": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "The list of methods with a protected access modifier (\"classname.methodname\")."
            },
            "queryNullValue": {
              "type": "string",
              "description": "The null value used for query parameters which are null (default: '').",
              "default": ""
            },
            "template": {
              "type": "string",
              "description": "The output template (default: Fetch).",
              "enum": [
                "JQueryCallbacks",
                "JQueryPromises",
                "AngularJS",
                "Angular",
                "Fetch",
                "Aurelia",
                "Axios"
              ],
              "default": "Fetch"
            },
            "useAbortSignal": {
              "type": "boolean",
              "description": "Indicating whether to use the AbortSignal (Aurelia/Axios/Fetch template only, default: false).",
              "default": false
            },
            "useGetBaseUrlMethod": {
              "type": "boolean",
              "description": "Indicating whether to use the 'getBaseUrl(defaultUrl: string)' from the base class (default: false).",
              "default": false
            },
            "useTransformOptionsMethod": {
              "type": "boolean",
              "description": "Indicating whether to call 'transformOptions' on the base class or extension class.",
              "default": false
            },
            "useTransformResultMethod": {
              "type": "boolean",
              "description": "Indicating whether to call 'transformResult' on the base class or extension class.",
              "default": false
            },
            "withCredentials": {
              "type": "boolean",
              "description": "Indicating whether to set the withCredentials flag (default: false).",
              "default": false
            },
            "wrapDtoExceptions": {
              "type": "boolean",
              "description": "Indicating whether DTO exceptions are wrapped in a SwaggerException instance (default: false).",
              "default": false
            }
          },
          "dependencies": {
            "configurationClass": [
              "clientBaseClass"
            ]
          },
          "if": {
            "properties": {
              "template": {
                "const": "Angular"
              }
            }
          },
          "then": {
            "properties": {
              "httpClass": {
                "type": "string",
                "default": "HttpClient",
                "description": "The HTTP service class (applies only for the Angular template, default: HttpClient)."
              },
              "includeHttpContext": {
                "type": "boolean",
                "description": "Indicating whether to include the httpContext parameter (Angular template only, default: false).",
                "default": false
              },
              "injectionTokenType": {
                "type": "string",
                "description": "The injection token type (applies only for the Angular template).",
                "enum": [
                  "OpaqueToken",
                  "InjectionToken"
                ],
                "default": "OpaqueToken"
              },
              "rxJsVersion": {
                "type": "number",
                "description": "The RxJs version (Angular template only, default: 6.0)",
                "default": 6.0
              },
              "useSingletonProvider": {
                "type": "boolean",
                "description": "Indicating whether to use the Angular 6 Singleton Provider (Angular template only, default: false).",
                "default": false
              }
            }
          },
          "additionalProperties": false
        }
      ]
    }
  }
}