Skip to content

Permit multiple externalDocs #1034

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ghost opened this issue Apr 11, 2017 · 19 comments
Open

Permit multiple externalDocs #1034

ghost opened this issue Apr 11, 2017 · 19 comments
Labels
enhancement metadata tags, info, license, contact, markdown usage, etc. re-use: ref-group-combine Re-use requests involving grouping components and combining groups

Comments

@ghost
Copy link

ghost commented Apr 11, 2017

Documenting APIs often depend on multiple external factors - functional and non-functional aspects, change notes, governance, strategy, many more - and a single externalDocs reference is often insufficient, especially in complex scenarios where multiple parties are responsible for design/deployment/delivery of these aspects (not everyone is DevOps)

Would we want to move the single object to an array/collection of objects:

externalDocs:
- description: link 1
  url: http://link/1
- description: link
  url: http://link/2

or

externalDocs:
  link1:
    description: link 1
    url: http://link/1
  link2
    description: link
    url: http://link/2

Gong further, form 2 may also benefit from becoming a reference:

externalDocs:
  link1:
    url: http://link/1

paths:
  /path1:
    get:
      externalDocs:
      - $ref: '#/externalDocs/link1'

While some of this may overlap with (the single) externalDocs avaulable in a tag, it is not entirely overlapping, and the link should ideally reside close to where it is needed instead of tracking it back through a tag that may not be immediately apparent will contain the required link.

@whitlockjc
Copy link
Member

I could see this being useful.

@darrelmiller
Copy link
Member

I think I would be tempted to point to single HTML file that had links to other docs from there. I think if we start trying to describe different kinds of external docs in OpenAPI we are going to quickly run into a set of requirements for metadata about those docs.

@ghost
Copy link
Author

ghost commented Apr 13, 2017

From my perspective, a spec file is the single source for particular APIs, and should have the multiple links per topic. Turning the API spec into the single source for multiple links in-place (as opposed to a link to somewhere to find a bunch of links) is useful, especially as I mentioned they should ideally be close to the place where you need them - not in some other file.
The current approach only provides a limited enhancement to the spec file's utility and my proposal removes some of the burden from the designer: If that "single HTML file" doesn't yet exist, the designer is forced to create/find/host one, format it, etc. All of that is already handled in the API rendering or the raw spec file.
I'm just proposing allowing multiple instances of the existing object class to expand its' utility. I don't think it's useful to enrich the links in the spec beyond the current description attribute, this isn't a CMS.

@webron
Copy link
Member

webron commented Apr 19, 2017

Marked as post 3.0. We may or may not implement it, but 3.0 is feature complete and this request is not critical enough to break that.

@RobDolinMS RobDolinMS added this to the v3.Next milestone Apr 21, 2017
@micheldumontier
Copy link

Would very much like to be able to make a list. in the bioinformatics/life science community community, it's always nice to add links to published work about the API

@rstavchansky
Copy link

I would use this suggested feature to point users to specific example workflows. We have more than one per endpoint.

@fernando-ck
Copy link

I'd also like to have this feature implemented. Our documentation is based on multiple resources which would be useful if put on the same list.

@nogates
Copy link

nogates commented Jul 30, 2019

FWIW, I always found strange that the key was actually named externalDocs (plural) but only one link was allowed.... I think it would make sense to go with the externalDocs map object

@kholmukhamedovme
Copy link

@webron any updates since 19 Apr 2017 when you marked this enhancement as post 3.0?

@webron
Copy link
Member

webron commented Dec 8, 2019

@kholmukhamedovme no additional work was done about this, likely as it did not attract a lot of attention compared to other issues. That said, anyone in the community can make a proposal to push this forward if they find it's important enough. More information can be found at https://github.com/OAI/OpenAPI-Specification/blob/master/DEVELOPMENT.md.

@pjungermann
Copy link

another alternative: use Markdown to add links to the description field(s). It is probably not as elegant and not as machine readable as the suggested solution above, but you can still provide the information you want, organized as you want. Tooling might have different support for this, but as long as they support some Markdown, basic links should work.

@Gypsying
Copy link

how is going now ?

@axel-blade
Copy link

axel-blade commented Oct 8, 2021

Sorry for bumping this necropost. But personally i think this would be nice since it would also work as a "workaround", enabling links to specific project Slack channels for example.

@shaedrich
Copy link

shaedrich commented Apr 6, 2022

multiple external factors - functional and non-functional aspects, change notes, governance, strategy, many more

Maybe, it would be helpful to add a type (but that might(!) imply (but not necessarily require) metadata as @darrelmiller pointed out) property for the aforementioned factors alongside with a label

another alternative: use Markdown to add links to the description field(s). It is probably not as elegant and not as machine readable as the suggested solution above, but you can still provide the information you want, organized as you want. Tooling might have different support for this, but as long as they support some Markdown, basic links should work.

@pjungermann There is another issue, pointing out using $ref property under description: #1402

@xaviqo
Copy link

xaviqo commented Sep 29, 2022

Bumping this. I also think this would be useful.

@y4my4my4m
Copy link

y4my4my4m commented Feb 7, 2023

Bump, needed this feature today.

@darrelmiller
Copy link
Member

@y4my4my4m Would it be possible to provide examples of how this would have been useful for you? We should definitely revisit this issue in moonwalk.

@y4my4my4m
Copy link

@darrelmiller

Some payload are used by both client and server and I'm trying to give reference to both.

In some cases I'm providing links to multiple examples as well (for different use cases).

@suguiura-pp
Copy link

I think externalDocs should accept zero, one, or more external documents, since development teams might need to gather multiple business documents or even domains to consolidate an API.

Is there any reason why this field accepts only zero or one "externalDoc" so far?

@handrews handrews added metadata tags, info, license, contact, markdown usage, etc. and removed Post 3.0 Proposal labels Feb 8, 2024
@handrews handrews added the re-use: ref-group-combine Re-use requests involving grouping components and combining groups label May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement metadata tags, info, license, contact, markdown usage, etc. re-use: ref-group-combine Re-use requests involving grouping components and combining groups
Projects
None yet
Development

No branches or pull requests