{
    "$schema": "http://json-schema.org/schema",
    "id": "https://github.com/cyclosproject/ng-openapi-gen/blob/master/ng-openapi-gen-schema.json",
    "title": "Options for ng-openapi-gen",
    "type": "object",
    "required": [
        "input"
    ],
    "properties": {
        "$schema": {
            "type": "string"
        },
        "input": {
            "description": "The input file or URL to the OpenAPI 3 specification, JSON or YAML, local file or URL",
            "type": "string"
        },
        "output": {
            "description": "Where generated files will be written to. Defaults to 'src/app/api'.",
            "type": "string",
            "default": "src/app/api"
        },
        "fetchTimeout": {
            "description": "Indicates the timeout when fetching the input URL, in milliseconds. Defaults to 20 seconds (20000).",
            "type": "number",
            "default": 20000
        },
        "defaultTag": {
            "description": "Tag name assumed for operations without tags. Defaults to 'Api'.",
            "type": "string"
        },
        "includeTags": {
            "description": "When specified, filters the generated services, including only those corresponding to this list of tags.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "excludeTags": {
            "description": "When specified, filters the generated services, excluding any service corresponding to this list of tags.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "ignoreUnusedModels": {
            "description": "Indicates whether or not to ignore model files that are not referenced by any operation. Defaults to true.",
            "type": "boolean",
            "default": true
        },
        "removeStaleFiles": {
            "description": "Indicates whether or not to remove any files in the output folder that were not generated. Defaults to true.",
            "type": "boolean",
            "default": true
        },
        "modelIndex": {
            "description": "Typescript file, without '.ts' extension that exports all models. Set to false to skip. Defaults to `models`.",
            "default": "models",
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "boolean"
                }
            ]
        },
        "serviceIndex": {
            "description": "Typescript file, without '.ts' extension that exports all services. Set to false to skip. Defaults to `services`.",
            "default": "services",
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "boolean"
                }
            ]
        },
        "servicePrefix": {
            "description": "Prefix for generated service classes. Defaults to empty.",
            "type": "string",
            "default": ""
        },
        "serviceSuffix": {
            "description": "Suffix for generated service classes. Defaults to `Service`.",
            "type": "string",
            "default": "Service"
        },
        "modelPrefix": {
            "description": "Prefix for generated model classes. Defaults to empty.",
            "type": "string",
            "default": ""
        },
        "modelSuffix": {
            "description": "Suffix for generated model classes. Defaults to empty.",
            "type": "string",
            "default": ""
        },
        "configuration": {
            "description": "Name for the configuration class to generate. Defaults to 'ApiConfiguration'.",
            "type": "string",
            "default": "ApiConfiguration"
        },
        "baseService": {
            "description": "Name for the base service class to generate. Defaults to 'BaseService'.",
            "type": "string",
            "default": "BaseService"
        },
        "requestBuilder": {
            "description": "Name for the request builder class to generate. Defaults to 'RequestBuilder'.",
            "type": "string",
            "default": "RequestBuilder"
        },
        "response": {
            "description": "Name for the response class to generate. Defaults to 'StrictHttpResponse'.",
            "type": "string",
            "default": "StrictHttpResponse"
        },
        "module": {
            "description": "Class name of the module that provides all services. Set to false to skip. Defaults to `ApiModule`.",
            "default": "ApiModule",
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "type": "boolean"
                }
            ]
        },
        "enumStyle": {
            "description": "Determines how root enums will be generated. Possible values are:\n\n- `alias`: just generate a type alias with the possible values;\n- `upper` for an enum with UPPER_CASE names;\n- `pascal` for enum PascalCase names;\n- `ignorecase` for enum names that ignore character casing; Defaults to 'pascal'.",
            "default": "pascal",
            "enum": [
                "alias",
                "upper",
                "pascal",
                "ignorecase"
            ]
        },
        "endOfLineStyle": {
            "description": "Determines how to normalize line endings. Possible values are: `crlf`: normalize line endings to CRLF (Windows, DOS) => \\r\\n. `lf` normalize line endings to LF (Unix, OS X) => \\n. `cr` normalize line endings to CR (Mac OS) => \\r. `auto` normalize line endings for the current operating system. Defaults to 'auto'.",
            "default": "auto",
            "enum": [
                "crlf",
                "lf",
                "cr",
                "auto"
            ]
        },
        "templates": {
            "description": "Custom templates directory. Any `.handlebars` files here will be used instead of the corresponding default.",
            "type": "string"
        },
        "excludeParameters": {
            "description": "When specified, ignores on generated services any parameters whose names are in this list.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "indexFile": {
            "description": "When set to true, a index.ts file will be generated that exports all generated files.",
            "default": false,
            "type": "boolean"
        },
        "skipJsonSuffix": {
            "description": "When specified, does not generate a $Json suffix.",
            "default": false,
            "type": "boolean"
        },
        "customizedResponseType": {
            "type": "object",
            "description": "Defines which paths to use which responseType, commonly used when build-in deduction can't fullfill your needs",
            "minProperties": 1,
            "patternProperties": {
                ".*": {
                    "required": [
                        "toUse"
                    ],
                    "type": "object",
                    "properties": {
                        "toUse": {
                            "type": "string",
                            "enum": [
                                "arraybuffer",
                                "blob",
                                "json",
                                "document"
                            ]
                        }
                    }
                }
            }
        },
        "useTempDir": {
            "description": "When specified, will create temporary files in system temporary folder instead of output folder",
            "default": false,
            "type": "boolean"
        },
        "readonlyProperties": {
            "description": "When true, readonly properties will be marked as optional for POST and PUT methods",
            "default": false,
            "type": "boolean"
        },
        "silent": {
            "description": "When set to true, no verbose output will be displayed.",
            "default": "false",
            "type": "boolean"
        },
        "indent4": {
            "description": "When set to true, templates with 4 spaces as indents will be used.\nDoes not affect custom templates.",
            "default": false,
            "type": "boolean"
        }
    }
}
