spectral icon indicating copy to clipboard operation
spectral copied to clipboard

tokenUrl doesn't permit for relative references in OAS 3.1

Open saturna opened this issue 1 year ago • 1 comments

Describe the bug In OAS 3.0 tokenUrl was of uri-reference type but in 3.1 it seemed to be switched back to uri As per OAS 3.1 documentation tokenUrl should be of type URL and as per section Relative References in URLs:

Unless specified otherwise, all properties that are URLs MAY be relative references as defined by [RFC3986]. RFC-3986 section 4.2 link

I'm assuming that tokenUrl should in fact permit relative paths and default to a baseURL as defined by the Server Object

This would make sense because using tools such as editor-next.swagger.io, Authorize button should allow for baseUrl selection from the Servers drop-down. If tokenUrl cannot use relative paths, it will not work with this drop-down. image

To Reproduce

  • define a security schema as follows using openapi: 3.1.0 header:
  securitySchemes:
    Oauth2:
      type: oauth2
      description: Oauth 2.0 application authentication
      flows:
        clientCredentials:
          tokenUrl: /oauth2/token
  • Attempt to use spectral to validate this schema with spectral:oas rule.
  • Schema validation will fail with:
error  oas3-schema  "Oauth2" property must not have unevaluated properties.  components.securitySchemes.Oauth2
error  oas3-schema  "tokenUrl" property must match format "uri".             components.securitySchemes.Oauth2.flows.clientCredentials.tokenUrl

Expected behavior Spectral validation should pass and allow for relative URLs

Environment (remove any that are not applicable):

  • Library version: 6.11.1
  • OS: MacOS Sonoma 14.4
  • Browser: [N/A]

saturna avatar Jun 08 '24 02:06 saturna

this definitely seems to be a bug. we would welcome a PR as rulesets are pretty straight forward to change. thanks!

daniel-white avatar Jun 14 '24 14:06 daniel-white

:tada: This issue has been resolved in version 1.20.1 :tada:

The release is available on @stoplight/spectral-rulesets-1.20.1

Your semantic-release bot :package::rocket:

stoplight-bot avatar Sep 13 '24 10:09 stoplight-bot