openapi-typescript icon indicating copy to clipboard operation
openapi-typescript copied to clipboard

Missing codes in the errors union

Open pstachula-dev opened this issue 1 year ago • 3 comments

Description

It seems that the library generated error types and returns only the first error code instead of the union for the other types. When we have declared other error codes for 401 and 404, only 401 is returned.

Reproduction

           200: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["CatFact"];
                };
            };

            /** @description error 401 */
            401: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorUnauthorized"];
                };
            };
            /** @description error 403 */
            403: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["ErrorForbidden"];
                };
            };
            /** @description not found */
            404: {
                headers: {
                    [name: string]: unknown;
                };
                content: {
                    "application/json": components["schemas"]["Error"];
                };
            };

Full schema: https://pastebin.com/aBhmzfE2

As far as I can see, the errors are sorted in ascending order and only the first one is taken into account, the others are omitted. image

Expected result

Union of all errors 401, 403, 403...

Checklist

pstachula-dev avatar Aug 05 '24 08:08 pstachula-dev

This looks like a intentional solution. 🤔

/**
 * Return first 5XX or 4XX response (in that order) from a Response Object Map
 */ 
export type ErrorResponse<T, Media extends MediaType = MediaType> = FilterKeys<

pstachula-dev avatar Aug 05 '24 09:08 pstachula-dev

This also bit me (first time user) when I have 200, 404, 500 responses, each with a different body schema. For unit testing a 404, I was wondering why the error type returned from the function matched the 500 schema.

Surely it would make more sense to union the error schemas (as suggested by this issue)?

stevegoossens avatar Aug 08 '24 01:08 stevegoossens

This issue appears to be a duplicate of #1723 in which there is more discussion and some proposed approaches to resolving the problem.

stevegoossens avatar Aug 08 '24 02:08 stevegoossens