Skip to content

Commit 1640363

Browse files
committed
Note relative URL-reference resolution ambiguity
This explicitly lists out the cases and notes which ones were (as far as we can recall) intended to behave like `$ref`, but could be reasonably read to behave like API URLs.
1 parent d486d98 commit 1640363

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

versions/3.0.4.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,15 @@ OpenAPI Description authors SHOULD consider how text using such extensions will
232232
### Relative References in URLs
233233

234234
Unless specified otherwise, all fields that are URLs MAY be relative references as defined by [RFC3986](https://tools.ietf.org/html/rfc3986#section-4.2).
235+
235236
Relative references are resolved using the URLs defined in the [Server Object](#server-object) as a Base URI.
236237

237238
Relative references used in `$ref` are processed as per [JSON Reference](https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03), using the URL of the current document as the base URI. See also the [Reference Object](#reference-object).
238239

240+
The wording above is intended to distinguish between API URLs (which use the Server Object to determine the base URI or the prefix for the URL path template), and OAD URLs (which use the current document's base URI per RFC3986).
241+
However, only `$ref` was mentioned explicitly in versions 3.0.0 through 3.0.3 of this specification, leaving the behavior of the following fields ambiguous: the `operationRef` field of the [Link Object](#link-object), the URI form of the `mapping` field of the [Discriminator Object](#discriminator-object), the `externalValue` field of the [Example Object](#example-object), and the `url` fields of the [External Documentation](#external-documentation-object), [Contact](#contact-object), and [License](#license-object) Objects.
242+
Therefore, which of the above two rules is used for each of these fields is _implementation-defined_, although it is RECOMMENDED to use the `$ref` process for all of them for compatibility with future versions of this specification.
243+
239244
Relative references in CommonMark hyperlinks are resolved in their rendered context, which might differ from the context of the API description.
240245

241246
### Schema

0 commit comments

Comments
 (0)