Full Code of OAI/OpenAPI-Specification for AI

main 33d949476e00 cached
124 files
2.0 MB
490.6k tokens
4 symbols
1 requests
Download .txt
Showing preview only (2,072K chars total). Download the full file or copy to clipboard to get everything.
Repository: OAI/OpenAPI-Specification
Branch: main
Commit: 33d949476e00
Files: 124
Total size: 2.0 MB

Directory structure:
gitextract_xldvqxs9/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── registry_feature_request.md
│   │   └── spec_bug_report.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   ├── templates/
│   │   └── agenda.md
│   └── workflows/
│       ├── agenda.yaml
│       ├── check-restricted-files.yaml
│       ├── inactive-issues.yml
│       ├── respec.yaml
│       ├── schema-publish.yaml
│       ├── schema-tests.yaml
│       ├── sync-dev-to-vX.Y-dev.yaml
│       ├── sync-main-to-dev.yaml
│       └── validate-markdown.yaml
├── .gitignore
├── .gitmodules
├── .linkspector.yml
├── .markdownlint.yaml
├── CONTRIBUTING.md
├── EDITORS.md
├── GOVERNANCE.md
├── IMPLEMENTATIONS.md
├── LICENSE
├── MAINTAINERS.md
├── README.md
├── SECURITY_CONSIDERATIONS.md
├── SPECIAL_INTEREST_GROUPS.md
├── TOB.md
├── _archive_/
│   ├── README.md
│   └── schemas/
│       ├── README.md
│       ├── v1.2/
│       │   ├── README.md
│       │   ├── apiDeclaration.json
│       │   ├── authorizationObject.json
│       │   ├── dataType.json
│       │   ├── dataTypeBase.json
│       │   ├── infoObject.json
│       │   ├── modelsObject.json
│       │   ├── oauth2GrantType.json
│       │   ├── operationObject.json
│       │   ├── parameterObject.json
│       │   ├── resourceListing.json
│       │   └── resourceObject.json
│       ├── v2.0/
│       │   ├── README.md
│       │   └── schema.json
│       └── v3.0/
│           ├── README.md
│           ├── pass/
│           │   ├── api-with-examples.yaml
│           │   ├── callback-example.yaml
│           │   ├── link-example.yaml
│           │   ├── petstore-expanded.yaml
│           │   ├── petstore.yaml
│           │   └── uspto.yaml
│           ├── schema.test.mjs
│           └── schema.yaml
├── package.json
├── proposals/
│   ├── 2019-01-01-Proposal-Template.md
│   ├── 2019-03-15-Alternative-Schema.md
│   ├── 2019-07-17-Webhooks.md
│   ├── 2019-10-31-Clarify-Nullable.md
│   ├── 2019-12-24-Overlays.md
│   ├── 2020-10-28-Experimental.md
│   ├── 2024-08-01-Self-Identification.md
│   ├── 2024-09-01-Tags-Improvement.md
│   ├── 2025-03-20-URIs-for-Tags.md
│   ├── Alternative-Schema/
│   │   ├── CONTRIBUTORS.md
│   │   ├── alternative_schema_object.md
│   │   ├── examples.md
│   │   ├── implementations.md
│   │   └── schema_object.md
│   └── Overlays/
│       ├── Changes.yml
│       └── MergePatch.yml
├── scripts/
│   ├── adjust-release-branch.sh
│   ├── close-no-recent.ps1
│   ├── fwdabort.sh
│   ├── fwdport.sh
│   ├── label-no-recent.ps1
│   ├── md2html/
│   │   ├── .gitignore
│   │   ├── analytics/
│   │   │   └── google.html
│   │   ├── build.sh
│   │   ├── gist.css
│   │   ├── main.css
│   │   ├── md2html.js
│   │   ├── style-finish.html
│   │   ├── style-start.html
│   │   └── syntax-github.css
│   ├── schema-publish.sh
│   ├── start-release.sh
│   └── validate.mjs
├── spec.markdownlint.yaml
├── style-guide.md
├── tests/
│   ├── md2html/
│   │   ├── README.md
│   │   ├── fixtures/
│   │   │   ├── .gitattributes
│   │   │   ├── basic-new.html
│   │   │   ├── basic-new.maintainers
│   │   │   ├── basic-new.md
│   │   │   ├── basic-old.html
│   │   │   ├── basic-old.maintainers
│   │   │   └── basic-old.md
│   │   └── md2html.test.mjs
│   └── schema/
│       └── oas-schema.mjs
├── versions/
│   ├── 1.2.md
│   ├── 2.0-editors.md
│   ├── 2.0.md
│   ├── 3.0.0-editors.md
│   ├── 3.0.0.md
│   ├── 3.0.1-editors.md
│   ├── 3.0.1.md
│   ├── 3.0.2-editors.md
│   ├── 3.0.2.md
│   ├── 3.0.3-editors.md
│   ├── 3.0.3.md
│   ├── 3.0.4-editors.md
│   ├── 3.0.4.md
│   ├── 3.1.0-editors.md
│   ├── 3.1.0.md
│   ├── 3.1.1-editors.md
│   ├── 3.1.1.md
│   ├── 3.1.2-editors.md
│   ├── 3.1.2.md
│   ├── 3.2.0-editors.md
│   └── 3.2.0.md
└── vitest.config.mjs

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.md linguist-detectable


================================================
FILE: .github/CODEOWNERS
================================================
# Global Repo Owners
* @oai/openapi-maintainers @oai/tsc

# Specification Versions
/versions/ @oai/tsc

# Protect specific top level files
/MAINTAINERS.md @oai/tsc
/TOB.md @oai/tsc
/GOVERNANCE.md @oai/tsc
/LICENSE @oai/tsc

================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false

contact_links:
  - name: Have a question about using OpenAPI?
    url: https://communityinviter.com/apps/open-api/openapi
    about: Ask us on our Slack!
  - name: Have a question about OpenAPI Tooling?
    url: https://tools.openapis.org/
    about: Please ask your tooling vendor!
  - name: Want to add to our list of OpenAPI Tools?
    url: https://tools.openapis.org/
    about: Please take a look at our tooling site's instructions!
  - name: Want to suggest more how-to documentation and examples?
    url: https://github.com/OAI/learn.openapis.org/issues/new
    about: Please open an issue on our learning site!
  - name: Want to request a new feature in the specification?
    url: https://github.com/OAI/OpenAPI-Specification/discussions/new?category=enhancements
    about: Please start a discussion in this repository!


================================================
FILE: .github/ISSUE_TEMPLATE/registry_feature_request.md
================================================
---
name: Contribute to the registries at spec.openapis.org/registry
about: Add a new registry entry, or edit an existing one
title: 'Registry: ...'
labels: registries
assignees: ''

---

**Which registry do you want to contribute to**
- [ ] [Alternative Schema Type Registry](https://spec.openapis.org/registry/alternative-schema)
- [ ] [Draft Features Registry](https://spec.openapis.org/registry/draft-feature)
- [ ] [Specification Extension Registry](https://spec.openapis.org/registry/extension)
- [ ] [Format Registry](https://spec.openapis.org/registry/format)
- [ ] [Extension Namespace Registry](https://spec.openapis.org/registry/namespace)
- [ ] [Tag Kind Registry](https://spec.openapis.org/registry/tag-kind)

**Describe your contribution**
A clear and concise description of what you want to add or change.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/ISSUE_TEMPLATE/spec_bug_report.md
================================================
---
name: Report an error in the specification
about: Create a report to help us improve the specification
title: 'vX.Y: ...'
labels: ''
assignees: ''

---

**Describe the error in the specification**
A clear and concise description of
- what the error is, 
- which specification versions are affected, 
- what you would expect the specification to say instead,  and 
- a link to the corresponding specification section in the "oldest" affected version.

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: github-actions
    directory: "/"
    schedule:
      interval: daily
    open-pull-requests-limit: 10
  - package-ecosystem: npm
    directory: "/"
    schedule:
      interval: daily
    open-pull-requests-limit: 10
    groups:
      vitest:
        patterns:
          - "*vitest*"


================================================
FILE: .github/pull_request_template.md
================================================
<!--
Thank you for contributing to the OpenAPI Specification!

Please make certain you are submitting your PR on the correct
branch, to the files under the "src/" directory (which is not
present on the main branch, only on the development branches).

* 3.1.x spec and schemas: v3.1-dev branch
* 3.2.x spec and schemas: v3.2-dev branch
* 3.3.x spec and schemas: v3.3-dev branch
* process documentation and build infrastructure: main

Note that we do not accept changes to published specifications.
-->

<!-- Tick one of the following options and remove the other two: -->

- [ ] schema changes are included in this pull request
- [ ] schema changes are needed for this pull request but not done yet
- [ ] no schema changes are needed for this pull request


================================================
FILE: .github/templates/agenda.md
================================================
## Weekly meetings happen on Thursdays at 9am - 10am Pacific

This agenda gives visibility into discussion topics for the weekly Technical Developer Community (TDC) meetings. Sharing agenda items in advance allows people to plan to attend meetings where they have an interest in specific topics. 

Whether attending or not, **anyone can comment on this issue prior to the meeting to suggest topics or to add comments on planned topics or proposals**.

Meetings take place over Zoom: https://zoom-lfx.platform.linuxfoundation.org/meeting/92028872923?password=9ddcd542-4f5b-484a-a254-e00d8a8b15d8

### Accessibility & Etiquette

* Participants must abide by our [Code-of-Conduct](https://github.com/OAI/OpenAPI-Specification?tab=coc-ov-file).

* Meetings are recorded for future reference, and for those who are not able to attend in-person.

* We invite you to feel comfortable to challenge any language or behaviour that is harmful or not inclusive during this meeting.

* We look forward to your participation, but please consider these acts of etiquette:
  * Remain on mute when not speaking to prevent interruptions.
  * Blur your background to reduce visual distractions.
  * Use the Zoom meeting "Raise Hand" feature to notify the group when you wish to speak.

| Blur My Background | Raise Hand |
|-|-|
| <img width="323" alt="Screenshot of Zoom UI showing the 'Stop Video' and 'Blur My Background' control" src="https://github.com/OAI/OpenAPI-Specification/assets/7367/7e43dbbb-6529-46e6-8b04-4c1aa852d9dd"> | <img width="323" alt="Screenshot of Zoom UI showing the 'Reaction' and 'Raise Hand' control" src="https://github.com/user-attachments/assets/bf19ee70-59b1-410e-b893-645f26c2c96e"> |

### Agenda Structure

| Topic | Owner | Decision/NextStep |
|-|-|-|
Intros and governance meta-topics (5 mins) | TDC | |
Reports from Special Interest Groups (5 mins) | SIG members | |
Any other business (add comments below to suggest topics) | TDC | |
[Approved spec PRs](https://github.com/OAI/OpenAPI-Specification/pulls?q=is%3Apr+is%3Aopen+review%3Aapproved) | @OAI/tsc | |
[Active Projects](https://github.com/OAI/OpenAPI-Specification/projects?query=is%3Aopen) | @OAI/openapi-maintainers | |
[New issues needing attention](https://github.com/search?q=repo%3Aoai%2Fopenapi-specification+is%3Aissue+comments%3A0+no%3Alabel+is%3Aopen) | @OAI/triage  | |
Identify next week's meeting host (2 mins) | All | Comment on next week's agenda |

/cc [@OAI/tsc](https://github.com/orgs/OAI/teams/tsc) please suggest items for inclusion.


================================================
FILE: .github/workflows/agenda.yaml
================================================
name: agenda

# author: @MikeRalphson
# issue: various

#
# This workflow creates the agenda issue each week. It runs on a cron every
# Monday morning, raising an issue for the following Thursday.
# It can also be run manually, in case GitHub Actions has a failure.
#

on:
  schedule:
    - cron: '0 16 * * 4'
  workflow_dispatch: {}

permissions:
  issues: write
  contents: read

jobs:
  agenda:
    if: github.repository == 'OAI/OpenAPI-Specification'
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      TITLE_PREFIX: "Open Community (TDC) Meeting, "
      LABEL: "Housekeeping"
      POST_MEETING_CLOSE_DURATION_IN_DAYS: 10

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6 # checkout repo content

    # we want to close old agenda issues before creating a new one because there's a limit of 3 pinned items on a repo
    - name: Close old agenda issues
      run: gh issue list -l ${{ env.LABEL }} --author "app/github-actions" --json number,title | ConvertFrom-Json | Where-Object { $_.title -like "${{ env.TITLE_PREFIX }}*" -and ([datetime]::UtcNow - [datetime]::Parse([regex]::Replace($_.title.Replace("${{ env.TITLE_PREFIX }}", ""), "\([^)]+\)", ""))) -ge [timespan]::FromDays([int]::Parse("${{ env.POST_MEETING_CLOSE_DURATION_IN_DAYS }}"))} | ForEach-Object { gh issue close $_.number && gh issue unpin $_.number }
      shell: pwsh
    
    - name: Unpin any issue that was closed manually
      run: gh issue list -l ${{ env.LABEL }} --author "app/github-actions" --json "number,title,isPinned" -s closed | ConvertFrom-Json | Where-Object { $_.isPinned -eq $true -and $_.title -like "${{ env.TITLE_PREFIX }}*" -and ([datetime]::UtcNow - [datetime]::Parse([regex]::Replace($_.title.Replace("${{ env.TITLE_PREFIX }}", ""), "\([^)]+\)", ""))) -ge [timespan]::FromDays([int]::Parse("${{ env.POST_MEETING_CLOSE_DURATION_IN_DAYS }}"))} | ForEach-Object { gh issue unpin $_.number }
      shell: pwsh

    - name: Create agenda issue
      run: |
        $nextThursday = @(@(1..8) | % {$(Get-Date).AddDays($_)} | ? {$_.DayOfWeek -ieq "Thursday"})[0].ToString("dddd dd MMMM yyyy", [CultureInfo]::InvariantCulture)
        $result = gh issue create -l ${{ env.LABEL }} -t "${{ env.TITLE_PREFIX }}$nextThursday" -F .github/templates/agenda.md
        gh issue pin $result
      shell: pwsh




================================================
FILE: .github/workflows/check-restricted-files.yaml
================================================
name: check-restricted-files

# Author: @ralfhandl
# Issue: https://github.com/OAI/OpenAPI-Specification/issues/3432

# This workflow fails if restricted files are changed in a pull request

on:
  pull_request:
    paths:
      - "versions/*.md"

jobs:
  check-files:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6 # checkout repo content
        with:
          fetch-depth: 0

      - name: Check changed files
        shell: bash
        run: |
          if [[ "${{ github.event.pull_request.head.repo.full_name }}" == "OAI/OpenAPI-Specification" ]] && \
             [[ "${{ github.event.pull_request.base.repo.full_name }}" == "OAI/OpenAPI-Specification" ]]; then

            if [[ "${{ github.event.pull_request.head.ref }}" == "dev-sync-with-main" ]] && \
               [[ "${{ github.event.pull_request.base.ref }}" == "dev" ]]; then
              echo Sync from main to dev via ${{ github.event.pull_request.head.ref }}
              exit 0
            fi

            if [[ "${{ github.event.pull_request.head.ref }}" =~ ^v[0-9]+\.[0-9]+-dev-sync-with-dev$ ]] && \
               [[ "${{ github.event.pull_request.base.ref }}" =~ ^v[0-9]+\.[0-9]+-dev$ ]] && \
               [[ ${{ github.event.pull_request.head.ref }} == ${{ github.event.pull_request.base.ref }}* ]]; then
              echo Sync from dev to ${{ github.event.pull_request.base.ref }} via ${{ github.event.pull_request.head.ref }}
              exit 0
            fi

            if [[ "${{ github.event.pull_request.head.ref }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+-rel$ ]] && \
               [[ "${{ github.event.pull_request.base.ref }}" == "main" ]]; then
              echo Release from ${{ github.event.pull_request.head.ref }} to main
              exit 0
            fi
          fi

          echo This PR contains changes to files that should not be changed:
          echo
          git diff --compact-summary origin/${{ github.event.pull_request.base.ref }} -- versions/

          exit 1


================================================
FILE: .github/workflows/inactive-issues.yml
================================================
on:
  issues:
    types: labeled
  workflow_dispatch:
  schedule:
    - cron: '*/5 * * * *'

permissions:
  issues: write
  contents: read

name: Label and close issues with no recent activity

env:
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  NEEDS_ATTENTION_LABEL: "Needs attention"
  NEEDS_AUTHOR_FEEDBACK_LABEL: "Needs author feedback"
  NO_RECENT_ACTIVITY_LABEL: "No recent activity"
  NO_RECENT_ACTIVITY_DURATION_IN_DAYS: 7
  NO_RECENT_ACTIVITY_DURATION_CLOSE_IN_DAYS: 28
  ORG_NAME: ${{ github.repository_owner }}
  REPO_NAME: ${{ github.event.repository.name }}
  NO_RECENT_ACTIVITY_COMMENT: "This issue has been labeled with `No recent activity` because there has been no recent activity. It will be closed if no further activity occurs within 28 days. Please re-open this issue or open a new one after this delay if you need to."


jobs:
  run:
    if: github.repository == 'OAI/OpenAPI-Specification'
    runs-on: ubuntu-latest
    name: Label issues with no recent activity
    steps:
      - uses: actions/checkout@v6
      - run: scripts/label-no-recent.ps1
        shell: pwsh
      - run: scripts/close-no-recent.ps1
        shell: pwsh


================================================
FILE: .github/workflows/respec.yaml
================================================
name: respec

# author: @MikeRalphson, @ralfhandl
# issue: https://github.com/OAI/OpenAPI-Specification/issues/1564

#
# This workflow creates a pull request for publishing HTML spec versions to the spec.openapis.org site.
#

# run this manually from main
on:
  workflow_dispatch: {}

jobs:
  respec:
    if: github.ref == 'refs/heads/main'

    runs-on: ubuntu-latest

    steps:
      - name: Generate access token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
          private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}
          owner: OAI
          repositories: spec.openapis.org

      - uses: actions/checkout@v6 # checkout main branch of this repo
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v6 # setup Node.js
        with:
          node-version: "22.x"

      - name: Install dependencies
        run: npm ci

      - uses: actions/checkout@v6 # checkout main branch of website repo
        with:
          token: ${{ steps.generate-token.outputs.token }}
          repository: OAI/spec.openapis.org
          ref: main
          path: deploy

      - name: run main script
        run: scripts/md2html/build.sh

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v8
        with:
          token: ${{ steps.generate-token.outputs.token }}
          branch: openapi-spec-versions
          base: main
          delete-branch: true
          path: deploy
          labels: OpenAPI,Specification
          reviewers: earth2marsh,lornajane,mikekistler,miqui,ralfhandl,whitlockjc,handrews,karenetheridge
          title: OpenAPI - update ReSpec-rendered specification versions
          commit-message: Update ReSpec-rendered specification versions
          signoff: true
          body: |
            This pull request is automatically generated by GitHub action `respec` in the OAI/OpenAPI-Specification repo.

            The `versions/*.md` files of the OpenAPI Specification have changed and the corresponding HTML files are regenerated.


================================================
FILE: .github/workflows/schema-publish.yaml
================================================
name: schema-publish

# author: @ralfhandl
# issue: https://github.com/OAI/OpenAPI-Specification/issues/3715

#
# This workflow creates a pull request for publishing schema iterations to the spec.openapis.org site.
#

# run this on push to vX.Y-dev branches or manually
on:
  push:
    branches:
      - "v[0-9].[0-9]-dev"
    paths:
      - "src/schemas/validation/*.yaml"
  workflow_dispatch: {}

jobs:
  publish:
    runs-on: ubuntu-latest

    steps:
      - name: Generate access token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
          private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}
          owner: OAI
          repositories: spec.openapis.org

      - uses: actions/checkout@v6 # checkout main branch of this repo
        with:
          fetch-depth: 0

      - uses: actions/setup-node@v6 # setup Node.js
        with:
          node-version: "22.x"

      - name: Install dependencies
        run: npm ci

      - uses: actions/checkout@v6 # checkout main branch of website repo
        with:
          token: ${{ steps.generate-token.outputs.token }}
          repository: OAI/spec.openapis.org
          ref: main
          path: deploy

      - name: run main script
        run: scripts/schema-publish.sh

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v8
        with:
          token: ${{ steps.generate-token.outputs.token }}
          branch: openapi-${{ github.ref_name }}-schema-iterations
          base: main
          delete-branch: true
          path: deploy
          labels: OpenAPI,Schema
          reviewers: earth2marsh,lornajane,mikekistler,miqui,ralfhandl,whitlockjc,handrews,karenetheridge
          title: "OpenAPI - publish ${{ github.ref_name }} schema iterations"
          commit-message: "New OpenAPI schema iterations published from ${{ github.ref_name }}"
          signoff: true
          body: |
            This pull request is automatically generated by GitHub action `schema-publish` in the OAI/OpenAPI-Specification repo.
            The `src/schemas/validation/*.yaml` files have changed and JSON files are automatically generated.


================================================
FILE: .github/workflows/schema-tests.yaml
================================================
name: schema-test

# Author: @MikeRalphson / runs @jdesrosiers tests
# Issue: https://github.com/OAI/OpenAPI-Specification/pull/2489

#
# This workflow runs the npm test script to validate passing and failing
# testcases for the metaschemas
#

# run this on push to any branch and creation of pull-requests
on:
  pull_request: {}
  workflow_dispatch: {}

jobs:
  test:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v6 # checkout repo content
      with:
        fetch-depth: 0

    - uses: actions/setup-node@v6 # setup Node.js
      with:
        node-version: '20.x'

    - name: Install dependencies
      run: npm ci

    - name: Run tests
      run: npm run test
      env:
        BASE: ${{ github.event.pull_request.base.ref }}


================================================
FILE: .github/workflows/sync-dev-to-vX.Y-dev.yaml
================================================
name: sync-dev-to-vX.Y-dev

# author: @ralfhandl

#
# This workflow creates PRs to update the vX.Y-dev branch with the latest changes from dev
#

# run this on push to dev
on:
  push:
    branches:
      - dev
  workflow_dispatch: {}

jobs:
  sync-branches:
    if: github.repository == 'OAI/OpenAPI-Specification'
    runs-on: ubuntu-latest
    steps:
      - name: Generate access token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
          private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          token: ${{ steps.generate-token.outputs.token }}

      - name: Create pull requests
        id: pull_requests
        shell: bash
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

          DEV_BRANCHES=$(git branch -r --list origin/v?.?-dev)
          for DEV_BRANCH in $DEV_BRANCHES; do
            BASE=${DEV_BRANCH:7}
            SYNC="$BASE-sync-with-$HEAD"
            
            git checkout -b $SYNC origin/$SYNC || git checkout -b $SYNC origin/$BASE
            git merge origin/$HEAD -m "Merge $HEAD into $SYNC"
            git checkout origin/$BASE src/
            git checkout origin/$BASE tests/schema/
            git commit -m "Restored src/ and tests/schema/" || echo ""
            git push -u origin $SYNC

            EXISTS=$(gh pr list --base $BASE --head $SYNC \
              --json number --jq '.[] | .number')
            if [ ! -z "$EXISTS" ]; then
              echo "PR #$EXISTS already wants to merge $SYNC into $BASE"
              continue
            fi

            PR=$(gh pr create --base $BASE --head $SYNC \
              --label "Housekeeping" \
              --title "$BASE: sync with $HEAD" \
              --body "Merge relevant changes from \`$HEAD\` into \`$BASE\`.")
            echo ""
            echo "PR to sync $BASE with $HEAD: $PR"
            sleep 60 # allow status checks to be triggered
            
            gh pr checks $PR --watch --required || continue
            gh pr merge $PR --merge --admin
          done
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
          HEAD: dev


================================================
FILE: .github/workflows/sync-main-to-dev.yaml
================================================
name: sync-main-to-dev

# author: @ralfhandl

#
# This workflow creates PRs to update the dev branch with the latest changes from main
#

# run this on push to main
on:
  push:
    branches:
      - main
  workflow_dispatch: {}

jobs:
  sync-branch:
    if: github.repository == 'OAI/OpenAPI-Specification'
    runs-on: ubuntu-latest
    steps:
      - name: Generate access token
        id: generate-token
        uses: actions/create-github-app-token@v2
        with:
          app-id: ${{ secrets.OAI_SPEC_PUBLISHER_APPID }}
          private-key: ${{ secrets.OAI_SPEC_PUBLISHER_PRIVATE_KEY }}

      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          token: ${{ steps.generate-token.outputs.token }}

      - name: Create pull request
        id: pull_request
        shell: bash
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          SYNC="$BASE-sync-with-$HEAD"

          git checkout -b $SYNC origin/$SYNC || git checkout -b $SYNC origin/$BASE
          git merge origin/$HEAD -m "Merge $HEAD into $SYNC"
          git checkout origin/$BASE src/
          git checkout origin/$BASE tests/schema/
          git commit -m "Restored src/ and tests/schema/" || echo ""
          git push -u origin $SYNC

          EXISTS=$(gh pr list --base $BASE --head $SYNC \
            --json number --jq '.[] | .number')
          if [ ! -z "$EXISTS" ]; then
            echo "PR #$EXISTS already wants to merge $SYNC into $BASE"
            exit 0
          fi

          gh pr create --base $BASE --head $SYNC \
            --label "Housekeeping" \
            --title "$BASE: sync with $HEAD" \
            --body "Merge relevant changes from \`$HEAD\` into \`$BASE\`."
        env:
          GH_TOKEN: ${{ steps.generate-token.outputs.token }}
          HEAD: main
          BASE: dev


================================================
FILE: .github/workflows/validate-markdown.yaml
================================================
name: validate-markdown

# Author: @MikeRalphson
# Issue: https://github.com/OAI/OpenAPI-Specification/issues/2130

# This workflow validates markdown files in the project root.
# It also validates the work-in-progress specification file src/oas.md with slightly different rules.

# run this on pull requests (which includes pushes to their head branch)
on:
  - pull_request

jobs:
  lint:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v6 # checkout repo content

      - uses: actions/setup-node@v6 # setup Node.js
        with:
          node-version: "20.x"

      - name: Lint work-in-progress spec
        run: npx --yes markdownlint-cli2 --config spec.markdownlint.yaml src/oas.md

      - name: Lint other files
        run: npx --yes markdownlint-cli2 *.md

      - name: Check links in markdown files
        uses: umbrelladocs/action-linkspector@v1
        with:
          reporter: github-check
          fail_level: any
          filter_mode: file


================================================
FILE: .gitignore
================================================
.idea
*.iml
*.ipr
*.iws
target
atlassian-ide-plugin.xml
node_modules/
deploy/
deploy-preview/
coverage/
_site/
Gemfile.lock


================================================
FILE: .gitmodules
================================================


================================================
FILE: .linkspector.yml
================================================
files:
  - src/oas.md
  - CONTRIBUTING.md
  - EDITORS.md
  - GOVERNANCE.md
  - IMPLEMENTATIONS.md
  - MAINTAINERS.md
  - README.md
  - SECURITY_CONSIDERATIONS.md
  - SPECIAL_INTEREST_GROUPS.md
  - style-guide.md
  - TOB.md
ignorePatterns:
  - pattern: 'clientdomain.com'
  - pattern: 'example.org'


================================================
FILE: .markdownlint.yaml
================================================
# First heading is a top-level heading
MD002: true

# Heading style (ATX is leading # symbols)
MD003:
  style: atx

# Unordered list symbol can be anything
MD004: false

# Unordered list indentation size
MD007:
    indent: 2

# Allow additional blank lines
MD012: false

# Maximum line length
MD013:
    line_length: 800
    tables: false

# Headings need blank lines before and after
MD022: true

# Duplicate headings are allowed
MD024: false

# Surround lists with blank lines
MD032: true

# Allow inline HTML
MD033: false


================================================
FILE: CONTRIBUTING.md
================================================
# Contribute to the OpenAPI Specification

## Key information

This project is covered by our [Code of Conduct](https://github.com/OAI/OpenAPI-Specification?tab=coc-ov-file#readme).
All participants are expected to read and follow this code.

No changes, however trivial, are ever made to the contents of published specifications (the files in the `versions/` folder).
Exceptions may be made when links to external URLs have been changed by a 3rd party, in order to keep our documents accurate.

Published versions of the specification are in the `versions/` folder.
The under-development versions of the specification are in the file `src/oas.md` on the appropriately-versioned branch.
For example, work on the next patch release for 3.2 is on `v3.2-dev` in the file `src/oas.md`, and work on the next minor release with additional features for 3.3 is on `v3.3-dev`.

The [spec site](https://spec.openapis.org) is the source of truth for the OpenAPI specification as it contains all the citations and author credits (the markdown in this repository was previously the authoritative version until 2024).

The OpenAPI project is almost entirely staffed by volunteers.
Please be patient with the people in this project, who all have other jobs and are active here because we believe this project has a positive impact in the world.

### Active branches

The current active specification releases are:

| Version | Branch | Notes |
| ------- | ------ | ----- |
| 3.1.3 | `v3.1-dev` | active patch release line |
| 3.2.1 | `v3.2-dev` | active patch release line |
| 3.3.0 | `v3.3-dev` | minor release in development |
| 4.0.0 | [OAI/sig-moonwalk](https://github.com/OAI/sig-moonwalk) | [discussions only](https://github.com/OAI/sig-moonwalk/discussions) |

## How to contribute

We welcome new contributors to the project whether you have changes to suggest, problems to report, or some feedback for us.
Please jump to the most relevant section from the list below:

- Ask a question or offer feedback: use a [discussion](#discussions)
- Suggest a change or report a problem: open an [issue](#issues)
- Contribute a change to the repository: open a [pull request](#pull-requests)
- Or just [get in touch](#get-in-touch)

## Discussions

We use [discussions](https://github.com/OAI/OpenAPI-Specification/discussions?discussions_q=is%3Aopen) for anything that doesn't (yet) have a specific action associated with it.
Most ideas start as discussions.

Please do come and start a discussion to:

- ask questions
- make suggestions
- give feedback

Anyone can start a discussion and you're very welcome to do so! Write a message and pick a relevant discussion category.

### Discussion management

Participation in discussions and especially answering of questions is encouraged (and appreciated) by everyone.

Discussions are closed when:

- the question has been answered.
- no further action or conversation would be useful.
- there has been no engagement for a while, or a previously popular thread has been inactive for an extended period.
- activity is now taking place elsewhere, such as in an issue.
- the discussion is out of scope for the project.

## Issues

Issues are for planned tasks, problems to solve, or requests for (specific) changes.
Most issues should have a clear outcome; something will be fixed, improved or otherwise measurably different when the issue is complete.

We use [discussions](#discussions) for ideas and early-stage suggestions.

> [!NOTE]
> For larger or more extensive changes, we have a formal [proposal process](#propose-a-specification-change) to give more structure where it's needed.

The best issues give a clear and concise explanation of the problem at hand, and ideally some examples of what the problem is.
Suggested solutions are also welcome, but it is very important that the issue outlines the problem that is being solved as well as the solution.
Some issues may be a backlog of a task that needs to be done; other issues might be automatically created as part of the project processes.

### Issue management

We have some issue automation to close inactive issues and create/pin/archive the weekly meeting issues.
More information is in the [Appendix: Issue automation](#appendix-issue-automation) section.

Everyone is encouraged to open and comment on issues in the project.
If you want to tag/assign/close something and you don't have enough permissions, add a comment and someone will help.

Issues are managed by the [Triage](#triage), [Maintainers](#maintainers) and [TSC](#tsc) teams.
They may move issues to other repositories within the project as needed.

In order to keep the issues list manageable and realistic for a relatively small group of volunteers, issues are proactively closed when it's not clear that they can be completed.
Issues may be closed when:

- they have been inactive for a long time
- they are out of scope or no further constructive action can be taken
- they are complete (yay!)
- they are unclear and more details are not forthcoming
- as a group, there is agreement that no further action will be taken

When issues are closed, a comment is added about why.
Closing issues is a reversible action, and it is always acceptable to comment and explain (politely) why an issue should not have been closed.

### Labels

We make extensive use of labels.
The main categories are:

- [Housekeeping](https://github.com/OAI/OpenAPI-Specification/labels/Housekeeping) for meetings, project logistics, etc.
- [approved pr port](https://github.com/OAI/OpenAPI-Specification/labels/approved%20pr%20port) for pull requests that repeat a change from one version to another
- most other tags are used to group similar or related issues into topic areas; this list is ever-changing

Labels related to [issue automation](#appendix-issue-automation)

- [Needs attention](https://github.com/OAI/OpenAPI-Specification/labels/Needs%20attention) automated tag when an issue is updated
- [Needs author feedback](https://github.com/OAI/OpenAPI-Specification/labels/Needs%20author%20feedback) used to indicate that more information is needed from the issue creator
- [No recent activity](https://github.com/OAI/OpenAPI-Specification/labels/No%20recent%20activity) if no information is received, the issue is marked for closure (automatic after 30 days)

### Milestones

We use milestones in GitHub to plan what should be included in future releases.
Issues and pull requests should both be added to the earliest milestone we expect they will be released in.
Any changes that aren't ready in time for release should be moved to the next milestone or untagged.

The milestones and items assigned to them are under constant review and subject to change.

### Projects

The OpenAPI Initiative uses GitHub Projects to manage work _outside_ of the specification development process.  There are currently two active projects:

* [Contributor Guidance](https://github.com/orgs/OAI/projects/5/views/1)
* [Automation & Infrastructure](https://github.com/orgs/OAI/projects/4/views/1)

## Pull requests

> [!NOTE]
> Since the 3.0.4 and 3.1.1 releases (October 2024), the OAS is developed in the `src/oas.md` file.
> Check the [Appendix: Branch Strategy](#appendix-branch-strategy) for more information about the updated branching strategy.

Changes to the next version of the specification are welcome and can be proposed by anyone.

For large changes that will need discussion, please use the [Proposal process](#propose-a-specification-change).
For other changes, we recommend [opening an issue](#issues) first, so that you can get some feedback and any extra input you need before spending a lot of time on something.

Schema changes are made on the same branch, but can be released independently.
When making a specification change for a new minor or major release that has a schema impact, including the schema change in the PR is preferred.
Patch releases cannot contain changes that _require_ a schema update.

### Use a fork

All work **MUST be done on a fork** and be submitted as a pull request.

### Target the earliest active `*-dev` branch

Branch from and submit pull requests to the a branch from the _earliest relevant and [active](#active-branches)_ `vX.Y-dev` branch.
For example, if a change applies to both 3.1 and 3.2, the PR would go to the `v3.1-dev` branch, which will be merged up to `v3.2-dev` before the next 3.2 release.
All changes to the specification must conform to the [style guide](./style-guide.md).

Both specification and schema changes follow this approach.

For changes to repository files that affect all versions, use the `main` branch.
This might apply to, for example, Markdown files, automation, and scripts.

For all pull requests, if they should not be merged yet for any reason (they depend on something else, you would like feedback from a specific reviewer), mark them as draft and they will not be merged while in that state.
Draft pull requests can still be reviewed while in draft state.

### Preview specification HTML locally

> [!NOTE]
> `npm run build-src` calls bash scripts. Use [Git Bash](https://gitforwindows.org/) on Windows, or use the Windows Subsystem for Linux (WSL).

The markdown source files are converted to HTML before publishing.
To do this locally, please

1. Install [Node.js](https://nodejs.org/)
2. Check out this repo, go to the repo root, and switch to a development branch
3. Execute `npm install` (once, repeat after merging upstream changes)
4. Execute `npm run build-src` after changing `src/oas.md` (this first executes `npm run validate-markdown`, which can also be run separately)
5. Open output file `deploy-preview/oas.html` with a browser and check your changes

Please make sure the markdown validates and builds using the above steps before creating a pull request or marking a draft pull request as ready for review.

## Reviewers

> [!NOTE]
> See also the detailed team outlines in the [roles section](#roles).

All pull requests must be reviewed and approved by one member of the TSC or Maintainers teams.
Reviews from other contributors are always welcome.

Additionally, all pull requests that change the specification file `src/oas.md` must be approved by two TSC members.

Reviews requesting changes should have their changes addressed regardless of how many other approvers there are.

## Publishing

### Specification Versions

The specification versions are published to the [spec site](https://spec.openapis.org/oas) by creating an `vX.Y.Z-rel` branch where `src/oas.md` is renamed to the appropriate `versions/X.Y.Z.md` file and then merged to `main`.
This renaming on the `vX.Y.Z-rel` branch preserves the commit history for the published file on `main` when using `git log --follow` (as is the case for all older published files).

The steps for creating a `vX.Y.Z-rel` branch are:

1. Update `EDITORS.md` on `main`
2. Merge `main` into `dev` and `dev` into `vX.Y-dev` via PRs
   - sync PRs are automatically created by workflows `sync-main-to-dev` and `sync-dev-to-vX.Y-dev`
3. Prepare spec files in `vX.Y-dev`
   - `npm run format-markdown`
   - `npm run build-src`
   - open `deploy-preview/oas.html` in browser and verify correct formatting
   - adjust and repeat until done
   - merge changes to `src/oas.md` back into `vX.Y-dev` via PR
4. Create `vX.Y.Z-rel` from `vX.Y-dev` and adjust it
   - the bash script `scripts/adjust-release-branch.sh` does this:
     - copy file `src/oas.md` to `versions/X.Y.Z.md` and replace the release date placeholder `| TBD |` in the history table of Appendix A with the current date
     - copy file `EDITORS.md` to `versions/X.Y.Z-editors.md`
     - delete folder `src`
     - delete version-specific files and folders from `tests/schema`
       - file `schema.test.mjs`
       - folders `pass` and `fail`
5. Merge `vX.Y.Z-rel` into `main` via PR
   - this PR should only add files `versions/X.Y.Z.md` and `versions/X.Y.Z-editors.md`

The HTML renderings of the specification versions are generated from the `versions` directory on `main` by manually triggering the [`respec` workflow](https://github.com/OAI/OpenAPI-Specification/blob/main/.github/workflows/respec.yaml), which generates a pull request for publishing the HTML renderings to the [spec site](https://spec.openapis.org).

#### Start Next Patch Version

Once the released specification version is [synced](#branch-sync-automation) back to the `vX.Y-dev` branch, the next patch version X.Y.(Z+1) can be started:

1. Run bash script `scripts/start-release.sh` in branch `vX.Y-dev` to
   - create branch `vX.Y-dev-start-X.Y.(Z+1)`
   - initialize `src/oas.md` with empty history and content from `versions/X.Y.Z.md`
   - change version heading to X.Y.(Z+1) and add a new line to the version history table in Appendix A of  `src/oas.md`
   - commit and push changes
2. Merge `vX.Y-dev-start-X.Y.(Z+1)` into  `vX.Y-dev` via pull request

Alternatively, if no patch version X.Y.(Z+1) is planned, delete file `src/oas.md` from branch `vX.Y-dev` via pull request.

#### Start New Minor or Major Version

A new minor version X.(Y+1).0 or major version (X+1).0.0 is started similarly:

1. Create branch `vX'.Y'-dev` from `vX.Y-dev`
2. Run bash script `scripts/start-release.sh` in the new branch to
   - create branch `vX'.Y'-dev-start-X'.Y'.0`
   - initialize `src/oas.md` with empty history and content from `versions/X.Y.Z.md`
   - change version heading to X'.Y'.0 and add a new line to the version history table in Appendix A of  `src/oas.md`
   - change version in all schema files `src/schemas/validation/.yaml`
   - change version in schema test script `tests/schema/schema.test.mjs`
   - change version in schema test fixtures in folders `tests/schema/pass` and `tests/schema/fail`
   - commit and push changes
3. Merge `vX'.Y'-dev-start-X'.Y'.0` into `vX'.Y'-dev` via pull request

### Schema Iterations

The schema iterations are published independently from the specification releases [in the schema section on the spec site](https://spec.openapis.org/oas).
Schemas are updated in and directly published from the `vX.Y-dev` branches.

As part of the publishing process, the YAML source files are converted to JSON, renamed to the relevant last-changed dates, and `WORK-IN-PROGRESS` placeholders are replaced with these dates as appropriate. This is usually done by the [`schema-publish` workflow](https://github.com/OAI/OpenAPI-Specification/blob/main/.github/workflows/schema-publish.yaml) which detects changes on each `vX.Y-dev` branch, which generates a pull request for publishing the new schema iterations to the [spec site](https://spec.openapis.org). The workflow can also be run manually if required.

#### Schemas and OAS Requirements

The schemas published by the OpenAPI Initiative _only_ validate mandatory
OAS requirements.  This means that a field value or combination with another
field is only forbidden in a schema if there is a corresponding MUST / MUST NOT /
SHALL / SHALL NOT requirement that prevents it.

Schemas that apply further restrictions to enforce desired usage are outside
of the scope of the OpenAPI Initiative.  When opening an issue or PR for
schema changes, please ensure that the changes are backed by clear OAS
requirements.  Otherwise, the issue or PR will be closed with a note pointing
to this section.

## Release Process and Scope

This section relates to the 3.x versions only.

### Minor Releases

Our roadmap for 3.x releases is community-driven, meaning the specification is open for proposed additions by anyone (see [Propose a Specification Change](#propose-a-specification-change)), in addition to the issues already on the project backlog.

Changes in minor releases (such as 3.2, 3.3) meet the following criteria:

* Are **backwards-compatible** and be reasonably easy to implement in tooling that already supports the previous minor version.
  For example, new optional fields can be added.
* Drive quality-of-life improvements to support how OpenAPI is used by practitioners, so that OpenAPI evolves to continue to meet user needs.
  For example, adding fields to support changes in other standards, or adopting common `x-*` extension fields into the specification.
* Bring the future closer by making changes that are in line with future 3.x releases and the planned OpenAPI 4.x (Moonwalk) specification as the details of that become available.
* Make the specification document clearer or easier to understand.

A minor release is due when there are some meaningful features (including one or a small number of headline features).

### Patch Releases

Patch releases reflect a constant quest for improving the active minor versions of OpenAPI.
Since we do not edit specification documents after publication, even the smallest change has to be in a new release.

Changes in patch releases meet the following criteria:

* Editorial changes such as spelling or formatting fixes, including link updates.
* Clarifications or additions that do not change the meaning of the specification.

Patch releases are created as often as there are changes to the specification worth releasing.

### Release Process

A release requires a vote on the specification at a particular version and the associated release notes by TSC members within the voting period.
Major or minor release voting periods will be announced in the Slack channel and noted on the calendar at least 6 days in advance.
During this time, TSC members who have not yet voted must note their approval by leaving a comment on the GitHub pull request proposing the release; release notes should be included with the description.
TSC members are responsible for coordinating the information about the release to the outreach team as appropriate.

* Patch-level releases require majority approval by TSC members. (Max voting period 3 days)

* Minor: requires approval by 66% of TSC members. (Max voting period 7 days)

* Major: requires approval by 66% of TSC members. (Max voting period 14 days)

During the voting period, further changes should not be made to the specification being considered.

Once the threshold of approvals is met, the release can be performed by any TSC member.

## Propose a Specification Change

As an organisation, we're open to changes, and these can be proposed by anyone.
The specification is very widely adopted, and there is an appropriately high bar for wide appeal and due scrutiny as a result.
We do not accept changes lightly (but we will consider any that we can).

Small changes are welcome as pull requests.

Bigger changes require a more formal process.

1. Start a [discussion](https://github.com/OAI/OpenAPI-Specification/discussions) of type "Enhancements".
   The discussion entry must include some use cases, your proposed solution and the alternatives you have considered.
   If there is engagement and support for the proposal over time, then it can be considered as a candidate to move to the next stage.

2. It really helps to see the proposed change in action.
   Start using it as a `x-*` extension if that's appropriate, or try to bring other evidence of your proposed solution being adopted.

3. If you are adding support for something from another specification (such as OAuth), please point to implementations of that
   specification so that we can understand how, and to what degree, it is being used.

4. If the suggested change has good support, you will be asked to create a formal proposal.
   Use the [template in the proposals directory](https://github.com/OAI/OpenAPI-Specification/tree/main/proposals), copy it to a new file, and complete it.
   Once you the document is ready, open a pull request on the main branch.

5. The proposal will be more closely reviewed and commented on or amended until it is either rejected or accepted.
   At that point, the proposal is merged into the `main` branch and a pull request is opened to add the feature to the appropriate `dev` version of the specification.

Questions are welcome on the process at any time. Use the discussions feature or find us in Slack.

## Roles

The OpenAPI project has some key roles that are played by multiple people.

### TSC

The Technical Steering Committee are listed in the [MAINTAINERS file](./MAINTAINERS.md).
They are the maintainers of the OpenAPI Specification itself and every other aspect of the project operation and direction.
TSC members can review changes to all parts of the repository and make decisions about the project.

### Maintainers

The maintainers have write access to the repository and play a key role in the project.
They review pull requests to non-specification parts of the repository, and take on other strategic tasks around project planning and maintenance.

### Triage

The triage team are active OpenAPI members who help with discussion and issue management.
They respond to new issues and discussions, direct people to our existing resources or raise conversations to a wider audience.
The triage team keeps an eye on the backlog and closes issues and discussions that are no longer active or needed.

## Get in touch

To get in touch with other people on the project, ask questions, or anything else:

- Find us [on the OpenAPI Slack](https://communityinviter.com/apps/open-api/openapi).
- Start a [GitHub Discussion](https://github.com/OAI/OpenAPI-Specification/discussions/).
- Join one of our weekly meetings by checking the [issues list for an upcoming meetings](https://github.com/OAI/OpenAPI-Specification/issues?q=is%3Aissue%20state%3Aopen%20label%3AHousekeeping).

## Appendix: Branch strategy

For information on the branch and release strategy for OAS 3.0.4 and 3.1.1 and earlier, see the comments in [issue #3677](https://github.com/OAI/OpenAPI-Specification/issues/3677).

### Branch roles

* `main` is used to publish finished work and hold the authoritative versions of general documentation such as this document, which can be merged out to other branches as needed.  The `src` tree is _**not**_ present on `main`.
* `dev` is the primary branch for working with the `src` tree.  Development infrastructure that is not needed on `main` is maintained here, and can be merged out to other non-`main` branches as needed.
  Changes on `main` are automatically included in a pull request to `dev` (see the section on [branch sync](#branch-sync-automation)).
* `vX.Y-dev` is the minor release line development branch for X.Y, including both the initial X.Y.0 minor version and all subsequent X.Y.Z patch versions.  All PRs are made to oldest active `vX.Y-dev` branch to which the change is relevant, and then merged forward as shown in the diagram further down in this document.
* `vX.Y.Z-rel` is the release branch for an X.Y.Z release (including when Z == 0).  It exists primarily for `git mv`-ing `src/oas.md` to the appropriate `versions/X.Y.Z.md` location and removing schema-related files before merging back to `main`, and is deleted once merged into `main` via a pull request.

### Branching and merging (3.1.2, 3.2.0, and later)

Upon release:

* Pre-release steps:
  * The most recent _published_ patch release from the previous line is merged up to `vX.Y-dev`, if relevant
  * If doing simultaneous releases on multiple lines, do them from the oldest to newest line
  * For example, if releasing 3.1.3 and 3.2.0:
    * release 3.1.3 first
    * release 3.2.0 second
* Release branching and merging:
  * branch `vX.Y.Z-rel` from `vX.Y-dev` (same commit that was merged to `dev` if relevant)
  * After renaming `src/oas.md` to `versions/X.Y.Z.md` and [other adjustments](#specification-versions), merge `vX.Y.Z-rel` to `main`
* Publishing to the [spec site](https://spec.openapis.org) is triggered by the merge to `main`
* Post-release steps:
  * If this was a major or minor release (Z == 0), branch `vX.Y+1-dev` from `vX.Y-dev`

_Release lines are grouped by color, although the colors of `dev` and `main` are not significant as these diagrams are limited to only 8 colors._

```mermaid
---
config:
  themeVariables:
    git0: "#5588bb"
    git1: "#cc8899"
    git2: "#eedd88"
    git3: "#ccbb66"
    git4: "#aa9944"
    git5: "#44ff77"
    git6: "#22cc22"
    git7: "#11aa11"
    gitBranchLabel1: "#000000"
    gitBranchLabel2: "#000000"
    gitBranchLabel3: "#000000"
    gitBranchLabel4: "#000000"
    gitBranchLabel5: "#000000"
    gitBranchLabel6: "#000000"
    gitBranchLabel7: "#000000"
---
gitGraph TB:
  commit id:"merge 3.1.1.md to main" tag:"3.1.1"
  branch dev order:1
  commit id:"rename 3.1.1.md to src/oas.md"
  branch v3.1-dev order:2
  commit id:"update version in src/oas.md to 3.1.2"
  checkout dev
  branch v3.2-dev order:6
  commit id:"update version in src/oas.md to 3.2.0"
  commit id:"some 3.2.0 work"
  checkout v3.1-dev
  commit id:"a 3.1.2 fix"

  checkout v3.1-dev
  branch v3.1.2-rel order:3
  commit id:"rename src/oas.md to versions/3.1.2.md"

  checkout main
  merge v3.1.2-rel tag:"3.1.2"
  checkout dev
  merge main id:"auto-sync from main"
  checkout v3.1-dev
  merge dev  id:"auto-sync from dev"
  checkout v3.2-dev
  merge dev  id:"auto-sync from dev "

  commit id:"more 3.2.0 work"
  checkout v3.1-dev
  commit id:"update version in src/oas.md to 3.1.3"
  commit id:"a 3.1.3 fix"
  checkout v3.2-dev
  commit id:"still more 3.2.0 work"

  checkout v3.1-dev
  branch v3.1.3-rel order:4
  commit id:"rename src/oas.md to versions/3.1.3.md"
  checkout v3.2-dev
  branch v3.2.0-rel order:7
  commit id:"rename src/oas.md to versions/3.2.0.md"

  checkout main
  merge v3.1.3-rel tag:"3.1.3"
  checkout dev
  merge main id:" auto-sync from main"
  checkout v3.1-dev
  merge dev  id:" auto-sync from dev"
  checkout v3.2-dev
  merge dev  id:" auto-sync from dev "

  checkout main
  merge v3.2.0-rel tag:"3.2.0"
  checkout dev
  merge main id:"  auto-sync from main"
  checkout v3.1-dev
  merge dev  id:"  auto-sync from dev"
  checkout v3.2-dev
  merge dev  id:"  auto-sync from dev "

  checkout v3.2-dev
  branch v3.3-dev order:9
  checkout v3.2-dev
  commit id:"update version in src/oas.md to 3.2.1"
  checkout v3.3-dev
  commit id:"update version in src/oas.md to 3.3.0"

  checkout v3.2-dev
  commit id:"a 3.2.1 fix"

  checkout v3.2-dev
  branch v3.2.1-rel order:8
  commit id:"rename src/oas.md to versions/3.2.1.md"

  checkout dev
  merge main id:"   auto-sync from main"
  checkout v3.1-dev
  merge dev  id:"   auto-sync from dev"
  checkout v3.2-dev
  merge dev  id:"   auto-sync from dev "
  checkout v3.3-dev
  merge dev  id:"   auto-sync from dev  "

  checkout main
  merge v3.2.1-rel tag:"3.2.1"
  checkout dev
  merge main id:"    auto-sync from main"
  checkout v3.1-dev
  merge dev  id:"    auto-sync from dev"
  checkout v3.2-dev
  merge dev  id:"    auto-sync from dev "
  checkout v3.3-dev
  merge dev  id:"    auto-sync from dev  "

  checkout v3.2-dev
  commit id:"update version in src/oas.md to 3.2.2"
  checkout v3.3-dev
  commit id:"3.3 work"
```

### Branch sync automation

To keep changes in sync, we have some GitHub actions that open pull requests to take changes from `main` onto the `dev` branch, and from `dev` to each active version branch.

- `sync-main-to-dev` opens a pull request with all the changes from the `main` branch that aren't yet included on `dev`. This pull request needs a single approval from either maintainers or TSC and can be merged.
- `sync-dev-to-vX.Y-dev` opens pull requests with all the changes from `dev` that aren't yet included on the corresponding `vX.Y-dev` branch. These pull requests are automatically merged if all required status checks pass.

The aim is to bring build script and repository documentation changes to the other branches.
Published versions of the specifications will also move across branches with this approach.

## Appendix: Issue Automation

### Automated closure of issues Process

In an effort to keep the list of issues up to date and easier to navigate through, issues get closed automatically when they become inactive.

This process makes use of the following labels:

* `Needs author feedback`: the issue has been replied to by the triage team and is awaiting a follow up from the issue's author. This label needs to be added manually by people doing triage/experts whenever they reply. It's removed automatically by the workflow.
* `No recent activity`: the issue hasn't received a reply from its author within the last 10 days since `Needs author feedback` was added and will be closed within 28 days if the author doesn't follow up. This label is added/removed automatically by the workflow.
* `Needs attention`: The issue's author has replied since the `Needs author feedback` label was set and the triage team will reply as soon as possible. This label needs to be removed manually by people doing triage/experts whenever they reply. It's added automatically by the workflow.

### Automated TDC agenda issues Process

An issue is opened every week, 7 days in advance, for the Technical Developer Community (TDC), it provides the information to connect the meeting, and serves as a placeholder to build the agenda for the meeting. Anyone is welcome to attend the meeting, or to add items to the agenda as long as they plan on attending to present the item. These issues are also automatically pinned for visibility and labeled with "Housekeeping".

Ten (10) days after the meeting date is passed (date in the title of the issue), it gets closed and unpinned automatically.



================================================
FILE: EDITORS.md
================================================
# OpenAPI Specification Editors

## Active

* Henry Andrews [@handrews](https://github.com/handrews)
* Jeremy Whitlock [@whitlockjc](https://github.com/whitlockjc)
* Karen Etheridge [@karenetheridge](https://github.com/karenetheridge)
* Lorna Mitchell [@lornajane](https://github.com/lornajane)
* Marsh Gardiner [@earth2marsh](https://github.com/earth2marsh)
* Miguel Quintero [@miqui](https://github.com/miqui)
* Mike Kistler [@mikekistler](https://github.com/mikekistler)
* Ralf Handl [@ralfhandl](https://github.com/ralfhandl)
* Vincent Biret [@baywet](https://github.com/baywet)

## Emeritus

* Ron Ratovsky [@webron](https://github.com/webron)
* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)
* Mike Ralphson [@MikeRalphson](https://github.com/MikeRalphson)
* Uri Sarid [@usarid](https://github.com/usarid)
* Jason Harmon [@jharmn](https://github.com/jharmn)
* Tony Tam [@fehguy](https://github.com/fehguy)


================================================
FILE: GOVERNANCE.md
================================================
# Governance

The OpenAPI Specification is a project of the OpenAPI Initiative (OAI), under the auspices of the Linux Foundation. For governance of the OAI, review the [OAI's charter](https://www.openapis.org/participatehow-to-contribute/governance).

## Processes and procedures of the Technical Steering Committee (TSC)

The TSC is a self-organizing sub-group of the OAI. Herein are its principles and guidelines.

### 1. The establishment of roles and the responsibilities for each role

Roles:

* [Liaison](https://www.merriam-webster.com/dictionary/liaison) — Elected by TSC members in a plurality vote (oral count). Liaison represents the TSC to the OAI's Business Governing Board (BGB) at board meetings (though this itself does not confer voting rights) and is the public facing mouthpiece of the TSC.

* [Maintainer](https://www.merriam-webster.com/dictionary/maintainer) — all and only members of the TSC are maintainers, and are responsible for approving proposed changes to the specification. If membership drops below 3, work is suspended until the BGB can re-establish the minimum. To maintain agility, the TSC should be capped at a maximum 9 members, though that number can be reconsidered by the TSC in the future. Past members will be noted as emeritus status once they are no longer members.

* [Community Manager](https://en.wikipedia.org/wiki/Online_community_manager) — responsible for onboarding of new contributors, dealing with antisocial behaviour before it becomes a code of conduct violation, and managing the issue triage team.

* [Rick](https://www.youtube.com/watch?v=dQw4w9WgXcQ) — Responsible for not giving up or letting down. Requires plurality vote of TSC members.

### 2. Adding members to the TSC

A call-for-nominations period may be agreed upon by the TSC voting members and announced in a timely manner on a weekly TDC call (and documented on the agenda issue), assuming the TSC membership is not already at its maximum.
A candidate may be nominated through a motion by a voting TSC member in a closed TSC meeting.
A nominee must not receive opposition votes of more than 25% of the TSC voting membership via a confidential vote held electronically within a week following the nomination meeting.
Approved nominees become provisional members and are expected to comport themselves as full members of the TSC during the provisional period of 6 months.
The provisional period is concluded by a second, confidential vote similar to the nomination period's vote, after which newly confirmed members gain their voting rights.
At most there are four voting periods per year (no more than one every three months), with a minimum of one per year.

### 3. Removal of membership from the TSC

Occasionally it may be necessary to remove a TSC member, such as behavior that violates the code of conduct or prolonged absenteeism. A 66% vote (confidential, electronic) of the other TSC members is required to remove a member. Otherwise, TSC members are removed when they renounce their position by informing the TSC of their effective resignation date via email.

### 4. Criteria for decisions

The group will strive to achieve all decisions via unopposed consensus. When not possible, unresolved conflicts will be raised to the OAI's Technical Oversight Board (TOB).

The TSC will maintain a publicly available document specifying the process in the contributor guidelines for how proposed changes are merged into the specification. The TSC will document and publicize the schedule of merge parties and release parties for the benefit of the developer community.


================================================
FILE: IMPLEMENTATIONS.md
================================================
# Implementations

The list of implementations formerly in this file is no-longer maintained here.

You may find a more comprehensive list at <https://tools.openapis.org>

Instructions on listing your projects are contained in <https://github.com/OAI/Tooling#how-can-you-help>

These tools are not endorsed by the OAI.


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright The Linux Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: MAINTAINERS.md
================================================
# OpenAPI Initiative Technical Steering Committee Members

## Active

* Jeremy Whitlock [@whitlockjc](https://github.com/whitlockjc)
* Marsh Gardiner [@earth2marsh](https://github.com/earth2marsh)
* Lorna Mitchell [@lornajane](https://github.com/lornajane)
* Mike Kistler [@mikekistler](https://github.com/mikekistler)
* Miguel Quintero [@miqui](https://github.com/miqui)
* Ralf Handl [@ralfhandl](https://github.com/ralfhandl)

## Emeritus

* Ron Ratovsky [@webron](https://github.com/webron)
* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)
* Mike Ralphson [@MikeRalphson](https://github.com/MikeRalphson)
* Uri Sarid [@usarid](https://github.com/usarid)
* Jason Harmon [@jharmn](https://github.com/jharmn)
* Tony Tam [@fehguy](https://github.com/fehguy)


================================================
FILE: README.md
================================================
# The OpenAPI Specification

![Build Status](https://github.com/OAI/OpenAPI-Specification/workflows/validate-markdown/badge.svg) [![Issue triagers](https://www.codetriage.com/oai/openapi-specification/badges/users.svg)](https://www.codetriage.com/oai/openapi-specification)

![OpenAPI logo](https://avatars3.githubusercontent.com/u/16343502?v=3&s=200)


The OpenAPI Specification is a community-driven open specification within the [OpenAPI Initiative](https://www.openapis.org/), a Linux Foundation Collaborative Project.

The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs. This allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenAPI, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interface descriptions have done for lower-level programming, the OpenAPI Specification removes guesswork in calling a service.

Use cases for machine-readable API definition documents include, but are not limited to: interactive documentation; code generation for documentation, clients, and servers; and automation of test cases. OpenAPI documents describe API services and are represented in YAML or JSON formats. These documents may be produced and served statically or generated dynamically from an application.

The OpenAPI Specification does not require rewriting existing APIs. It does not require binding any software to a service – the described service may not even be owned by the creator of its description. It does, however, require that the service's capabilities be described in the structure of the OpenAPI Specification. Not all services can be described by OpenAPI – this specification is not intended to cover every possible style of HTTP APIs, but does include support for [REST APIs](https://en.wikipedia.org/wiki/Representational_state_transfer). The OpenAPI Specification does not mandate a specific development process such as design-first or code-first. It does facilitate either technique by establishing clear interactions with an HTTP API.

This GitHub project is the starting point for OpenAPI. Here you will find the information you need about the OpenAPI Specification, simple examples of what it looks like, and some general information regarding the project.

## Versions

This repository contains [the Markdown sources](versions) for [all published OpenAPI Specification versions](https://spec.openapis.org/). For release notes and release candidate versions, refer to the [releases page](https://github.com/OAI/OpenAPI-Specification/releases).

## See It in Action

If you just want to see it work, check out the [list of current examples](https://learn.openapis.org/examples/).

## Tools and Libraries

Looking to see how you can create your own OpenAPI definition, present it, or otherwise use it? Check out the growing
[list of implementations](IMPLEMENTATIONS.md).

## Participation

The current process for developing the OpenAPI Specification is described in
the [Contributing Guidelines](CONTRIBUTING.md).

Developing the next version of the OpenAPI Specification is guided by the [Technical Steering Committee (TSC)](MAINTAINERS.md). This group of committers bring their API expertise, incorporate feedback from the community, and expand the group of committers as appropriate. All development activity on the future specification will be performed as features and merged into this branch. Upon release of the future specification, this branch will be merged to `main`.

The TSC holds weekly web conferences to review open pull requests and discuss open issues related to the evolving OpenAPI Specification. Participation in weekly calls and scheduled working sessions is open to the community. You can view the entire OpenAPI [technical meeting calendar](https://calendar.google.com/calendar/u/0/embed?src=c_fue82vsncog6ahhjvuokjo8qsk@group.calendar.google.com) online.

The OpenAPI Initiative encourages participation from individuals and companies alike. If you want to participate in the evolution of the OpenAPI Specification, consider taking the following actions:

* Review the specification [markdown sources](versions) and [authoritative _source-of-truth_ HTML renderings](https://spec.openapis.org/), including full credits and citations.
* Review the [contributing](CONTRIBUTING.md) process so you understand how the spec is evolving.
* Check the [discussions](https://github.com/OAI/OpenAPI-Specification/discussions), [issues](https://github.com/OAI/OpenAPI-Specification/issues) and [pull requests](https://github.com/OAI/OpenAPI-Specification/pulls) to see if someone has already documented your idea or feedback on the specification. You can follow an existing conversation by subscribing to the existing issue or PR.
* Subscribe to an open issue a day (or a week) in your inbox via [CodeTriage.com](https://www.codetriage.com/oai/openapi-specification).
* Create a discussion to describe a new concern, ideally with clear explanations of related use cases.

Not all feedback can be accommodated, and there may be solid arguments for or against a change being appropriate for the specification.

## Licensing

See: [License (Apache-2.0)](https://github.com/OAI/OpenAPI-Specification/blob/main/LICENSE)




================================================
FILE: SECURITY_CONSIDERATIONS.md
================================================
# Security Considerations

## OpenAPI Document Formats

OpenAPI documents use JSON, YAML, and JSON Schema, and therefore share their security considerations:

- [JSON](https://www.iana.org/assignments/media-types/application/json)
- [YAML](https://www.iana.org/assignments/media-types/application/yaml)
- [JSON Schema Core](https://json-schema.org/draft/2020-12/json-schema-core#section-13)
- [JSON Schema Validation](https://json-schema.org/draft/2020-12/json-schema-validation#name-security-considerations)

## Tooling and Usage Scenarios

In addition, OpenAPI documents are processed by a wide variety of tooling for numerous different purposes, such as client code generation, documentation generation, server side routing, and API testing. OpenAPI document authors must consider the risks of the scenarios where the OpenAPI document may be used.

## Security Schemes

An OpenAPI document describes the security schemes used to protect the resources it defines. The security schemes available offer varying degrees of protection. Factors such as the sensitivity of the data and the potential impact of a security breach should guide the selection of security schemes for the API resources. Some security schemes, such as basic auth and OAuth Implicit flow, are supported for compatibility with existing APIs. However, their inclusion in OpenAPI does not constitute an endorsement of their use, particularly for highly sensitive data or operations.

## Handling External Resources

OpenAPI documents may contain references to external resources that may be dereferenced automatically by consuming tools. External resources may be hosted on different domains that may be untrusted. References in an OpenAPI document, or across OpenAPI documents may cause a cycle. Tooling must detect and handle cycles to prevent resource exhaustion.

## Markdown and HTML Sanitization

Certain properties allow the use of Markdown which can contain HTML including script. It is the responsibility of tooling to appropriately sanitize the Markdown.


================================================
FILE: SPECIAL_INTEREST_GROUPS.md
================================================
# OpenAPI Special Interest Groups (SIGs)

OpenAPI Special Interest Groups, or "SIGs", are the OpenAPI Initiative's way of focusing work in particular areas. SIGs may start with just a Slack channel to gauge interest. SIGs with enough traction to produce work may have their own GitHub repositories and regular Zoom calls, and ultimately produce work that becomes part of, or a companion to, the OpenAPI Specification.

See the [OAS community repository](https://github.com/OAI/community/blob/main/SPECIAL_INTEREST_GROUPS.md) for a complete list of SIGs, and for more information about forming a SIG.


================================================
FILE: TOB.md
================================================
# Technical Oversight Board ("TOB")

## Description

> The TOB is responsible for managing conflicts, violations of procedures or guidelines or other issues that cannot be resolved in the TSC for the OAS. For further details please consult the OpenAPI Project Charter.

## TSC Elected - terms through May 2023

Isabelle Mauny @isamauny

Uri Sarid @usarid

Marsh Gardiner @earth2marsh

Ron Ratovsky @webron

## BGB Elected - terms through May 2022

Darrel Miller @darrelmiller

Jerome Louvel @jlouvel

Jeremy Whitlock @whitlockjc


================================================
FILE: _archive_/README.md
================================================
# Archive

This folder contains files that are no longer actively maintained.


================================================
FILE: _archive_/schemas/README.md
================================================
# Archive of outdated JSON Schema Files

> [!TIP]
> JSON Schema files for validating OpenAPI descriptions using current OpenAPI versions are available on https://spec.openapis.org/#openapi-specification-schemas.
>
> These schema files are maintained in the `src/schemas` folder of the corresponding `vX.Y-dev` branch in this repository.

> [!CAUTION]
> Schema files in this folder are not maintained any more and are not intended for productive use.


================================================
FILE: _archive_/schemas/v1.2/README.md
================================================
# Swagger Specification JSON Schemas

The work on the JSON Schema for the Swagger Specification was donated to the community by [Francis Galiegue](https://github.com/fge)!

Keep in mind that due to some JSON Schema limitations, not all constraints can be described. The missing constraints will be listed here in the future.


================================================
FILE: _archive_/schemas/v1.2/apiDeclaration.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/apiDeclaration.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "swaggerVersion", "basePath", "apis" ],
    "properties": {
        "swaggerVersion": { "enum": [ "1.2" ] },
        "apiVersion": { "type": "string" },
        "basePath": {
            "type": "string",
            "format": "uri",
            "pattern": "^https?://"
        },
        "resourcePath": {
            "type": "string",
            "format": "uri",
            "pattern": "^/"
        },
        "apis": {
            "type": "array",
            "items": { "$ref": "#/definitions/apiObject" }
        },
        "models": {
            "type": "object",
            "additionalProperties": {
                "$ref": "modelsObject.json#"
            }
        },
        "produces": { "$ref": "#/definitions/mimeTypeArray" },
        "consumes": { "$ref": "#/definitions/mimeTypeArray" },
        "authorizations": { "$ref": "authorizationObject.json#" }
    },
    "additionalProperties": false,
    "definitions": {
        "apiObject": {
            "type": "object",
            "required": [ "path", "operations" ],
            "properties": {
                "path": {
                    "type": "string",
                    "format": "uri-template",
                    "pattern": "^/"
                },
                "description": { "type": "string" },
                "operations": {
                    "type": "array",
                    "items": { "$ref": "operationObject.json#" }
                }
            },
            "additionalProperties": false
        },
        "mimeTypeArray": {
            "type": "array",
            "items": {
                "type": "string",
                "format": "mime-type"
            },
            "uniqueItems": true
        }
    }
}


================================================
FILE: _archive_/schemas/v1.2/authorizationObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/authorizationObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": {
        "oneOf": [
            {
                "$ref": "#/definitions/basicAuth"
            },
            {
                "$ref": "#/definitions/apiKey"
            },
            {
                "$ref": "#/definitions/oauth2"
            }
        ]
    },
    "definitions": {
        "basicAuth": {
            "required": [ "type" ],
            "properties": {
                "type": { "enum": [ "basicAuth" ] }
            },
            "additionalProperties": false
        },
        "apiKey": {
            "required": [ "type", "passAs", "keyname" ],
            "properties": {
                "type": { "enum": [ "apiKey" ] },
                "passAs": { "enum": [ "header", "query" ] },
                "keyname": { "type": "string" }
            },
            "additionalProperties": false
        },
        "oauth2": {
            "type": "object",
            "required": [ "type", "grantTypes" ],
            "properties": {
                "type": { "enum": [ "oauth2" ] },
                "scopes": {
                    "type": "array",
                    "items": { "$ref": "#/definitions/oauth2Scope" }
                },
                "grantTypes": { "$ref": "oauth2GrantType.json#" }
            },
            "additionalProperties": false
        },
        "oauth2Scope": {
            "type": "object",
            "required": [ "scope" ],
            "properties": {
                "scope": { "type": "string" },
                "description": { "type": "string" }
            },
            "additionalProperties": false
        }
    }
}



================================================
FILE: _archive_/schemas/v1.2/dataType.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/dataType.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Data type as described by the specification (version 1.2)",
    "type": "object",
    "oneOf": [
        { "$ref": "#/definitions/refType" },
        { "$ref": "#/definitions/voidType" },
        { "$ref": "#/definitions/primitiveType" },
        { "$ref": "#/definitions/modelType" },
        { "$ref": "#/definitions/arrayType" }
    ],
    "definitions": {
        "refType": {
            "required": [ "$ref" ],
            "properties": {
                "$ref": { "type": "string" }
            },
            "additionalProperties": false
        },
        "voidType": {
            "enum": [ { "type": "void" } ]
        },
        "modelType": {
            "required": [ "type" ],
            "properties": {
                "type": {
                    "type": "string",
                    "not": {
                        "enum": [ "boolean", "integer", "number", "string", "array" ]
                    }
                }
            },
            "additionalProperties": false
        },
        "primitiveType": {
            "required": [ "type" ],
            "properties": {
                "type": {
                    "enum": [ "boolean", "integer", "number", "string" ]
                },
                "format": { "type": "string" },
                "defaultValue": {
                    "not": { "type": [ "array", "object", "null" ] }
                },
                "enum": {
                    "type": "array",
                    "items": { "type": "string" },
                    "minItems": 1,
                    "uniqueItems": true
                },
                "minimum": { "type": "string" },
                "maximum": { "type": "string" }
            },
            "additionalProperties": false,
            "dependencies": {
                "format": {
                    "oneOf": [
                        {
                            "properties": {
                                "type": { "enum": [ "integer" ] },
                                "format": { "enum": [ "int32", "int64" ] }
                            }
                        },
                        {
                            "properties": {
                                "type": { "enum": [ "number" ] },
                                "format": { "enum": [ "float", "double" ] }
                            }
                        },
                        {
                            "properties": {
                                "type": { "enum": [ "string" ] },
                                "format": {
                                    "enum": [ "byte", "date", "date-time" ]
                                }
                            }
                        }
                    ]
                },
                "enum": {
                    "properties": {
                        "type": { "enum": [ "string" ] }
                    }
                },
                "minimum": {
                    "properties": {
                        "type": { "enum": [ "integer", "number" ] }
                    }
                },
                "maximum": {
                    "properties": {
                        "type": { "enum": [ "integer", "number" ] }
                    }
                }
            }
        },
        "arrayType": {
            "required": [ "type", "items" ],
            "properties": {
                "type": { "enum": [ "array" ] },
                "items": {
                    "type": "array",
                    "items": { "$ref": "#/definitions/itemsObject" }
                },
                "uniqueItems": { "type": "boolean" }
            },
            "additionalProperties": false
        },
        "itemsObject": {
            "oneOf": [
                {
                    "$ref": "#/definitions/refType"
                },
                {
                    "allOf": [
                        {
                            "$ref": "#/definitions/primitiveType"
                        },
                        {
                            "properties": {
                                "type": {},
                                "format": {}
                            },
                            "additionalProperties": false
                        }
                    ]
                }
            ]
        }
    }
}

================================================
FILE: _archive_/schemas/v1.2/dataTypeBase.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/dataTypeBase.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Data type fields (section 4.3.3)",
    "type": "object",
    "oneOf": [
        { "required": [ "type" ] },
        { "required": [ "$ref" ] }
    ],
    "properties": {
        "type": { "type": "string" },
        "$ref": { "type": "string" },
        "format": { "type": "string" },
        "defaultValue": {
            "not": { "type": [ "array", "object", "null" ] }
        },
        "enum": {
            "type": "array",
            "items": { "type": "string" },
            "uniqueItems": true,
            "minItems": 1
        },
        "minimum": { "type": "string" },
        "maximum": { "type": "string" },
        "items": { "$ref": "#/definitions/itemsObject" },
        "uniqueItems": { "type": "boolean" }
    },
    "dependencies": {
        "format": {
            "oneOf": [
                {
                    "properties": {
                        "type": { "enum": [ "integer" ] },
                        "format": { "enum": [ "int32", "int64" ] }
                    }
                },
                {
                    "properties": {
                        "type": { "enum": [ "number" ] },
                        "format": { "enum": [ "float", "double" ] }
                    }
                },
                {
                    "properties": {
                        "type": { "enum": [ "string" ] },
                        "format": {
                            "enum": [ "byte", "date", "date-time" ]
                        }
                    }
                }
            ]
        }
    },
    "definitions": {
        "itemsObject": {
            "oneOf": [
                {
                    "type": "object",
                    "required": [ "$ref" ],
                    "properties": {
                        "$ref": { "type": "string" }
                    },
                    "additionalProperties": false
                },
                {
                    "allOf": [
                        { "$ref": "#" },
                        {
                            "required": [ "type" ],
                            "properties": {
                                "type": {},
                                "format": {}
                            },
                            "additionalProperties": false
                        }
                    ]
                }
            ]
        }
    }
}


================================================
FILE: _archive_/schemas/v1.2/infoObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/infoObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "info object (section 5.1.3)",
    "type": "object",
    "required": [ "title", "description" ],
    "properties": {
        "title": { "type": "string" },
        "description": { "type": "string" },
        "termsOfServiceUrl": { "type": "string", "format": "uri" },
        "contact": { "type": "string", "format": "email" },
        "license": { "type": "string" },
        "licenseUrl": { "type": "string", "format": "uri" }
    },
    "additionalProperties": false
}

================================================
FILE: _archive_/schemas/v1.2/modelsObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/modelsObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "id", "properties" ],
    "properties": {
        "id": { "type": "string" },
        "description": { "type": "string" },
        "properties": {
            "type": "object",
            "additionalProperties": { "$ref": "#/definitions/propertyObject" }
        },
        "subTypes": {
            "type": "array",
            "items": { "type": "string" },
            "uniqueItems": true
        },
        "discriminator": { "type": "string" }
    },
    "dependencies": {
        "subTypes": [ "discriminator" ]
    },
    "definitions": {
        "propertyObject": {
            "allOf": [
                {
                    "not": { "$ref": "#" }
                },
                {
                    "$ref": "dataTypeBase.json#"
                }
            ]
        }
    }
}



================================================
FILE: _archive_/schemas/v1.2/oauth2GrantType.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/oauth2GrantType.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "minProperties": 1,
    "properties": {
        "implicit": { "$ref": "#/definitions/implicit" },
        "authorization_code": { "$ref": "#/definitions/authorizationCode" }
    },
    "definitions": {
        "implicit": {
            "type": "object",
            "required": [ "loginEndpoint" ],
            "properties": {
                "loginEndpoint": { "$ref": "#/definitions/loginEndpoint" },
                "tokenName": { "type": "string" }
            },
            "additionalProperties": false
        },
        "authorizationCode": {
            "type": "object",
            "required": [ "tokenEndpoint", "tokenRequestEndpoint" ],
            "properties": {
                "tokenEndpoint": { "$ref": "#/definitions/tokenEndpoint" },
                "tokenRequestEndpoint": { "$ref": "#/definitions/tokenRequestEndpoint" }
            },
            "additionalProperties": false
        },
        "loginEndpoint": {
            "type": "object",
            "required": [ "url" ],
            "properties": {
                "url": { "type": "string", "format": "uri" }
            },
            "additionalProperties": false
        },
        "tokenEndpoint": {
            "type": "object",
            "required": [ "url" ],
            "properties": {
                "url": { "type": "string", "format": "uri" },
                "tokenName": { "type": "string" }
            },
            "additionalProperties": false
        },
        "tokenRequestEndpoint": {
            "type": "object",
            "required": [ "url" ],
            "properties": {
                "url": { "type": "string", "format": "uri" },
                "clientIdName": { "type": "string" },
                "clientSecretName": { "type": "string" }
            },
            "additionalProperties": false
        }
    }
}

================================================
FILE: _archive_/schemas/v1.2/operationObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/operationObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "allOf": [
        { "$ref": "dataTypeBase.json#" },
        {
            "required": [ "method", "nickname", "parameters" ],
            "properties": {
                "method": { "enum": [ "GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS" ] },
                "summary": { "type": "string" },
                "notes": { "type": "string" },
                "nickname": {
                    "type": "string",
                    "pattern": "^[a-zA-Z0-9_]+$"
                },
                "authorizations": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "array",
                        "items": {
                            "$ref": "authorizationObject.json#/definitions/oauth2Scope"
                        }
                    }
                },
                "parameters": {
                    "type": "array",
                    "items": { "$ref": "parameterObject.json#" }
                },
                "responseMessages": {
                    "type": "array",
                    "items": { "$ref": "#/definitions/responseMessageObject"}
                },
                "produces": { "$ref": "#/definitions/mimeTypeArray" },
                "consumes": { "$ref": "#/definitions/mimeTypeArray" },
                "deprecated": { "enum": [ "true", "false" ] }
            }
        }
    ],
    "definitions": {
        "responseMessageObject": {
            "type": "object",
            "required": [ "code", "message" ],
            "properties": {
                "code": { "$ref": "#/definitions/rfc2616section10" },
                "message": { "type": "string" },
                "responseModel": { "type": "string" }
            }
        },
        "rfc2616section10": {
            "type": "integer",
            "minimum": 100,
            "maximum": 600,
            "exclusiveMaximum": true
        },
        "mimeTypeArray": {
            "type": "array",
            "items": {
                "type": "string",
                "format": "mime-type"
            },
            "uniqueItems": true
        }
    }
}


================================================
FILE: _archive_/schemas/v1.2/parameterObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/parameterObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "allOf": [
        { "$ref": "dataTypeBase.json#" },
        {
            "required": [ "paramType", "name" ],
            "properties": {
                "paramType": {
                    "enum": [ "path", "query", "body", "header", "form" ]
                },
                "name": { "type": "string" },
                "description": { "type": "string" },
                "required": { "type": "boolean" },
                "allowMultiple": { "type": "boolean" }
            }
        },
        {
            "description": "type File requires special paramType and consumes",
            "oneOf": [
                {
                    "properties": {
                        "type": { "not": { "enum": [ "File" ] } }
                    }
                },
                {
                    "properties": {
                        "type": { "enum": [ "File" ] },
                        "paramType": { "enum": [ "form" ] },
                        "consumes": { "enum": [ "multipart/form-data" ] }
                    }
                }
            ]
        }
    ]
}


================================================
FILE: _archive_/schemas/v1.2/resourceListing.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/resourceListing.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "swaggerVersion", "apis" ],
    "properties": {
        "swaggerVersion": { "enum": [ "1.2" ] },
        "apis": {
            "type": "array",
            "items": { "$ref": "resourceObject.json#" }
        },
        "apiVersion": { "type": "string" },
        "info": { "$ref": "infoObject.json#" },
        "authorizations": { "$ref": "authorizationObject.json#" }
    }
}


================================================
FILE: _archive_/schemas/v1.2/resourceObject.json
================================================
{
    "id": "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/resourceObject.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [ "path" ],
    "properties": {
        "path": { "type": "string", "format": "uri" },
        "description": { "type": "string" }
    },
    "additionalProperties": false
}

================================================
FILE: _archive_/schemas/v2.0/README.md
================================================
# OpenAPI Specification v2.0 JSON Schema

This is the JSON Schema file for the OpenAPI Specification version 2.0. Download and install it via NPM.

## Install via NPM

```shell
npm install --save swagger-schema-official
```

## License

Apache-2.0


================================================
FILE: _archive_/schemas/v2.0/schema.json
================================================
{
  "title": "A JSON Schema for Swagger 2.0 API.",
  "id": "http://swagger.io/v2/schema.json#",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "required": [
    "swagger",
    "info",
    "paths"
  ],
  "additionalProperties": false,
  "patternProperties": {
    "^x-": {
      "$ref": "#/definitions/vendorExtension"
    }
  },
  "properties": {
    "swagger": {
      "type": "string",
      "enum": [
        "2.0"
      ],
      "description": "The Swagger version of this document."
    },
    "info": {
      "$ref": "#/definitions/info"
    },
    "host": {
      "type": "string",
      "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$",
      "description": "The host (name or ip) of the API. Example: 'swagger.io'"
    },
    "basePath": {
      "type": "string",
      "pattern": "^/",
      "description": "The base path to the API. Example: '/api'."
    },
    "schemes": {
      "$ref": "#/definitions/schemesList"
    },
    "consumes": {
      "description": "A list of MIME types accepted by the API.",
      "allOf": [
        {
          "$ref": "#/definitions/mediaTypeList"
        }
      ]
    },
    "produces": {
      "description": "A list of MIME types the API can produce.",
      "allOf": [
        {
          "$ref": "#/definitions/mediaTypeList"
        }
      ]
    },
    "paths": {
      "$ref": "#/definitions/paths"
    },
    "definitions": {
      "$ref": "#/definitions/definitions"
    },
    "parameters": {
      "$ref": "#/definitions/parameterDefinitions"
    },
    "responses": {
      "$ref": "#/definitions/responseDefinitions"
    },
    "security": {
      "$ref": "#/definitions/security"
    },
    "securityDefinitions": {
      "$ref": "#/definitions/securityDefinitions"
    },
    "tags": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/tag"
      },
      "uniqueItems": true
    },
    "externalDocs": {
      "$ref": "#/definitions/externalDocs"
    }
  },
  "definitions": {
    "info": {
      "type": "object",
      "description": "General information about the API.",
      "required": [
        "version",
        "title"
      ],
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "title": {
          "type": "string",
          "description": "A unique and precise title of the API."
        },
        "version": {
          "type": "string",
          "description": "A semantic version number of the API."
        },
        "description": {
          "type": "string",
          "description": "A longer description of the API. Should be different from the title.  GitHub Flavored Markdown is allowed."
        },
        "termsOfService": {
          "type": "string",
          "description": "The terms of service for the API."
        },
        "contact": {
          "$ref": "#/definitions/contact"
        },
        "license": {
          "$ref": "#/definitions/license"
        }
      }
    },
    "contact": {
      "type": "object",
      "description": "Contact information for the owners of the API.",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "description": "The identifying name of the contact person/organization."
        },
        "url": {
          "type": "string",
          "description": "The URL pointing to the contact information.",
          "format": "uri"
        },
        "email": {
          "type": "string",
          "description": "The email address of the contact person/organization.",
          "format": "email"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "license": {
      "type": "object",
      "required": [
        "name"
      ],
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the license type. It's encouraged to use an OSI compatible license."
        },
        "url": {
          "type": "string",
          "description": "The URL pointing to the license.",
          "format": "uri"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "paths": {
      "type": "object",
      "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.",
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        },
        "^/": {
          "$ref": "#/definitions/pathItem"
        }
      },
      "additionalProperties": false
    },
    "definitions": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/schema"
      },
      "description": "One or more JSON objects describing the schemas being consumed and produced by the API."
    },
    "parameterDefinitions": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/parameter"
      },
      "description": "One or more JSON representations for parameters"
    },
    "responseDefinitions": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/response"
      },
      "description": "One or more JSON representations for responses"
    },
    "externalDocs": {
      "type": "object",
      "additionalProperties": false,
      "description": "information about external documentation",
      "required": [
        "url"
      ],
      "properties": {
        "description": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "examples": {
      "type": "object",
      "additionalProperties": true
    },
    "mimeType": {
      "type": "string",
      "description": "The MIME type of the HTTP message."
    },
    "operation": {
      "type": "object",
      "required": [
        "responses"
      ],
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "uniqueItems": true
        },
        "summary": {
          "type": "string",
          "description": "A brief summary of the operation."
        },
        "description": {
          "type": "string",
          "description": "A longer description of the operation, GitHub Flavored Markdown is allowed."
        },
        "externalDocs": {
          "$ref": "#/definitions/externalDocs"
        },
        "operationId": {
          "type": "string",
          "description": "A unique identifier of the operation."
        },
        "produces": {
          "description": "A list of MIME types the API can produce.",
          "allOf": [
            {
              "$ref": "#/definitions/mediaTypeList"
            }
          ]
        },
        "consumes": {
          "description": "A list of MIME types the API can consume.",
          "allOf": [
            {
              "$ref": "#/definitions/mediaTypeList"
            }
          ]
        },
        "parameters": {
          "$ref": "#/definitions/parametersList"
        },
        "responses": {
          "$ref": "#/definitions/responses"
        },
        "schemes": {
          "$ref": "#/definitions/schemesList"
        },
        "deprecated": {
          "type": "boolean",
          "default": false
        },
        "security": {
          "$ref": "#/definitions/security"
        }
      }
    },
    "pathItem": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "$ref": {
          "type": "string"
        },
        "get": {
          "$ref": "#/definitions/operation"
        },
        "put": {
          "$ref": "#/definitions/operation"
        },
        "post": {
          "$ref": "#/definitions/operation"
        },
        "delete": {
          "$ref": "#/definitions/operation"
        },
        "options": {
          "$ref": "#/definitions/operation"
        },
        "head": {
          "$ref": "#/definitions/operation"
        },
        "patch": {
          "$ref": "#/definitions/operation"
        },
        "parameters": {
          "$ref": "#/definitions/parametersList"
        }
      }
    },
    "responses": {
      "type": "object",
      "description": "Response objects names can either be any valid HTTP status code or 'default'.",
      "minProperties": 1,
      "additionalProperties": false,
      "patternProperties": {
        "^([0-9]{3})$|^(default)$": {
          "$ref": "#/definitions/responseValue"
        },
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "not": {
        "type": "object",
        "additionalProperties": false,
        "patternProperties": {
          "^x-": {
            "$ref": "#/definitions/vendorExtension"
          }
        }
      }
    },
    "responseValue": {
      "oneOf": [
        {
          "$ref": "#/definitions/response"
        },
        {
          "$ref": "#/definitions/jsonReference"
        }
      ]
    },
    "response": {
      "type": "object",
      "required": [
        "description"
      ],
      "properties": {
        "description": {
          "type": "string"
        },
        "schema": {
          "oneOf": [
            {
              "$ref": "#/definitions/schema"
            },
            {
              "$ref": "#/definitions/fileSchema"
            }
          ]
        },
        "headers": {
          "$ref": "#/definitions/headers"
        },
        "examples": {
          "$ref": "#/definitions/examples"
        }
      },
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "headers": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/definitions/header"
      }
    },
    "header": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "integer",
            "boolean",
            "array"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormat"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "vendorExtension": {
      "description": "Any property starting with x- is valid.",
      "additionalProperties": true,
      "additionalItems": true
    },
    "bodyParameter": {
      "type": "object",
      "required": [
        "name",
        "in",
        "schema"
      ],
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "in": {
          "type": "string",
          "description": "Determines the location of the parameter.",
          "enum": [
            "body"
          ]
        },
        "required": {
          "type": "boolean",
          "description": "Determines whether or not this parameter is required or optional.",
          "default": false
        },
        "schema": {
          "$ref": "#/definitions/schema"
        }
      },
      "additionalProperties": false
    },
    "headerParameterSubSchema": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Determines whether or not this parameter is required or optional.",
          "default": false
        },
        "in": {
          "type": "string",
          "description": "Determines the location of the parameter.",
          "enum": [
            "header"
          ]
        },
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "boolean",
            "integer",
            "array"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormat"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        }
      }
    },
    "queryParameterSubSchema": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Determines whether or not this parameter is required or optional.",
          "default": false
        },
        "in": {
          "type": "string",
          "description": "Determines the location of the parameter.",
          "enum": [
            "query"
          ]
        },
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "allowEmptyValue": {
          "type": "boolean",
          "default": false,
          "description": "allows sending a parameter by name only or with an empty value."
        },
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "boolean",
            "integer",
            "array"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormatWithMulti"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        }
      }
    },
    "formDataParameterSubSchema": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "required": {
          "type": "boolean",
          "description": "Determines whether or not this parameter is required or optional.",
          "default": false
        },
        "in": {
          "type": "string",
          "description": "Determines the location of the parameter.",
          "enum": [
            "formData"
          ]
        },
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "allowEmptyValue": {
          "type": "boolean",
          "default": false,
          "description": "allows sending a parameter by name only or with an empty value."
        },
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "boolean",
            "integer",
            "array",
            "file"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormatWithMulti"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        }
      }
    },
    "pathParameterSubSchema": {
      "additionalProperties": false,
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "required": [
        "required"
      ],
      "properties": {
        "required": {
          "type": "boolean",
          "enum": [
            true
          ],
          "description": "Determines whether or not this parameter is required or optional."
        },
        "in": {
          "type": "string",
          "description": "Determines the location of the parameter.",
          "enum": [
            "path"
          ]
        },
        "description": {
          "type": "string",
          "description": "A brief description of the parameter. This could contain examples of use.  GitHub Flavored Markdown is allowed."
        },
        "name": {
          "type": "string",
          "description": "The name of the parameter."
        },
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "boolean",
            "integer",
            "array"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormat"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        }
      }
    },
    "nonBodyParameter": {
      "type": "object",
      "required": [
        "name",
        "in",
        "type"
      ],
      "oneOf": [
        {
          "$ref": "#/definitions/headerParameterSubSchema"
        },
        {
          "$ref": "#/definitions/formDataParameterSubSchema"
        },
        {
          "$ref": "#/definitions/queryParameterSubSchema"
        },
        {
          "$ref": "#/definitions/pathParameterSubSchema"
        }
      ]
    },
    "parameter": {
      "oneOf": [
        {
          "$ref": "#/definitions/bodyParameter"
        },
        {
          "$ref": "#/definitions/nonBodyParameter"
        }
      ]
    },
    "schema": {
      "type": "object",
      "description": "A deterministic version of a JSON Schema object.",
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "properties": {
        "$ref": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "title": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
        },
        "description": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
        },
        "default": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
        },
        "multipleOf": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
        },
        "maximum": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
        },
        "minLength": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
        },
        "pattern": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
        },
        "maxItems": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
        },
        "minItems": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
        },
        "uniqueItems": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
        },
        "maxProperties": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
        },
        "minProperties": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
        },
        "required": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
        },
        "enum": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
        },
        "additionalProperties": {
          "anyOf": [
            {
              "$ref": "#/definitions/schema"
            },
            {
              "type": "boolean"
            }
          ],
          "default": {}
        },
        "type": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/type"
        },
        "items": {
          "anyOf": [
            {
              "$ref": "#/definitions/schema"
            },
            {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#/definitions/schema"
              }
            }
          ],
          "default": {}
        },
        "allOf": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/schema"
          }
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/schema"
          },
          "default": {}
        },
        "discriminator": {
          "type": "string"
        },
        "readOnly": {
          "type": "boolean",
          "default": false
        },
        "xml": {
          "$ref": "#/definitions/xml"
        },
        "externalDocs": {
          "$ref": "#/definitions/externalDocs"
        },
        "example": {}
      },
      "additionalProperties": false
    },
    "fileSchema": {
      "type": "object",
      "description": "A deterministic version of a JSON Schema object.",
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      },
      "required": [
        "type"
      ],
      "properties": {
        "format": {
          "type": "string"
        },
        "title": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
        },
        "description": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
        },
        "default": {
          "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
        },
        "required": {
          "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
        },
        "type": {
          "type": "string",
          "enum": [
            "file"
          ]
        },
        "readOnly": {
          "type": "boolean",
          "default": false
        },
        "externalDocs": {
          "$ref": "#/definitions/externalDocs"
        },
        "example": {}
      },
      "additionalProperties": false
    },
    "primitivesItems": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "string",
            "number",
            "integer",
            "boolean",
            "array"
          ]
        },
        "format": {
          "type": "string"
        },
        "items": {
          "$ref": "#/definitions/primitivesItems"
        },
        "collectionFormat": {
          "$ref": "#/definitions/collectionFormat"
        },
        "default": {
          "$ref": "#/definitions/default"
        },
        "maximum": {
          "$ref": "#/definitions/maximum"
        },
        "exclusiveMaximum": {
          "$ref": "#/definitions/exclusiveMaximum"
        },
        "minimum": {
          "$ref": "#/definitions/minimum"
        },
        "exclusiveMinimum": {
          "$ref": "#/definitions/exclusiveMinimum"
        },
        "maxLength": {
          "$ref": "#/definitions/maxLength"
        },
        "minLength": {
          "$ref": "#/definitions/minLength"
        },
        "pattern": {
          "$ref": "#/definitions/pattern"
        },
        "maxItems": {
          "$ref": "#/definitions/maxItems"
        },
        "minItems": {
          "$ref": "#/definitions/minItems"
        },
        "uniqueItems": {
          "$ref": "#/definitions/uniqueItems"
        },
        "enum": {
          "$ref": "#/definitions/enum"
        },
        "multipleOf": {
          "$ref": "#/definitions/multipleOf"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "security": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/securityRequirement"
      },
      "uniqueItems": true
    },
    "securityRequirement": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "uniqueItems": true
      }
    },
    "xml": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "prefix": {
          "type": "string"
        },
        "attribute": {
          "type": "boolean",
          "default": false
        },
        "wrapped": {
          "type": "boolean",
          "default": false
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "tag": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "externalDocs": {
          "$ref": "#/definitions/externalDocs"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "securityDefinitions": {
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/definitions/basicAuthenticationSecurity"
          },
          {
            "$ref": "#/definitions/apiKeySecurity"
          },
          {
            "$ref": "#/definitions/oauth2ImplicitSecurity"
          },
          {
            "$ref": "#/definitions/oauth2PasswordSecurity"
          },
          {
            "$ref": "#/definitions/oauth2ApplicationSecurity"
          },
          {
            "$ref": "#/definitions/oauth2AccessCodeSecurity"
          }
        ]
      }
    },
    "basicAuthenticationSecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "basic"
          ]
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "apiKeySecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "name",
        "in"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "apiKey"
          ]
        },
        "name": {
          "type": "string"
        },
        "in": {
          "type": "string",
          "enum": [
            "header",
            "query"
          ]
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "oauth2ImplicitSecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "flow",
        "authorizationUrl"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2"
          ]
        },
        "flow": {
          "type": "string",
          "enum": [
            "implicit"
          ]
        },
        "scopes": {
          "$ref": "#/definitions/oauth2Scopes"
        },
        "authorizationUrl": {
          "type": "string",
          "format": "uri"
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "oauth2PasswordSecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "flow",
        "tokenUrl"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2"
          ]
        },
        "flow": {
          "type": "string",
          "enum": [
            "password"
          ]
        },
        "scopes": {
          "$ref": "#/definitions/oauth2Scopes"
        },
        "tokenUrl": {
          "type": "string",
          "format": "uri"
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "oauth2ApplicationSecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "flow",
        "tokenUrl"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2"
          ]
        },
        "flow": {
          "type": "string",
          "enum": [
            "application"
          ]
        },
        "scopes": {
          "$ref": "#/definitions/oauth2Scopes"
        },
        "tokenUrl": {
          "type": "string",
          "format": "uri"
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "oauth2AccessCodeSecurity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "flow",
        "authorizationUrl",
        "tokenUrl"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2"
          ]
        },
        "flow": {
          "type": "string",
          "enum": [
            "accessCode"
          ]
        },
        "scopes": {
          "$ref": "#/definitions/oauth2Scopes"
        },
        "authorizationUrl": {
          "type": "string",
          "format": "uri"
        },
        "tokenUrl": {
          "type": "string",
          "format": "uri"
        },
        "description": {
          "type": "string"
        }
      },
      "patternProperties": {
        "^x-": {
          "$ref": "#/definitions/vendorExtension"
        }
      }
    },
    "oauth2Scopes": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "mediaTypeList": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/mimeType"
      },
      "uniqueItems": true
    },
    "parametersList": {
      "type": "array",
      "description": "The parameters needed to send a valid API call.",
      "additionalItems": false,
      "items": {
        "oneOf": [
          {
            "$ref": "#/definitions/parameter"
          },
          {
            "$ref": "#/definitions/jsonReference"
          }
        ]
      },
      "uniqueItems": true
    },
    "schemesList": {
      "type": "array",
      "description": "The transfer protocol of the API.",
      "items": {
        "type": "string",
        "enum": [
          "http",
          "https",
          "ws",
          "wss"
        ]
      },
      "uniqueItems": true
    },
    "collectionFormat": {
      "type": "string",
      "enum": [
        "csv",
        "ssv",
        "tsv",
        "pipes"
      ],
      "default": "csv"
    },
    "collectionFormatWithMulti": {
      "type": "string",
      "enum": [
        "csv",
        "ssv",
        "tsv",
        "pipes",
        "multi"
      ],
      "default": "csv"
    },
    "title": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
    },
    "description": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
    },
    "default": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
    },
    "multipleOf": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
    },
    "maximum": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
    },
    "exclusiveMaximum": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
    },
    "minimum": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
    },
    "exclusiveMinimum": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
    },
    "maxLength": {
      "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
    },
    "minLength": {
      "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
    },
    "pattern": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
    },
    "maxItems": {
      "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
    },
    "minItems": {
      "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
    },
    "uniqueItems": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
    },
    "enum": {
      "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
    },
    "jsonReference": {
      "type": "object",
      "required": [
        "$ref"
      ],
      "additionalProperties": false,
      "properties": {
        "$ref": {
          "type": "string"
        }
      }
    }
  }
}

================================================
FILE: _archive_/schemas/v3.0/README.md
================================================
# OpenAPI 3.0.X JSON Schema

This directory contains the YAML source for generating the JSON Schema for validating OpenAPI definitions of versions 3.0.X, which is published on [https://spec.openapis.org](https://spec.openapis.org).

Due to limitations of GitHub pages, the schemas on the spec site are served with `Content-Type: application/octet-stream`, but should be interpreted as `application/schema+json`.

The source in this directory, which has `WORK-IN-PROGRESS` in its `id`, is _not intended for direct use_.

## Schema `id` dates

The published schemas on the spec site have an _iteration date_ in their `id`s.
This allows the schemas for a release line (in this case 3.0) to be updated independent of the spec patch release cycle.

The iteration version of the JSON Schema can be found in the `id` field.
For example, the value of `id: https://spec.openapis.org/oas/3.0/schema/2019-04-02` means this iteration was created on April 2nd, 2019.

We are [working on](https://github.com/OAI/OpenAPI-Specification/issues/4152) how to best provide programmatic access for determining the latest date for each schema.

## Improving the schema

As a reminder, the JSON Schema is not the source of truth for the Specification.
In cases of conflicts between the Specification itself and the JSON Schema, the Specification wins.
Also, some Specification constraints cannot be represented with the JSON Schema so it's highly recommended to employ other methods to ensure compliance.

The schema only validates the mandatory aspects of the OAS.
Validating requirements that are optional, or field usage that has undefined or ignored behavior are not within the scope of this schema.
Schemas to perform additional optional validation are [under consideration](https://github.com/OAI/OpenAPI-Specification/issues/4141).

Improvements can be submitted by opening a PR against the `main` branch.

Modify the `schema.yaml` file and add test cases for your changes.

The TSC will then:
- Run tests on the updated schema
- Update the iteration version
- Publish the new version

The [test suite](../../tests/v3.0) is part of this package.

```bash
npm install
npm test
```


================================================
FILE: _archive_/schemas/v3.0/pass/api-with-examples.yaml
================================================
openapi: "3.0.0"
info:
  title: Simple API overview
  version: 2.0.0
paths:
  /:
    get:
      operationId: listVersionsv2
      summary: List API versions
      responses:
        '200':
          description: |-
            200 response
          content:
            application/json:
              examples: 
                foo:
                  value:
                    {
                      "versions": [
                        {
                            "status": "CURRENT",
                            "updated": "2011-01-21T11:33:21Z",
                            "id": "v2.0",
                            "links": [
                                {
                                    "href": "http://127.0.0.1:8774/v2/",
                                    "rel": "self"
                                }
                            ]
                        },
                        {
                            "status": "EXPERIMENTAL",
                            "updated": "2013-07-23T11:33:21Z",
                            "id": "v3.0",
                            "links": [
                                {
                                    "href": "http://127.0.0.1:8774/v3/",
                                    "rel": "self"
                                }
                            ]
                        }
                      ]
                    }
        '300':
          description: |-
            300 response
          content:
            application/json: 
              examples: 
                foo:
                  value: |
                   {
                    "versions": [
                          {
                            "status": "CURRENT",
                            "updated": "2011-01-21T11:33:21Z",
                            "id": "v2.0",
                            "links": [
                                {
                                    "href": "http://127.0.0.1:8774/v2/",
                                    "rel": "self"
                                }
                            ]
                        },
                        {
                            "status": "EXPERIMENTAL",
                            "updated": "2013-07-23T11:33:21Z",
                            "id": "v3.0",
                            "links": [
                                {
                                    "href": "http://127.0.0.1:8774/v3/",
                                    "rel": "self"
                                }
                            ]
                        }
                    ]
                   }
  /v2:
    get:
      operationId: getVersionDetailsv2
      summary: Show API version details
      responses:
        '200':
          description: |-
            200 response
          content:
            application/json: 
              examples:
                foo:
                  value:
                    {
                      "version": {
                        "status": "CURRENT",
                        "updated": "2011-01-21T11:33:21Z",
                        "media-types": [
                          {
                              "base": "application/xml",
                              "type": "application/vnd.openstack.compute+xml;version=2"
                          },
                          {
                              "base": "application/json",
                              "type": "application/vnd.openstack.compute+json;version=2"
                          }
                        ],
                        "id": "v2.0",
                        "links": [
                          {
                              "href": "http://127.0.0.1:8774/v2/",
                              "rel": "self"
                          },
                          {
                              "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf",
                              "type": "application/pdf",
                              "rel": "describedby"
                          },
                          {
                              "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl",
                              "type": "application/vnd.sun.wadl+xml",
                              "rel": "describedby"
                          },
                          {
                            "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl",
                            "type": "application/vnd.sun.wadl+xml",
                            "rel": "describedby"
                          }
                        ]
                      }
                    }
        '203':
          description: |-
            203 response
          content:
            application/json: 
              examples:
                foo:
                  value:
                    {
                      "version": {
                        "status": "CURRENT",
                        "updated": "2011-01-21T11:33:21Z",
                        "media-types": [
                          {
                              "base": "application/xml",
                              "type": "application/vnd.openstack.compute+xml;version=2"
                          },
                          {
                              "base": "application/json",
                              "type": "application/vnd.openstack.compute+json;version=2"
                          }
                        ],
                        "id": "v2.0",
                        "links": [
                          {
                              "href": "http://23.253.228.211:8774/v2/",
                              "rel": "self"
                          },
                          {
                              "href": "http://docs.openstack.org/api/openstack-compute/2/os-compute-devguide-2.pdf",
                              "type": "application/pdf",
                              "rel": "describedby"
                          },
                          {
                              "href": "http://docs.openstack.org/api/openstack-compute/2/wadl/os-compute-2.wadl",
                              "type": "application/vnd.sun.wadl+xml",
                              "rel": "describedby"
                          }
                        ]
                      }
                    }


================================================
FILE: _archive_/schemas/v3.0/pass/callback-example.yaml
================================================
openapi: 3.0.0
info:
  title: Callback Example
  version: 1.0.0
paths:
  /streams:
    post:
      description: subscribes a client to receive out-of-band data
      parameters:
        - name: callbackUrl
          in: query
          required: true
          description: |
            the location where data will be sent.  Must be network accessible
            by the source server
          schema:
            type: string
            format: uri
            example: https://tonys-server.com
      responses:
        '201':
          description: subscription successfully created
          content:
            application/json:
              schema:
                description: subscription information
                required:
                  - subscriptionId
                properties:
                  subscriptionId:
                    description: this unique identifier allows management of the subscription
                    type: string
                    example: 2531329f-fb09-4ef7-887e-84e648214436
      callbacks:
        # the name `onData` is a convenience locator
        onData:
          # when data is sent, it will be sent to the `callbackUrl` provided
          # when making the subscription PLUS the suffix `/data`
          '{$request.query.callbackUrl}/data':
            post:
              requestBody:
                description: subscription payload
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        timestamp:
                          type: string
                          format: date-time
                        userData:
                          type: string
              responses:
                '202':
                  description: |
                    Your server implementation should return this HTTP status code
                    if the data was received successfully
                '204':
                  description: |
                    Your server should return this HTTP status code if no longer interested
                    in further updates


================================================
FILE: _archive_/schemas/v3.0/pass/link-example.yaml
================================================
openapi: 3.0.0
info: 
  title: Link Example
  version: 1.0.0
paths: 
  /2.0/users/{username}: 
    get: 
      operationId: getUserByName
      parameters: 
      - name: username
        in: path
        required: true
        schema:
          type: string
      responses: 
        '200':
          description: The User
          content:
            application/json:
              schema: 
                $ref: '#/components/schemas/user'
          links:
            userRepositories:
              $ref: '#/components/links/UserRepositories'
  /2.0/repositories/{username}:
    get:
      operationId: getRepositoriesByOwner
      parameters:
        - name: username
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: repositories owned by the supplied user
          content: 
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/repository'
          links:
            userRepository:
              $ref: '#/components/links/UserRepository'
  /2.0/repositories/{username}/{slug}: 
    get: 
      operationId: getRepository
      parameters: 
        - name: username
          in: path
          required: true
          schema:
            type: string
        - name: slug
          in: path
          required: true
          schema:
            type: string
      responses: 
        '200':
          description: The repository
          content:
              application/json: 
                schema: 
                  $ref: '#/components/schemas/repository'
          links:
            repositoryPullRequests:
              $ref: '#/components/links/RepositoryPullRequests'
  /2.0/repositories/{username}/{slug}/pullrequests: 
    get: 
      operationId: getPullRequestsByRepository
      parameters: 
      - name: username
        in: path
        required: true
        schema:
          type: string
      - name: slug
        in: path
        required: true
        schema:
          type: string
      - name: state
        in: query
        schema:
          type: string
          enum: 
            - open
            - merged
            - declined
      responses: 
        '200':
          description: an array of pull request objects
          content:
            application/json: 
              schema: 
                type: array
                items: 
                  $ref: '#/components/schemas/pullrequest'
  /2.0/repositories/{username}/{slug}/pullrequests/{pid}: 
    get: 
      operationId: getPullRequestsById
      parameters: 
      - name: username
        in: path
        required: true
        schema:
          type: string
      - name: slug
        in: path
        required: true
        schema:
          type: string
      - name: pid
        in: path
        required: true
        schema:
          type: string
      responses: 
        '200':
          description: a pull request object
          content:
            application/json: 
              schema: 
                $ref: '#/components/schemas/pullrequest'
          links:
            pullRequestMerge:
              $ref: '#/components/links/PullRequestMerge'
  /2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge: 
    post: 
      operationId: mergePullRequest
      parameters: 
      - name: username
        in: path
        required: true
        schema:
          type: string
      - name: slug
        in: path
        required: true
        schema:
          type: string
      - name: pid
        in: path
        required: true
        schema:
          type: string
      responses: 
        '204':
          description: the PR was successfully merged
components:
  links:
    UserRepositories:
      # returns array of '#/components/schemas/repository'
      operationId: getRepositoriesByOwner
      parameters:
        username: $response.body#/username
    UserRepository:
      # returns '#/components/schemas/repository'
      operationId: getRepository
      parameters:
        username: $response.body#/owner/username
        slug: $response.body#/slug
    RepositoryPullRequests:
      # returns '#/components/schemas/pullrequest'
      operationId: getPullRequestsByRepository
      parameters: 
          username: $response.body#/owner/username
          slug: $response.body#/slug
    PullRequestMerge:
      # executes /2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge
      operationId: mergePullRequest
      parameters:
        username: $response.body#/author/username
        slug: $response.body#/repository/slug
        pid: $response.body#/id
  schemas: 
    user: 
      type: object
      properties: 
        username: 
          type: string
        uuid: 
          type: string
    repository: 
      type: object
      properties: 
        slug: 
          type: string
        owner: 
          $ref: '#/components/schemas/user'
    pullrequest: 
      type: object
      properties: 
        id: 
          type: integer
        title: 
          type: string
        repository: 
          $ref: '#/components/schemas/repository'
        author: 
          $ref: '#/components/schemas/user'


================================================
FILE: _archive_/schemas/v3.0/pass/petstore-expanded.yaml
================================================
openapi: "3.0.0"
info:
  version: 1.0.0
  title: Swagger Petstore
  description: A sample API that uses a petstore as an example to demonstrate features in the OpenAPI 3.0 specification
  termsOfService: http://swagger.io/terms/
  contact:
    name: Swagger API Team
    email: apiteam@swagger.io
    url: http://swagger.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://petstore.swagger.io/v2
paths:
  /pets:
    get:
      description: |
        Returns all pets from the system that the user has access to
        Nam sed condimentum est. Maecenas tempor sagittis sapien, nec rhoncus sem sagittis sit amet. Aenean at gravida augue, ac iaculis sem. Curabitur odio lorem, ornare eget elementum nec, cursus id lectus. Duis mi turpis, pulvinar ac eros ac, tincidunt varius justo. In hac habitasse platea dictumst. Integer at adipiscing ante, a sagittis ligula. Aenean pharetra tempor ante molestie imperdiet. Vivamus id aliquam diam. Cras quis velit non tortor eleifend sagittis. Praesent at enim pharetra urna volutpat venenatis eget eget mauris. In eleifend fermentum facilisis. Praesent enim enim, gravida ac sodales sed, placerat id erat. Suspendisse lacus dolor, consectetur non augue vel, vehicula interdum libero. Morbi euismod sagittis libero sed lacinia.

        Sed tempus felis lobortis leo pulvinar rutrum. Nam mattis velit nisl, eu condimentum ligula luctus nec. Phasellus semper velit eget aliquet faucibus. In a mattis elit. Phasellus vel urna viverra, condimentum lorem id, rhoncus nibh. Ut pellentesque posuere elementum. Sed a varius odio. Morbi rhoncus ligula libero, vel eleifend nunc tristique vitae. Fusce et sem dui. Aenean nec scelerisque tortor. Fusce malesuada accumsan magna vel tempus. Quisque mollis felis eu dolor tristique, sit amet auctor felis gravida. Sed libero lorem, molestie sed nisl in, accumsan tempor nisi. Fusce sollicitudin massa ut lacinia mattis. Sed vel eleifend lorem. Pellentesque vitae felis pretium, pulvinar elit eu, euismod sapien.
      operationId: findPets
      parameters:
        - name: tags
          in: query
          description: tags to filter by
          required: false
          style: form
          schema:
            type: array
            items:
              type: string
        - name: limit
          in: query
          description: maximum number of results to return
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: pet response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      description: Creates a new pet in the store. Duplicates are allowed
      operationId: addPet
      requestBody:
        description: Pet to add to the store
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewPet'
      responses:
        '200':
          description: pet response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /pets/{id}:
    get:
      description: Returns a user based on a single ID, if the user does not have access to the pet
      operationId: find pet by id
      parameters:
        - name: id
          in: path
          description: ID of pet to fetch
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: pet response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pet'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      description: deletes a single pet based on the ID supplied
      operationId: deletePet
      parameters:
        - name: id
          in: path
          description: ID of pet to delete
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: pet deleted
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Pet:
      allOf:
        - $ref: '#/components/schemas/NewPet'
        - type: object
          required:
          - id
          properties:
            id:
              type: integer
              format: int64

    NewPet:
      type: object
      required:
        - name  
      properties:
        name:
          type: string
        tag:
          type: string    

    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string


================================================
FILE: _archive_/schemas/v3.0/pass/petstore.yaml
================================================
openapi: "3.0.0"
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
servers:
  - url: http://petstore.swagger.io/v1
paths:
  /pets:
    get:
      summary: List all pets
      operationId: listPets
      tags:
        - pets
      parameters:
        - name: limit
          in: query
          description: How many items to return at one time (max 100)
          required: false
          schema:
            type: integer
            maximum: 100
            format: int32
      responses:
        '200':
          description: A paged array of pets
          headers:
            x-next:
              description: A link to the next page of responses
              schema:
                type: string
          content:
            application/json:    
              schema:
                $ref: "#/components/schemas/Pets"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
    post:
      summary: Create a pet
      operationId: createPets
      tags:
        - pets
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Pet'
        required: true
      responses:
        '201':
          description: Null response
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /pets/{petId}:
    get:
      summary: Info for a specific pet
      operationId: showPetById
      tags:
        - pets
      parameters:
        - name: petId
          in: path
          required: true
          description: The id of the pet to retrieve
          schema:
            type: string
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
components:
  schemas:
    Pet:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string
    Pets:
      type: array
      maxItems: 100
      items:
        $ref: "#/components/schemas/Pet"
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string


================================================
FILE: _archive_/schemas/v3.0/pass/uspto.yaml
================================================
openapi: 3.0.1
servers:
  - url: '{scheme}://developer.uspto.gov/ds-api'
    variables:
      scheme:
        description: 'The Data Set API is accessible via https and http'
        enum:
          - 'https'
          - 'http'
        default: 'https'
info:
  description: >-
    The Data Set API (DSAPI) allows the public users to discover and search
    USPTO exported data sets. This is a generic API that allows USPTO users to
    make any CSV based data files searchable through API. With the help of GET
    call, it returns the list of data fields that are searchable. With the help
    of POST call, data can be fetched based on the filters on the field names.
    Please note that POST call is used to search the actual data. The reason for
    the POST call is that it allows users to specify any complex search criteria
    without worry about the GET size limitations as well as encoding of the
    input parameters.
  version: 1.0.0
  title: USPTO Data Set API
  contact:
    name: Open Data Portal
    url: 'https://developer.uspto.gov'
    email: developer@uspto.gov
tags:
  - name: metadata
    description: Find out about the data sets
  - name: search
    description: Search a data set
paths:
  /:
    get:
      tags:
        - metadata
      operationId: list-data-sets
      summary: List available data sets
      responses:
        '200':
          description: Returns a list of data sets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dataSetList'
              example:
                {
                  "total": 2,
                  "apis": [
                    {
                      "apiKey": "oa_citations",
                      "apiVersionNumber": "v1",
                      "apiUrl": "https://developer.uspto.gov/ds-api/oa_citations/v1/fields",
                      "apiDocumentationUrl": "https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json"
                    },
                    {
                      "apiKey": "cancer_moonshot",
                      "apiVersionNumber": "v1",
                      "apiUrl": "https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields",
                      "apiDocumentationUrl": "https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json"
                    }
                  ]
                }
  /{dataset}/{version}/fields:
    get:
      tags:
        - metadata
      summary: >-
        Provides the general information about the API and the list of fields
        that can be used to query the dataset.
      description: >-
        This GET API returns the list of all the searchable field names that are
        in the oa_citations. Please see the 'fields' attribute which returns an
        array of field names. Each field or a combination of fields can be
        searched using the syntax options shown below.
      operationId: list-searchable-fields
      parameters:
        - name: dataset
          in: path
          description: 'Name of the dataset.'
          required: true
          example: "oa_citations"
          schema:
            type: string
        - name: version
          in: path
          description: Version of the dataset.
          required: true
          example: "v1"
          schema:
            type: string
      responses:
        '200':
          description: >-
            The dataset API for the given version is found and it is accessible
            to consume.
          content:
            application/json:
              schema:
                type: string
        '404':
          description: >-
            The combination of dataset name and version is not found in the
            system or it is not published yet to be consumed by public.
          content:
            application/json:
              schema:
                type: string
  /{dataset}/{version}/records:
    post:
      tags:
        - search
      summary: >-
        Provides search capability for the data set with the given search
        criteria.
      description: >-
        This API is based on Solr/Lucene Search. The data is indexed using
        SOLR. This GET API returns the list of all the searchable field names
        that are in the Solr Index. Please see the 'fields' attribute which
        returns an array of field names. Each field or a combination of fields
        can be searched using the Solr/Lucene Syntax. Please refer
        https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for
        the query syntax. List of field names that are searchable can be
        determined using above GET api.
      operationId: perform-search
      parameters:
        - name: version
          in: path
          description: Version of the dataset.
          required: true
          schema:
            type: string
            default: v1
        - name: dataset
          in: path
          description: 'Name of the dataset. In this case, the default value is oa_citations'
          required: true
          schema:
            type: string
            default: oa_citations
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties:
                    type: object
        '404':
          description: No matching record found for the given criteria.
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                criteria:
                  description: >-
                    Uses Lucene Query Syntax in the format of
                    propertyName:value, propertyName:[num1 TO num2] and date
                    range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the
                    response please see the 'docs' element which has the list of
                    record objects. Each record structure would consist of all
                    the fields and their corresponding values.
                  type: string
                  default: '*:*'
                start:
                  description: Starting record number. Default value is 0.
                  type: integer
                  default: 0
                rows:
                  description: >-
                    Specify number of rows to be returned. If you run the search
                    with default values, in the response you will see 'numFound'
                    attribute which will tell the number of records available in
                    the dataset.
                  type: integer
                  default: 100
              required:
                - criteria
components:
  schemas:
    dataSetList:
      type: object
      properties:
        total:
          type: integer
        apis:
          type: array
          items:
            type: object
            properties:
              apiKey:
                type: string
                description: To be used as a dataset parameter value
              apiVersionNumber:
                type: string
                description: To be used as a version parameter value
              apiUrl:
                type: string
                format: uriref
                description: "The URL describing the dataset's fields"
              apiDocumentationUrl:
                type: string
                format: uriref
                description: A URL to the API console for each API


================================================
FILE: _archive_/schemas/v3.0/schema.test.mjs
================================================
import { readdirSync, readFileSync } from "node:fs";
import YAML from "yaml";
import { validate, setMetaSchemaOutputFormat } from "@hyperjump/json-schema/openapi-3-0";
import { BASIC } from "@hyperjump/json-schema/experimental";
import { describe, test, expect } from "vitest";

import contentTypeParser from "content-type";
import { addMediaTypePlugin } from "@hyperjump/browser";
import { buildSchemaDocument } from "@hyperjump/json-schema/experimental";

addMediaTypePlugin("application/schema+yaml", {
    parse: async (response) => {
      const contentType = contentTypeParser.parse(response.headers.get("content-type") ?? "");
      const contextDialectId = contentType.parameters.schema ?? contentType.parameters.profile;
  
      const foo = YAML.parse(await response.text());
      return buildSchemaDocument(foo, response.url, contextDialectId);
    },
    fileMatcher: (path) => path.endsWith(".yaml")
  });

const parseYamlFromFile = (filePath) => {
    const schemaYaml = readFileSync(filePath, "utf8");
    return YAML.parse(schemaYaml, { prettyErrors: true });
};

setMetaSchemaOutputFormat(BASIC);

const validateOpenApi = await validate("./_archive_/schemas/v3.0/schema.yaml");
const folder = './_archive_/schemas/v3.0/pass/';

describe("pass", async () => {
    readdirSync(folder, { withFileTypes: true })
        .filter((entry) => entry.isFile() && /\.yaml$/.test(entry.name))
        .forEach((entry) => {
            test(entry.name, () => {
                const instance = parseYamlFromFile(folder + entry.name);
                const output = validateOpenApi(instance, BASIC);
                expect(output.valid).to.equal(true);
            });
        });
});


================================================
FILE: _archive_/schemas/v3.0/schema.yaml
================================================
id: https://spec.openapis.org/oas/3.0/schema/WORK-IN-PROGRESS
$schema: http://json-schema.org/draft-04/schema#
description: The description of OpenAPI v3.0.x Documents
type: object
required:
  - openapi
  - info
  - paths
properties:
  openapi:
    type: string
    pattern: ^3\.0\.\d(-.+)?$
  info:
    $ref: '#/definitions/Info'
  externalDocs:
    $ref: '#/definitions/ExternalDocumentation'
  servers:
    type: array
    items:
      $ref: '#/definitions/Server'
  security:
    type: array
    items:
      $ref: '#/definitions/SecurityRequirement'
  tags:
    type: array
    items:
      $ref: '#/definitions/Tag'
    uniqueItems: true
  paths:
    $ref: '#/definitions/Paths'
  components:
    $ref: '#/definitions/Components'
patternProperties:
  '^x-': {}
additionalProperties: false
definitions:
  Reference:
    type: object
    required:
      - $ref
    patternProperties:
      '^\$ref$':
        type: string
        format: uri-reference
  Info:
    type: object
    required:
      - title
      - version
    properties:
      title:
        type: string
      description:
        type: string
      termsOfService:
        type: string
        format: uri-reference
      contact:
        $ref: '#/definitions/Contact'
      license:
        $ref: '#/definitions/License'
      version:
        type: string
    patternProperties:
      '^x-': {}
    additionalProperties: false


  Contact:
    type: object
    properties:
      name:
        type: string
      url:
        type: string
        format: uri-reference
      email:
        type: string
        format: email
    patternProperties:
      '^x-': {}
    additionalProperties: false

  License:
    type: object
    required:
      - name
    properties:
      name:
        type: string
      url:
        type: string
        format: uri-reference
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Server:
    type: object
    required:
      - url
    properties:
      url:
        type: string
      description:
        type: string
      variables:
        type: object
        additionalProperties:
          $ref: '#/definitions/ServerVariable'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  ServerVariable:
    type: object
    required:
      - default
    properties:
      enum:
        type: array
        items:
          type: string
      default:
        type: string
      description:
        type: string
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Components:
    type: object
    properties:
      schemas:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Schema'
              - $ref: '#/definitions/Reference'
      responses:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Response'
      parameters:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Parameter'
      examples:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Example'
      requestBodies:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/RequestBody'
      headers:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Header'
      securitySchemes:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/SecurityScheme'
      links:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Link'
      callbacks:
        type: object
        patternProperties:
          '^[a-zA-Z0-9\.\-_]+$':
            oneOf:
              - $ref: '#/definitions/Reference'
              - $ref: '#/definitions/Callback'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Schema:
    type: object
    properties:
      title:
        type: string
      multipleOf:
        type: number
        minimum: 0
        exclusiveMinimum: true
      maximum:
        type: number
      exclusiveMaximum:
        type: boolean
        default: false
      minimum:
        type: number
      exclusiveMinimum:
        type: boolean
        default: false
      maxLength:
        type: integer
        minimum: 0
      minLength:
        type: integer
        minimum: 0
        default: 0
      pattern:
        type: string
        format: regex
      maxItems:
        type: integer
        minimum: 0
      minItems:
        type: integer
        minimum: 0
        default: 0
      uniqueItems:
        type: boolean
        default: false
      maxProperties:
        type: integer
        minimum: 0
      minProperties:
        type: integer
        minimum: 0
        default: 0
      required:
        type: array
        items:
          type: string
        minItems: 1
        uniqueItems: true
      enum:
        type: array
        items: {}
        minItems: 1
        uniqueItems: false
      type:
        type: string
        enum:
          - array
          - boolean
          - integer
          - number
          - object
          - string
      not:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
      allOf:
        type: array
        items:
          oneOf:
            - $ref: '#/definitions/Schema'
            - $ref: '#/definitions/Reference'
      oneOf:
        type: array
        items:
          oneOf:
            - $ref: '#/definitions/Schema'
            - $ref: '#/definitions/Reference'
      anyOf:
        type: array
        items:
          oneOf:
            - $ref: '#/definitions/Schema'
            - $ref: '#/definitions/Reference'
      items:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
      properties:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Schema'
            - $ref: '#/definitions/Reference'
      additionalProperties:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
          - type: boolean
        default: true
      description:
        type: string
      format:
        type: string
      default: {}
      nullable:
        type: boolean
        default: false
      discriminator:
        $ref: '#/definitions/Discriminator'
      readOnly:
        type: boolean
        default: false
      writeOnly:
        type: boolean
        default: false
      example: {}
      externalDocs:
        $ref: '#/definitions/ExternalDocumentation'
      deprecated:
        type: boolean
        default: false
      xml:
        $ref: '#/definitions/XML'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Discriminator:
    type: object
    required:
      - propertyName
    properties:
      propertyName:
        type: string
      mapping:
        type: object
        additionalProperties:
          type: string

  XML:
    type: object
    properties:
      name:
        type: string
      namespace:
        type: string
        format: uri
      prefix:
        type: string
      attribute:
        type: boolean
        default: false
      wrapped:
        type: boolean
        default: false
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Response:
    type: object
    required:
      - description
    properties:
      description:
        type: string
      headers:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Header'
            - $ref: '#/definitions/Reference'
      content:
        type: object
        additionalProperties:
          $ref: '#/definitions/MediaType'
      links:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Link'
            - $ref: '#/definitions/Reference'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  MediaType:
    type: object
    properties:
      schema:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
      example: {}
      examples:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Example'
            - $ref: '#/definitions/Reference'
      encoding:
        type: object
        additionalProperties:
          $ref: '#/definitions/Encoding'
    patternProperties:
      '^x-': {}
    additionalProperties: false
    allOf:
      - $ref: '#/definitions/ExampleXORExamples'

  Example:
    type: object
    properties:
      summary:
        type: string
      description:
        type: string
      value: {}
      externalValue:
        type: string
        format: uri-reference
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Header:
    type: object
    properties:
      description:
        type: string
      required:
        type: boolean
        default: false
      deprecated:
        type: boolean
        default: false
      allowEmptyValue:
        type: boolean
        default: false
      style:
        type: string
        enum:
          - simple
        default: simple
      explode:
        type: boolean
      allowReserved:
        type: boolean
        default: false
      schema:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
      content:
        type: object
        additionalProperties:
          $ref: '#/definitions/MediaType'
        minProperties: 1
        maxProperties: 1
      example: {}
      examples:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Example'
            - $ref: '#/definitions/Reference'
    patternProperties:
      '^x-': {}
    additionalProperties: false
    allOf:
      - $ref: '#/definitions/ExampleXORExamples'
      - $ref: '#/definitions/SchemaXORContent'

  Paths:
    type: object
    patternProperties:
      '^\/':
        $ref: '#/definitions/PathItem'
      '^x-': {}
    additionalProperties: false

  PathItem:
    type: object
    properties:
      $ref:
        type: string
      summary:
        type: string
      description:
        type: string
      get:
        $ref: '#/definitions/Operation'
      put:
        $ref: '#/definitions/Operation'
      post:
        $ref: '#/definitions/Operation'
      delete:
        $ref: '#/definitions/Operation'
      options:
        $ref: '#/definitions/Operation'
      head:
        $ref: '#/definitions/Operation'
      patch:
        $ref: '#/definitions/Operation'
      trace:
        $ref: '#/definitions/Operation'
      servers:
        type: array
        items:
          $ref: '#/definitions/Server'
      parameters:
        type: array
        items:
          oneOf:
            - $ref: '#/definitions/Parameter'
            - $ref: '#/definitions/Reference'
        uniqueItems: true
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Operation:
    type: object
    required:
      - responses
    properties:
      tags:
        type: array
        items:
          type: string
      summary:
        type: string
      description:
        type: string
      externalDocs:
        $ref: '#/definitions/ExternalDocumentation'
      operationId:
        type: string
      parameters:
        type: array
        items:
          oneOf:
            - $ref: '#/definitions/Parameter'
            - $ref: '#/definitions/Reference'
        uniqueItems: true
      requestBody:
        oneOf:
          - $ref: '#/definitions/RequestBody'
          - $ref: '#/definitions/Reference'
      responses:
        $ref: '#/definitions/Responses'
      callbacks:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Callback'
            - $ref: '#/definitions/Reference'
      deprecated:
        type: boolean
        default: false
      security:
        type: array
        items:
          $ref: '#/definitions/SecurityRequirement'
      servers:
        type: array
        items:
          $ref: '#/definitions/Server'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  Responses:
    type: object
    properties:
      default:
        oneOf:
          - $ref: '#/definitions/Response'
          - $ref: '#/definitions/Reference'
    patternProperties:
      '^[1-5](?:\d{2}|XX)$':
        oneOf:
          - $ref: '#/definitions/Response'
          - $ref: '#/definitions/Reference'
      '^x-': {}
    minProperties: 1
    additionalProperties: false


  SecurityRequirement:
    type: object
    additionalProperties:
      type: array
      items:
        type: string

  Tag:
    type: object
    required:
      - name
    properties:
      name:
        type: string
      description:
        type: string
      externalDocs:
        $ref: '#/definitions/ExternalDocumentation'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  ExternalDocumentation:
    type: object
    required:
      - url
    properties:
      description:
        type: string
      url:
        type: string
        format: uri-reference
    patternProperties:
      '^x-': {}
    additionalProperties: false

  ExampleXORExamples:
    description: Example and examples are mutually exclusive
    not:
      required: [example, examples]

  SchemaXORContent:
    description: Schema and content are mutually exclusive, at least one is required
    not:
      required: [schema, content]
    oneOf:
      - required: [schema]
      - required: [content]
        description: Some properties are not allowed if content is present
        allOf:
          - not:
              required: [style]
          - not:
              required: [explode]
          - not:
              required: [allowReserved]
          - not:
              required: [example]
          - not:
              required: [examples]

  Parameter:
    type: object
    properties:
      name:
        type: string
      in:
        type: string
      description:
        type: string
      required:
        type: boolean
        default: false
      deprecated:
        type: boolean
        default: false
      allowEmptyValue:
        type: boolean
        default: false
      style:
        type: string
      explode:
        type: boolean
      allowReserved:
        type: boolean
        default: false
      schema:
        oneOf:
          - $ref: '#/definitions/Schema'
          - $ref: '#/definitions/Reference'
      content:
        type: object
        additionalProperties:
          $ref: '#/definitions/MediaType'
        minProperties: 1
        maxProperties: 1
      example: {}
      examples:
        type: object
        additionalProperties:
          oneOf:
            - $ref: '#/definitions/Example'
            - $ref: '#/definitions/Reference'
    patternProperties:
      '^x-': {}
    additionalProperties: false
    required:
      - name
      - in
    allOf:
      - $ref: '#/definitions/ExampleXORExamples'
      - $ref: '#/definitions/SchemaXORContent'
    oneOf:
      - $ref: '#/definitions/PathParameter'
      - $ref: '#/definitions/QueryParameter'
      - $ref: '#/definitions/HeaderParameter'
      - $ref: '#/definitions/CookieParameter'

  PathParameter:
    description: Parameter in path
    required:
      - required
    properties:
      in:
        enum: [path]
      style:
        enum: [matrix, label, simple]
        default: simple
      required:
        enum: [true]

  QueryParameter:
    description: Parameter in query
    properties:
      in:
        enum: [query]
      style:
        enum: [form, spaceDelimited, pipeDelimited, deepObject]
        default: form

  HeaderParameter:
    description: Parameter in header
    properties:
      in:
        enum: [header]
      style:
        enum: [simple]
        default: simple

  CookieParameter:
    description: Parameter in cookie
    properties:
      in:
        enum: [cookie]
      style:
        enum: [form]
        default: form

  RequestBody:
    type: object
    required:
      - content
    properties:
      description:
        type: string
      content:
        type: object
        additionalProperties:
          $ref: '#/definitions/MediaType'
      required:
        type: boolean
        default: false
    patternProperties:
      '^x-': {}
    additionalProperties: false

  SecurityScheme:
    oneOf:
      - $ref: '#/definitions/APIKeySecurityScheme'
      - $ref: '#/definitions/HTTPSecurityScheme'
      - $ref: '#/definitions/OAuth2SecurityScheme'
      - $ref: '#/definitions/OpenIdConnectSecurityScheme'

  APIKeySecurityScheme:
    type: object
    required:
      - type
      - name
      - in
    properties:
      type:
        type: string
        enum:
          - apiKey
      name:
        type: string
      in:
        type: string
        enum:
          - header
          - query
          - cookie
      description:
        type: string
    patternProperties:
      '^x-': {}
    additionalProperties: false

  HTTPSecurityScheme:
    type: object
    required:
      - scheme
      - type
    properties:
      scheme:
        type: string
      bearerFormat:
        type: string
      description:
        type: string
      type:
        type: string
        enum:
          - http
    patternProperties:
      '^x-': {}
    additionalProperties: false
    oneOf:
      - description: Bearer
        properties:
          scheme:
            type: string
            pattern: ^[Bb][Ee][Aa][Rr][Ee][Rr]$

      - description: Non Bearer
        not:
          required: [bearerFormat]
        properties:
          scheme:
            not:
              type: string
              pattern: ^[Bb][Ee][Aa][Rr][Ee][Rr]$

  OAuth2SecurityScheme:
    type: object
    required:
      - type
      - flows
    properties:
      type:
        type: string
        enum:
          - oauth2
      flows:
        $ref: '#/definitions/OAuthFlows'
      description:
        type: string
    patternProperties:
      '^x-': {}
    additionalProperties: false

  OpenIdConnectSecurityScheme:
    type: object
    required:
      - type
      - openIdConnectUrl
    properties:
      type:
        type: string
        enum:
          - openIdConnect
      openIdConnectUrl:
        type: string
        format: uri-reference
      description:
        type: string
    patternProperties:
      '^x-': {}
    additionalProperties: false

  OAuthFlows:
    type: object
    properties:
      implicit:
        $ref: '#/definitions/ImplicitOAuthFlow'
      password:
        $ref: '#/definitions/PasswordOAuthFlow'
      clientCredentials:
        $ref: '#/definitions/ClientCredentialsFlow'
      authorizationCode:
        $ref: '#/definitions/AuthorizationCodeOAuthFlow'
    patternProperties:
      '^x-': {}
    additionalProperties: false

  ImplicitOAuthFlow:
    type: object
    required:
      - authorizationUrl
      - scopes
    properties:
      authorizationUrl:
        type: string
        format: uri-
Download .txt
gitextract_xldvqxs9/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   ├── registry_feature_request.md
│   │   └── spec_bug_report.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   ├── templates/
│   │   └── agenda.md
│   └── workflows/
│       ├── agenda.yaml
│       ├── check-restricted-files.yaml
│       ├── inactive-issues.yml
│       ├── respec.yaml
│       ├── schema-publish.yaml
│       ├── schema-tests.yaml
│       ├── sync-dev-to-vX.Y-dev.yaml
│       ├── sync-main-to-dev.yaml
│       └── validate-markdown.yaml
├── .gitignore
├── .gitmodules
├── .linkspector.yml
├── .markdownlint.yaml
├── CONTRIBUTING.md
├── EDITORS.md
├── GOVERNANCE.md
├── IMPLEMENTATIONS.md
├── LICENSE
├── MAINTAINERS.md
├── README.md
├── SECURITY_CONSIDERATIONS.md
├── SPECIAL_INTEREST_GROUPS.md
├── TOB.md
├── _archive_/
│   ├── README.md
│   └── schemas/
│       ├── README.md
│       ├── v1.2/
│       │   ├── README.md
│       │   ├── apiDeclaration.json
│       │   ├── authorizationObject.json
│       │   ├── dataType.json
│       │   ├── dataTypeBase.json
│       │   ├── infoObject.json
│       │   ├── modelsObject.json
│       │   ├── oauth2GrantType.json
│       │   ├── operationObject.json
│       │   ├── parameterObject.json
│       │   ├── resourceListing.json
│       │   └── resourceObject.json
│       ├── v2.0/
│       │   ├── README.md
│       │   └── schema.json
│       └── v3.0/
│           ├── README.md
│           ├── pass/
│           │   ├── api-with-examples.yaml
│           │   ├── callback-example.yaml
│           │   ├── link-example.yaml
│           │   ├── petstore-expanded.yaml
│           │   ├── petstore.yaml
│           │   └── uspto.yaml
│           ├── schema.test.mjs
│           └── schema.yaml
├── package.json
├── proposals/
│   ├── 2019-01-01-Proposal-Template.md
│   ├── 2019-03-15-Alternative-Schema.md
│   ├── 2019-07-17-Webhooks.md
│   ├── 2019-10-31-Clarify-Nullable.md
│   ├── 2019-12-24-Overlays.md
│   ├── 2020-10-28-Experimental.md
│   ├── 2024-08-01-Self-Identification.md
│   ├── 2024-09-01-Tags-Improvement.md
│   ├── 2025-03-20-URIs-for-Tags.md
│   ├── Alternative-Schema/
│   │   ├── CONTRIBUTORS.md
│   │   ├── alternative_schema_object.md
│   │   ├── examples.md
│   │   ├── implementations.md
│   │   └── schema_object.md
│   └── Overlays/
│       ├── Changes.yml
│       └── MergePatch.yml
├── scripts/
│   ├── adjust-release-branch.sh
│   ├── close-no-recent.ps1
│   ├── fwdabort.sh
│   ├── fwdport.sh
│   ├── label-no-recent.ps1
│   ├── md2html/
│   │   ├── .gitignore
│   │   ├── analytics/
│   │   │   └── google.html
│   │   ├── build.sh
│   │   ├── gist.css
│   │   ├── main.css
│   │   ├── md2html.js
│   │   ├── style-finish.html
│   │   ├── style-start.html
│   │   └── syntax-github.css
│   ├── schema-publish.sh
│   ├── start-release.sh
│   └── validate.mjs
├── spec.markdownlint.yaml
├── style-guide.md
├── tests/
│   ├── md2html/
│   │   ├── README.md
│   │   ├── fixtures/
│   │   │   ├── .gitattributes
│   │   │   ├── basic-new.html
│   │   │   ├── basic-new.maintainers
│   │   │   ├── basic-new.md
│   │   │   ├── basic-old.html
│   │   │   ├── basic-old.maintainers
│   │   │   └── basic-old.md
│   │   └── md2html.test.mjs
│   └── schema/
│       └── oas-schema.mjs
├── versions/
│   ├── 1.2.md
│   ├── 2.0-editors.md
│   ├── 2.0.md
│   ├── 3.0.0-editors.md
│   ├── 3.0.0.md
│   ├── 3.0.1-editors.md
│   ├── 3.0.1.md
│   ├── 3.0.2-editors.md
│   ├── 3.0.2.md
│   ├── 3.0.3-editors.md
│   ├── 3.0.3.md
│   ├── 3.0.4-editors.md
│   ├── 3.0.4.md
│   ├── 3.1.0-editors.md
│   ├── 3.1.0.md
│   ├── 3.1.1-editors.md
│   ├── 3.1.1.md
│   ├── 3.1.2-editors.md
│   ├── 3.1.2.md
│   ├── 3.2.0-editors.md
│   └── 3.2.0.md
└── vitest.config.mjs
Download .txt
SYMBOL INDEX (4 symbols across 2 files)

FILE: scripts/md2html/md2html.js
  function preface (line 172) | function preface(title,options) {
  function doMaintainers (line 257) | function doMaintainers() {
  function getPublishDate (line 274) | function getPublishDate(m) {

FILE: tests/md2html/md2html.test.mjs
  function md2html (line 31) | function md2html(args, cwd) {
Condensed preview — 124 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,138K chars).
[
  {
    "path": ".gitattributes",
    "chars": 25,
    "preview": "*.md linguist-detectable\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 222,
    "preview": "# Global Repo Owners\n* @oai/openapi-maintainers @oai/tsc\n\n# Specification Versions\n/versions/ @oai/tsc\n\n# Protect specif"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 860,
    "preview": "blank_issues_enabled: false\n\ncontact_links:\n  - name: Have a question about using OpenAPI?\n    url: https://communityinv"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/registry_feature_request.md",
    "chars": 1051,
    "preview": "---\nname: Contribute to the registries at spec.openapis.org/registry\nabout: Add a new registry entry, or edit an existin"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/spec_bug_report.md",
    "chars": 524,
    "preview": "---\nname: Report an error in the specification\nabout: Create a report to help us improve the specification\ntitle: 'vX.Y:"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 328,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: github-actions\n    directory: \"/\"\n    schedule:\n      interval: daily\n    ope"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 755,
    "preview": "<!--\nThank you for contributing to the OpenAPI Specification!\n\nPlease make certain you are submitting your PR on the cor"
  },
  {
    "path": ".github/templates/agenda.md",
    "chars": 2531,
    "preview": "## Weekly meetings happen on Thursdays at 9am - 10am Pacific\n\nThis agenda gives visibility into discussion topics for th"
  },
  {
    "path": ".github/workflows/agenda.yaml",
    "chars": 2327,
    "preview": "name: agenda\n\n# author: @MikeRalphson\n# issue: various\n\n#\n# This workflow creates the agenda issue each week. It runs on"
  },
  {
    "path": ".github/workflows/check-restricted-files.yaml",
    "chars": 1998,
    "preview": "name: check-restricted-files\n\n# Author: @ralfhandl\n# Issue: https://github.com/OAI/OpenAPI-Specification/issues/3432\n\n# "
  },
  {
    "path": ".github/workflows/inactive-issues.yml",
    "chars": 1150,
    "preview": "on:\n  issues:\n    types: labeled\n  workflow_dispatch:\n  schedule:\n    - cron: '*/5 * * * *'\n\npermissions:\n  issues: writ"
  },
  {
    "path": ".github/workflows/respec.yaml",
    "chars": 2121,
    "preview": "name: respec\n\n# author: @MikeRalphson, @ralfhandl\n# issue: https://github.com/OAI/OpenAPI-Specification/issues/1564\n\n#\n#"
  },
  {
    "path": ".github/workflows/schema-publish.yaml",
    "chars": 2233,
    "preview": "name: schema-publish\n\n# author: @ralfhandl\n# issue: https://github.com/OAI/OpenAPI-Specification/issues/3715\n\n#\n# This w"
  },
  {
    "path": ".github/workflows/schema-tests.yaml",
    "chars": 758,
    "preview": "name: schema-test\n\n# Author: @MikeRalphson / runs @jdesrosiers tests\n# Issue: https://github.com/OAI/OpenAPI-Specificati"
  },
  {
    "path": ".github/workflows/sync-dev-to-vX.Y-dev.yaml",
    "chars": 2404,
    "preview": "name: sync-dev-to-vX.Y-dev\n\n# author: @ralfhandl\n\n#\n# This workflow creates PRs to update the vX.Y-dev branch with the l"
  },
  {
    "path": ".github/workflows/sync-main-to-dev.yaml",
    "chars": 1955,
    "preview": "name: sync-main-to-dev\n\n# author: @ralfhandl\n\n#\n# This workflow creates PRs to update the dev branch with the latest cha"
  },
  {
    "path": ".github/workflows/validate-markdown.yaml",
    "chars": 984,
    "preview": "name: validate-markdown\n\n# Author: @MikeRalphson\n# Issue: https://github.com/OAI/OpenAPI-Specification/issues/2130\n\n# Th"
  },
  {
    "path": ".gitignore",
    "chars": 124,
    "preview": ".idea\n*.iml\n*.ipr\n*.iws\ntarget\natlassian-ide-plugin.xml\nnode_modules/\ndeploy/\ndeploy-preview/\ncoverage/\n_site/\nGemfile.l"
  },
  {
    "path": ".gitmodules",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".linkspector.yml",
    "chars": 298,
    "preview": "files:\n  - src/oas.md\n  - CONTRIBUTING.md\n  - EDITORS.md\n  - GOVERNANCE.md\n  - IMPLEMENTATIONS.md\n  - MAINTAINERS.md\n  -"
  },
  {
    "path": ".markdownlint.yaml",
    "chars": 525,
    "preview": "# First heading is a top-level heading\nMD002: true\n\n# Heading style (ATX is leading # symbols)\nMD003:\n  style: atx\n\n# Un"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 29366,
    "preview": "# Contribute to the OpenAPI Specification\n\n## Key information\n\nThis project is covered by our [Code of Conduct](https://"
  },
  {
    "path": "EDITORS.md",
    "chars": 928,
    "preview": "# OpenAPI Specification Editors\n\n## Active\n\n* Henry Andrews [@handrews](https://github.com/handrews)\n* Jeremy Whitlock ["
  },
  {
    "path": "GOVERNANCE.md",
    "chars": 3590,
    "preview": "# Governance\n\nThe OpenAPI Specification is a project of the OpenAPI Initiative (OAI), under the auspices of the Linux Fo"
  },
  {
    "path": "IMPLEMENTATIONS.md",
    "chars": 319,
    "preview": "# Implementations\n\nThe list of implementations formerly in this file is no-longer maintained here.\n\nYou may find a more "
  },
  {
    "path": "LICENSE",
    "chars": 11345,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "MAINTAINERS.md",
    "chars": 773,
    "preview": "# OpenAPI Initiative Technical Steering Committee Members\n\n## Active\n\n* Jeremy Whitlock [@whitlockjc](https://github.com"
  },
  {
    "path": "README.md",
    "chars": 5464,
    "preview": "# The OpenAPI Specification\n\n![Build Status](https://github.com/OAI/OpenAPI-Specification/workflows/validate-markdown/ba"
  },
  {
    "path": "SECURITY_CONSIDERATIONS.md",
    "chars": 2034,
    "preview": "# Security Considerations\n\n## OpenAPI Document Formats\n\nOpenAPI documents use JSON, YAML, and JSON Schema, and therefore"
  },
  {
    "path": "SPECIAL_INTEREST_GROUPS.md",
    "chars": 600,
    "preview": "# OpenAPI Special Interest Groups (SIGs)\n\nOpenAPI Special Interest Groups, or \"SIGs\", are the OpenAPI Initiative's way o"
  },
  {
    "path": "TOB.md",
    "chars": 529,
    "preview": "# Technical Oversight Board (\"TOB\")\n\n## Description\n\n> The TOB is responsible for managing conflicts, violations of proc"
  },
  {
    "path": "_archive_/README.md",
    "chars": 78,
    "preview": "# Archive\n\nThis folder contains files that are no longer actively maintained.\n"
  },
  {
    "path": "_archive_/schemas/README.md",
    "chars": 450,
    "preview": "# Archive of outdated JSON Schema Files\n\n> [!TIP]\n> JSON Schema files for validating OpenAPI descriptions using current "
  },
  {
    "path": "_archive_/schemas/v1.2/README.md",
    "chars": 325,
    "preview": "# Swagger Specification JSON Schemas\n\nThe work on the JSON Schema for the Swagger Specification was donated to the commu"
  },
  {
    "path": "_archive_/schemas/v1.2/apiDeclaration.json",
    "chars": 1934,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/apiDeclaration.json#\",\n    "
  },
  {
    "path": "_archive_/schemas/v1.2/authorizationObject.json",
    "chars": 1817,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/authorizationObject.json#\","
  },
  {
    "path": "_archive_/schemas/v1.2/dataType.json",
    "chars": 4552,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/dataType.json#\",\n    \"$sche"
  },
  {
    "path": "_archive_/schemas/v1.2/dataTypeBase.json",
    "chars": 2586,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/dataTypeBase.json#\",\n    \"$"
  },
  {
    "path": "_archive_/schemas/v1.2/infoObject.json",
    "chars": 661,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/infoObject.json#\",\n    \"$sc"
  },
  {
    "path": "_archive_/schemas/v1.2/modelsObject.json",
    "chars": 1008,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/modelsObject.json#\",\n    \"$"
  },
  {
    "path": "_archive_/schemas/v1.2/oauth2GrantType.json",
    "chars": 2036,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/oauth2GrantType.json#\",\n   "
  },
  {
    "path": "_archive_/schemas/v1.2/operationObject.json",
    "chars": 2341,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/operationObject.json#\",\n   "
  },
  {
    "path": "_archive_/schemas/v1.2/parameterObject.json",
    "chars": 1286,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/parameterObject.json#\",\n   "
  },
  {
    "path": "_archive_/schemas/v1.2/resourceListing.json",
    "chars": 592,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/resourceListing.json#\",\n   "
  },
  {
    "path": "_archive_/schemas/v1.2/resourceObject.json",
    "chars": 385,
    "preview": "{\n    \"id\": \"https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/schemas/v1.2/resourceObject.json#\",\n    "
  },
  {
    "path": "_archive_/schemas/v2.0/README.md",
    "chars": 248,
    "preview": "# OpenAPI Specification v2.0 JSON Schema\n\nThis is the JSON Schema file for the OpenAPI Specification version 2.0. Downlo"
  },
  {
    "path": "_archive_/schemas/v2.0/schema.json",
    "chars": 40247,
    "preview": "{\n  \"title\": \"A JSON Schema for Swagger 2.0 API.\",\n  \"id\": \"http://swagger.io/v2/schema.json#\",\n  \"$schema\": \"http://jso"
  },
  {
    "path": "_archive_/schemas/v3.0/README.md",
    "chars": 2164,
    "preview": "# OpenAPI 3.0.X JSON Schema\n\nThis directory contains the YAML source for generating the JSON Schema for validating OpenA"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/api-with-examples.yaml",
    "chars": 6444,
    "preview": "openapi: \"3.0.0\"\ninfo:\n  title: Simple API overview\n  version: 2.0.0\npaths:\n  /:\n    get:\n      operationId: listVersion"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/callback-example.yaml",
    "chars": 2158,
    "preview": "openapi: 3.0.0\ninfo:\n  title: Callback Example\n  version: 1.0.0\npaths:\n  /streams:\n    post:\n      description: subscrib"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/link-example.yaml",
    "chars": 5280,
    "preview": "openapi: 3.0.0\ninfo: \n  title: Link Example\n  version: 1.0.0\npaths: \n  /2.0/users/{username}: \n    get: \n      operation"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/petstore-expanded.yaml",
    "chars": 5479,
    "preview": "openapi: \"3.0.0\"\ninfo:\n  version: 1.0.0\n  title: Swagger Petstore\n  description: A sample API that uses a petstore as an"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/petstore.yaml",
    "chars": 2772,
    "preview": "openapi: \"3.0.0\"\ninfo:\n  version: 1.0.0\n  title: Swagger Petstore\n  license:\n    name: MIT\nservers:\n  - url: http://pets"
  },
  {
    "path": "_archive_/schemas/v3.0/pass/uspto.yaml",
    "chars": 7743,
    "preview": "openapi: 3.0.1\nservers:\n  - url: '{scheme}://developer.uspto.gov/ds-api'\n    variables:\n      scheme:\n        descriptio"
  },
  {
    "path": "_archive_/schemas/v3.0/schema.test.mjs",
    "chars": 1689,
    "preview": "import { readdirSync, readFileSync } from \"node:fs\";\nimport YAML from \"yaml\";\nimport { validate, setMetaSchemaOutputForm"
  },
  {
    "path": "_archive_/schemas/v3.0/schema.yaml",
    "chars": 22645,
    "preview": "id: https://spec.openapis.org/oas/3.0/schema/WORK-IN-PROGRESS\n$schema: http://json-schema.org/draft-04/schema#\ndescripti"
  },
  {
    "path": "package.json",
    "chars": 1397,
    "preview": "{\n  \"name\": \"oas-infra\",\n  \"version\": \"0.0.0\",\n  \"description\": \"OpenAPI Specification Automation & Infrastructure\",\n  \""
  },
  {
    "path": "proposals/2019-01-01-Proposal-Template.md",
    "chars": 2299,
    "preview": "# Feature name\n\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[YYYY-MM-DD-Short-Name](https://github"
  },
  {
    "path": "proposals/2019-03-15-Alternative-Schema.md",
    "chars": 4032,
    "preview": "# Alternative Schema\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[Alternative Schema](https://gith"
  },
  {
    "path": "proposals/2019-07-17-Webhooks.md",
    "chars": 10834,
    "preview": "# Webhooks\n\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[2019-07-17-Webhooks](https://github.com/O"
  },
  {
    "path": "proposals/2019-10-31-Clarify-Nullable.md",
    "chars": 16797,
    "preview": "# Clarify Semantics of `nullable` in OpenAPI 3.0\n\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[201"
  },
  {
    "path": "proposals/2019-12-24-Overlays.md",
    "chars": 10075,
    "preview": "# Overlays\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[2019-12-24-Overlays](https://github.com/OA"
  },
  {
    "path": "proposals/2020-10-28-Experimental.md",
    "chars": 6672,
    "preview": "# Experimental marker\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[Experimental](https://github.co"
  },
  {
    "path": "proposals/2024-08-01-Self-Identification.md",
    "chars": 9113,
    "preview": "# Self-Identification\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[2024-08-01 Self-Identification]"
  },
  {
    "path": "proposals/2024-09-01-Tags-Improvement.md",
    "chars": 8830,
    "preview": "# Tags Improvement\n\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[2024-09-01-Tags-Improvement](http"
  },
  {
    "path": "proposals/2025-03-20-URIs-for-Tags.md",
    "chars": 9345,
    "preview": "# URIs for Tags\n\n\n## Metadata\n\n|Tag |Value |\n|---- | ---------------- |\n|Proposal |[2025-03-20-URIs-for-Tags](https://gi"
  },
  {
    "path": "proposals/Alternative-Schema/CONTRIBUTORS.md",
    "chars": 120,
    "preview": "* Chuck Heazel [@cmheazel](https://github.com/cmheazel)\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)"
  },
  {
    "path": "proposals/Alternative-Schema/alternative_schema_object.md",
    "chars": 915,
    "preview": "## Change: Add the Alternative Schema Object\n\nThe following text is to be inserted after the XML Object section\n\n### Alt"
  },
  {
    "path": "proposals/Alternative-Schema/examples.md",
    "chars": 1387,
    "preview": "## Change: Add Alternative Schema Examples\n\nThe following text is to be inserted after the Alternative Schema Object sec"
  },
  {
    "path": "proposals/Alternative-Schema/implementations.md",
    "chars": 1556,
    "preview": "# Implementations\n\n## Overview\n\nBelow is a list of tooling that claims to implement the Alternative Schema proposal. Whi"
  },
  {
    "path": "proposals/Alternative-Schema/schema_object.md",
    "chars": 2727,
    "preview": "## Change: Extend the Schema Object to support Alternative Schemas\n\nThe following content shall be used to replace the F"
  },
  {
    "path": "proposals/Overlays/Changes.yml",
    "chars": 1767,
    "preview": "# Create update methods (add,replace,merge,delete)? Is merge necessary?\n# Multiple additions or updates to the same targ"
  },
  {
    "path": "proposals/Overlays/MergePatch.yml",
    "chars": 169,
    "preview": "overlay: 1.0.0\ninfo:\n  title: An example of an overlay that performs a Merge Patch\n  version: 1.0.0\nupdates:\n- target: \""
  },
  {
    "path": "scripts/adjust-release-branch.sh",
    "chars": 981,
    "preview": "#!/usr/bin/env bash\n\n# Author: @ralfhandl\n\n# Run this script from the root of the repo. It is designed to be run manuall"
  },
  {
    "path": "scripts/close-no-recent.ps1",
    "chars": 1537,
    "preview": "$inactivityDelay = [timespan]::FromDays([int]::Parse($Env:NO_RECENT_ACTIVITY_DURATION_CLOSE_IN_DAYS))\n$oldIssues = gh is"
  },
  {
    "path": "scripts/fwdabort.sh",
    "chars": 135,
    "preview": "#!/bin/sh\n\n# Aborts a fwdport.sh run cleanly\n\n# Author: @MikeRalphson\n\ngit am -i --abort\nrm -f *.mbox *.patch *.rej\ngit "
  },
  {
    "path": "scripts/fwdport.sh",
    "chars": 2872,
    "preview": "#!/bin/sh\n\n# Forward ports changes from the spec file of a source branch to the spec file of a target branch\n# For examp"
  },
  {
    "path": "scripts/label-no-recent.ps1",
    "chars": 1683,
    "preview": "$inactivityDelay = [timespan]::FromDays([int]::Parse($Env:NO_RECENT_ACTIVITY_DURATION_IN_DAYS))\n$oldIssues = gh issue li"
  },
  {
    "path": "scripts/md2html/.gitignore",
    "chars": 15,
    "preview": "*.err\ninput.bs\n"
  },
  {
    "path": "scripts/md2html/analytics/google.html",
    "chars": 307,
    "preview": "<!-- Global site tag (gtag.js) - Google Analytics -->\n<script async src=\"https://www.googletagmanager.com/gtag/js?id=UA-"
  },
  {
    "path": "scripts/md2html/build.sh",
    "chars": 2623,
    "preview": "#!/bin/bash\n\n# Author: @MikeRalphson\n\n# run this script from the root of the repo\n# It is designed to be run by a GitHub"
  },
  {
    "path": "scripts/md2html/gist.css",
    "chars": 955,
    "preview": "/**\n * GitHub Gist Theme\n * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro\n */\n\n.hljs {\n  display: b"
  },
  {
    "path": "scripts/md2html/main.css",
    "chars": 5085,
    "preview": "#respec-ui {\n    visibility: hidden;\n}\n\n#title {\n    color: #578000;\n}\n\n#subtitle {\n    color: #578000;\n}\n\n.dt-published"
  },
  {
    "path": "scripts/md2html/md2html.js",
    "chars": 20051,
    "preview": "/* ReSpec supports markdown formatting, but this shows up on the page before being rendered\nHence we render the markdown"
  },
  {
    "path": "scripts/md2html/style-finish.html",
    "chars": 9,
    "preview": "</style>\n"
  },
  {
    "path": "scripts/md2html/style-start.html",
    "chars": 355,
    "preview": "<style>\n/*.highlight:not(.idl) { background: hsl(24, 20%, 95%); }\ncode.highlight { padding: .1em; border-radius: .3em; }"
  },
  {
    "path": "scripts/md2html/syntax-github.css",
    "chars": 1148,
    "preview": "/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padd"
  },
  {
    "path": "scripts/schema-publish.sh",
    "chars": 2940,
    "preview": "#!/usr/bin/env bash\n\n# Author: @ralfhandl\n\n# Run this script from the root of the repo. It is designed to be run by a Gi"
  },
  {
    "path": "scripts/start-release.sh",
    "chars": 3804,
    "preview": "#!/usr/bin/env bash\n\n# Author: @ralfhandl\n\n# Run this script from the root of the repo. It is designed to be run manuall"
  },
  {
    "path": "scripts/validate.mjs",
    "chars": 2041,
    "preview": "#!/usr/bin/env node\n\nimport { readFile } from \"node:fs/promises\";\nimport YAML from \"yaml\";\nimport { setMetaSchemaOutputF"
  },
  {
    "path": "spec.markdownlint.yaml",
    "chars": 432,
    "preview": "# Heading style (ATX is leading # symbols)\nMD003:\n  style: atx\n\n# Unordered list symbol must be *\nMD004:\n  style: asteri"
  },
  {
    "path": "style-guide.md",
    "chars": 3337,
    "preview": "# Style Guide\n\nContributions to this repository should follow the style guide as described in this section.\n\n## Markdown"
  },
  {
    "path": "tests/md2html/README.md",
    "chars": 208,
    "preview": "To view the HTML files in folder `fixtures` with respec formatting, you can\n~~~sh\nmkdir js\ncp ../../node_modules/respec/"
  },
  {
    "path": "tests/md2html/fixtures/.gitattributes",
    "chars": 18,
    "preview": "*.html text eol=lf"
  },
  {
    "path": "tests/md2html/fixtures/basic-new.html",
    "chars": 17031,
    "preview": "<!DOCTYPE html><html lang=\"en\"><head>\n<!-- Global site tag (gtag.js) - Google Analytics -->\n<script async src=\"https://w"
  },
  {
    "path": "tests/md2html/fixtures/basic-new.maintainers",
    "chars": 240,
    "preview": "# Editors\n\n## Active\n* John Doe [@johndoe](https://github.com/johndoe)\n* Jane Doe [@janedow](https://github.com/janedoe)"
  },
  {
    "path": "tests/md2html/fixtures/basic-new.md",
    "chars": 2097,
    "preview": "# Heading 1\n\nText for first chapter\n\n## Version 30.0.1\n\nThis is the conformance section\n\n## Heading 2\n\nText for <a name="
  },
  {
    "path": "tests/md2html/fixtures/basic-old.html",
    "chars": 9543,
    "preview": "<!DOCTYPE html><html lang=\"en\"><head>\n<!-- Global site tag (gtag.js) - Google Analytics -->\n<script async src=\"https://w"
  },
  {
    "path": "tests/md2html/fixtures/basic-old.maintainers",
    "chars": 57,
    "preview": "## Active\n* Foo Bar [@foobar](https://github.com/foobar)\n"
  },
  {
    "path": "tests/md2html/fixtures/basic-old.md",
    "chars": 319,
    "preview": "# Heading 1\n\nText for first chapter\n\n#### Version 30.0.1\n\nThis is the conformance section\n\n## Table of Contents\n\nWill be"
  },
  {
    "path": "tests/md2html/md2html.test.mjs",
    "chars": 1275,
    "preview": "import { readdirSync, readFileSync } from \"node:fs\";\nimport { execFile } from \"node:child_process\";\nimport { resolve } f"
  },
  {
    "path": "tests/schema/oas-schema.mjs",
    "chars": 1067,
    "preview": "import { registerSchema } from \"@hyperjump/json-schema/draft-2020-12\";\nimport { defineVocabulary } from \"@hyperjump/json"
  },
  {
    "path": "versions/1.2.md",
    "chars": 49578,
    "preview": "# Swagger RESTful API Documentation Specification\n\n#### Version 1.2\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHAL"
  },
  {
    "path": "versions/2.0-editors.md",
    "chars": 237,
    "preview": "## Active\n* Jeremy Whitlock [@whitlockjc](https://github.com/whitlockjc)\n* Marsh Gardiner [@earth2marsh](https://github."
  },
  {
    "path": "versions/2.0.md",
    "chars": 80697,
    "preview": "# OpenAPI Specification\n## (fka Swagger RESTful API Documentation Specification)\n\n#### Version 2.0\n\nThe key words \"MUST\""
  },
  {
    "path": "versions/3.0.0-editors.md",
    "chars": 302,
    "preview": "## Active\n* Jeremy Whitlock [@whitlockjc](https://github.com/whitlockjc)\n* Marsh Gardiner [@earth2marsh](https://github."
  },
  {
    "path": "versions/3.0.0.md",
    "chars": 123368,
    "preview": "# OpenAPI Specification\n\n#### Version 3.0.0\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD"
  },
  {
    "path": "versions/3.0.1-editors.md",
    "chars": 367,
    "preview": "## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Jeremy Whitlock [@whitlockjc](https://githu"
  },
  {
    "path": "versions/3.0.1.md",
    "chars": 121673,
    "preview": "# OpenAPI Specification\n\n#### Version 3.0.1\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD"
  },
  {
    "path": "versions/3.0.2-editors.md",
    "chars": 481,
    "preview": "## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Jeremy Whitlock [@whitlockjc](https://githu"
  },
  {
    "path": "versions/3.0.2.md",
    "chars": 122440,
    "preview": "# OpenAPI Specification\n\n#### Version 3.0.2\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD"
  },
  {
    "path": "versions/3.0.3-editors.md",
    "chars": 481,
    "preview": "## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Jeremy Whitlock [@whitlockjc](https://githu"
  },
  {
    "path": "versions/3.0.3.md",
    "chars": 125198,
    "preview": "# OpenAPI Specification\n\n#### Version 3.0.3\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD"
  },
  {
    "path": "versions/3.0.4-editors.md",
    "chars": 802,
    "preview": "# OpenAPI Specification Editors\n\n## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Henry Andr"
  },
  {
    "path": "versions/3.0.4.md",
    "chars": 194942,
    "preview": "# OpenAPI Specification\n\n## Version 3.0.4\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD\","
  },
  {
    "path": "versions/3.1.0-editors.md",
    "chars": 481,
    "preview": "## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Jeremy Whitlock [@whitlockjc](https://githu"
  },
  {
    "path": "versions/3.1.0.md",
    "chars": 130284,
    "preview": "# OpenAPI Specification\n\n#### Version 3.1.0\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD"
  },
  {
    "path": "versions/3.1.1-editors.md",
    "chars": 802,
    "preview": "# OpenAPI Specification Editors\n\n## Active\n* Darrel Miller [@darrelmiller](https://github.com/darrelmiller)\n* Henry Andr"
  },
  {
    "path": "versions/3.1.1.md",
    "chars": 212529,
    "preview": "# OpenAPI Specification\n\n## Version 3.1.1\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD\","
  },
  {
    "path": "versions/3.1.2-editors.md",
    "chars": 928,
    "preview": "# OpenAPI Specification Editors\n\n## Active\n\n* Henry Andrews [@handrews](https://github.com/handrews)\n* Jeremy Whitlock ["
  },
  {
    "path": "versions/3.1.2.md",
    "chars": 221878,
    "preview": "# OpenAPI Specification\n\n## Version 3.1.2\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD\","
  },
  {
    "path": "versions/3.2.0-editors.md",
    "chars": 928,
    "preview": "# OpenAPI Specification Editors\n\n## Active\n\n* Henry Andrews [@handrews](https://github.com/handrews)\n* Jeremy Whitlock ["
  },
  {
    "path": "versions/3.2.0.md",
    "chars": 296246,
    "preview": "# OpenAPI Specification\n\n## Version 3.2.0\n\nThe key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL NOT\", \"SHOULD\","
  },
  {
    "path": "vitest.config.mjs",
    "chars": 766,
    "preview": "import { defineConfig } from 'vitest/config'\nimport { jsonSchemaCoveragePlugin } from \"@hyperjump/json-schema-coverage/v"
  }
]

About this extraction

This page contains the full source code of the OAI/OpenAPI-Specification GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 124 files (2.0 MB), approximately 490.6k tokens, and a symbol index with 4 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!