Skip to content

Field name "entries" in a schema causes swagger-ui javascript error and fails to load #6016

Closed

Description

@mke1ms

Problem

The openapi definition below has a schema with a field name called "entries". This causes the ui to throw a javascript error "e.entries is not a function" (see the screenshot below).

This behavior only started Friday May 15th 2020 at around 15:00 CET. Before that swagger-ui had no problems loading a schema containing a field called entries, so I am assuming something changed in the bundle I use from the url above.

Example Swagger/OpenAPI definition:

{
  "openapi": "3.0.2",
  "info": {
    "title": "FastAPI",
    "version": "0.1.0"
  },
  "paths": {
    "/test/": {
      "get": {
        "summary": "Test",
        "operationId": "test_test__get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Testmodel"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Testmodel": {
        "title": "Testmodel",
        "required": [
          "name",
          "entries"
        ],
        "type": "object",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "entries": {
            "title": "Entries",
            "type": "integer"
          }
        }
      }
    }
  }
}

Screenshot

image

To reproduce...

Try to load swagger ui using the openapi.json above

Activity

  1. changed the title [-]Field name "entries" in a model causes swagger-ui javascript erro and fails to load[/-] [+]Field name "entries" in a schema causes swagger-ui javascript erro and fails to load[/+] on May 17, 2020
  2. changed the title [-]Field name "entries" in a schema causes swagger-ui javascript erro and fails to load[/-] [+]Field name "entries" in a schema causes swagger-ui javascript error and fails to load[/+] on May 17, 2020
  3. provegard commented on May 18, 2020

    @provegard

    Specifying version 3.25.2 (I'm using unpkg, I assume jsdelivr.net supports that too) fixes the problem.

  4. jmmolina796 commented on May 18, 2020

    @jmmolina796

    Actually I have the same error:

    When I type the field name entries, I received a message saying: "Unable to render this definition".

    paths:
      /pet:
        post:
          summary: "Add a new pet to the store"
          description: ""
          parameters:
          - in: "body"
            name: "body"
            schema:
              $ref: "#/definitions/Pet"
          responses:
            "405":
              description: "Invalid input"
    definitions:
      Pet:
        type: "object"
        properties:
          id:
            type: "integer"
          entries:
            type: "array"
            items:
              type: "string"

    Screen Shot 2020-05-18 at 17 14 21

    I need to write entries as a field since my API requires this name.

    If I change entries to entry, it works as expected.

    paths:
      /pet:
        post:
          summary: "Add a new pet to the store"
          description: ""
          parameters:
          - in: "body"
            name: "body"
            schema:
              $ref: "#/definitions/Pet"
          responses:
            "405":
              description: "Invalid input"
    definitions:
      Pet:
        type: "object"
        properties:
          id:
            type: "integer"
          entry:
            type: "array"
            items:
              type: "string"

    Can someone help me with this problem, why it fails when I use entries as a field name?

  5. vivvooren commented on May 19, 2020

    @vivvooren

    I have the same problem with Version 3.23.3

  6. stiliyan commented on May 19, 2020

    @stiliyan

    We found the issue is likely related to this change, where swagger fragments with an entries field are interpreted as a FormData object and swagger-ui attempts to invoke entries().

    Exiting early when entries is not a function should resolve this.

  7. jlsjonas commented on May 20, 2020

    @jlsjonas

    Looks like this is caused by #5999

  8. tim-lai commented on May 20, 2020

    @tim-lai
    Contributor

    @mke1ms @jlsjonas @stiliyan @jmmolina796 Thanks for reporting with details and suggestions! A fix is incoming and will be included in the next release.

  9. RSkorina commented on May 20, 2020

    @RSkorina

    I have a question about this change. The change has been merged but the error still occurs when using petstore. Is there another repository that needs to adopt swagger before using 'entries' as a parameter works when rendering?

  10. tim-lai commented on May 20, 2020

    @tim-lai
    Contributor

    @RSkorina A new release of SwaggerUI will make this change visible on petstore.swagger.io

  11. katsisaac50 commented on Mar 14, 2023

    @katsisaac50

    Your API definition is missing the OpenAPI/Swagger version number, in this case "swagger": "2.0" . Add it at the beginning, like so:

    {
    "swagger": "2.0",
    "title" : "Music API Documentation",
    ...

    this worked for me, details on https://copyprogramming.com/howto/swagger-unable-to-render-this-definition-the-provided-definition-does-not-specify-a-valid-version-field?utm_content=cmp-true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions