Skip to content

Introduce External Links array and deprecate External Documentation - #5573

Open
lornajane wants to merge 2 commits into
OAI:v3.3-devfrom
lornajane:feat/external-links-array
Open

lornajane wants to merge 2 commits into
OAI:v3.3-devfrom
lornajane:feat/external-links-array

Conversation

@lornajane

@lornajane lornajane commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Make the changes agreed in the accepted proposal https://github.com/OAI/OpenAPI-Specification/blob/main/proposals/2026-08-01-Docs-Links.md

Feedback very welcome on any of the wording/formatting or anything else that could make this better!

  • schema changes are needed for this pull request but not done yet

@miqui

miqui commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

looks good @lornajane

I can't wait to see something like this:

openapi: 3.3.0
info:
  title: Flights API
  version: 1.0.0

# Root-level: array replaces the old single externalDocs object
externalLinks:
  - summary: Developer portal
    description: Guides, tutorials, and onboarding for the Flights API
    url: https://example.com/docs
    kind: documentation
  - summary: API reference
    description: Interactive API documentation
    url: https://example.com/api-docs
    kind: api-docs
  - summary: Status page
    url: https://status.example.com
    kind: status

tags:
  - name: flights
    summary: Search, book, and manage flights
    externalLinks:
      - summary: Booking flow guide
        url: https://example.com/docs/flights
        kind: documentation

paths:
  /flights:
    get:
      operationId: searchFlights
      summary: Search available flights
      externalLinks:
        - summary: Pagination guide
          url: https://example.com/docs/pagination
          kind: documentation
        - summary: Endpoint changelog
          url: https://example.com/changelog#searchFlights
          kind: changelog
      parameters:
        - name: origin
          in: query
          required: true
          schema:
            type: string
          examples:
            jfk:
              value: JFK
        - name: destination
          in: query
          required: true
          schema:
            type: string
          examples:
            lax:
              value: LAX
        - name: departureDate
          in: query
          required: true
          schema:
            type: string
            format: date
      responses:
        '200':
          description: A list of matching flights
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Flight'

components:
  schemas:
    Flight:
      type: object
      externalLinks:
        - summary: Flight data model docs
          url: https://example.com/docs/models/flight
          kind: documentation
      properties:
        flightNumber:
          type: string
          examples:
            - "AA100"
        origin:
          type: string
          examples:
            - JFK
        destination:
          type: string
          examples:
            - LAX
        departureTime:
          type: string
          format: date-time
        arrivalTime:
          type: string
          format: date-time
        status:
          type: string
          enum: [scheduled, delayed, cancelled, departed, arrived]
          ```

@miqui

miqui commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

heads up - i am going to add this feature to the lifecycle SAF.

miqui
miqui previously approved these changes Oct 19, 2026
Comment thread src/oas.md Outdated
Co-authored-by: Ralf Handl <ralf.handl@sap.com>
Comment thread src/oas.md
| <a name="oas-tags"></a>tags | [[Tag Object](#tag-object)] | A list of tags used by the OpenAPI Description with additional metadata. The order of the tags can be used to reflect on their order by the parsing tools. Not all tags that are used by the [Operation Object](#operation-object) must be declared. The tags that are not declared MAY be organized randomly or based on the tools' logic. Each tag name in the list MUST be unique. |
| <a name="oas-external-docs"></a>externalDocs | [External Documentation Object](#external-documentation-object) | Additional external documentation. |
| <a name="oas-external-docs"></a>externalDocs | [External Documentation Object](#external-documentation-object) | Additional external documentation. <br><br>**Deprecated:** The `externalDocs` field has been deprecated in favor of the `externalLinks` keyword that supports an array of objects. |
| <a name="oas-external-links"></a>externalLinks | [[External Links Object](#external-links-object)] | An array of additional resources such as documentation. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it clear that if this field is here, the externalDocs one shouldn't be.

Comment thread src/oas.md
| <a name="external-doc-summary"></a>summary | `string` | A short summary of the linked resource, used for display purposes. |
| <a name="external-doc-description"></a>description | `string` | A description of the linked resource. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. |
| <a name="external-doc-url"></a>url | `string` | **REQUIRED**. The URI for the linked resource. This MUST be in the form of a URI. |
| <a name="external-doc--kind"></a>kind | `string` | A machine-readable string to categorize what sort of resource is linked. Any string value can be used; a [registry of the most commonly used values](https://spec.openapis.org/registry/tag-kind/) is available. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace registry with a new registry link (and then make the registry!). Also check the anchor link.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants