{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "https://github.com/public-js/ng-openapi-gen/blob/main/packages/ng-openapi-gen/src/schema.json",
  "title": "Options for ng-openapi-gen",
  "type": "object",
  "required": ["input"],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "input": {
      "description": "Path to local or URL to remote OpenAPI 3 spec file in JSON or YAML format.",
      "type": "string"
    },
    "output": {
      "description": "Path to directory where the generated files will be written to. Defaults to 'src/app/api'.",
      "type": "string",
      "default": "src/app/api"
    },
    "verbose": {
      "description": "Whether to output additional information during generation or not. Defaults to false.",
      "type": "boolean",
      "default": false
    },
    "defaultTag": {
      "description": "Tag name assumed for operations without tags. Defaults to 'Api'.",
      "type": "string",
      "default": "Api"
    },
    "fetchTimeout": {
      "description": "Timeout for fetching spec file from remote URL, in milliseconds. Defaults to 20000.",
      "type": "number",
      "default": 20000
    },
    "includeTags": {
      "description": "Specific tags to be included. Overrides `excludeTags`. Defaults to [].",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "excludeTags": {
      "description": "Specific tags to be excluded. Defaults to [].",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ignoreUnusedModels": {
      "description": "Whether to skip models with no references to them. Defaults to true.",
      "type": "boolean",
      "default": true
    },
    "removeStaleFiles": {
      "description": "Whether to remove redundant files in the output directory. Defaults to true.",
      "type": "boolean",
      "default": true
    },
    "modelIndex": {
      "description": "TypeScript file name (without the `.ts` extension) that exports all models. Set `false` to skip. Defaults to 'models'.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "boolean"
        }
      ],
      "default": "models"
    },
    "serviceIndex": {
      "description": "TypeScript file name (without the `.ts` extension) that exports all services. Set `false` to skip. Defaults to 'services'.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "boolean"
        }
      ],
      "default": "services"
    },
    "indexFile": {
      "description": "Whether to generate an `index.ts` file that exports all generated files. Defaults to false.",
      "type": "boolean",
      "default": false
    },
    "servicePrefix": {
      "description": "Prefix for generated service classes. Defaults to ''.",
      "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 ''.",
      "type": "string",
      "default": ""
    },
    "modelSuffix": {
      "description": "Suffix for generated model classes. Defaults to ''.",
      "type": "string",
      "default": ""
    },
    "module": {
      "description": "Name for the module class that provides all services. Set `false` to skip. Defaults to 'ApiModule'.",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "boolean"
        }
      ],
      "default": "ApiModule"
    },
    "configurationFile": {
      "description": "Name for the configuration file to generate. Defaults to 'api-configuration'.",
      "type": "string",
      "default": "api-configuration"
    },
    "rootUrlToken": {
      "description": "Name for the \"root URL\" DI token to generate. Defaults to 'API_ROOT_URL_TOKEN'.",
      "type": "string",
      "default": "API_ROOT_URL_TOKEN"
    },
    "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"
    },
    "enumStyle": {
      "description": "Determines how root enums will be generated. Possible values are:\n- `alias` for type aliases with the possible values;\n- `upper` for enums with UPPER_CASE names;\n- `ignorecase` for enums with names as is;\n- `pascal` for enums with PascalCase names (default).\nDefaults to 'pascal'.",
      "enum": ["alias", "upper", "ignorecase", "pascal"],
      "default": "pascal"
    },
    "templates": {
      "description": "Path to directory with custom templates. All `.handlebars` files will override the corresponding default.",
      "type": "string"
    },
    "excludeParameters": {
      "description": "When specified, filters the generated services, excluding any param corresponding to this list of params.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "skipJsonSuffix": {
      "description": "When specified, does not generate a $Json suffix. Defaults to false.",
      "type": "boolean",
      "default": false
    },
    "fallbackPropertyType": {
      "description": "Fallback property type when type can not be determined for any reason. Defaults to 'any'.",
      "type": "string",
      "default": "any"
    },
    "bigintStyle": {
      "description": "Determines how bigint will be generated. Can be either `number` (default) or `bigint`. Defaults to 'number'.",
      "enum": ["number", "bigint"],
      "default": "number"
    },
    "endOfLineStyle": {
      "description": "Determines how to normalize line endings. Possible values are:\n- `lf` to force LF (\\n) line endings (Unix, OS X);\n- `cr` to force CR (\\r) line endings (Mac OS);\n- `crlf` to force CRLF (\\r\\n) line endings (Windows, DOS);\n- `auto` to normalize line endings for the current operating system (default).\nDefaults to 'auto'.",
      "enum": ["lf", "cr", "crlf", "auto"],
      "default": "auto"
    },
    "customizedResponseType": {
      "description": "Defines responseType for specific paths to use. Commonly used when built-in deduction can't fulfill your needs.",
      "type": "object",
      "minProperties": 1,
      "patternProperties": {
        ".*": {
          "type": "object",
          "required": ["toUse"],
          "properties": {
            "toUse": {
              "enum": ["arraybuffer", "blob", "json", "document"]
            }
          }
        }
      }
    },
    "responseMethodDescription": {
      "description": "Description template for generated $response method. Defaults to '{{descriptionPrefix}}This method provides access to the full `HttpResponse`, allowing access to response headers.\nTo access only the response body, use `{{methodName}}()` instead.{{descriptionSuffix}}'.",
      "type": "string",
      "default": "{{descriptionPrefix}}This method provides access to the full `HttpResponse`, allowing access to response headers.\nTo access only the response body, use `{{methodName}}()` instead.{{descriptionSuffix}}"
    },
    "bodyMethodDescription": {
      "description": "Description template for generated $body method. Defaults to '{{descriptionPrefix}}This method provides access only to the response body.\nTo access the full response (for headers, for example), use `{{responseMethodName}}()` instead.{{descriptionSuffix}}'.",
      "type": "string",
      "default": "{{descriptionPrefix}}This method provides access only to the response body.\nTo access the full response (for headers, for example), use `{{responseMethodName}}()` instead.{{descriptionSuffix}}"
    }
  }
}
