Forum Discussion

moanrose's avatar
moanrose
New Contributor
6 years ago
Solved

Swagger Tools does not allow Schemas with non ASCII characters even if URI-encoded

According to the open api specification on $ref https://swagger.io/specification/#referenceObject -  a Schema should honor the URI format defined https://tools.ietf.org/html/rfc3986#section-4.1 - and can use extended characters as long as they are properly URI encoded.

 

However when defining a schema that uses non ASCII characters, i get a lot of validation errors - even if non ASCII characters are properly URI encoded (pct encoded)

 

Is this a shortcoming in the tooling, or am i reading the standards wrong?

 

Kind regards

 

Morten

  • While there may still be an issue with the reference resolution, your definition is invalid for another reason. The name you've given the schema doesn't conform with the restrictions in the spec.

     

    From https://swagger.io/specification/#componentsObject:

    All the fixed fields declared above are objects that MUST use keys that match the regular expression: ^[a-zA-Z0-9\.\-_]+$.

4 Replies

  • In which tools do you experience the issue?

    Can you share an example to reproduce it?

    • moanrose's avatar
      moanrose
      New Contributor

      Hi Ron

       

      The tools in question are Swagger-Editor, Swagger-Hub, and i guess that swagger UI is a part of both

       

      The behaviour can be reproduced using the following API specification: 

      openapi: "3.0.0"
      info:
        version: 1.0.3
        title: Somespec
      paths:
        /somepath:
          get:
            responses:
              '200':
                description: Somedescription
                content:
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: "#/components/schemas/%C3%85rsopg%C3%B8erelse"
      components:
        schemas:
          %C3%85rsopg%C3%B8erelse:
            properties:
              someproperty:
                type: string
      

       

      • RonRatovsky's avatar
        RonRatovsky
        Moderator

        While there may still be an issue with the reference resolution, your definition is invalid for another reason. The name you've given the schema doesn't conform with the restrictions in the spec.

         

        From https://swagger.io/specification/#componentsObject:

        All the fixed fields declared above are objects that MUST use keys that match the regular expression: ^[a-zA-Z0-9\.\-_]+$.