hey-api / openapi-ts

✨ Turn your OpenAPI specification into a beautiful TypeScript client

Home Page:https://heyapi.vercel.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error types are `unknown` with v0.46.3

lsdch opened this issue · comments

Description

Hi, types generated for error responses are unknown after upgrading to 0.46.3. This is not an issue when using 0.46.2.

OpenAPI specification (optional)

{
  "components": {
    "schemas": {
      "UserCredentials": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "/api/v1/schemas/UserCredentials.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "identifier": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "required": [
          "identifier",
          "password"
        ],
        "type": "object"
      },
      "ErrorDetail": {
        "additionalProperties": false,
        "properties": {
          "location": {
            "description": "Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'",
            "type": "string"
          },
          "message": {
            "description": "Error message text",
            "type": "string"
          },
          "value": {
            "description": "The value at the given location"
          }
        },
        "type": "object"
      },
      "ErrorModel": {
        "additionalProperties": false,
        "properties": {
          "$schema": {
            "description": "A URL to the JSON Schema for this object.",
            "examples": [
              "/api/v1/schemas/ErrorModel.json"
            ],
            "format": "uri",
            "readOnly": true,
            "type": "string"
          },
          "detail": {
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "examples": [
              "Property foo is required but is missing."
            ],
            "type": "string"
          },
          "errors": {
            "description": "Optional list of individual error details",
            "items": {
              "$ref": "#/components/schemas/ErrorDetail"
            },
            "type": "array"
          },
          "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "examples": [
              "https://example.com/error-log/abc123"
            ],
            "format": "uri",
            "type": "string"
          },
          "status": {
            "description": "HTTP status code",
            "examples": [
              400
            ],
            "format": "int64",
            "type": "integer"
          },
          "title": {
            "description": "A short, human-readable summary of the problem type. This value should not change between occurrences of the error.",
            "examples": [
              "Bad Request"
            ],
            "type": "string"
          },
          "type": {
            "default": "about:blank",
            "description": "A URI reference to human-readable documentation for the error.",
            "examples": [
              "https://example.com/errors/example"
            ],
            "format": "uri",
            "type": "string"
          }
        },
        "type": "object"
      }
    }
  },
  "openapi": "3.1.0",
  "info": {
    "version": "1.0"
  },
  "paths": {
    "/account/login": {
      "post": {
        "description": "Authenticate using user credentials",
        "operationId": "Login",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserCredentials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "Set-Cookie": {
                "schema": {
                  "description": "Session cookie storing JWT",
                  "type": "string"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorModel"
                }
              }
            },
            "description": "Unprocessable Entity"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorModel"
                }
              }
            },
            "description": "Internal Server Error"
          }
        },
        "summary": "Login",
        "tags": [
          "Account"
        ]
      }
    }
  },
  "security": [
    {
      "bearer": []
    },
    {
      "cookieAuth": []
    }
  ],
  "servers": [
    {
      "url": "/api/v1"
    }
  ]
}

Configuration

defineConfig({
  input: "./tmp_api.json",
  output: {
    path: "tmp",
    format: "prettier",
    lint: "eslint"
  },
  client: "@hey-api/client-fetch",
  services: {
    asClass: true
  },
  types: {
    dates: true,
    name: "PascalCase",
  }
})

System information (optional)

fetch client 0.1.3
openapi-ts 0.46.3

Thanks @lsdch, will review