kiota icon indicating copy to clipboard operation
kiota copied to clipboard

Generation of number based enum property not supported

Open dotjpg3141 opened this issue 1 year ago • 5 comments

Generation of enum property not working. Instead of an enum type the generated property type is a number/integer instead.

Is this not supported or is there someting wrong in my JSON file?

Repro:

{
    "openapi": "3.0.1",
    "info": {
        "title": "My API",
        "version": "v1"
    },
    "paths": {
        "/Api/MyDto": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Success",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MyDto"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "MyDto": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "myEnumId": {
                        "$ref": "#/components/schemas/MyEnum"
                    }
                },
                "additionalProperties": false
            },
            "MyEnum": {
                "enum": [
                    0,
                    1,
                    2,
                    3
                ],
                "type": "integer",
                "format": "int32",
                "x-enum-varnames": [
                    {
                        "name": "ItemNone",
                        "value": 0
                    },
                    {
                        "name": "ItemA",
                        "value": 1
                    },
                    {
                        "name": "ItemB",
                        "value": 2
                    },
                    {
                        "name": "ItemC",
                        "value": 3
                    }
                ],
                "x-ms-enum": {
                    "name": "MyEnum",
                    "modelAsString": false,
                    "values": [
                        {
                            "name": "ItemNone",
                            "value": 0
                        },
                        {
                            "name": "ItemA",
                            "value": 1
                        },
                        {
                            "name": "ItemB",
                            "value": 2
                        },
                        {
                            "name": "ItemC",
                            "value": 3
                        }
                    ]
                },
                "x-enumNames": [
                    "ItemNone",
                    "ItemA",
                    "ItemB",
                    "ItemC"
                ]
            }
        }
    }
}
kiota generate --openapi swagger.json --clear-cache --clean-output --output out_typescript --language typescript
kiota generate --openapi swagger.json --clear-cache --clean-output --output out_csharp --language csharp
kiota generate --openapi swagger.json --clear-cache --clean-output --output out_java --language java

Version: 1.5.1+fa29e2d2bffade1fa69c06bf42719bb7c48910b5

Actual:

import type {Parsable} from '@microsoft/kiota-abstractions';

export interface MyDto extends Parsable {
    /**
     * The id property
     */
    id?: number | undefined;
    /**
     * The myEnumId property
     */
    myEnumId?: number | undefined;
}

Expected:

import type {Parsable} from '@microsoft/kiota-abstractions';

export interface MyDto extends Parsable {
    /**
     * The id property
     */
    id?: number | undefined;
    /**
     * The myEnumId property
     */
    myEnumId?: MyEnum | undefined;
}

dotjpg3141 avatar Aug 30 '23 08:08 dotjpg3141