diff --git a/.github/actions/retry-command/action.yml b/.github/actions/retry-command/action.yml new file mode 100644 index 000000000000..cd855f3dc5b4 --- /dev/null +++ b/.github/actions/retry-command/action.yml @@ -0,0 +1,49 @@ +name: 'Retry command' +description: 'Retries any command with configurable attempts and delay' +inputs: + command: + description: 'The command to retry' + required: true + max_attempts: + description: 'Maximum number of retry attempts' + required: false + default: '8' + delay: + description: 'Delay between attempts in seconds' + required: false + default: '15' + +runs: + using: 'composite' + steps: + - name: Retry command + shell: bash + run: | + # Generic retry function: configurable attempts and delay + retry_command() { + local max_attempts=${{ inputs.max_attempts }} + local delay=${{ inputs.delay }} + local attempt=1 + local command="${{ inputs.command }}" + + while [ $attempt -le $max_attempts ]; do + echo "Attempt $attempt/$max_attempts: Running command..." + echo "Command: $command" + if eval "$command"; then + echo "Command succeeded on attempt $attempt" + return 0 + else + echo "Attempt $attempt failed" + if [ $attempt -lt $max_attempts ]; then + echo "Waiting $delay seconds before retry..." + sleep $delay + fi + fi + attempt=$((attempt + 1)) + done + + echo "Command failed after $max_attempts attempts" + return 1 + } + + retry_command diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index aa6aa6d67c46..bf67c21b5065 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -58,7 +58,20 @@ Examples: * ❌ Incorrect: `For more information, see [Using GitHub Copilot](/copilot/using-github-copilot).` * ❌ Incorrect: `For more information, see {% link /copilot/using-github-copilot %}.` -### Creating a pull request +### Parenthetical dashes + +Where a sentence of normal body text contains a parenthetical dash, the dash should always be an em dash without spaces at either side. This rule does not apply to text within code blocks. + +Examples: + +* ✅ Correct: "The cat—which sat on a branch—smiled with a broad grin." (em dash without spaces) +* ❌ Incorrect: "The cat — which sat on a branch — smiled with a broad grin." (em dash with spaces) +* ❌ Incorrect: "The cat–which sat on a branch–smiled with a broad grin." (en dash without spaces) +* ❌ Incorrect: "The cat – which sat on a branch – smiled with a broad grin." (en dash with spaces) +* ❌ Incorrect: "The cat-which sat on a branch-smiled with a broad grin." (hyphen without spaces) +* ❌ Incorrect: "The cat - which sat on a branch - smiled with a broad grin." (hyphen with spaces) + +## Creating a pull request When creating a pull request as a result of a request to do so in Copilot Chat, the first line of the PR description should **always** be the following (in italics): diff --git a/.github/workflows/all-documents.yml b/.github/workflows/all-documents.yml index 2ac5c63bdf1e..df1f41dcd054 100644 --- a/.github/workflows/all-documents.yml +++ b/.github/workflows/all-documents.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/article-api-docs.yml b/.github/workflows/article-api-docs.yml index 286b65a14e78..1252369f5e94 100644 --- a/.github/workflows/article-api-docs.yml +++ b/.github/workflows/article-api-docs.yml @@ -22,7 +22,7 @@ jobs: if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/check-broken-links-github-github.yml b/.github/workflows/check-broken-links-github-github.yml index 97791b30ca7c..a8e312d4f494 100644 --- a/.github/workflows/check-broken-links-github-github.yml +++ b/.github/workflows/check-broken-links-github-github.yml @@ -24,7 +24,7 @@ jobs: REPORT_REPOSITORY: github/docs-content steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # To prevent issues with cloning early access content later persist-credentials: 'false' diff --git a/.github/workflows/close-on-invalid-label.yaml b/.github/workflows/close-on-invalid-label.yaml index 59e98468a833..0ab96b3d9fd1 100644 --- a/.github/workflows/close-on-invalid-label.yaml +++ b/.github/workflows/close-on-invalid-label.yaml @@ -37,7 +37,7 @@ jobs: - name: Check out repo if: ${{ failure() && github.event_name != 'pull_request_target' }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name != 'pull_request_target' }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a6755462136c..5f1748be365b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,7 +35,7 @@ jobs: if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: github/codeql-action/init@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: languages: javascript # comma separated list of values from {go, python, javascript, java, cpp, csharp, ruby} diff --git a/.github/workflows/confirm-internal-staff-work-in-docs.yml b/.github/workflows/confirm-internal-staff-work-in-docs.yml index ece489d124e6..4f6d86a2afb0 100644 --- a/.github/workflows/confirm-internal-staff-work-in-docs.yml +++ b/.github/workflows/confirm-internal-staff-work-in-docs.yml @@ -83,7 +83,7 @@ jobs: - name: Check out repo if: ${{ failure() && github.event_name != 'pull_request_target' }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name != 'pull_request_target' }} with: diff --git a/.github/workflows/content-lint-markdown.yml b/.github/workflows/content-lint-markdown.yml index 2de5b5155e1a..f6c062311539 100644 --- a/.github/workflows/content-lint-markdown.yml +++ b/.github/workflows/content-lint-markdown.yml @@ -23,7 +23,7 @@ jobs: runs-on: ${{ fromJSON('["ubuntu-latest", "ubuntu-20.04-xl"]')[github.repository == 'github/docs-internal'] }} steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node and dependencies uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/content-linter-rules-docs.yml b/.github/workflows/content-linter-rules-docs.yml index eab891e9aa30..f86937ec1d26 100644 --- a/.github/workflows/content-linter-rules-docs.yml +++ b/.github/workflows/content-linter-rules-docs.yml @@ -25,7 +25,7 @@ jobs: if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/copy-api-issue-to-internal.yml b/.github/workflows/copy-api-issue-to-internal.yml index d51b3383d6dc..37d13731caa2 100644 --- a/.github/workflows/copy-api-issue-to-internal.yml +++ b/.github/workflows/copy-api-issue-to-internal.yml @@ -73,7 +73,7 @@ jobs: - name: Check out repo if: ${{ failure() && github.event_name != 'workflow_dispatch' && github.repository == 'github/docs-internal' }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name != 'workflow_dispatch' && github.repository == 'github/docs-internal' }} with: diff --git a/.github/workflows/count-translation-corruptions.yml b/.github/workflows/count-translation-corruptions.yml index 7e3ec57da653..146893ec63dc 100644 --- a/.github/workflows/count-translation-corruptions.yml +++ b/.github/workflows/count-translation-corruptions.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-20.04-xl steps: - name: Checkout English repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # Using a PAT is necessary so that the new commit will trigger the # CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.) diff --git a/.github/workflows/delete-orphan-translation-files.yml b/.github/workflows/delete-orphan-translation-files.yml index beade49d7468..d4fca85a0c7e 100644 --- a/.github/workflows/delete-orphan-translation-files.yml +++ b/.github/workflows/delete-orphan-translation-files.yml @@ -60,10 +60,10 @@ jobs: language_repo: github/docs-internal.ko-kr steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Checkout the language-specific repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: ${{ matrix.language_repo }} token: ${{ secrets.DOCS_BOT_PAT_BASE }} diff --git a/.github/workflows/docs-review-collect.yml b/.github/workflows/docs-review-collect.yml index 421b5eb43b12..4008159fc4b9 100644 --- a/.github/workflows/docs-review-collect.yml +++ b/.github/workflows/docs-review-collect.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Check out repo content - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 diff --git a/.github/workflows/dont-delete-assets.yml b/.github/workflows/dont-delete-assets.yml index 7e543bb82147..04a8481a0001 100644 --- a/.github/workflows/dont-delete-assets.yml +++ b/.github/workflows/dont-delete-assets.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/dont-delete-features.yml b/.github/workflows/dont-delete-features.yml index 565598a60887..938b702698a5 100644 --- a/.github/workflows/dont-delete-features.yml +++ b/.github/workflows/dont-delete-features.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/enterprise-dates.yml b/.github/workflows/enterprise-dates.yml index 2dd15f3dc02a..912f9b1aa706 100644 --- a/.github/workflows/enterprise-dates.yml +++ b/.github/workflows/enterprise-dates.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/enterprise-release-issue.yml b/.github/workflows/enterprise-release-issue.yml index 2dbc8064d312..76679534e9f1 100644 --- a/.github/workflows/enterprise-release-issue.yml +++ b/.github/workflows/enterprise-release-issue.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/first-responder-v2-prs-collect.yml b/.github/workflows/first-responder-v2-prs-collect.yml index 47589a9ea5ff..4a164fd75556 100644 --- a/.github/workflows/first-responder-v2-prs-collect.yml +++ b/.github/workflows/first-responder-v2-prs-collect.yml @@ -23,6 +23,9 @@ jobs: runs-on: ubuntu-latest steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Check if the event originated from a team member uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0 id: check-membership diff --git a/.github/workflows/generate-code-scanning-query-lists.yml b/.github/workflows/generate-code-scanning-query-lists.yml index a0bd5f22a2e8..d24c20d70abd 100644 --- a/.github/workflows/generate-code-scanning-query-lists.yml +++ b/.github/workflows/generate-code-scanning-query-lists.yml @@ -32,12 +32,12 @@ jobs: runs-on: ubuntu-20.04-xl steps: - name: Checkout repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup - name: Checkout codeql repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/codeql path: codeql @@ -87,7 +87,7 @@ jobs: - name: Build code scanning query list run: | - for lang in "actions" "cpp" "csharp" "go" "java" "javascript" "python" "ruby" "swift"; do + for lang in "actions" "cpp" "csharp" "go" "java" "javascript" "python" "ruby" "rust" "swift"; do echo "Generating code scanning query list for $lang" npm run generate-code-scanning-query-list -- \ --verbose \ diff --git a/.github/workflows/headless-tests.yml b/.github/workflows/headless-tests.yml index 4d1ce72a41ed..46ccb0cfff75 100644 --- a/.github/workflows/headless-tests.yml +++ b/.github/workflows/headless-tests.yml @@ -37,7 +37,7 @@ jobs: timeout-minutes: 60 steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/setup-elasticsearch diff --git a/.github/workflows/hubber-contribution-help.yml b/.github/workflows/hubber-contribution-help.yml index 8440f388101a..356f7d8fc2c2 100644 --- a/.github/workflows/hubber-contribution-help.yml +++ b/.github/workflows/hubber-contribution-help.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - id: membership_check uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0 diff --git a/.github/workflows/index-autocomplete-search.yml b/.github/workflows/index-autocomplete-search.yml index 09375d0e7b0a..0b12344c0ecb 100644 --- a/.github/workflows/index-autocomplete-search.yml +++ b/.github/workflows/index-autocomplete-search.yml @@ -23,14 +23,14 @@ jobs: runs-on: ubuntu-20.04-xl steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup - uses: ./.github/actions/setup-elasticsearch if: ${{ github.event_name == 'pull_request' }} - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: token: ${{ secrets.DOCS_BOT_PAT_BASE }} repository: github/docs-internal-data diff --git a/.github/workflows/index-general-search-pr.yml b/.github/workflows/index-general-search-pr.yml index 97204b69a83e..034ac207a99b 100644 --- a/.github/workflows/index-general-search-pr.yml +++ b/.github/workflows/index-general-search-pr.yml @@ -37,10 +37,10 @@ jobs: if: github.repository == 'github/docs-internal' steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Clone docs-internal-data - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/docs-internal-data # This works because user `docs-bot` has read access to that private repo. diff --git a/.github/workflows/index-general-search.yml b/.github/workflows/index-general-search.yml index 151bfec63b0d..0dadae3fd377 100644 --- a/.github/workflows/index-general-search.yml +++ b/.github/workflows/index-general-search.yml @@ -87,7 +87,7 @@ jobs: - name: Check out repo if: ${{ failure() && github.event_name != 'workflow_dispatch' }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() && github.event_name != 'workflow_dispatch' }} @@ -115,10 +115,10 @@ jobs: language: ${{ fromJSON(needs.figureOutMatrix.outputs.matrix) }} steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Clone docs-internal-data - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/docs-internal-data # This works because user `docs-bot` has read access to that private repo. diff --git a/.github/workflows/keep-caches-warm.yml b/.github/workflows/keep-caches-warm.yml index 6aca6bdf047c..89952e301711 100644 --- a/.github/workflows/keep-caches-warm.yml +++ b/.github/workflows/keep-caches-warm.yml @@ -29,7 +29,7 @@ jobs: runs-on: ${{ fromJSON('["ubuntu-latest", "ubuntu-20.04-xl"]')[github.repository == 'github/docs-internal'] }} steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/link-check-daily.yml b/.github/workflows/link-check-daily.yml index f97a282a8c5e..ade740bd1a80 100644 --- a/.github/workflows/link-check-daily.yml +++ b/.github/workflows/link-check-daily.yml @@ -23,7 +23,7 @@ jobs: run: gh --version - name: Check out repo's default branch - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup @@ -37,7 +37,7 @@ jobs: - name: Check out docs-early-access too, if internal repo if: ${{ github.repository == 'github/docs-internal' }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/docs-early-access token: ${{ secrets.DOCS_BOT_PAT_BASE }} diff --git a/.github/workflows/link-check-on-pr.yml b/.github/workflows/link-check-on-pr.yml index 3aee13ca6f26..89b25df02b3b 100644 --- a/.github/workflows/link-check-on-pr.yml +++ b/.github/workflows/link-check-on-pr.yml @@ -26,7 +26,7 @@ jobs: if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/lint-code.yml b/.github/workflows/lint-code.yml index 704d4da52093..b7c94fd94a05 100644 --- a/.github/workflows/lint-code.yml +++ b/.github/workflows/lint-code.yml @@ -23,7 +23,7 @@ jobs: runs-on: ${{ fromJSON('["ubuntu-latest", "ubuntu-20.04-xl"]')[github.repository == 'github/docs-internal'] }} steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/lint-entire-content-data-markdown.yml b/.github/workflows/lint-entire-content-data-markdown.yml index 63418377d96a..e95e2314481e 100644 --- a/.github/workflows/lint-entire-content-data-markdown.yml +++ b/.github/workflows/lint-entire-content-data-markdown.yml @@ -23,7 +23,7 @@ jobs: run: gh --version - name: Check out repo's default branch - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Node and dependencies uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/local-dev.yml b/.github/workflows/local-dev.yml index b4060307b935..e9822c3d96af 100644 --- a/.github/workflows/local-dev.yml +++ b/.github/workflows/local-dev.yml @@ -19,7 +19,7 @@ jobs: runs-on: ${{ fromJSON('["ubuntu-latest", "ubuntu-20.04-xl"]')[github.repository == 'github/docs-internal'] }} steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/move-content.yml b/.github/workflows/move-content.yml index 2588bc36f4bd..29c9f04c80bd 100644 --- a/.github/workflows/move-content.yml +++ b/.github/workflows/move-content.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/move-ready-to-merge-pr.yaml b/.github/workflows/move-ready-to-merge-pr.yaml index d493d59a58e4..6e8a3f4f6a23 100644 --- a/.github/workflows/move-ready-to-merge-pr.yaml +++ b/.github/workflows/move-ready-to-merge-pr.yaml @@ -31,7 +31,7 @@ jobs: repo-token: ${{ secrets.DOCS_BOT_PAT_BASE }} - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/move-reopened-issues-to-triage.yaml b/.github/workflows/move-reopened-issues-to-triage.yaml index 7ef52a6818fc..a4a66f8aa6f6 100644 --- a/.github/workflows/move-reopened-issues-to-triage.yaml +++ b/.github/workflows/move-reopened-issues-to-triage.yaml @@ -45,7 +45,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: diff --git a/.github/workflows/needs-sme-stale-check.yaml b/.github/workflows/needs-sme-stale-check.yaml index 8b9ee19a4f1b..244276e475bc 100644 --- a/.github/workflows/needs-sme-stale-check.yaml +++ b/.github/workflows/needs-sme-stale-check.yaml @@ -33,7 +33,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: diff --git a/.github/workflows/needs-sme-workflow.yml b/.github/workflows/needs-sme-workflow.yml index 9151f1669f6a..5ded866703e1 100644 --- a/.github/workflows/needs-sme-workflow.yml +++ b/.github/workflows/needs-sme-workflow.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 with: @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 with: diff --git a/.github/workflows/no-response.yaml b/.github/workflows/no-response.yaml index e1d58b63f0f8..841867baf5ac 100644 --- a/.github/workflows/no-response.yaml +++ b/.github/workflows/no-response.yaml @@ -50,7 +50,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: diff --git a/.github/workflows/notify-about-deployment.yml b/.github/workflows/notify-about-deployment.yml index 3b33db8f03af..21228349fd7a 100644 --- a/.github/workflows/notify-about-deployment.yml +++ b/.github/workflows/notify-about-deployment.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/orphaned-features-check.yml b/.github/workflows/orphaned-features-check.yml index 4567a4d6b14c..2ab443c1cedf 100644 --- a/.github/workflows/orphaned-features-check.yml +++ b/.github/workflows/orphaned-features-check.yml @@ -26,7 +26,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout English repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # Using a PAT is necessary so that the new commit will trigger the # CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.) diff --git a/.github/workflows/orphaned-files-check.yml b/.github/workflows/orphaned-files-check.yml index ec26c4a5d94a..a893626e82c1 100644 --- a/.github/workflows/orphaned-files-check.yml +++ b/.github/workflows/orphaned-files-check.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout English repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # Using a PAT is necessary so that the new commit will trigger the # CI in the PR. (Events from GITHUB_TOKEN don't trigger new workflows.) diff --git a/.github/workflows/os-ready-for-review.yml b/.github/workflows/os-ready-for-review.yml index 0db8495e7197..417bcc2b197a 100644 --- a/.github/workflows/os-ready-for-review.yml +++ b/.github/workflows/os-ready-for-review.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo content - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Check if this run was triggered by a member of the docs team uses: actions/github-script@e69ef5462fd455e02edcaf4dd7708eda96b9eda0 diff --git a/.github/workflows/package-lock-lint.yml b/.github/workflows/package-lock-lint.yml index 7ec58aed4e17..8b8452e6335f 100644 --- a/.github/workflows/package-lock-lint.yml +++ b/.github/workflows/package-lock-lint.yml @@ -25,7 +25,7 @@ jobs: if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Setup Node.js uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 diff --git a/.github/workflows/purge-fastly.yml b/.github/workflows/purge-fastly.yml index 4ef034a1bd04..eaa6056016fe 100644 --- a/.github/workflows/purge-fastly.yml +++ b/.github/workflows/purge-fastly.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/purge-old-workflow-runs.yml b/.github/workflows/purge-old-workflow-runs.yml index 5eaf38634ec4..487ac78b9011 100644 --- a/.github/workflows/purge-old-workflow-runs.yml +++ b/.github/workflows/purge-old-workflow-runs.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/ready-for-doc-review.yml b/.github/workflows/ready-for-doc-review.yml index 420832ccf218..7c1a413d54c7 100644 --- a/.github/workflows/ready-for-doc-review.yml +++ b/.github/workflows/ready-for-doc-review.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo content - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/docs-internal token: ${{ secrets.DOCS_BOT_PAT_BASE }} diff --git a/.github/workflows/repo-sync.yml b/.github/workflows/repo-sync.yml index fef88f881975..de5aa181b764 100644 --- a/.github/workflows/repo-sync.yml +++ b/.github/workflows/repo-sync.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Sync repo to branch uses: repo-sync/github-sync@3832fe8e2be32372e1b3970bbae8e7079edeec88 diff --git a/.github/workflows/review-comment.yml b/.github/workflows/review-comment.yml index c24198a6948a..73f4ccef37c9 100644 --- a/.github/workflows/review-comment.yml +++ b/.github/workflows/review-comment.yml @@ -38,7 +38,7 @@ jobs: PR_NUMBER: ${{ github.event.pull_request.number }} steps: - name: check out repo content - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup - name: Set APP_URL diff --git a/.github/workflows/reviewers-content-systems.yml b/.github/workflows/reviewers-content-systems.yml index 3f0bc7cb3c8d..40f2570697d1 100644 --- a/.github/workflows/reviewers-content-systems.yml +++ b/.github/workflows/reviewers-content-systems.yml @@ -6,6 +6,12 @@ name: Reviewers - Content Systems on: pull_request: + types: + - edited + - opened + - ready_for_review + - reopened + - synchronize paths: - 'contributing/content-*.md' - 'content/contributing/**.md' @@ -29,7 +35,10 @@ jobs: GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Add content systems as a reviewer - run: | - gh pr edit $PR --add-reviewer github/docs-content-systems - gh pr edit $PR --add-label reviewers-content-systems + uses: ./.github/actions/retry-command + with: + command: gh pr edit $PR --add-reviewer github/docs-content-systems --add-label reviewers-content-systems diff --git a/.github/workflows/reviewers-dependabot.yml b/.github/workflows/reviewers-dependabot.yml index 9f3cc8c1152c..b282fb9efe88 100644 --- a/.github/workflows/reviewers-dependabot.yml +++ b/.github/workflows/reviewers-dependabot.yml @@ -6,6 +6,12 @@ name: Reviewers - Dependabot on: pull_request: + types: + - edited + - opened + - ready_for_review + - reopened + - synchronize paths: - 'data/reusable/dependabot/**' - 'content/code-security/dependabot/**' @@ -18,7 +24,7 @@ permissions: repository-projects: read jobs: - add-reviewer: + reviewers-dependabot: if: >- ${{ github.repository == 'github/docs-internal' && !github.event.pull_request.draft && @@ -26,11 +32,14 @@ jobs: github.event.pull_request.head.ref != 'repo-sync' }} runs-on: ubuntu-latest env: - GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} PR: ${{ github.event.pull_request.html_url }} + GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} steps: - - name: Add Dependabot Core Maintainers as reviewers - run: | - gh pr edit $PR --add-reviewer github/dependabot-updates-reviewers - gh pr edit $PR --add-label reviewers-dependabot + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Add dependabot as a reviewer + uses: ./.github/actions/retry-command + with: + command: gh pr edit $PR --add-reviewer github/dependabot-updates-reviewers --add-label reviewers-dependabot diff --git a/.github/workflows/reviewers-docs-engineering.yml b/.github/workflows/reviewers-docs-engineering.yml index 5c15a5cd3ce8..f2352d1c9004 100644 --- a/.github/workflows/reviewers-docs-engineering.yml +++ b/.github/workflows/reviewers-docs-engineering.yml @@ -35,7 +35,7 @@ permissions: repository-projects: read jobs: - codeowners-docs-engineering: + reviewers-docs-engineering: if: >- ${{ github.repository == 'github/docs-internal' && !github.event.pull_request.draft && @@ -47,7 +47,10 @@ jobs: GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Add docs engineering as a reviewer - run: | - gh pr edit $PR --add-reviewer github/docs-engineering - gh pr edit $PR --add-label reviewers-docs-engineering + uses: ./.github/actions/retry-command + with: + command: gh pr edit $PR --add-reviewer github/docs-engineering --add-label reviewers-docs-engineering diff --git a/.github/workflows/reviewers-legal.yml b/.github/workflows/reviewers-legal.yml index d53467c2a82c..13f1fc95e10b 100644 --- a/.github/workflows/reviewers-legal.yml +++ b/.github/workflows/reviewers-legal.yml @@ -23,7 +23,7 @@ permissions: repository-projects: read jobs: - codeowners-legal: + reviewers-legal: if: >- ${{ github.repository == 'github/docs-internal' && !github.event.pull_request.draft && @@ -31,8 +31,8 @@ jobs: github.event.pull_request.head.ref != 'repo-sync' }} runs-on: ubuntu-latest steps: - - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - name: Checkout repository + uses: actions/checkout@v4 - name: Get changed files id: changed_files @@ -52,11 +52,11 @@ jobs: CHANGED_FILE_PATHS: ${{ steps.changed_files.outputs.filtered_changed_files }} CONTENT_TYPE: 'rai' - - name: Check for reviewers-legal label, add if missing and request review + - name: Add legal as a reviewer if: steps.checkContentType.outputs.containsContentType == 'true' + uses: ./.github/actions/retry-command env: GH_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }} PR: ${{ github.event.pull_request.html_url }} - run: | - gh pr edit $PR --add-reviewer github/legal-product - gh pr edit $PR --add-label reviewers-legal + with: + command: gh pr edit $PR --add-reviewer github/legal-product --add-label reviewers-legal diff --git a/.github/workflows/site-policy-sync.yml b/.github/workflows/site-policy-sync.yml index 0776e8f1657a..1ce22e32b105 100644 --- a/.github/workflows/site-policy-sync.yml +++ b/.github/workflows/site-policy-sync.yml @@ -27,10 +27,10 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout docs-internal - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: checkout public site-policy - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: github/site-policy token: ${{ secrets.API_TOKEN_SITEPOLICY }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 0414f70e22bd..1628f40aa0f8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -34,7 +34,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: diff --git a/.github/workflows/sync-audit-logs.yml b/.github/workflows/sync-audit-logs.yml index 9be9a4a4d541..70acc0312e60 100644 --- a/.github/workflows/sync-audit-logs.yml +++ b/.github/workflows/sync-audit-logs.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup @@ -87,8 +87,8 @@ jobs: echo "Creating pull request..." gh pr create \ --title "Update audit log event data" \ - --body '👋 humans. This PR updates the audit log event data with the latest changes. (Synced from github/audit-log-allowlists) - + --body '👋 Docs First Responder. This PR updates the audit log event data with the latest changes, synced from github/audit-log-allowlists. + Make sure the PR builds successfully and there are no gross errors (for example, a file is deleted). You do not need to validate the contents (that is the responsibility of product teams). If CI does not pass or other problems arise, contact #docs-engineering on slack.' \ --repo github/docs-internal \ --label audit-log-pipeline \ diff --git a/.github/workflows/sync-codeql-cli.yml b/.github/workflows/sync-codeql-cli.yml index f69f3ef16bfa..8cfd73ce3dc9 100644 --- a/.github/workflows/sync-codeql-cli.yml +++ b/.github/workflows/sync-codeql-cli.yml @@ -30,11 +30,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Check out a nested repository inside of previous checkout - name: Checkout semmle-code repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # By default, only the most recent commit of the `main` branch # will be checked out diff --git a/.github/workflows/sync-graphql.yml b/.github/workflows/sync-graphql.yml index efae9591dba1..3b6fe3782acf 100644 --- a/.github/workflows/sync-graphql.yml +++ b/.github/workflows/sync-graphql.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup - name: Run updater scripts env: diff --git a/.github/workflows/sync-openapi.yml b/.github/workflows/sync-openapi.yml index 480e57662a97..74abf1f367a3 100644 --- a/.github/workflows/sync-openapi.yml +++ b/.github/workflows/sync-openapi.yml @@ -30,11 +30,11 @@ jobs: runs-on: ubuntu-20.04-xl steps: - name: Checkout repository code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Check out a nested repository inside of previous checkout - name: Checkout rest-api-description repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # By default, only the most recent commit of the `main` branch # will be checked out @@ -42,7 +42,7 @@ jobs: path: rest-api-description ref: ${{ inputs.SOURCE_BRANCH }} - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: # By default, only the most recent commit of the `main` branch # will be checked out @@ -110,6 +110,8 @@ jobs: --title "Update OpenAPI Description" \ --body '👋 humans. This PR updates the OpenAPI description with the latest changes. (Synced from github/rest-api-description@${{ steps.rest-api-description.outputs.OPENAPI_COMMIT_SHA }}) + Docs First Responders should follow [the acting-as-the-first-responder instructions](https://github.com/github/docs-team/blob/main/contributing-to-docs/first-responder/acting-as-the-first-responder.md?plain=1#L156). + If CI does not pass or other problems arise, contact #docs-engineering on slack.' \ --repo github/docs-internal \ --label github-openapi-bot \ diff --git a/.github/workflows/sync-secret-scanning.yml b/.github/workflows/sync-secret-scanning.yml index d25501739624..60268faa5fc9 100644 --- a/.github/workflows/sync-secret-scanning.yml +++ b/.github/workflows/sync-secret-scanning.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/test-changed-content.yml b/.github/workflows/test-changed-content.yml index 9375cc8b04ac..acd8d9d3ca0a 100644 --- a/.github/workflows/test-changed-content.yml +++ b/.github/workflows/test-changed-content.yml @@ -27,7 +27,7 @@ jobs: # Each of these ifs needs to be repeated at each step to make sure the required check still runs # Even if if doesn't do anything - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 716bfff8a4a9..e873ebf08953 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -90,7 +90,7 @@ jobs: # Each of these ifs needs to be repeated at each step to make sure the required check still runs # Even if if doesn't do anything - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/setup-elasticsearch if: ${{ matrix.name == 'search' || matrix.name == 'languages' }} diff --git a/.github/workflows/triage-issue-comments.yml b/.github/workflows/triage-issue-comments.yml index bdb522be3728..d1bf9e41cdef 100644 --- a/.github/workflows/triage-issue-comments.yml +++ b/.github/workflows/triage-issue-comments.yml @@ -43,7 +43,7 @@ jobs: } - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/triage-issues.yml b/.github/workflows/triage-issues.yml index 4db152803e97..2e90f45d89e0 100644 --- a/.github/workflows/triage-issues.yml +++ b/.github/workflows/triage-issues.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/triage-pull-requests.yml b/.github/workflows/triage-pull-requests.yml index 9b318ab2160e..4ff03de5fc76 100644 --- a/.github/workflows/triage-pull-requests.yml +++ b/.github/workflows/triage-pull-requests.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/triage-stale-check.yml b/.github/workflows/triage-stale-check.yml index a7fef5b81a63..fbe8b23c61b2 100644 --- a/.github/workflows/triage-stale-check.yml +++ b/.github/workflows/triage-stale-check.yml @@ -34,7 +34,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: @@ -63,7 +63,7 @@ jobs: - name: Check out repo if: ${{ failure() }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/slack-alert if: ${{ failure() }} with: diff --git a/.github/workflows/triage-unallowed-contributions.yml b/.github/workflows/triage-unallowed-contributions.yml index a84ac2767fa0..fbf54ff9d50e 100644 --- a/.github/workflows/triage-unallowed-contributions.yml +++ b/.github/workflows/triage-unallowed-contributions.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Get files changed uses: dorny/paths-filter@0bc4621a3135347011ad047f9ecf449bf72ce2bd diff --git a/.github/workflows/validate-asset-images.yml b/.github/workflows/validate-asset-images.yml index 2b3898025d0d..7e3317c7dce1 100644 --- a/.github/workflows/validate-asset-images.yml +++ b/.github/workflows/validate-asset-images.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out repo - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup diff --git a/.github/workflows/validate-github-github-docs-urls.yml b/.github/workflows/validate-github-github-docs-urls.yml index 391362a64bc9..0651b878f7c5 100644 --- a/.github/workflows/validate-github-github-docs-urls.yml +++ b/.github/workflows/validate-github-github-docs-urls.yml @@ -34,10 +34,10 @@ jobs: runs-on: ubuntu-20.04-xl steps: - name: Check out repo's default branch - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: ./.github/actions/node-npm-setup - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: token: ${{ secrets.DOCS_BOT_PAT_BASE }} repository: github/github diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index ab59a4f37f78..000000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "workbench.editor.enablePreview": false, - "workbench.editor.enablePreviewFromQuickOpen": false -} diff --git a/Dockerfile b/Dockerfile index b8ddea383fa8..aa4cd8cf67a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ # --------------------------------------------------------------- # To update the sha: # https://github.com/github/gh-base-image/pkgs/container/gh-base-image%2Fgh-base-noble -FROM ghcr.io/github/gh-base-image/gh-base-noble:20250529-200944-g9be5a274f AS base +FROM ghcr.io/github/gh-base-image/gh-base-noble:20250619-223112-g14de19c1f AS base # Install curl for Node install and determining the early access branch # Install git for cloning docs-early-access & translations repos diff --git a/assets/images/help/billing/copilot-tab.png b/assets/images/help/billing/copilot-tab.png new file mode 100644 index 000000000000..5f1b3df34179 Binary files /dev/null and b/assets/images/help/billing/copilot-tab.png differ diff --git a/assets/images/help/billing/download-usage-report.png b/assets/images/help/billing/download-usage-report.png new file mode 100644 index 000000000000..f6ea1e032ca6 Binary files /dev/null and b/assets/images/help/billing/download-usage-report.png differ diff --git a/assets/images/help/billing/org-budget-example.png b/assets/images/help/billing/org-budget-example.png new file mode 100644 index 000000000000..9b6ba13cf122 Binary files /dev/null and b/assets/images/help/billing/org-budget-example.png differ diff --git a/assets/images/help/billing/overview-chart-download-button.png b/assets/images/help/billing/overview-chart-download-button.png new file mode 100644 index 000000000000..5edd8c665175 Binary files /dev/null and b/assets/images/help/billing/overview-chart-download-button.png differ diff --git a/assets/images/help/billing/overview-product-summary.png b/assets/images/help/billing/overview-product-summary.png new file mode 100644 index 000000000000..4e9dc18ce55a Binary files /dev/null and b/assets/images/help/billing/overview-product-summary.png differ diff --git a/assets/images/help/billing/product-usage-chart.png b/assets/images/help/billing/product-usage-chart.png new file mode 100644 index 000000000000..4381cbd9eeb1 Binary files /dev/null and b/assets/images/help/billing/product-usage-chart.png differ diff --git a/assets/images/help/copilot/code-review/automatic-code-review-personal.png b/assets/images/help/copilot/code-review/automatic-code-review-personal.png index c92788db8ee6..01abb750d206 100644 Binary files a/assets/images/help/copilot/code-review/automatic-code-review-personal.png and b/assets/images/help/copilot/code-review/automatic-code-review-personal.png differ diff --git a/assets/images/help/copilot/coding-agent/approve-and-run-workflows.png b/assets/images/help/copilot/coding-agent/approve-and-run-workflows.png index caf23ecd47b8..db566bb3ad0e 100644 Binary files a/assets/images/help/copilot/coding-agent/approve-and-run-workflows.png and b/assets/images/help/copilot/coding-agent/approve-and-run-workflows.png differ diff --git a/assets/images/help/copilot/coding-agent/assign-to-copilot.png b/assets/images/help/copilot/coding-agent/assign-to-copilot.png index c1a9e80417a7..850ad4fc89d5 100644 Binary files a/assets/images/help/copilot/coding-agent/assign-to-copilot.png and b/assets/images/help/copilot/coding-agent/assign-to-copilot.png differ diff --git a/assets/images/help/copilot/coding-agent/comment-to-agent-on-pr.png b/assets/images/help/copilot/coding-agent/comment-to-agent-on-pr.png index 5759875e849e..4b8d26fab03f 100644 Binary files a/assets/images/help/copilot/coding-agent/comment-to-agent-on-pr.png and b/assets/images/help/copilot/coding-agent/comment-to-agent-on-pr.png differ diff --git a/assets/images/help/copilot/coding-agent/copilot-finished-work.png b/assets/images/help/copilot/coding-agent/copilot-finished-work.png index 19ef6fd27269..8d2c73f06dcf 100644 Binary files a/assets/images/help/copilot/coding-agent/copilot-finished-work.png and b/assets/images/help/copilot/coding-agent/copilot-finished-work.png differ diff --git a/assets/images/help/copilot/coding-agent/copilot-started-work.png b/assets/images/help/copilot/coding-agent/copilot-started-work.png index 1cb95cc75ea5..790723642261 100644 Binary files a/assets/images/help/copilot/coding-agent/copilot-started-work.png and b/assets/images/help/copilot/coding-agent/copilot-started-work.png differ diff --git a/assets/images/help/copilot/coding-agent/firewall-warning.png b/assets/images/help/copilot/coding-agent/firewall-warning.png index ed0c5d559745..285d93ee2e09 100644 Binary files a/assets/images/help/copilot/coding-agent/firewall-warning.png and b/assets/images/help/copilot/coding-agent/firewall-warning.png differ diff --git a/assets/images/help/copilot/coding-agent/issue-assigned-to-copilot.png b/assets/images/help/copilot/coding-agent/issue-assigned-to-copilot.png index 9d4ee4674038..d70b2d8f066e 100644 Binary files a/assets/images/help/copilot/coding-agent/issue-assigned-to-copilot.png and b/assets/images/help/copilot/coding-agent/issue-assigned-to-copilot.png differ diff --git a/assets/images/help/copilot/coding-agent/issue-link-to-pr.png b/assets/images/help/copilot/coding-agent/issue-link-to-pr.png index 2fd080b2f886..1ea05e0dc422 100644 Binary files a/assets/images/help/copilot/coding-agent/issue-link-to-pr.png and b/assets/images/help/copilot/coding-agent/issue-link-to-pr.png differ diff --git a/assets/images/help/copilot/coding-agent/log-stop-session.png b/assets/images/help/copilot/coding-agent/log-stop-session.png index bb6b42548c59..4c3dc631305e 100644 Binary files a/assets/images/help/copilot/coding-agent/log-stop-session.png and b/assets/images/help/copilot/coding-agent/log-stop-session.png differ diff --git a/assets/images/help/copilot/coding-agent/log-view-session.png b/assets/images/help/copilot/coding-agent/log-view-session.png index 558486f6ec81..69a8cdd0c883 100644 Binary files a/assets/images/help/copilot/coding-agent/log-view-session.png and b/assets/images/help/copilot/coding-agent/log-view-session.png differ diff --git a/assets/images/help/copilot/copilot-gridtoy-change.png b/assets/images/help/copilot/copilot-gridtoy-change.png new file mode 100644 index 000000000000..d2175a1f7aff Binary files /dev/null and b/assets/images/help/copilot/copilot-gridtoy-change.png differ diff --git a/assets/images/help/copilot/copilot-immersive-button.png b/assets/images/help/copilot/copilot-immersive-button.png deleted file mode 100644 index b45d3e315dfd..000000000000 Binary files a/assets/images/help/copilot/copilot-immersive-button.png and /dev/null differ diff --git a/assets/images/help/copilot/sdlc-guide/agent-mode.png b/assets/images/help/copilot/sdlc-guide/agent-mode.png index 4d3081cd089f..abf6dfdb7c55 100644 Binary files a/assets/images/help/copilot/sdlc-guide/agent-mode.png and b/assets/images/help/copilot/sdlc-guide/agent-mode.png differ diff --git a/assets/images/help/copilot/sdlc-guide/agent-pr.png b/assets/images/help/copilot/sdlc-guide/agent-pr.png index 5c2b36e55ead..a8af44c8705c 100644 Binary files a/assets/images/help/copilot/sdlc-guide/agent-pr.png and b/assets/images/help/copilot/sdlc-guide/agent-pr.png differ diff --git a/assets/images/help/copilot/sdlc-guide/autofix.png b/assets/images/help/copilot/sdlc-guide/autofix.png index 879597bb6a18..07e514621f3c 100644 Binary files a/assets/images/help/copilot/sdlc-guide/autofix.png and b/assets/images/help/copilot/sdlc-guide/autofix.png differ diff --git a/assets/images/help/copilot/sdlc-guide/issue-creation.png b/assets/images/help/copilot/sdlc-guide/issue-creation.png index 47ac48174af5..1b7645ed39b0 100644 Binary files a/assets/images/help/copilot/sdlc-guide/issue-creation.png and b/assets/images/help/copilot/sdlc-guide/issue-creation.png differ diff --git a/assets/images/help/copilot/sdlc-guide/model-compare.png b/assets/images/help/copilot/sdlc-guide/model-compare.png index 11d5cb488344..8faf4f34035c 100644 Binary files a/assets/images/help/copilot/sdlc-guide/model-compare.png and b/assets/images/help/copilot/sdlc-guide/model-compare.png differ diff --git a/assets/images/help/copilot/tell-me-about-repo.png b/assets/images/help/copilot/tell-me-about-repo.png new file mode 100644 index 000000000000..58592bd2a60d Binary files /dev/null and b/assets/images/help/copilot/tell-me-about-repo.png differ diff --git a/assets/images/help/copilot/vsc-mcp-server-restart.png b/assets/images/help/copilot/vsc-mcp-server-restart.png new file mode 100644 index 000000000000..0d347888cfa8 Binary files /dev/null and b/assets/images/help/copilot/vsc-mcp-server-restart.png differ diff --git a/assets/images/help/copilot/vscode-current-usage.png b/assets/images/help/copilot/vscode-current-usage.png new file mode 100644 index 000000000000..ba22d7fe8890 Binary files /dev/null and b/assets/images/help/copilot/vscode-current-usage.png differ diff --git a/assets/images/help/dependabot/dependabot-alert-fix-summary.png b/assets/images/help/dependabot/dependabot-alert-fix-summary.png new file mode 100644 index 000000000000..e7c5bd6d413d Binary files /dev/null and b/assets/images/help/dependabot/dependabot-alert-fix-summary.png differ diff --git a/assets/images/help/dependabot/dependabot-alert-timeline.png b/assets/images/help/dependabot/dependabot-alert-timeline.png new file mode 100644 index 000000000000..f78a5b96f45d Binary files /dev/null and b/assets/images/help/dependabot/dependabot-alert-timeline.png differ diff --git a/assets/images/help/dependabot/dependabot-alert-vulnerability-details.png b/assets/images/help/dependabot/dependabot-alert-vulnerability-details.png new file mode 100644 index 000000000000..71fc0bdc3b2a Binary files /dev/null and b/assets/images/help/dependabot/dependabot-alert-vulnerability-details.png differ diff --git a/assets/images/help/dependabot/dependabot-vnet-logs.png b/assets/images/help/dependabot/dependabot-vnet-logs.png index 3124b4c54245..b47baf35268b 100644 Binary files a/assets/images/help/dependabot/dependabot-vnet-logs.png and b/assets/images/help/dependabot/dependabot-vnet-logs.png differ diff --git a/assets/images/help/issues/issues-create-saved-view.png b/assets/images/help/issues/issues-create-saved-view.png index ca805224137c..f2d0cdee4811 100644 Binary files a/assets/images/help/issues/issues-create-saved-view.png and b/assets/images/help/issues/issues-create-saved-view.png differ diff --git a/assets/images/help/models/github-models-commit-changes.png b/assets/images/help/models/github-models-commit-changes.png index 883084dbc672..72dec7e8b4ea 100644 Binary files a/assets/images/help/models/github-models-commit-changes.png and b/assets/images/help/models/github-models-commit-changes.png differ diff --git a/assets/images/help/models/github-models-compare-toggle.png b/assets/images/help/models/github-models-compare-toggle.png index af1d61bc3b79..f8d28fcd956b 100644 Binary files a/assets/images/help/models/github-models-compare-toggle.png and b/assets/images/help/models/github-models-compare-toggle.png differ diff --git a/assets/images/help/models/github-models-datasets.png b/assets/images/help/models/github-models-datasets.png index 0f09b205b9dd..bfc1e531a99e 100644 Binary files a/assets/images/help/models/github-models-datasets.png and b/assets/images/help/models/github-models-datasets.png differ diff --git a/assets/images/help/models/github-models-system-prompt.png b/assets/images/help/models/github-models-system-prompt.png index 4629597f676e..bfd3ed25c275 100644 Binary files a/assets/images/help/models/github-models-system-prompt.png and b/assets/images/help/models/github-models-system-prompt.png differ diff --git a/assets/images/help/repository/code-scanning-alert-details-learners.png b/assets/images/help/repository/code-scanning-alert-details-learners.png index e138f840385b..53d1b83f1d08 100644 Binary files a/assets/images/help/repository/code-scanning-alert-details-learners.png and b/assets/images/help/repository/code-scanning-alert-details-learners.png differ diff --git a/assets/images/help/repository/code-scanning-alert-location-learners.png b/assets/images/help/repository/code-scanning-alert-location-learners.png index 2f4f46d3c721..d2ddc819dcf8 100644 Binary files a/assets/images/help/repository/code-scanning-alert-location-learners.png and b/assets/images/help/repository/code-scanning-alert-location-learners.png differ diff --git a/assets/images/help/repository/code-scanning-alert-timeline-learners.png b/assets/images/help/repository/code-scanning-alert-timeline-learners.png index 3801669dc4bf..e0a16e688f55 100644 Binary files a/assets/images/help/repository/code-scanning-alert-timeline-learners.png and b/assets/images/help/repository/code-scanning-alert-timeline-learners.png differ diff --git a/assets/images/social-cards/actions.png b/assets/images/social-cards/actions.png index 8f89fd2252cd..40647b6a4c22 100644 Binary files a/assets/images/social-cards/actions.png and b/assets/images/social-cards/actions.png differ diff --git a/assets/images/social-cards/code-security.png b/assets/images/social-cards/code-security.png index ebe0a9db4909..be6192f5dbe9 100644 Binary files a/assets/images/social-cards/code-security.png and b/assets/images/social-cards/code-security.png differ diff --git a/assets/images/social-cards/copilot.png b/assets/images/social-cards/copilot.png index 6b93d92fea7e..758ba4baa438 100644 Binary files a/assets/images/social-cards/copilot.png and b/assets/images/social-cards/copilot.png differ diff --git a/assets/images/social-cards/default.png b/assets/images/social-cards/default.png index 7537c58e8f6f..7405f132c147 100644 Binary files a/assets/images/social-cards/default.png and b/assets/images/social-cards/default.png differ diff --git a/assets/images/social-cards/issues.png b/assets/images/social-cards/issues.png index 37aec22b3b7a..906047323ca3 100644 Binary files a/assets/images/social-cards/issues.png and b/assets/images/social-cards/issues.png differ diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md index 87861657d61d..ef816dfa3422 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md @@ -94,10 +94,6 @@ This feed shows activity and recommendations based on your network on {% data va {% endif %} -## Exploring recommended repositories - -In the "Explore repositories" section on the right side of your dashboard, you can explore recommended repositories in your communities. Recommendations are based on repositories you've starred or visited, the people you follow, and activity within repositories that you have access to.{% ifversion fpt or ghec %} For more information, see [AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github).{% endif %} - ## Further reading * [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/about-your-organization-dashboard) diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md index 2214e471aae9..97286f38cc4d 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md @@ -39,12 +39,10 @@ While ARC may be deployed successfully with different tooling and configurations * Installation tooling other than Helm * Service account and/or template spec customization -If you're uncertain if the issue is out of scope, open a ticket and we're happy to help you determine the best way to proceed. - For more information about contacting {% data variables.contact.github_support %}, see [AUTOTITLE](/support/contacting-github-support). > [!NOTE] -> * OpenShift clusters are currently unsupported. +> * OpenShift clusters are in public preview. See guidance from [Red Hat](https://developers.redhat.com/articles/2025/02/17/how-securely-deploy-github-arc-openshift#arc_architecture) for configuration recommendations. > * ARC is only supported on GitHub Enterprise Server versions 3.9 and greater. ## Working with {% data variables.contact.github_support %} for Actions Runner Controller diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md index a7d3b9fc2572..6023be70831f 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md @@ -85,6 +85,148 @@ ARC can use {% data variables.product.pat_v1_plural %} to register self-hosted r {% data reusables.actions.actions-runner-controller-helm-chart-options %} +## Authenticating ARC with a {% data variables.product.pat_v2 %} + +ARC can use {% data variables.product.pat_v2_plural %} to register self-hosted runners. + +{% ifversion ghec or ghes %} + +> [!NOTE] +> Authenticating ARC with a {% data variables.product.pat_v1 %} is the only supported authentication method to register runners at the enterprise level. + +{% endif %} + +1. Create a {% data variables.product.pat_v2 %} with the required scopes. The required scopes are different depending on whether you are registering runners at the repository or organization level. For more information on how to create a {% data variables.product.pat_v2 %}, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-fine-grained-personal-access-token). + + The following is the list of required {% data variables.product.pat_generic %} scopes for ARC runners. + + * Repository runners: + * **Administration:** Read and write + + * Organization runners: + * **Administration:** Read + * **Self-hosted runners:** Read and write + +1. To create a Kubernetes secret with the value of your {% data variables.product.pat_v2 %}, use the following command. + + {% data reusables.actions.arc-runners-namespace %} + + ```bash copy + kubectl create secret generic pre-defined-secret \ + --namespace=arc-runners \ + --from-literal=github_token='YOUR-PAT' + ``` + +1. In your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file, pass the secret name as a reference. + + ```yaml + githubConfigSecret: pre-defined-secret + ``` + + {% data reusables.actions.actions-runner-controller-helm-chart-options %} + +## Authenticating ARC with vault secrets + +> [!NOTE] +> Vault integration is currently available in public preview with support for Azure Key Vault. + +Starting with gha-runner-scale-set version 0.12.0, ARC supports retrieving GitHub credentials from an external vault. Vault integration is configured per runner scale set. This means you can run some scale sets using Kubernetes secrets while others use vault-based secrets, depending on your security and operational requirements. + +### Enabling Vault Integration + +To enable vault integration for a runner scale set: + +1. **Set the `githubConfigSecret` field** in your `values.yaml` file to the name of the secret key stored in your vault. This value must be a string. +1. **Uncomment and configure the `keyVault` section** in your `values.yaml` file with the appropriate provider and access details. +1. **Provide the required certificate** (`.pfx`) to both the controller and the listener. You can do this by: + *Rebuilding the controller image with the certificate included, or + *Mounting the certificate as a volume in both the controller and the listener using the `listenerTemplate` and `controllerManager` fields. + +### Secret Format + +The secret stored in Azure Key Vault must be in JSON format. The structure depends on the type of authentication you are using: + +#### Example: GitHub Token + +```json +{ + "github_token": "TOKEN" +} +``` + +#### Example: GitHub App + +```json +{ + "github_app_id": "APP_ID_OR_CLIENT_ID", + "github_app_installation_id": "INSTALLATION_ID", + "github_app_private_key": "PRIVATE_KEY" +} +``` + +### Configuring `values.yaml` for Vault Integration + +The certificate is stored as a .pfx file and mounted to the container at /akv/cert.pfx. Below is an example of how to configure the keyVault section to use this certificate for authentication: + +```yaml +keyVault: + type: "azure_key_vault" + proxy: + https: + url: "PROXY_URL" + credentialSecretRef: "PROXY_CREDENTIALS_SECRET_NAME" + http: {} + noProxy: [] + azureKeyVault: + clientId: + tenantId: + url: + certificatePath: "/akv/cert.pfx" +``` + +### Providing the Certificate to the Controller and Listener + +ARC requires a `.pfx` certificate to authenticate with the vault. This certificate must be made available to both the controller and the listener components during controller installation. +You can do this by mounting the certificate as a volume using the `controllerManager` and `listenerTemplate` fields in your `values.yaml` file: + +```yaml +volumes: + - name: cert-volume + secret: + secretName: my-cert-secret +volumeMounts: + - mountPath: /akv + name: cert-volume + readOnly: true + +listenerTemplate: + volumeMounts: + - name: cert-volume + mountPath: /akv/certs + readOnly: true + volumes: + - name: cert-volume + secret: + secretName: my-cert-secret +``` + +The code below is an example of a scale set `values.yml` file. + +```yaml +listenerTemplate: + spec: + containers: + - name: listener + volumeMounts: + - name: cert-volume + mountPath: /akv + readOnly: true + volumes: + - name: cert-volume + secret: + secretName: my-cert-secret +``` + ## Legal notice {% data reusables.actions.actions-runner-controller-legal-notice %} diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md index 602819feecf8..8b543dda6fa1 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md @@ -150,6 +150,10 @@ To fix this, you can do one of the following things. A `401 Unauthorized` error when attempting to obtain an access token for a {% data variables.product.prodname_github_app %} could be a result of a Network Time Protocol (NTP) drift. Ensure that your Kubernetes system is accurately syncing with an NTP server and that there isn't a significant time drift. There is more leeway if your system time is behind {% data variables.product.github %}'s time, but if the environment is more than a few seconds ahead, 401 errors will occur when using {% data variables.product.prodname_github_app %}. +## Runner group limits + +{% data reusables.actions.self-hosted-runner-group-limit %} + ## Legal notice {% data reusables.actions.actions-runner-controller-legal-notice %} diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md index 3e017eef38a7..5d09bc7316db 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md @@ -32,7 +32,7 @@ You can use self-hosted runners anywhere in the management hierarchy. Repository ### Requirements for self-hosted runner machines -You can use any machine as a self-hosted runner as long at it meets these requirements: +You can use any machine as a self-hosted runner as long as it meets these requirements: * You can install and run the self-hosted runner application on the machine. * The machine can communicate with {% data variables.product.prodname_actions %}. diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/usage-limits-for-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/usage-limits-for-self-hosted-runners.md index e3d7c663b2d4..4110c86ea06d 100644 --- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/usage-limits-for-self-hosted-runners.md +++ b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/usage-limits-for-self-hosted-runners.md @@ -15,4 +15,4 @@ type: overview {% data reusables.actions.usage-api-requests %} * **Job matrix** - {% data reusables.actions.usage-matrix-limits %} {% data reusables.actions.usage-workflow-queue-limits %} -* **Registering self-hosted runners** - You can have a maximum of 10,000 self-hosted runners in one runner group. If this limit is reached, adding a new runner will not be possible. +* **Registering self-hosted runners** - {% data reusables.actions.self-hosted-runner-group-limit %} diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md index 20f067d4070a..87332f83b0ee 100644 --- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md +++ b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md @@ -81,6 +81,7 @@ jobs: > To reference these outputs, ensure the step has an explicit `id` defined (for example `id: setup-jfrog-cli`). ### Using OIDC Credentials in other steps + ```yaml - name: Sign in to Artifactory Docker registry uses: docker/login-action@v3 @@ -92,7 +93,6 @@ jobs: ## Further reading -- [OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration) in the JFrog documentation -- [Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings) in the JFrog documentation -- [AUTOTITLE](actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect) -``` +* [OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration) in the JFrog documentation +* [Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings) in the JFrog documentation +* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect) diff --git a/content/actions/sharing-automations/creating-actions/creating-a-javascript-action.md b/content/actions/sharing-automations/creating-actions/creating-a-javascript-action.md index d77e0971f8e6..b660ce92fc13 100644 --- a/content/actions/sharing-automations/creating-actions/creating-a-javascript-action.md +++ b/content/actions/sharing-automations/creating-actions/creating-a-javascript-action.md @@ -39,6 +39,7 @@ Before you begin, you'll need to download Node.js and create a public {% data va 1. Download and install Node.js 20.x, which includes npm. https://nodejs.org/en/download/ + 1. Create a new public repository on {% data variables.product.github %} and call it "hello-world-javascript-action". For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository). 1. Clone your repository to your computer. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository). @@ -60,19 +61,22 @@ Before you begin, you'll need to download Node.js and create a public {% data va Create a new file named `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions). ```yaml copy -name: 'Hello World' -description: 'Greet someone and record the time' +name: Hello World +description: Greet someone and record the time + inputs: - who-to-greet: # id of input - description: 'Who to greet' + who-to-greet: # id of input + description: Who to greet required: true - default: 'World' + default: World + outputs: time: # id of output - description: 'The time we greeted you' + description: The time we greeted you + runs: - using: 'node20' - main: 'index.js' + using: node20 + main: dist/index.js ``` This file defines the `who-to-greet` input and `time` output. It also tells the action runner how to start running this JavaScript action. @@ -90,11 +94,10 @@ The toolkit offers more than the `core` and `github` packages. For more informat At your terminal, install the actions toolkit `core` and `github` packages. ```shell copy -npm install @actions/core -npm install @actions/github +npm install @actions/core @actions/github ``` -Now you should see a `node_modules` directory with the modules you just installed and a `package-lock.json` file with the installed module dependencies and the versions of each installed module. +You should now see a `node_modules` directory and a `package-lock.json` file which track any installed dependencies and their versions. You should not commit the `node_modules` directory to your repository. ## Writing the action code @@ -102,23 +105,26 @@ This action uses the toolkit to get the `who-to-greet` input variable required i GitHub Actions provide context information about the webhook event, Git refs, workflow, action, and the person who triggered the workflow. To access the context information, you can use the `github` package. The action you'll write will print the webhook event payload to the log. -Add a new file called `index.js`, with the following code. +Add a new file called `src/index.js`, with the following code. {% raw %} ```javascript copy -const core = require('@actions/core'); -const github = require('@actions/github'); +import * as core from "@actions/core"; +import * as github from "@actions/github"; try { // `who-to-greet` input defined in action metadata file - const nameToGreet = core.getInput('who-to-greet'); - console.log(`Hello ${nameToGreet}!`); - const time = (new Date()).toTimeString(); + const nameToGreet = core.getInput("who-to-greet"); + core.info(`Hello ${nameToGreet}!`); + + // Get the current time and set it as an output variable + const time = new Date().toTimeString(); core.setOutput("time", time); + // Get the JSON webhook payload for the event that triggered the workflow - const payload = JSON.stringify(github.context.payload, undefined, 2) - console.log(`The event payload: ${payload}`); + const payload = JSON.stringify(github.context.payload, undefined, 2); + core.info(`The event payload: ${payload}`); } catch (error) { core.setFailed(error.message); } @@ -142,7 +148,7 @@ In your `hello-world-javascript-action` directory, create a `README.md` file tha * An example of how to use your action in a workflow. ````markdown copy -# Hello world javascript action +# Hello world JavaScript action This action prints "Hello World" or "Hello" + the name of a person to greet to the log. @@ -163,54 +169,70 @@ The time we greeted you. ```yaml uses: actions/hello-world-javascript-action@e76147da8e5c81eaf017dede5645551d4b94427b with: - who-to-greet: 'Mona the Octocat' + who-to-greet: Mona the Octocat ``` ```` ## Commit, tag, and push your action -{% data variables.product.github %} downloads each action run in a workflow during runtime and executes it as a complete package of code before you can use workflow commands like `run` to interact with the runner machine. This means you must include any package dependencies required to run the JavaScript code. You'll need to check in the toolkit `core` and `github` packages to your action's repository. +{% data variables.product.github %} downloads each action run in a workflow during runtime and executes it as a complete package of code before you can use workflow commands like `run` to interact with the runner machine. This means you must include any package dependencies required to run the JavaScript code. For example, this action uses `@actions/core` and `@actions/github` packages. -From your terminal, commit your `action.yml`, `index.js`, `node_modules`, `package.json`, `package-lock.json`, and `README.md` files. If you added a `.gitignore` file that lists `node_modules`, you'll need to remove that line to commit the `node_modules` directory. +Checking in your `node_modules` directory can cause problems. As an alternative, you can use tools such as [`rollup.js`](https://github.com/rollup/rollup) or [`@vercel/ncc`](https://github.com/vercel/ncc) to combine your code and dependencies into one file for distribution. -It's best practice to also add a version tag for releases of your action. For more information on versioning your action, see [AUTOTITLE](/actions/creating-actions/about-custom-actions#using-release-management-for-actions). +1. Install `rollup` and its plugins by running this command in your terminal. -```shell copy -git add action.yml index.js node_modules/* package.json package-lock.json README.md -git commit -m "My first action is ready" -git tag -a -m "My first action release" v1.1 -git push --follow-tags -``` - -Checking in your `node_modules` directory can cause problems. As an alternative, you can use a tool called [`@vercel/ncc`](https://github.com/vercel/ncc) to compile your code and modules into one file used for distribution. + `npm install --save-dev rollup @rollup/plugin-commonjs @rollup/plugin-node-resolve` -1. Install `vercel/ncc` by running this command in your terminal. +1. Create a new file called `rollup.config.js` in the root of your repository with the following code. - `npm i -g @vercel/ncc` + ```javascript copy + import commonjs from "@rollup/plugin-commonjs"; + import { nodeResolve } from "@rollup/plugin-node-resolve"; -1. Compile your `index.js` file. + const config = { + input: "src/index.js", + output: { + esModule: true, + file: "dist/index.js", + format: "es", + sourcemap: true, + }, + plugins: [commonjs(), nodeResolve({ preferBuiltins: true })], + }; - `ncc build index.js --license licenses.txt` - - You'll see a new `dist/index.js` file with your code and the compiled modules. You will also see an accompanying `dist/licenses.txt` file containing all the licenses of the `node_modules` you are using. - -1. Change the `main` keyword in your `action.yml` file to use the new `dist/index.js` file. + export default config; + ``` - `main: 'dist/index.js'` +1. Compile your `dist/index.js` file. -1. If you already checked in your `node_modules` directory, remove it. + `rollup --config rollup.config.js` - `rm -rf node_modules/*` + You'll see a new `dist/index.js` file with your code and any dependencies. -1. From your terminal, commit the updates to your `action.yml`, `dist/index.js`, and `node_modules` files. +1. From your terminal, commit the updates. ```shell copy - git add action.yml dist/index.js node_modules/* - git commit -m "Use vercel/ncc" + git add src/index.js dist/index.js rollup.config.js package.json package-lock.json README.md action.yml + git commit -m "Initial commit of my first action" git tag -a -m "My first action release" v1.1 git push --follow-tags ``` +When you commit and push your code, your updated repository should look like this: + +```text +hello-world-javascript-action/ +├── action.yml +├── dist/ +│ └── index.js +├── package.json +├── package-lock.json +├── README.md +├── rollup.config.js +└── src/ + └── index.js +``` + ## Testing out your action in a workflow Now you're ready to test your action out in a workflow. @@ -228,18 +250,23 @@ Copy the following YAML into a new file at `.github/workflows/main.yml`, and upd {% raw %} ```yaml copy -on: [push] +on: + push: + branches: + - main jobs: hello_world_job: - runs-on: ubuntu-latest name: A job to say hello + runs-on: ubuntu-latest + steps: - name: Hello world action step id: hello uses: octocat/hello-world-javascript-action@1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b with: - who-to-greet: 'Mona the Octocat' + who-to-greet: Mona the Octocat + # Use the output from the `hello` step - name: Get the output time run: echo "The time was ${{ steps.hello.outputs.time }}" @@ -253,25 +280,29 @@ When this workflow is triggered, the runner will download the `hello-world-javas Copy the workflow code into a `.github/workflows/main.yml` file in your action's repository. You can also replace the `who-to-greet` input with your name. -**.github/workflows/main.yml** - ```yaml copy -on: [push] +on: + push: + branches: + - main jobs: hello_world_job: - runs-on: ubuntu-latest name: A job to say hello + runs-on: ubuntu-latest + steps: # To use this repository's private action, # you must check out the repository - name: Checkout uses: {% data reusables.actions.action-checkout %} + - name: Hello world action step uses: ./ # Uses an action in the root directory id: hello with: - who-to-greet: 'Mona the Octocat' + who-to-greet: Mona the Octocat + # Use the output from the `hello` step - name: Get the output time run: echo "The time was {% raw %}${{ steps.hello.outputs.time }}{% endraw %}" diff --git a/content/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs.md b/content/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs.md index af4aa0360ff7..0de56405137a 100644 --- a/content/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs.md +++ b/content/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs.md @@ -347,8 +347,6 @@ jobs: ## `vars` context -{% data reusables.actions.configuration-variables-beta-note %} - The `vars` context contains custom configuration variables set at the organization, repository, and environment levels. For more information about defining configuration variables for use in multiple workflows, see [AUTOTITLE](/actions/learn-github-actions/variables#defining-variables-for-multiple-workflows). ### Example contents of the `vars` context diff --git a/content/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service.md b/content/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service.md index 03fb7e9e0da9..af6fdd9e41c3 100644 --- a/content/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service.md +++ b/content/admin/backing-up-and-restoring-your-instance/backup-service-for-github-enterprise-server/configuring-the-backup-service.md @@ -63,7 +63,7 @@ If you're using a dedicated block device as your backup target, you need to init >[!WARNING] This command will permanently erase all data on the specified device. Double-check the device name and back up any important data before proceeding. ```shell - ghe-storage-init-backup /dev/YOUR_DEVICE_NAME + /usr/local/share/enterprise/ghe-storage-init-backup /dev/YOUR_DEVICE_NAME ``` This command: diff --git a/content/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits.md b/content/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits.md index 8345a2818043..db4b5df7f106 100644 --- a/content/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits.md +++ b/content/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits.md @@ -103,3 +103,16 @@ By default, the rate limit for {% data variables.product.prodname_actions %} is ``` 1. Wait for the configuration run to complete. + +## Controlling the rate for the live update service + +If the number of AJAX requests to your {% data variables.product.prodname_ghe_server %} instance causes problems, then you may need to edit the rate limit for the WebSockets controller used by these live updates. For details of how to view Alive requests, see [AUTOTITLE](/admin/monitoring-and-managing-your-instance/monitoring-your-instance/about-the-monitor-dashboards). + +By default, a maximum of 100 requests is allowed per minute for each IP address. Administrators with access to the administrative shell can use the [ghe-config](/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities#ghe-config) utility to set `app.github.web-sockets-rate-limit` with the number of requests allowed per minute for each IP address or disable this rate limit. Setting the limit to any value that is not a positive integer (for example, `0`, `-1`, `disabled`) disables rate limiting on the WebSockets controller for live updates. + +{% data reusables.github-connect.rate-limit-live-dotcom-requests %} + +> [!IMPORTANT] +> This rate limit will not apply until you also enable the global rate limiter using `ghe-config app.github.rate-limiting-enabled 1`. When you enable the global rate limiter, other {% data variables.product.github %} features may also experience rate limits. Monitor your instance closely to check for any unexpected request rejections. + +After you make any changes to the values of these settings, run [ghe-config-apply](/admin/administering-your-instance/administering-your-instance-from-the-command-line/command-line-utilities#ghe-config-apply) to apply the settings. diff --git a/content/admin/configuring-settings/hardening-security-for-your-enterprise/enabling-private-mode.md b/content/admin/configuring-settings/hardening-security-for-your-enterprise/enabling-private-mode.md index 1c570701dd30..29be189fb382 100644 --- a/content/admin/configuring-settings/hardening-security-for-your-enterprise/enabling-private-mode.md +++ b/content/admin/configuring-settings/hardening-security-for-your-enterprise/enabling-private-mode.md @@ -31,6 +31,5 @@ With private mode enabled, you can allow unauthenticated Git operations (and any {% data reusables.enterprise_site_admin_settings.access-settings %} {% data reusables.enterprise_site_admin_settings.management-console %} -{% data reusables.enterprise_management_console.privacy %} 1. Select **Private mode**. {% data reusables.enterprise_management_console.save-settings %} diff --git a/content/admin/data-residency/network-details-for-ghecom.md b/content/admin/data-residency/network-details-for-ghecom.md index 3f52cbbf6142..faa949d9f927 100644 --- a/content/admin/data-residency/network-details-for-ghecom.md +++ b/content/admin/data-residency/network-details-for-ghecom.md @@ -97,20 +97,6 @@ If you use Azure private networking for {% data variables.product.company_short If you're running a migration to your enterprise with {% data variables.product.prodname_importer_proper_name %}, you may need to add certain ranges to an IP allow list. See [AUTOTITLE](/migrations/using-github-enterprise-importer/migrating-between-github-products/managing-access-for-a-migration-between-github-products#configuring-ip-allow-lists-for-migrations). -You must allow: - -* Ranges required for everyone -* Additional ranges that depend on your data residency region - -### Required for everyone - -* 192.30.252.0/22 -* 185.199.108.0/22 -* 140.82.112.0/20 -* 143.55.64.0/20 -* 2a0a:a440::/29 -* 2606:50c0::/32 - ### Required in the EU * 4.231.155.80/29 diff --git a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md index 73da04d36678..91d180fc36ff 100644 --- a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md +++ b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise.md @@ -77,6 +77,8 @@ When specifying actions{% ifversion actions-workflow-policy %} and reusable work * To allow all actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} in organizations that start with `space-org`, use `space-org*/*`. * To allow all actions{% ifversion actions-workflow-policy %} and reusable workflows{% endif %} in repositories that start with octocat, use `*/octocat**@*`. +Policies never restrict access to local actions on the runner filesystem (where the `uses:` path start with `./`). + ## Runners By default, anyone with admin access to a repository can add a self-hosted runner for the repository, and self-hosted runners come with risks: diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/deprovisioning-and-reinstating-users.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/deprovisioning-and-reinstating-users.md new file mode 100644 index 000000000000..a1d88dbd9403 --- /dev/null +++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/deprovisioning-and-reinstating-users.md @@ -0,0 +1,176 @@ +--- +title: Deprovisioning and reinstating users with SCIM +shortTitle: Deprovision and reinstate users +intro: 'Learn details about deprovisioning or reinstating users{% ifversion ghec %} with {% data variables.product.prodname_emus %}{% endif %}.' +versions: + ghec: '*' + feature: scim-for-ghes-public-beta +type: overview +topics: + - Accounts + - Authentication + - Enterprise + - Identity + - SSO +allowTitleToDifferFromFilename: true +product: 'Enterprises that use {% data variables.product.prodname_emus %}, or {% data variables.product.prodname_ghe_server %} instances with SCIM enabled' +--- + +{% data reusables.scim.ghes-beta-note %} + +If you {% ifversion ghec %}use {% data variables.product.prodname_emus %}{% else %}have enabled SCIM for {% data variables.location.product_location %}{% endif %}, you will use SCIM to: + +* Deprovision users and groups to remove their access. +* Reprovision users that were previously deprovisioned. + +Before you deprovision a user, it's important to understand the effects of deprovisioning, which depend on the **type of deprovisioning API call** that {% data variables.product.github %} receives from your identity provider. + +>[!IMPORTANT] Before reading further, ensure you understand how your enterprise has implemented SCIM. {% data variables.product.company_short %} provides a "paved-path" application if you use a supported identity provider (IdP) for both authentication and provisioning. If you don't use a paved-path application, you will use the REST API to make SCIM requests. See {% ifversion ghec %}[AUTOTITLE](/admin/managing-iam/understanding-iam-for-enterprises/about-enterprise-managed-users#identity-management-systems){% else %}[AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/user-provisioning-with-scim-on-ghes#supported-identity-providers){% endif %}. + +## Types of user deprovisioning + +When a user is deprovisioned, the {% data variables.product.github %} account is **suspended**, which means the user cannot access your enterprise. Regardless of the type of deprovisioning, a deprovisioned account is never deleted from an enterprise. + +The type of deprovisioning call that {% data variables.product.github %} receives from your identity provider determines whether it is possible to unsuspend (reinstate) a deprovisioned user. + +* **Soft-deprovision**: In certain scenarios, the user can be unsuspended via your SCIM integration. +* **Hard-deprovision**: It is not possible to unsuspend the user. A new account must be provisioned if the person needs to regain access. + +## Effects of deprovisioning a user + +When you deprovision a user account, either through your IdP or the REST API, {% data variables.product.github %} will make changes to the user account. + +### Effects of soft-deprovisioning + +* The user is **suspended** and **loses access** to your enterprise and any private resources. +* Once the user account is suspended, it will be listed on the "Suspended members" page instead of the "Members" page in the "People" section of the enterprise settings. +* The user's **username is obfuscated** to a hash of the original username{% ifversion ghec %}, followed by `_SHORTCODE` for enterprises on {% data variables.product.prodname_dotcom_the_website %}{% endif %}. +* With Entra ID, the user's email address remains the same. In all other cases, the user's email is obfuscated. +* The user's SCIM identity remains linked to their user account on {% data variables.product.github %}. With Entra ID, the value of the `active` attribute value in their stored linked SCIM identity is updated from `True` to `False`. +* If the user has forks of private or internal repositories, the forks are deleted within 24 hours. The forks will be restored if the user is unsuspended within 90 days. +* If the user is a member of any SCIM-provisioned IdP groups, they are hidden from these groups, and removed from any teams that are mapped to these groups. Note that this happens even if the user is still a member of the group on the IdP side. +* If organization membership is managed by IdP groups, the user will be **removed from organizations** when removed from those IdP groups or removed from all teams that are mapped to IdP groups in the organization. +* If organization membership is managed directly, the user will remain as a "suspended member" of the organization, without access, **until removed manually**. + +{% ifversion ghec %} +An enterprise owner can gain temporary access to a suspended member's private repositories (this includes both user namespace repositories and forks that have not yet been deleted). See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/accessing-user-owned-repositories-in-your-enterprise). +{% endif %} + +### Effects of hard-deprovisioning + +* The user is **suspended** and **loses access** to your enterprise and any private resources. +* Once the user account is suspended, it will be listed on the "Suspended members" page instead of the "Members" page in the "People" section of the enterprise settings. +* The user's **username is obfuscated** to a hash of the original username{% ifversion ghec %}, followed by `_SHORTCODE` for enterprises on {% data variables.product.prodname_dotcom_the_website %}{% endif %}. +* The user's email address is obfuscated. +* The user's display name is set to an empty string. +* The user's linked SCIM identity, including all of the user's SCIM attributes, gets deleted. +* The user's {% data variables.product.pat_generic_plural %}, {% data variables.product.pat_v2_plural %}, SSH keys, GPG keys, and application authorizations get deleted. Deleting keys can affect commit verification. See [AUTOTITLE](/authentication/managing-commit-signature-verification/about-commit-signature-verification#persistent-commit-signature-verification). +* Repositories owned by the user are deleted. +* Resources created by the user, such as comments, are **retained**. +* If the user is a member of any SCIM-provisioned IdP groups, they are hidden from these groups, and removed from any teams that are mapped to these groups. Note that this happens even if the user is still a member of the group on the IdP side. +* If organization membership is managed by IdP groups, the user will be **removed from organizations** when removed from those IdP groups or removed from all teams that are mapped to IdP groups in the organization. +* If organization membership is managed directly, the user will remain as a "suspended member" of the organization, without access, **until removed manually**. + +## Actions that trigger deprovisioning + +Different actions trigger soft-deprovisioning and hard-deprovisioning, and the triggers vary by SCIM integration. Generally, most actions you take in the "paved-path" IdP applications only trigger **soft-deprovisioning**, with some exceptions. + +### Triggers of soft-deprovisioning + +| SCIM integration | Trigger of soft-deprovisioning | +| ------------------- | ------------------------------ | +| REST API | A `PUT` or `PATCH` request is sent to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`, updating a user's `active` field to `false`. | +| Entra ID | A user is disabled in Entra ID, unassigned from the application, removed from all assigned groups, or soft-deleted from the tenant by the admin. For more details, see [Soft deletions](https://learn.microsoft.com/en-us/entra/architecture/recover-from-deletions#soft-deletions) in the Microsoft documentation. | +| Okta | A user is unassigned from the application, removed from all assigned groups, or deactivated with the "Deactivate" button. Note that the "Suspend" button does not send a request to {% data variables.product.github %}. Okta only sends soft-deprovisioning calls. | +| PingFederate | The user is suspended, disabled, or removed from the user store targeted by the provisioner. | + +### Triggers of hard-deprovisioning + +| SCIM integration | Trigger of hard-deprovisioning | +| ------------------- | ------------------------------ | +| REST API | A `DELETE` request is sent to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`. | +| Entra ID | The hard-deletion of an Entra ID user account, as described in [Hard deletions](https://learn.microsoft.com/en-us/entra/architecture/recover-from-deletions#hard-deletions) in Microsoft's documentation. Entra ID users who are soft-deleted (found on the "Users > Deleted users" page of the Entra ID admin portal) are automatically hard-deleted by Entra ID 30 days after being soft-deleted. | +| Okta | N/A. Okta does not send hard-deprovisioning calls. | +| PingFederate | If the "Remove User Action" setting is set to "Delete" instead of "Disable" as the result of a misconfiguration, this action will send a hard-deprovisioning call. See the [PingIdentity documentation](https://docs.pingidentity.com/integrations/github/github_emu_provisioner/pf_github_emu_connector_user_and_group_management.html#user-deprovisioning). | + +## Reinstating a user account that was soft-deprovisioned + +To restore the user's access and account details, you can reprovision the account of a user who was **soft-deprovisioned**, as long as the IdP user account is the same. The IdP user account must be the same because a soft-deprovisioned user account is still linked to this external identity, based on the SCIM `external ID` (IdP user object ID) and SCIM `User ID`. The external identity that is linked to an individual soft-deprovisioned user account cannot be changed. + +### Effects of reprovisioning + +* The user is unsuspended and regains access to your enterprise. +* The user's username and email address are restored. +* If the user is a member of a SCIM-provisioned IdP group that is mapped to a team in an organization, the user will be added to the organization immediately after their user account is reprovisioned. If they were previously a member of the organization, their membership will be reinstated, as long as it has not been more than 90 days since they were removed. See [AUTOTITLE](/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization#items-that-are-restored-for-reinstated-members). +* If the user is not a member of a SCIM-provisioned IdP group that is mapped to a team in an organization, a {% data variables.product.github %} organization owner will need to manually add their user account to the organization after they are reprovisioned. +* Deleted forks are restored if the user is unsuspended up to 90 days after suspension. +* Items associated with the user are restored, including: + * {% data variables.product.prodname_github_apps %}, {% data variables.product.prodname_oauth_apps %}, and app authorizations + * {% data variables.product.pat_generic_caps_plural %} + * SSH keys + * Token and key authorizations + * User-owned repositories + +### Actions that trigger reprovisioning + +How you reprovision a user depends on your SCIM integration and the action that triggered soft-deprovisioning. + +| SCIM implementation | Action to reprovision users | +| ------------------- | --------------------------- | +| Entra ID | Reenable a disabled account or reassign a user to the application, either directly or via an assigned group. Wait 40 minutes for the changes to process, or expedite with the "Provision on Demand" button. | +| Okta | Reactivate the account or reassign the user to the application, either directly or via a group. | +| PingFederate | Unsuspend or reenable the user in the user store, or readd the user to the datastore group or filter that is targeted by the provisioner. | +| REST API | Send a `PUT` or `PATCH` request to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`, updating the user's `active` field to `true`. | + +## Reinstating a user account that was hard-deprovisioned + +You **cannot** restore a {% data variables.product.github %} user account that was hard-deprovisioned via SCIM. Instead, you will need to provision a new {% data variables.product.github %} account for the user. + +You can reuse the username of the hard-deprovisioned user when provisioning the new account. However, it is not possible to merge the hard-deprovisioned user account with the new user account on {% data variables.product.github %}. + +* If the email addresses of the hard-deprovisioned user and the new user match, {% data variables.product.github %} will attribute existing Git commits associated with the email address to the new user. +* Existing resources and comments created by the original user will **not** be associated with the new user. + +## Audit log events + +The audit log for your enterprise displays details about activity in your enterprise. You can use the audit log to support your configuration of SCIM. For more information, see [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise). + +> [!IMPORTANT] We strongly recommend that an enterprise owner enables enterprise audit log features such as audit log streaming, source IP disclosure, and the option to stream API requests. Streaming these events allows administrators to set a log retention policy that fits the needs of their business and use their preferred tooling for querying these logs. + +### Events for soft-deprovisioning + +When you soft-deprovision a user, the `external_identity.update` event does not appear in the audit log. The following events appear in the audit log: + +* `user.suspend` +* `user.remove_email` +* `user.rename` +* `external_identity.deprovision` +* If the request succeeds, `external_identity.scim_api_success` +* If the request fails, `external_identity.scim_api_failure` +* If the user is a member of any IdP groups that are mapped to teams, `team.remove_member` +* If a user's membership in an organization is managed by the IdP and they are removed from all teams that are mapped to IdP groups in the organization, `org.remove_member` + +### Events for hard-deprovisioning + +* `external_identity.deprovision` +* `user.remove_email` +* If the request succeeds, `external_identity.scim_api_success` +* If the request fails, `external_identity.scim_api_failure` +* If the user is a member of any IdP groups that are mapped to teams, `team.remove_member` +* If a user's membership in an organization is managed by the IdP and they are removed from all teams that are mapped to IdP groups in the organization, `org.remove_member` + +### Events for reprovisioning + +When you reactivate a user, the `external_identity.update` event does not appear in the audit log. The following events appear in the audit log: + +* `user.unsuspend` +* `user.remove_email` +* `user.rename` +* `external_identity.provision` +* If the request succeeds, `external_identity.scim_api_success` +* If the request fails, `external_identity.scim_api_failure` +* If the user is a member of a SCIM-provisioned IdP group, and this group is mapped to a team in an organization, `org.add_member` + +## Further reading + +* [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api) diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/index.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/index.md index b2f736e814fa..7fe30b9bae5e 100644 --- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/index.md +++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/index.md @@ -19,6 +19,7 @@ children: - /disabling-scim-provisioning-for-users - /provisioning-users-and-groups-with-scim-using-the-rest-api - /managing-team-memberships-with-identity-provider-groups + - /deprovisioning-and-reinstating-users - /troubleshooting-team-membership-with-identity-provider-groups redirect_from: - /admin/identity-and-access-management/provisioning-user-accounts-for-enterprise-managed-users diff --git a/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md b/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md index 38cac2b43e34..638e81e88d63 100644 --- a/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md +++ b/content/admin/managing-iam/provisioning-user-accounts-with-scim/provisioning-users-and-groups-with-scim-using-the-rest-api.md @@ -98,6 +98,7 @@ When you configure your identity management system to provision users or groups {%- ifversion scim-enterprise-scope %} * [Limit the scope of the SCIM token](#limit-the-scope-of-the-scim-token) {%- endif %} +* [Understand the effects of deprovisioning](#understand-the-effects-of-deprovisioning) ### Ensure your identity management system is the only source of write operations @@ -161,6 +162,12 @@ If you currently use a token with the `admin:enterprise` scope, be aware that th {% endif %} +### Understand the effects of deprovisioning + +To remove a user's access from {% data variables.product.github %}, you can send either a "soft deprovision" or a "hard deprovision" request to your SCIM provider. Hard deprovisioning is an irreversible action that permanently suspends a user's {% data variables.product.github %} account. + +Before implementing an API integration, ensure you understand the types of deprovisioning and the effects they have. To learn about the different types of deprovisioning, their effects, and the audit log events they generate, see [AUTOTITLE](/admin/managing-iam/provisioning-user-accounts-with-scim/deprovisioning-and-reinstating-users). + ## Provisioning users with the REST API To provision, list, or manage users, make requests to the following REST API endpoints. You can read about the associated API endpoints in the REST API documentation and see code examples, and you can review audit log events associated with each request. @@ -178,48 +185,21 @@ Before a person with an identity on your identity management system can sign in | Retrieve an existing user in your enterprise using the `id` field from the `POST` request that you sent to create the user. | `GET` | [`/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`](/rest/enterprise-admin/scim#get-scim-provisioning-information-for-an-enterprise-user) | N/A | | Update all of an existing user's attributes using the `id` field from the `POST` request that you sent to create the user. Update `active` to `false` to soft-deprovision the user, or `true` to reactivate the user. {% data reusables.scim.public-scim-more-info-about-deprovisioning-and-reactivating %} | `PUT` | [`/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`](/rest/enterprise-admin/scim#set-scim-information-for-a-provisioned-enterprise-user) | {% data reusables.scim.public-scim-put-or-patch-user-audit-log-events %} | | Update an individual attribute for an existing user using the `id` field from the `POST` request that you sent to create the user. Update `active` to `false` to soft-deprovision the user, or `true` to reactivate the user. {% data reusables.scim.public-scim-more-info-about-deprovisioning-and-reactivating %} | `PATCH` | [`/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`](/rest/enterprise-admin/scim#update-an-attribute-for-a-scim-enterprise-user) | {% data reusables.scim.public-scim-put-or-patch-user-audit-log-events %} | -| To completely delete an existing user, you can hard-deprovision the user. After hard-deprovisioning, you cannot reactivate the user, and you must provision the user as a new user. For more information, see [Hard-deprovisioning users with the REST API](#hard-deprovisioning-users-with-the-rest-api). | `DELETE` | [`/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`](/rest/enterprise-admin/scim#delete-a-scim-user-from-an-enterprise) |
  • `external_identity.deprovision`
  • `user.remove_email`
  • If request succeeds, `external_identity.scim_api_success`
  • If request fails, `external_identity.scim_api_failure`
| +| To permanently suspend an existing user, you can hard-deprovision the user. After hard-deprovisioning, you cannot reactivate the user, and you must provision the user as a new user. For more information, see [Hard-deprovisioning users with the REST API](#hard-deprovisioning-users-with-the-rest-api). | `DELETE` | [`/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`](/rest/enterprise-admin/scim#delete-a-scim-user-from-an-enterprise) |
  • `external_identity.deprovision`
  • `user.remove_email`
  • If request succeeds, `external_identity.scim_api_success`
  • If request fails, `external_identity.scim_api_failure`
| ## Soft-deprovisioning users with the REST API To prevent a user from signing in to access your enterprise, you can soft-deprovision the user by sending a `PUT` or `PATCH` request to update a user's `active` field to `false` to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`. When you soft-deprovision a user, {% data variables.product.github %} obfuscates the user record's `login` and `email` fields, and the user is suspended. -When you soft-deprovision a user, the `external_identity.update` event does not appear in the audit log. The following events appear in the audit log: - -* `user.suspend` -* `user.remove_email` -* `user.rename` -* `external_identity.deprovision` -* If the request succeeds, `external_identity.scim_api_success` -* If the request fails, `external_identity.scim_api_failure` - -You can view all suspended users for your enterprise. For more information, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-suspended-members). - ## Reactivating users with the REST API To allow a soft-deprovisioned user to sign in to access your enterprise, unsuspend the user by sending a `PUT` or `PATCH` request to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}` that updates the user's `active` field to `true`. -When you reactivate a user, the `external_identity.update` event does not appear in the audit log. The following events appear in the audit log: - -* `user.unsuspend` -* `user.remove_email` -* `user.rename` -* `external_identity.provision` -* If the request succeeds, `external_identity.scim_api_success` -* If the request fails, `external_identity.scim_api_failure` - ## Hard-deprovisioning users with the REST API -To completely delete a user, you can hard-deprovision the user by sending a `DELETE` request to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`. Your enterprise will retain any resources and comments created by the user. - -When you hard-deprovision a user, the following events occur: - -* The user record's `login` and `email` fields are obfuscated. -* The user's display name is set to an empty string. -* {% data variables.product.github %} deletes all of the user's SCIM attributes, emails, SSH keys, {% data variables.product.pat_generic_plural %}, and GPG keys. -* The user's account on {% data variables.product.github %} is suspended, and authentication to sign in to the account will fail. +> [!IMPORTANT] Hard deprovisioning is an irreversible action that permanently suspends a user's {% data variables.product.github %} account. See [Understand the effects of deprovisioning](#understand-the-effects-of-deprovisioning). -To reprovision the user, you must use the `POST` method to create a new user. The new user can reuse the deprovisioned user's `login`. If the email addresses of the hard-deprovisioned user and the new user match, {% data variables.product.github %} will attribute existing Git commits associated with the email address to the new user. Existing resources and comments created by the original user will not be associated with the new user. +You can hard-deprovision the user by sending a `DELETE` request to `/scim/v2/{% ifversion ghec %}enterprises/{enterprise}/{% endif %}Users/{scim_user_id}`. Your enterprise will retain any resources and comments created by the user. ## Provisioning groups with the REST API diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md index 45d391eafc63..9100878aeae3 100644 --- a/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md +++ b/content/admin/managing-iam/understanding-iam-for-enterprises/abilities-and-restrictions-of-managed-user-accounts.md @@ -51,6 +51,7 @@ With {% data variables.product.prodname_emus %}, you can control the user accoun ## {% data variables.product.prodname_copilot %} * {% data variables.enterprise.prodname_managed_users_caps %} cannot sign up for {% data variables.copilot.copilot_pro %} or {% data variables.copilot.copilot_free %}. To allow a managed user to use {% data variables.product.prodname_copilot_short %}, you must grant the user access to a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} subscription. See [AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot#getting-access-to-copilot). +* {% data reusables.copilot.coding-agent-emu-limitation %} ## {% data variables.product.prodname_pages %} diff --git a/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md b/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md index 70b65a0ee210..3f6bf9b91b07 100644 --- a/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md +++ b/content/admin/managing-iam/understanding-iam-for-enterprises/getting-started-with-enterprise-managed-users.md @@ -42,7 +42,7 @@ Using an **incognito or private browsing window**: > All subsequent login attempts for the setup user account will require a successful 2FA challenge response. > [!IMPORTANT] - > If the enterprise account has enabled single sign-on and the setup user hasn’t enabled 2FA, they must use an enterprise recovery code to authenticate. To avoid being locked out of your account, after enabling single sign-on, save your enterprise recovery codes. For more information, see [AUTOTITLE](/admin/managing-iam/managing-recovery-codes-for-your-enterprise/downloading-your-enterprise-accounts-single-sign-on-recovery-codes#downloading-codes-for-an-enterprise-with-enterprise-managed-users) and the related [changelog in our {% data variables.product.prodname_blog %}](https://github.blog/changelog/2025-01-17-setup-user-for-emu-enterprises-requires-2fa-or-use-of-a-recovery-code/). + > If the enterprise account has enabled single sign-on and the setup user hasn’t enabled 2FA, they must use an enterprise recovery code to authenticate. To avoid being locked out of your account, after enabling single sign-on, save your enterprise recovery codes. For more information, see [AUTOTITLE](/admin/managing-iam/managing-recovery-codes-for-your-enterprise/downloading-your-enterprise-accounts-single-sign-on-recovery-codes#downloading-codes-for-an-enterprise-with-enterprise-managed-users) and the related [changelog on {% data variables.product.prodname_blog %}](https://github.blog/changelog/2025-01-17-setup-user-for-emu-enterprises-requires-2fa-or-use-of-a-recovery-code/). {% data reusables.enterprise-accounts.emu-password-reset-session %} diff --git a/content/admin/overview/establishing-a-governance-framework-for-your-enterprise.md b/content/admin/overview/establishing-a-governance-framework-for-your-enterprise.md index 4696d209c3aa..d9429996c2cb 100644 --- a/content/admin/overview/establishing-a-governance-framework-for-your-enterprise.md +++ b/content/admin/overview/establishing-a-governance-framework-for-your-enterprise.md @@ -106,8 +106,6 @@ Approval processes are available for: * Bypasses of push protection—You can choose who is allowed to bypass push protection, and add a review and approval cycle for pushes containing secrets from all other contributors. For more information about **delegated bypass for push protection**, see [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection/about-delegated-bypass-for-push-protection).{% ifversion security-delegated-alert-dismissal %} * Dismissals of alerts for {% data variables.product.prodname_code_scanning %} and {% data variables.product.prodname_secret_scanning %}—You can provide additional control and visibility over alert assessment by ensuring that only designated individuals can dismiss (or close) alerts. For more information about **delegated alert dismissal**, see [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/enabling-delegated-alert-dismissal-for-code-scanning) and [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/enabling-delegated-alert-dismissal-for-code-scanning). - {% data reusables.advanced-security.delegated-alert-dismissal-beta %} - {% endif %} {% endif %} diff --git a/content/admin/upgrading-your-instance/troubleshooting-upgrades/known-issues-with-upgrades-to-your-instance.md b/content/admin/upgrading-your-instance/troubleshooting-upgrades/known-issues-with-upgrades-to-your-instance.md index 55f69658bae7..73cb110e08db 100644 --- a/content/admin/upgrading-your-instance/troubleshooting-upgrades/known-issues-with-upgrades-to-your-instance.md +++ b/content/admin/upgrading-your-instance/troubleshooting-upgrades/known-issues-with-upgrades-to-your-instance.md @@ -79,4 +79,8 @@ If the command returns `true`, a direct upgrade from 3.14 to 3.16.0 will fail, a Alternatively, you can move to 3.16.0 now by first upgrading from 3.14 to 3.15, then from 3.15 to 3.16.0. +## Upgrading to 3.16.0 and 3.17.0 includes a slow data migration for code scanning + +Customers who have code scanning enabled may experience slower transitions when upgrading to version 3.16.0, due to changes in the data model that require data migration. We recommend testing this upgrade in a non-production environment first, as it could result in longer downtime than expected. [Updated: 2025-06-12] + {% endif %} diff --git a/content/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens.md b/content/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens.md index b4e3ab6ab99a..2ae1d330d905 100644 --- a/content/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens.md +++ b/content/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens.md @@ -164,6 +164,8 @@ Username: YOUR-USERNAME Password: YOUR-PERSONAL-ACCESS-TOKEN ``` +Although you are required to enter your username along with your {% data variables.product.pat_generic %}, the username is not used to authenticate you. Instead, the {% data variables.product.pat_generic %} is used to authenticate you. If you do not enter a username, you will receive an error message that your credentials are invalid. + {% data variables.product.pat_generic_caps %}s can only be used for HTTPS Git operations. If your repository uses an SSH remote URL, you will need to [switch the remote from SSH to HTTPS](/get-started/git-basics/managing-remote-repositories#switching-remote-urls-from-ssh-to-https). If you are not prompted for your username and password, your credentials may be cached on your computer. You can [update your credentials in the Keychain](/get-started/git-basics/updating-credentials-from-the-macos-keychain) to replace your old password with the token. diff --git a/content/billing/index.md b/content/billing/index.md index 1aba79588009..1cd4e29e1443 100644 --- a/content/billing/index.md +++ b/content/billing/index.md @@ -12,17 +12,17 @@ featuredLinks: - '{% ifversion fpt or ghec %}/billing/managing-your-billing/about-the-new-billing-platform{% endif %}' - '{% ifversion fpt or ghec %}/billing/managing-your-billing/managing-your-payment-and-billing-information{% endif %}' - '{% ifversion fpt or ghec %}/billing/managing-your-billing/about-the-billing-cycle{% endif %}' - - '{% ifversion fpt or ghec %}/billing/managing-your-billing/preventing-overspending{% endif %}' + - '{% ifversion fpt or ghec %}/billing/managing-your-billing/using-budgets-control-spending{% endif %}' - '{% ifversion ghes %}/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account{% endif %}' - '{% ifversion ghes %}/billing/managing-your-license-for-github-enterprise/about-licenses-for-github-enterprise{% endif %}' - '{% ifversion ghes %}/billing/managing-your-license-for-github-enterprise/viewing-license-usage-for-github-enterprise{% endif %}' popular: - '{% ifversion ghec %}/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account{% endif %}' - '{% ifversion fpt or ghec %}/billing/managing-the-plan-for-your-github-account/downgrading-your-accounts-plan{% endif %}' - - '{% ifversion fpt or ghec %}/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions{% endif %}' - - '{% ifversion fpt or ghec %}/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces{% endif %}' + - '{% ifversion fpt or ghec %}/billing/managing-billing-for-your-products/about-billing-for-github-actions{% endif %}' + - '{% ifversion fpt or ghec %}/billing/managing-billing-for-your-products/about-billing-for-github-codespaces{% endif %}' - '{% ifversion ghes %}/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security{% endif %}' - - '{% ifversion ghes %}/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage{% endif %}' + - '{% ifversion ghes %}/billing/managing-billing-for-your-products/viewing-your-product-usage{% endif %}' - '{% ifversion ghes %}/billing/managing-your-license-for-github-enterprise/uploading-a-new-license-to-github-enterprise-server{% endif %}' guideCards: - /billing/managing-the-plan-for-your-github-account/how-does-upgrading-or-downgrading-affect-the-billing-process @@ -43,4 +43,3 @@ children: - /managing-billing-for-your-products - /setting-up-paid-accounts-for-procurement-companies --- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions.md b/content/billing/managing-billing-for-your-products/about-billing-for-github-actions.md similarity index 86% rename from content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions.md rename to content/billing/managing-billing-for-your-products/about-billing-for-github-actions.md index 5559c52be1a3..c6feceb01e69 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions.md +++ b/content/billing/managing-billing-for-your-products/about-billing-for-github-actions.md @@ -6,6 +6,11 @@ redirect_from: - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions/about-billing-for-github-actions - /billing/managing-billing-for-github-actions/about-billing-for-github-actions - /early-access/billing/actions-billing-update + - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions + # Redirect for old maptopic + - /billing/managing-billing-for-your-products/managing-billing-for-github-actions + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions + - /billing/managing-billing-for-github-actions versions: fpt: '*' ghec: '*' @@ -13,7 +18,7 @@ type: overview topics: - Actions - Spending limits -shortTitle: Billing for GitHub Actions +shortTitle: GitHub Actions --- ## About billing for {% data variables.product.prodname_actions %} @@ -22,9 +27,7 @@ shortTitle: Billing for GitHub Actions {% data reusables.actions.actions-billing %} -{% data reusables.actions.actions-spending-limit-brief %} For more information, see [About spending limits](#about-spending-limits). - -If you are an organization owner{% ifversion ghec %} or enterprise owner{% endif %}, you can connect an Azure Subscription ID to your organization {% ifversion ghec %}or enterprise{% endif %} account to enable and pay for {% data variables.product.prodname_actions %} usage beyond the amounts included with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). +If you are an organization owner or enterprise owner, you can connect an Azure Subscription ID to your organization or enterprise account to enable and pay for {% data variables.product.prodname_actions %} usage beyond the amounts included with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). Minutes reset every month, while storage usage does not. @@ -42,7 +45,7 @@ Minutes reset every month, while storage usage does not. | {% data variables.product.prodname_team %} | 2 GB | 3,000 | | {% data variables.product.prodname_ghe_cloud %} | 50 GB | 50,000 | -If your account's storage surpasses these limits and you have set a spending limit above $0 USD, you will pay $0.008 USD per GB of storage per day. +If your account's storage surpasses these limits and you have a valid payment method on file, you will pay $0.008 USD per GB of storage per day. ### Minute multipliers @@ -131,7 +134,7 @@ At the end of the month, {% data variables.product.prodname_dotcom %} calculates ### Sample minutes cost calculation -For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 5,000 minutes could have a total storage and minute overage cost of $56 USD, depending on the operating systems used to run jobs. +For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 5,000 minutes beyond the included quota could have a total storage and minute cost of $56 USD, depending on the operating systems used to run jobs. * 5,000 (3,000 Linux and 2,000 Windows) minutes = $56 USD ($24 USD + $32 USD). * 3,000 Linux minutes at $0.008 USD per minute = $24 USD. @@ -155,10 +158,6 @@ At the end of the month, {% data variables.product.prodname_dotcom %} rounds you Your {% data variables.product.prodname_actions %} usage shares your account's existing billing date, payment method, and receipt. {% data reusables.dotcom_billing.view-all-subscriptions %} -## About spending limits - -{% data reusables.actions.actions-spending-limit-detailed %} - -For information on managing and changing your account's spending limit, see [AUTOTITLE](/billing/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions). +## Managing your budget for {% data variables.product.prodname_actions %} -{% data reusables.dotcom_billing.actions-packages-unpaid-account %} +{% data reusables.billing.default-over-quota-behavior %} diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md b/content/billing/managing-billing-for-your-products/about-billing-for-github-codespaces.md similarity index 92% rename from content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md rename to content/billing/managing-billing-for-your-products/about-billing-for-github-codespaces.md index 173bde22c642..d1e8b9491d8d 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md +++ b/content/billing/managing-billing-for-your-products/about-billing-for-github-codespaces.md @@ -1,6 +1,6 @@ --- title: About billing for GitHub Codespaces -shortTitle: About billing +shortTitle: GitHub Codespaces intro: 'Learn about the costs for using {% data variables.product.prodname_github_codespaces %}, and the monthly usage quotas included with {% data variables.product.prodname_dotcom %} personal accounts.' versions: fpt: '*' @@ -15,8 +15,12 @@ redirect_from: - /codespaces/getting-started-with-codespaces/about-billing-for-codespaces - /codespaces/codespaces-reference/about-billing-for-codespaces - /codespaces/codespaces-reference/understanding-billing-for-codespaces - - /codespaces/codespaces-reference/understanding-billing-for-github-codespaces.md + - /codespaces/codespaces-reference/understanding-billing-for-github-codespaces - /billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces + - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces + # Redirect for old maptopic + - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces + - /billing/managing-billing-for-github-codespaces --- ## About {% data variables.product.prodname_github_codespaces %} pricing @@ -69,19 +73,19 @@ A "core hour" is a measure used for included compute usage. To calculate core ho ### Using your included usage -You will be notified by email when you have used 75%, 90%, and 100% of your included quotas. Notifications are also displayed in a "toast" message within {% data variables.product.prodname_vscode_shortname %} and the {% data variables.product.prodname_vscode_shortname %} web client. You can turn off email notifications if required. See [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces#managing-usage-and-spending-limit-email-notifications). +You will be notified by email when you have used 75%, 90%, and 100% of your included quotas. Notifications are also displayed in a "toast" message within {% data variables.product.prodname_vscode_shortname %} and the {% data variables.product.prodname_vscode_shortname %} web client. You can turn off email notifications if required. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). -When a personal account has used all of either the included storage or compute usage (whichever is reached first), and has no spending limit configured, use of {% data variables.product.prodname_github_codespaces %} will be blocked. You must set up a payment method and a spending limit to continue using {% data variables.product.prodname_github_codespaces %} during the current billing month. At the beginning of the next monthly billing cycle the included usage is reset. Storage will not be billed while use of {% data variables.product.prodname_github_codespaces %} is blocked. +When a personal account has used all of either the included storage or compute usage (whichever is reached first), and has no payment method defined, use of {% data variables.product.prodname_github_codespaces %} will be blocked. You must set up a payment method to continue using {% data variables.product.prodname_github_codespaces %} during the current billing month. At the beginning of the next monthly billing cycle the included usage is reset. Storage will not be billed while use of {% data variables.product.prodname_github_codespaces %} is blocked. You can view details of your usage for the current month at any time. See [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage). If you are blocked from resuming a codespace and you want to continue to work on changes you have made in your codespace, you can do any of the following: -* Add a payment method and a spending limit greater than $0 USD. +* Add a payment method and set a budget greater than $0 USD. * Export the changes from the codespace to a branch. See [AUTOTITLE](/codespaces/troubleshooting/exporting-changes-to-a-branch). * Wait for your monthly included usage to reset at the start of the next monthly billing cycle. -If you have used all of either your included storage usage or your included compute usage, and you have set up a payment method and a spending limit, any further use of codespaces owned by your personal account will incur charges for whichever type of usage has no remaining included quota. You will not be charged for the other type of usage until you have also used all of its included quota. +If you have used all of either your included storage usage or your included compute usage, and you have set up a payment method, any further use of codespaces owned by your personal account will incur charges for whichever type of usage has no remaining included quota. You will not be charged for the other type of usage until you have also used all of its included quota. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). {% data reusables.codespaces.tips-included-usage %} @@ -122,7 +126,7 @@ You can control compute usage by stopping your codespaces. For information, see ## About billing for storage usage -For {% data variables.product.prodname_github_codespaces %} billing purposes, storage comprises the disk space used by all of the codespaces and prebuilds in your account. This includes any files you use in a codespace, such as cloned repositories, configuration files, data loaded to the codespace (for example as input or output of the software running in the repository), and extensions, among others. Storage is billed for all of your existing codespaces, regardless of whether they are active or inactive with the exception of blocked usage due to exhausted included usage quota or reaching your spending limit. The storage billing for a codespace ends when it is deleted. However, deleting a codespace does not reduce your used storage amount for the current billing month as this is a cumulative figure. +For {% data variables.product.prodname_github_codespaces %} billing purposes, storage comprises the disk space used by all of the codespaces and prebuilds in your account. This includes any files you use in a codespace, such as cloned repositories, configuration files, data loaded to the codespace (for example as input or output of the software running in the repository), and extensions, among others. Storage is billed for all of your existing codespaces, regardless of whether they are active or inactive with the exception of blocked usage due to exhausted included usage quota or reaching your budget limit. The storage billing for a codespace ends when it is deleted. However, deleting a codespace does not reduce your used storage amount for the current billing month as this is a cumulative figure. ### Storage billing for containers based on the default image @@ -196,11 +200,9 @@ Prebuilds can be updated multiple times during a billing month. Each update may Use of codespaces created using prebuilds is charged at the same rate as regular codespaces. -## Setting a spending limit +## Managing your budget for {% data variables.product.prodname_github_codespaces %} -{% data reusables.codespaces.codespaces-spending-limit-requirement %} - -For information on managing and changing your account's spending limit, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces). +{% data reusables.billing.default-over-quota-behavior %} {% data reusables.codespaces.exporting-changes %} @@ -244,7 +246,7 @@ Usage is calculated every hour. An organization pays for usage of codespaces cre You can get started on a new project by creating a codespace from a template. Codespaces created from templates aren't initially associated with a repository, but you can publish the codespace to a repository owned by your personal account. See [AUTOTITLE](/codespaces/developing-in-codespaces/creating-a-codespace-from-a-template). -Any organization can maintain a template repository for use with {% data variables.product.prodname_github_codespaces %}. As with any other repository in an organization, a codespace created from a template repository is billed to the organization if the organization has set a spending limit for {% data variables.product.prodname_github_codespaces %} and allowed the user creating the codespace to do so at the organization's expense. Otherwise, the codespace is billed to the user who creates the codespace. +Any organization can maintain a template repository for use with {% data variables.product.prodname_github_codespaces %}. As with any other repository in an organization, a codespace created from a template repository is billed to the organization if the organization allows the user creating the codespace to do so at the organization's expense. Otherwise, the codespace is billed to the user who creates the codespace. If a user publishes a codespace created from a template, the codespace is published to a new repository owned by the user's personal account. If the codespace is currently billed to an organization, ownership and billing of the codespace transfer to the user who created the codespace. diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot.md b/content/billing/managing-billing-for-your-products/about-billing-for-github-copilot.md similarity index 88% rename from content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot.md rename to content/billing/managing-billing-for-your-products/about-billing-for-github-copilot.md index e29307a94a01..3dd546c15e7a 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot.md +++ b/content/billing/managing-billing-for-your-products/about-billing-for-github-copilot.md @@ -1,6 +1,6 @@ --- title: About billing for GitHub Copilot -shortTitle: Billing for GitHub Copilot +shortTitle: GitHub Copilot intro: '{% data variables.product.prodname_dotcom %} offers several {% data variables.product.prodname_copilot_short %} plans for enterprises, organizations, and individual developers.' versions: feature: copilot @@ -8,6 +8,10 @@ topics: - Copilot redirect_from: - /billing/managing-billing-for-github-copilot/about-billing-for-github-copilot + - /billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot + # Redirect for old maptopic + - /billing/managing-billing-for-your-products/managing-billing-for-github-copilot + - /billing/managing-billing-for-github-copilot --- ## {% data variables.product.prodname_copilot %} in your enterprise @@ -31,6 +35,10 @@ See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subs If you want to try {% data variables.product.prodname_copilot_short %} before subscribing, you can use {% data variables.copilot.copilot_free %} for a limited experience. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free). +## Managing requests in {% data variables.product.prodname_copilot_short %} + +Some {% data variables.product.prodname_copilot_short %} features use premium requests, which count toward your monthly usage allowance. To learn how premium requests work, which features use them, and how to manage your usage, see [AUTOTITLE](/copilot/managing-copilot/understanding-and-managing-copilot-usage/understanding-and-managing-requests-in-copilot). + ## Migrating between {% data variables.product.prodname_copilot_short %} plans When transitioning between different {% data variables.product.prodname_copilot_short %} plans, you may encounter situations that require support. @@ -49,8 +57,6 @@ Some migrations cannot be completed through self-service options. ## Allowance usage for {% data variables.copilot.copilot_coding_agent %} -{% data reusables.copilot.coding-agent.premium-requests-start-date %} - Within your monthly usage allowance for {% data variables.product.prodname_actions %} and {% data variables.product.prodname_copilot %} premium requests, you can ask {% data variables.product.prodname_copilot_short %} to work on coding tasks without incurring any additional costs. When {% data variables.product.prodname_copilot_short %} works on coding tasks, {% data variables.copilot.copilot_coding_agent %} uses: @@ -71,13 +77,13 @@ For more information about {% data variables.copilot.copilot_coding_agent %}, se ### What happens if you have used up your monthly quota? -If you run out of free Actions minutes or free premium requests, and you have set up billing and a spending limit, you will be charged at the normal rates for additional minutes and premium requests. See [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions) and [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests#additional-premium-requests). +If you run out of free Actions minutes or free premium requests, and you have set up a payment method for billing, you will be charged at the normal rates for additional minutes and premium requests. See [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions) and [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests#additional-premium-requests). If you run out of free minutes or premium requests, and you have _not_ set up billing, a message is displayed explaining why {% data variables.product.prodname_copilot_short %} cannot work on the task. ### Monitoring your use of Actions minutes and premium requests -You can track your monthly usage of {% data variables.product.prodname_actions %} minutes and premium requests, to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan. See [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage) and [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements). +You can track your monthly usage of {% data variables.product.prodname_actions %} minutes and premium requests, to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan. See [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage) and [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements). ## Further reading diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/about-billing-for-github-packages.md b/content/billing/managing-billing-for-your-products/about-billing-for-github-packages.md similarity index 53% rename from content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/about-billing-for-github-packages.md rename to content/billing/managing-billing-for-your-products/about-billing-for-github-packages.md index 7fc4a8ea699c..4f6412841f43 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/about-billing-for-github-packages.md +++ b/content/billing/managing-billing-for-your-products/about-billing-for-github-packages.md @@ -6,6 +6,11 @@ redirect_from: - /github/setting-up-and-managing-billing-and-payments-on-github/about-billing-for-github-packages - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages/about-billing-for-github-packages - /billing/managing-billing-for-github-packages/about-billing-for-github-packages + - /billing/managing-billing-for-your-products/managing-billing-for-github-packages/about-billing-for-github-packages + # Redirect for old maptopic + - /billing/managing-billing-for-your-products/managing-billing-for-github-packages + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages + - /billing/managing-billing-for-github-packages versions: fpt: '*' ghec: '*' @@ -13,7 +18,7 @@ type: overview topics: - Packages - Spending limits -shortTitle: About billing +shortTitle: GitHub Packages --- ## About billing for {% data variables.product.prodname_registry %} @@ -22,12 +27,7 @@ shortTitle: About billing {% data reusables.package_registry.packages-billing %} -{% data reusables.package_registry.packages-spending-limit-brief %} For more information, see [About spending limits](#about-spending-limits). - -> [!NOTE] -> **Billing update for container image storage:** The period of free use for container image storage and bandwidth for the {% data variables.product.prodname_container_registry %} has been extended. If you are using {% data variables.product.prodname_container_registry %} you'll be informed at least one month in advance of billing commencing and you'll be given an estimate of how much you should expect to pay. For more information about the {% data variables.product.prodname_container_registry %}, see [AUTOTITLE](/packages/working-with-a-github-packages-registry/working-with-the-container-registry). - -If you are an organization owner{% ifversion ghec %} or enterprise owner{% endif %}, you can connect an Azure Subscription ID to your organization {% ifversion ghec %}or enterprise{% endif %} account to enable and pay for {% data variables.product.prodname_registry %} usage beyond the amounts including with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). +If you are an organization or enterprise owner, you can connect an Azure Subscription ID to your organization or enterprise account to enable and pay for {% data variables.product.prodname_registry %} usage beyond the amounts included with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). Data transfer resets every month, while storage usage does not. @@ -56,9 +56,9 @@ All data transferred out, when triggered by {% data variables.product.prodname_a Storage usage is shared with build artifacts produced by {% data variables.product.prodname_actions %} for repositories owned by your account. For more information, see [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions). -{% data variables.product.prodname_dotcom %} charges usage to the account that owns the repository where the package is published. If your account's usage surpasses these limits and you have set a spending limit above $0 USD, you will pay $0.008 USD per GB of storage per day and $0.50 USD per GB of data transfer. +{% data variables.product.prodname_dotcom %} charges usage to the account that owns the repository where the package is published. If your account's usage surpasses these limits and you have a valid payment method on file, you will pay $0.008 USD per GB of storage per day and $0.50 USD per GB of data transfer. -For example, if your organization uses {% data variables.product.prodname_team %}, allows unlimited spending, uses 150GB of storage, and has 50GB of data transfer out during a month, the organization would have overages of 148GB for storage and 40GB for data transfer for that month. The storage overage would cost $0.008 USD per GB per day or approximately $37 USD for a 31-day month. The overage for data transfer would cost $0.50 USD per GB or $20 USD. +For example, if your organization uses {% data variables.product.prodname_team %}, allows unlimited spending, uses 150GB of storage, and has 50GB of data transfer out during a month, the organization would use 148GB for storage and 40GB for data transfer for that month beyond their included quota. The additional storage would cost $0.008 USD per GB per day or approximately $37 USD for a 31-day month. The additional data transfer would cost $0.50 USD per GB or $20 USD. {% data reusables.dotcom_billing.pricing_calculator.pricing_cal_packages %} @@ -87,16 +87,6 @@ Your {% data variables.product.prodname_registry %} usage shares your account's {% data reusables.user-settings.context_switcher %} -## About spending limits - -{% data reusables.package_registry.packages-spending-limit-detailed %} - -To prevent exceeding your spending limit, {% data variables.product.prodname_dotcom %} checks your storage consumption continuously throughout the month by looking at your current usage and calculating what your projected usage will be at the end of the month if no changes are made before that time. If at any point during the billing cycle your projected monthly usage exceeds your spending limit, both {% data variables.product.prodname_registry %} and {% data variables.product.prodname_actions %} will be disabled to prevent overages. - -You should set a spending limit that will cover your maximum projected storage usage at any given point in the billing cycle. For example, imagine you have an organization that uses {% data variables.product.prodname_team %}, and you set a spending limit of $50 USD. {% data variables.product.prodname_team %} provides 2 GB of free storage. For any storage you use over that amount, {% data variables.product.prodname_dotcom %} will charge $0.008 USD per GB per day, or approximately $0.25 USD per GB for a 31-day month. That means the $50 spending limit you set will pay for an extra 200 GB of storage in that period. If on day ten of the billing cycle you reach 202 GB of storage, the next push of a package or {% data variables.product.prodname_actions %} artifact will fail, because you have reached the maximum storage amount that can be paid for by your spending limit in this billing cycle, even if your average consumption for the period is below 202 GB. - -To avoid reaching your spending limit in the current billing cycle, you can delete some of your current storage usage to free up projected usage for the rest of the month. This method is more effective toward the beginning of a billing cycle. The closer you get to the end of a billing cycle, the less impact this method will have on projected monthly usage. - -For more information about managing and changing your account's spending limit, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages). +## Managing your budget for {% data variables.product.prodname_registry %} -{% data reusables.dotcom_billing.actions-packages-unpaid-account %} +{% data reusables.billing.default-over-quota-behavior %} diff --git a/content/billing/managing-billing-for-your-products/index.md b/content/billing/managing-billing-for-your-products/index.md index 86436965451c..b1a1561490b0 100644 --- a/content/billing/managing-billing-for-your-products/index.md +++ b/content/billing/managing-billing-for-your-products/index.md @@ -9,14 +9,15 @@ versions: topics: - Billing children: - - /managing-licenses-for-visual-studio-subscriptions-with-github-enterprise - - /managing-billing-for-github-actions - - /managing-billing-for-github-codespaces - - /managing-billing-for-github-packages - - /managing-billing-for-github-copilot + - /viewing-your-product-usage + - /about-billing-for-github-actions + - /about-billing-for-github-codespaces + - /about-billing-for-github-copilot + - /about-billing-for-github-packages - /managing-billing-for-github-advanced-security - - /managing-billing-for-github-sponsors + - /managing-billing-for-git-large-file-storage - /managing-billing-for-github-marketplace-apps - - /managing-billing-for-git-large-file-storage + - /managing-billing-for-github-sponsors + - /managing-licenses-for-visual-studio-subscriptions-with-github-enterprise --- diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage.md index 899135dfd042..bd8feb33059c 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage.md @@ -31,8 +31,6 @@ Bandwidth is billed for each GiB of data downloaded. Storage is billed by calcul {% data reusables.large_files.owner_quota_only %} -{% data reusables.large_files.does_not_carry %} - ## Included bandwidth and storage (per month) The following amounts of bandwidth and storage are included for free with your {% data variables.product.company_short %} account. @@ -54,7 +52,7 @@ If you use more than the included amount of bandwidth or storage for your plan t | Bandwidth | $0.0875 | | Storage | $0.07 | -For more information about how to purchase additional storage and bandwidth, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage). +To view your current storage and bandwidth, see [AUTOTITLE](/billing/managing-billing-for-your-products/viewing-your-product-usage). ### Sample storage cost calculation @@ -69,11 +67,10 @@ In this example, {% data variables.product.company_short %} would bill for 1.5 G ## Managing your budget for {% data variables.large_files.product_name_long %} -The default budget for paid usage is $0 for accounts that do not have a payment method on file. For accounts that do have a payment method on file, the default budget is unlimited. You can take steps to manage your {% data variables.large_files.product_name_short %} budget. See [AUTOTITLE](/billing/managing-your-billing/preventing-overspending). +{% data reusables.billing.default-over-quota-behavior %} ## Further reading * [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage) * [AUTOTITLE](/repositories/working-with-files/managing-large-files/installing-git-large-file-storage) * [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage) -* diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/downgrading-git-large-file-storage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/downgrading-git-large-file-storage.md index d3ac1fc3d7a9..e27d5e83c1ce 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/downgrading-git-large-file-storage.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/downgrading-git-large-file-storage.md @@ -1,6 +1,6 @@ --- title: Downgrading Git Large File Storage -intro: 'You can downgrade storage and bandwidth for {% data variables.large_files.product_name_short %} by increments of 50 GB per month.' +intro: '{% data variables.large_files.product_name_short %} has moved to metered billing so that you pay only for the amount of bandwidth and storage you use.' redirect_from: - /github/setting-up-and-managing-billing-and-payments-on-github/downgrading-git-large-file-storage - /articles/downgrading-storage-and-bandwidth-for-a-personal-account @@ -13,26 +13,26 @@ versions: ghec: '*' type: how_to topics: - - Downgrades - LFS - Organizations - User account shortTitle: Downgrade Git LFS storage --- -When you downgrade your number of data packs, your change takes effect on your next billing date. For more information, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage). + -## Downgrading storage and bandwidth for a personal account + + -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.lfs-remove-data %} -{% data reusables.large_files.downgrade_data_packs %} +## Billing has changed to metered billing -## Downgrading storage and bandwidth for an organization +There is no need to edit data packs to reduce your allowance, you can pay as you go. -{% data reusables.dotcom_billing.org-billing-perms %} +This change to metered billing brings additional benefits: -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.lfs-remove-data %} -{% data reusables.large_files.downgrade_data_packs %} +* **Visualize your usage**: use new views to see your usage and export data to other systems, see [AUTOTITLE](/billing/managing-billing-for-your-products/viewing-your-product-usage) +* **Budget setting**: use budgets to control spending, see [AUTOTITLE](/billing/managing-your-billing/preventing-overspending) + +For more information, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage). + + diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/index.md index 4768138e9629..20675a8298b7 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/index.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/index.md @@ -15,8 +15,6 @@ versions: ghec: '*' children: - /about-billing-for-git-large-file-storage - - /viewing-your-git-large-file-storage-usage - /upgrading-git-large-file-storage - /downgrading-git-large-file-storage --- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage.md index 7a8d9585562a..01c78ea04ba2 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage.md @@ -1,6 +1,6 @@ --- title: Upgrading Git Large File Storage -intro: 'You can purchase additional data packs to increase your monthly bandwidth quota and total storage capacity for {% data variables.large_files.product_name_short %}.' +intro: '{% data variables.large_files.product_name_short %} has moved to metered billing so that you pay only for the amount of bandwidth and storage you use. You no longer need to buy data packs to increase your quota and storage capacity.' redirect_from: - /github/setting-up-and-managing-billing-and-payments-on-github/upgrading-git-large-file-storage - /articles/purchasing-additional-storage-and-bandwidth-for-a-personal-account @@ -15,49 +15,24 @@ type: how_to topics: - LFS - Organizations - - Upgrades - User account shortTitle: Upgrade Git LFS storage --- -## Purchasing additional storage and bandwidth for a personal account + -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.lfs-add-data %} -{% data reusables.large_files.pack_selection %} -{% data reusables.large_files.pack_confirm %} + + -## Purchasing additional storage and bandwidth for an organization +## Billing has changed to metered billing -{% data reusables.dotcom_billing.org-billing-perms %} +There is no need to purchase data packs to expand your allowance, you can pay as you go. -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.lfs-add-data %} -{% data reusables.large_files.pack_selection %} -{% data reusables.large_files.pack_confirm %} +This change to metered billing brings additional benefits: -{% ifversion ghec %} +* **Visualize your usage**: use new views to see your usage and export data to other systems, see [AUTOTITLE](/billing/managing-billing-for-your-products/viewing-your-product-usage) +* **Budget setting**: use budgets to control spending, see [AUTOTITLE](/billing/managing-your-billing/preventing-overspending) -## Purchasing additional storage and bandwidth for an enterprise account +For more information, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage). -{% data reusables.enterprise-accounts.billing-perms %} - -> [!NOTE] -> If your enterprise account is invoiced, you may not be able to purchase Git LFS data packs on {% data variables.product.prodname_dotcom %}. Instead, contact {% data variables.contact.contact_enterprise_sales %}. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. To the right of "Git LFS", click **Purchase more data packs**. -1. Select the "Choose an organization" dropdown menu and click the organization you want to purchase a data pack for. -{% data reusables.large_files.pack_selection %} -{% data reusables.large_files.pack_confirm %} -{% endif %} - -## Further reading - -* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage) -* [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage) -* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage) -* [AUTOTITLE](/repositories/working-with-files/managing-large-files) + diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage.md deleted file mode 100644 index 3b8580b88fc5..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Viewing your Git Large File Storage usage -intro: 'You can audit your account''s monthly bandwidth quota and remaining storage for {% data variables.large_files.product_name_short %}.' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-git-large-file-storage-usage - - /articles/viewing-storage-and-bandwidth-usage-for-a-personal-account - - /articles/viewing-storage-and-bandwidth-usage-for-an-organization - - /articles/viewing-your-git-large-file-storage-usage - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage - - /billing/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - LFS - - Organizations - - User account -shortTitle: View Git LFS usage ---- - -{% data reusables.large_files.owner_quota_only %} {% data reusables.large_files.does_not_carry %} - -## Viewing storage and bandwidth usage for a personal account - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.lfs-data %} - -## Viewing storage and bandwidth usage for an organization - -{% ifversion billing-beta-enterprise %} - -> [!NOTE] -> If your organization belongs to an enterprise enrolled in the Billing {% data variables.release-phases.private_preview %} for {% data variables.large_files.product_name_short %}, you will not see {% data variables.large_files.product_name_short %} usage on the existing billing pages. - -{% endif %} - -{% data reusables.dotcom_billing.org-billing-perms %} - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.lfs-data %} - -{% ifversion ghec %} - -## Viewing storage and bandwidth for an enterprise account - -{% ifversion billing-beta-enterprise %} - -> [!NOTE] -> If your enterprise is enrolled in the Billing {% data variables.release-phases.private_preview %} for {% data variables.large_files.product_name_short %}, you will not see {% data variables.large_files.product_name_short %} usage on the existing billing pages. - -{% endif %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. Scroll to the "Git LFS" section. -{% endif %} - -## Further reading - -* [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage) -* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/upgrading-git-large-file-storage) diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/index.md deleted file mode 100644 index 953b0302c685..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Managing billing for GitHub Actions -shortTitle: GitHub Actions -intro: 'You can view your usage and set a spending limit for {% data variables.product.prodname_actions %}.' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions - - /billing/managing-billing-for-github-actions -versions: - fpt: '*' - ghec: '*' -children: - - /about-billing-for-github-actions - - /viewing-your-github-actions-usage - - /managing-your-spending-limit-for-github-actions ---- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions.md deleted file mode 100644 index 7aa905ff6c51..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Managing your spending limit for GitHub Actions -intro: 'You can set a spending limit for {% data variables.product.prodname_actions %} usage.' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions - - /billing/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - Actions - - Enterprise - - Organizations - - Spending limits - - User account -shortTitle: Spending limits for Actions ---- - -## About spending limits for {% data variables.product.prodname_actions %} - -{% data reusables.actions.actions-billing %} - -{% data reusables.actions.actions-spending-limit-brief %} - -{% data reusables.actions.actions-packages-set-spending-limit %} For more information about pricing for {% data variables.product.prodname_actions %} usage, see [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions). - -If you are an organization owner{% ifversion ghec %} or enterprise owner{% endif %}, you can connect an Azure Subscription ID to your organization {% ifversion ghec %}or enterprise{% endif %} account to enable and pay for {% data variables.product.prodname_actions %} usage beyond the amounts including with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). - -As soon as you set a spending limit other than $0, you will be responsible for any existing overages in the current billing period. For example, if your organization uses {% data variables.product.prodname_team %}, does not allow overages, and creates workflow artifacts that increase your storage usage for the month from 1.9GB to 2.1GB, you will use slightly more storage than the 2GB your product includes. - -Because you have not enabled overages, your next attempt to create a workflow artifact will fail. You will not receive a bill for the 0.1GB overage that month. However, if you enable overages, your first bill will include the 0.1GB of existing overage for the current billing cycle, as well as any additional overages you accrue. - -## Managing the spending limit for {% data variables.product.prodname_actions %} for your personal account - -Anyone can manage the spending limit for {% data variables.product.prodname_actions %} for their own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans_spending %} -{% data reusables.dotcom_billing.manage-spending-limit %} -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} - -## Managing the spending limit for {% data variables.product.prodname_actions %} for your organization - -Organizations owners and billing managers can manage the spending limit for {% data variables.product.prodname_actions %} for an organization. - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.manage-spending-limit %} -1. Under "Monthly spending limit", choose to limit spending or allow unlimited spending. - - > [!NOTE] - > If {% data variables.product.prodname_github_codespaces %} is enabled for your organization, scroll to "Actions & Packages", then choose to limit spending or allow unlimited spending. - -{% data reusables.dotcom_billing.update-spending-limit %} - -{% ifversion ghec %} - -## Managing the spending limit for {% data variables.product.prodname_actions %} for your enterprise account - -Enterprise owners and billing managers can manage the spending limit for {% data variables.product.prodname_actions %} for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. On the "Billing" page, click the **Spending limit** tab. - - ![Screenshot of the "Billing" page. A tab labeled "Spending limit" is highlighted with an orange outline.](/assets/images/help/settings/spending-limit-tab-enterprise.png) - -{% data reusables.dotcom_billing.monthly-spending-limit %} -{% data reusables.dotcom_billing.update-spending-limit %} -{% endif %} - -## Managing usage and spending limit email notifications - -{% data reusables.billing.email-notifications %} diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage.md deleted file mode 100644 index 1c47c1207cb6..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Viewing your GitHub Actions usage -intro: 'You can view details of your usage of minutes and storage for {% data variables.product.prodname_actions %}.' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions/viewing-your-github-actions-usage - - /billing/managing-billing-for-github-actions/viewing-your-github-actions-usage -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - Actions - - Enterprise - - Organizations - - User account -shortTitle: View your Actions usage ---- - -You can also view the billable job execution minutes for an individual workflow run. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-job-execution-time). - -## Viewing {% data variables.product.prodname_actions %} usage for your personal account - -Anyone can view {% data variables.product.prodname_actions %} usage for their own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.actions-view-usage %} -{% data reusables.dotcom_billing.actions-report-download %} - -## Viewing {% data variables.product.prodname_actions %} usage for your organization - -Organization owners and billing managers can view {% data variables.product.prodname_actions %} usage for an organization. For organizations managed by an enterprise account, only the organization owners can view {% data variables.product.prodname_actions %} usage in the organization billing page. - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.actions-view-usage %} -{% data reusables.dotcom_billing.actions-report-download-org-account %} - -{% ifversion ghec %} - -## Viewing {% data variables.product.prodname_actions %} usage for your enterprise account - -Enterprise owners and billing managers can view {% data variables.product.prodname_actions %} usage for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.billing-tab %} -{% data reusables.dotcom_billing.actions-view-usage %} -{% data reusables.enterprise-accounts.actions-report-download-enterprise-accounts %} - -{% endif %} diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md index df5de920ac37..f08f6b454bf2 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md @@ -148,8 +148,11 @@ The following example timeline demonstrates how the active committer count for { ## Further reading +{% ifversion fpt or ghec %} +* [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending) * [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage) -{% ifversion ghec %} -* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing){% elsif ghes %} -* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing) in the documentation for {% data variables.product.prodname_ghe_cloud %}{% endif %} -* {% ifversion fpt or ghec %}[AUTOTITLE](/billing/managing-your-billing/preventing-overspending){% elsif ghes %}[AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-billing/preventing-overspending) in the documentation for {% data variables.product.prodname_ghe_cloud %}{% endif %} +* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing) +{% elsif ghes %} +* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage) in the documentation for {% data variables.product.prodname_ghe_cloud %} +* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing) in the documentation for {% data variables.product.prodname_ghe_cloud %} +* [AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-billing/using-budgets-control-spending) in the documentation for {% data variables.product.prodname_ghe_cloud %}{% endif %} diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/downloading-your-github-advanced-security-usage.md similarity index 52% rename from content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage.md rename to content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/downloading-your-github-advanced-security-usage.md index dbc82d2a2513..55d914cfcc19 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/downloading-your-github-advanced-security-usage.md @@ -1,16 +1,9 @@ --- -title: Viewing and downloading licensed use of {% data variables.product.prodname_AS %} -intro: 'You can view and download consumption of {% data variables.product.prodname_GHAS %} licenses by your {% data variables.enterprise.enterprise_or_org %}: volume/subscription licenses or metered usage.' +title: Downloading licensed use of {% data variables.product.prodname_AS %} +intro: 'You can download consumption of {% data variables.product.prodname_GHAS %} licenses by your {% data variables.enterprise.enterprise_or_org %}: volume/subscription licenses or metered usage.' allowTitleToDifferFromFilename: true permissions: '{% ifversion fpt %}Organization{% else %}Enterprise{% endif %} owners with {% data variables.product.prodname_AS %}' product: '{% data reusables.gated-features.ghas-billing %}' -redirect_from: - - /billing/managing-licensing-for-github-advanced-security/viewing-your-github-advanced-security-usage - - /admin/advanced-security/viewing-your-github-advanced-security-usage - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security/viewing-your-github-advanced-security-usage - - /github/setting-up-and-managing-your-enterprise/managing-use-of-advanced-security-for-organizations-in-your-enterprise-account - - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage - - /billing/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage versions: fpt: '*' ghes: '*' @@ -19,73 +12,9 @@ type: how_to topics: - Advanced Security - Enterprise -shortTitle: View or download GHAS license use +shortTitle: Download GHAS license use --- -{% ifversion ghec or ghes %} - - -## Viewing {% data variables.product.prodname_AS %} usage for your enterprise{% ifversion ghec %} account{% endif %} - -You can view the current license limits and usage for your enterprise. - -{% ifversion ghec %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.licensing-tab-both-platforms %} - * The "{% data variables.product.prodname_AS %}" section shows details of the licenses you currently **consume**. - * If you have a volume/subscription license, the number of licenses **available** to use is also displayed. - * If you run out of licenses, for volume/subscription only, the section is red and reports "Limit exceeded." You should either reduce your use or purchase more licenses. - -1. Optionally, to see a detailed breakdown of usage per organization{% ifversion secret-scanning-user-owned-repos %} and user namespace when using {% data variables.product.prodname_emus %}{% endif %}, in the "{% data variables.product.prodname_AS %}" section click **More details**. - - In the "{% data variables.product.prodname_AS %}" section, you can see a summary of your current license usage, as well as the number of committers and unique committers for each organization{% ifversion secret-scanning-user-owned-repos %} and user namespace when using {% data variables.product.prodname_emus %}{% endif %}. The organizations{% ifversion secret-scanning-user-owned-repos %} and user namespaces{% endif %} in the billing table are sorted by the highest number of unique committers in descending order. - -1. Optionally, to see a detailed breakdown of usage by repositories within an organization, click an organization name to display the "Global code security settings" for the organization. - - On the "Global code security settings" page, scroll to the "{% data variables.product.prodname_GHAS_cs_or_sp %} repositories" section to see a detailed breakdown of usage by repository for this organization. See [AUTOTITLE](/code-security/securing-your-organization/managing-the-security-of-your-organization/managing-your-github-advanced-security-license-usage). - -{% elsif security-configurations %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.license-tab %} - - The "{% data variables.product.prodname_AS %}" section shows details of the current usage. You can see the total number of licenses used, as well as a table with the number of committers and unique committers for each organization. - -1. Optionally, to see a detailed breakdown of usage by repositories within an organization, click an organization name to display the "Global code security settings" for the organization. - - On the "Global code security settings" settings page, scroll to the "{% data variables.product.prodname_GHAS_cs_or_sp %} repositories" section to see a detailed breakdown of usage by repository for this organization, see [AUTOTITLE](/code-security/securing-your-organization/managing-the-security-of-your-organization/managing-your-github-advanced-security-license-usage). - -{% elsif pre-security-configurations %} -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.license-tab %} - - The "{% data variables.product.prodname_GHAS %}" section shows details of the current usage. You can see the total number of licenses used, as well as a table with the number of committers and unique committers for each organization. - -1. Optionally, to see a detailed breakdown of usage by repositories within an organization, click an organization name to display the "Security & analysis" for the organization. - - * On the "Security & analysis" settings page, scroll to the "{% data variables.product.prodname_GHAS %} repositories" section to see a detailed breakdown of usage by repository for this organization. For more information, see [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization). -{% endif %} - -{% endif %} - -{% ifversion fpt %} - -## Viewing {% data variables.product.prodname_AS %} usage for your organization account - -You can view the organization account's current license limits and usage. - -{% data reusables.profile.access_org %} -{% data reusables.profile.org_settings %} -{% data reusables.organizations.billing_plans_or_licensing %} - - The "{% data variables.product.prodname_AS %}" section shows details of the current usage. - -{% endif %} - -{% ifversion enhanced-billing-platform %} -> [!TIP] -> For more tips, see [AUTOTITLE](/billing/managing-your-billing/gathering-insights-on-your-spending) and [AUTOTITLE](/billing/managing-your-billing/preventing-overspending). -{% endif %} - ## Downloading {% data variables.product.prodname_AS %} license usage information You can download a CSV file with details of paid use of {% data variables.product.prodname_GHAS %} products at both the {% data variables.enterprise.enterprise_and_org %} level. The CSV file contains information about each {% data variables.product.prodname_AS %} license that is in use, including: @@ -101,8 +30,7 @@ You can download a CSV report of license usage through the {% data variables.pro ## Using the UI to download license and metered usage -{% ifversion fpt %}You can download a CSV report for a repository or an organization.{% endif %} -{% ifversion ghec %}You can download a CSV report for a repository, an organization, or an enterprise.{% endif %} +You can download a CSV report for a repository, an organization, or an enterprise. {% ifversion fpt or ghec %} @@ -130,10 +58,6 @@ You can download a CSV report of license usage through the {% data variables.pro 1. For license consumption, in the sidebar click **{% octicon "law" aria-hidden="true" aria-label="law" %} Licensing**. 1. Under "{% data variables.product.prodname_GHAS %}," click the **{% octicon "download" aria-hidden="true" aria-label="download" %} Download CSV report** dropdown and then click either **{% data variables.product.prodname_code_security %}** or **{% data variables.product.prodname_secret_protection %}**. -{% endif %} - -{% ifversion ghec %} - ### For an enterprise {% data reusables.enterprise-accounts.access-enterprise %} @@ -144,7 +68,7 @@ You can download a CSV report of license usage through the {% data variables.pro * To view usage by SKU, select the **Group** dropdown, then click **SKU**. This will allow you to view usage for both {% data variables.product.prodname_GH_cs_and_sp %}. * To filter by time, select **Time Frame**, then click a time period. * Below the graph, you can see a more granular overview of the usage. Click the arrow next to a specific date to see a nested table with usage per SKU, units, price/unit, gross amount (the amount actually used), and billed amount (the amount you are charged). - 1. To download the data, click **{% octicon "download" aria-hidden="true" aria-label="download" %} Get usage report**. + 1. To download the data, click **{% octicon "download" aria-hidden="true" aria-label="download" %} Get usage report**. 1. For license consumption, click {% octicon "law" aria-hidden="true" aria-label="law" %} **Licensing**. * Under "{% data variables.product.prodname_GHAS %}," click the **{% octicon "download" aria-hidden="true" aria-label="download" %} Download CSV report** dropdown and then click either **{% data variables.product.prodname_code_security %}** or **{% data variables.product.prodname_secret_protection %}**. diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/index.md index f8b7b7165ba5..7a776a44a0f9 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/index.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/index.md @@ -14,7 +14,7 @@ children: - /about-billing-for-github-advanced-security - /setting-up-a-trial-of-github-advanced-security - /signing-up-for-github-advanced-security - - /viewing-your-github-advanced-security-usage + - /downloading-your-github-advanced-security-usage - /migrating-from-ghas-to-cs-and-sp - /viewing-committer-information-for-github-advanced-security - /managing-your-github-advanced-security-licensing diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing.md index 9c65ae398350..04a067ccf32d 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/managing-your-github-advanced-security-licensing.md @@ -2,7 +2,7 @@ title: Managing volume/subscription licenses for {% data variables.product.prodname_AS %} intro: 'You can monitor and control the availability and consumption of licenses for {% data variables.product.prodname_AS %} in repositories in your enterprise.' allowTitleToDifferFromFilename: true -permissions: 'Enterprise owners with **volume/subscription licenses** for {% data variables.product.prodname_AS %}.
For metered usage on the new platform, see [AUTOTITLE](/billing/managing-your-billing/preventing-overspending).' +permissions: 'Enterprise owners with **volume/subscription licenses** for {% data variables.product.prodname_AS %}.
For metered usage on the new platform, see [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending).' versions: ghec: '*' type: how_to diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md index 5ffff1dae63a..50c9026d4776 100644 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md +++ b/content/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md @@ -22,6 +22,7 @@ To set up a trial of {% data variables.product.prodname_GHAS %} using this metho 1. Be an owner of an enterprise account. See [AUTOTITLE](/enterprise-cloud@latest/admin/overview/about-enterprise-accounts). 1. Pay by credit card or PayPal. 1. Have not previously purchased or had a trial of {% data variables.product.prodname_GHAS %}. +1. You must not use metered billing for {% data variables.product.prodname_GHAS %}. > [!TIP] > * **No enterprise account?** Start a trial of {% data variables.product.prodname_ghe_cloud %} with {% data variables.product.prodname_GHAS %}. See [AUTOTITLE](/enterprise-cloud@latest/admin/overview/setting-up-a-trial-of-github-enterprise-cloud). diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/index.md deleted file mode 100644 index 6990128b83ed..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/index.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Managing billing for GitHub Codespaces -shortTitle: Codespaces -intro: 'You can view your usage and set a spending limit for {% data variables.product.prodname_github_codespaces %}.' -versions: - fpt: '*' - ghec: '*' -redirect_from: - - /billing/managing-billing-for-github-codespaces -children: - - /about-billing-for-github-codespaces - - /viewing-your-github-codespaces-usage - - /managing-the-spending-limit-for-github-codespaces ---- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces.md deleted file mode 100644 index bcdc79cb2bd4..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Managing the spending limit for GitHub Codespaces -intro: 'You can set a spending limit for {% data variables.product.prodname_github_codespaces %} usage.' -shortTitle: Spending limit -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - Codespaces - - Enterprise - - Organizations - - Spending limits - - User account - - Billing -redirect_from: - - /billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces - - /billing/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces ---- - -## About the {% data variables.product.prodname_github_codespaces %} spending limit - -{% data reusables.codespaces.codespaces-free-for-personal-intro %} See [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces). - -{% data reusables.codespaces.codespaces-spending-limit-requirement %} -{% data reusables.codespaces.codespaces-monthly-billing %} - -Once you've reached your spending limit, you will no longer be able to create new codespaces, and you won't be able to start existing codespaces. Any existing codespaces that are still running will be shut down in a short time, but you will not be charged for usage after you have reached your spending limit. - -## Using your Azure Subscription - -If you are an organization owner{% ifversion ghec %} or enterprise owner{% endif %}, you can connect an Azure Subscription ID to your organization {% ifversion ghec %}or enterprise{% endif %} account to enable and pay for {% data variables.product.prodname_github_codespaces %} usage. See [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). - -## Managing the {% data variables.product.prodname_github_codespaces %} spending limit for your personal account - -You can set a spending limit for {% data variables.product.prodname_github_codespaces %} for your own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans_spending %} -{% data reusables.dotcom_billing.manage-spending-limit %} -{% data reusables.codespaces.monthly-spending-limit-codespaces %} -{% data reusables.dotcom_billing.update-spending-limit %} - -## Managing the {% data variables.product.prodname_github_codespaces %} spending limit for your organization account - -Organizations owners and billing managers can manage the spending limit for {% data variables.product.prodname_github_codespaces %} for an organization. - -> [!NOTE] -> Organizations that are owned by an enterprise account cannot specify their own spending limit as this is specified in the enterprise settings. - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.manage-spending-limit %} -{% data reusables.codespaces.monthly-spending-limit-codespaces %} -{% data reusables.dotcom_billing.update-spending-limit %} - -{% ifversion ghec %} - -## Managing the {% data variables.product.prodname_github_codespaces %} spending limit for your enterprise account - -Enterprise owners and billing managers can manage the spending limit for {% data variables.product.prodname_github_codespaces %} for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. On the "Billing" page, click the **Spending limit** tab. - - ![Screenshot of the "Billing" page. A tab labeled "Spending limit" is highlighted with an orange outline.](/assets/images/help/settings/spending-limit-tab-enterprise.png) - -{% data reusables.codespaces.monthly-spending-limit-codespaces %} -{% data reusables.dotcom_billing.update-spending-limit %} -{% endif %} - -## Exporting changes when you have reached your spending limit - -{% data reusables.codespaces.exporting-changes %} - -## Managing usage and spending limit email notifications - -Email notifications are sent to account owners and billing managers when spending reaches 75%, 90%, and 100% of an account's spending limit. - -You can turn off these notifications at any time from the "Billing and plans" page. To turn off notifications, under "Email alerts", deselect the **Spending limits alerts** checkbox. - -For personal accounts only, you can also choose to turn off email notifications that are sent when you have used 75%, 90%, and 100% of the free usage included with your personal account. To do this, clear the **Included resources alerts** checkbox. - -![Screenshot of the "Email alerts" settings. The options "Included resources alerts" and "Spending limit alerts" are both selected.](/assets/images/help/codespaces/codespaces-spending-limit-notifications.png) - -## Further reading - -* [AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types) -* [AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/managing-the-cost-of-github-codespaces-in-your-organization) diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage.md deleted file mode 100644 index 9844e698678c..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Viewing your GitHub Codespaces usage -shortTitle: Viewing your usage -intro: 'You can view the compute hours and storage used by {% data variables.product.prodname_github_codespaces %}.' -versions: - fpt: '*' - ghec: '*' -type: overview -topics: - - Codespaces - - Billing -redirect_from: - - /billing/managing-billing-for-github-codespaces/viewing-your-codespaces-usage - - /billing/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage ---- - -## Viewing {% data variables.product.prodname_github_codespaces %} usage for your personal account - -Anyone can view {% data variables.product.prodname_github_codespaces %} usage for their own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.codespaces-view-usage %} -{% data reusables.dotcom_billing.codespaces-report-download %} - -## Viewing {% data variables.product.prodname_github_codespaces %} usage for your organization account - -Organization owners and billing managers can view {% data variables.product.prodname_github_codespaces %} usage for an organization. For organizations managed by an enterprise account, only the organization owners can view {% data variables.product.prodname_github_codespaces %} usage in the organization billing page. - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.codespaces-view-usage %} -{% data reusables.dotcom_billing.codespaces-report-download %} - -{% ifversion ghec %} - -## Viewing {% data variables.product.prodname_codespaces %} usage for your enterprise account - -Enterprise owners and billing managers can view {% data variables.product.prodname_github_codespaces %} usage for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.billing-tab %} -{% data reusables.dotcom_billing.codespaces-view-usage %} -{% data reusables.dotcom_billing.codespaces-report-download %} -{% endif %} - -## Further reading - -* [AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/listing-the-codespaces-in-your-organization) diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/index.md deleted file mode 100644 index 06ba20cf145a..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Managing billing for GitHub Copilot -shortTitle: GitHub Copilot -intro: '{% ifversion fpt %}You can set up a {% data variables.product.prodname_copilot %} subscription through your personal or organization account. You can modify or cancel your subscription at any time.{% endif %}{% ifversion ghec %}You can view your usage of {% data variables.copilot.copilot_for_business %}, and learn about how the costs are calculated.{% endif %}' -versions: - feature: copilot -redirect_from: - - /billing/managing-billing-for-github-copilot -children: - - /about-billing-for-github-copilot ---- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/index.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/index.md deleted file mode 100644 index 66ce91ab08c0..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Managing billing for GitHub Packages -shortTitle: GitHub Packages -intro: 'You can view your {% data variables.product.prodname_registry %} usage and set a spending limit for {% data variables.product.prodname_registry %}.' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages - - /billing/managing-billing-for-github-packages -versions: - fpt: '*' - ghec: '*' -children: - - /about-billing-for-github-packages - - /viewing-your-github-packages-usage - - /managing-your-spending-limit-for-github-packages ---- - diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages.md deleted file mode 100644 index 17a0ba03d29a..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Managing your spending limit for GitHub Packages -intro: 'You can set a spending limit for {% data variables.product.prodname_registry %} usage.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages - - /billing/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - Enterprise - - Organizations - - Packages - - Spending limits - - User account -shortTitle: Your spending limit ---- - -## About spending limits for {% data variables.product.prodname_registry %} - -{% data reusables.package_registry.packages-billing %} - -{% data reusables.package_registry.packages-spending-limit-brief %} - -{% data reusables.actions.actions-packages-set-spending-limit %} For more information about pricing for {% data variables.product.prodname_registry %} usage, see [AUTOTITLE](/billing/managing-billing-for-github-packages/about-billing-for-github-packages). - -If you are an organization owner{% ifversion ghec %} or enterprise owner{% endif %}, you can connect an Azure Subscription ID to your organization {% ifversion ghec %}or enterprise{% endif %} account to enable and pay for {% data variables.product.prodname_registry %} usage beyond the amounts including with your account. For more information, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription). - -As soon as you set a spending limit other than $0, you will be responsible for any existing overages in the current billing period. For example, if your organization uses {% data variables.product.prodname_team %}, does not allow overages, and publishes a new version of a private package that increases your storage usage for the month from 1.9GB to 2.1GB, publishing the version will use slightly more than the 2GB your product includes. - -Because you have not enabled overages, your next attempt to publish a version of the package will fail. You will not receive a bill for the 0.1GB overage that month. However, if you enable overages, your first bill will include the 0.1GB of existing overage for the current billing cycle, as well as any additional overages you accrue. - -## Managing the spending limit for {% data variables.product.prodname_registry %} for your personal account - -Anyone can manage the spending limit for {% data variables.product.prodname_registry %} for their own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.manage-spending-limit %} -{% data reusables.dotcom_billing.monthly-spending-limit-actions-packages %} -{% data reusables.dotcom_billing.update-spending-limit %} - -## Managing the spending limit for {% data variables.product.prodname_registry %} for your organization - -Organizations owners and billing managers can manage the spending limit for {% data variables.product.prodname_registry %} for an organization. - -{% data reusables.organizations.billing-settings %} -{% data reusables.dotcom_billing.manage-spending-limit %} -1. Under "Monthly spending limit", choose to limit spending or allow unlimited spending. - - > [!NOTE] - > If {% data variables.product.prodname_github_codespaces %} is enabled for your organization, scroll to "Actions & Packages", then choose to limit spending or allow unlimited spending. - -{% data reusables.dotcom_billing.update-spending-limit %} - -{% ifversion ghec %} - -## Managing the spending limit for {% data variables.product.prodname_registry %} for your enterprise account - -Enterprise owners and billing managers can manage the spending limit for {% data variables.product.prodname_registry %} for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.enterprise-accounts.settings-tab %} -{% data reusables.enterprise-accounts.billing-tab %} -1. On the "Billing" page, click the **Spending limit** tab. - - ![Screenshot of the "Billing" page. A tab labeled "Spending limit" is highlighted with an orange outline.](/assets/images/help/settings/spending-limit-tab-enterprise.png) - -{% data reusables.dotcom_billing.monthly-spending-limit-actions-packages %} -{% data reusables.dotcom_billing.update-spending-limit %} -{% endif %} - -## Managing usage and spending limit email notifications - -{% data reusables.billing.email-notifications %} diff --git a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/viewing-your-github-packages-usage.md b/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/viewing-your-github-packages-usage.md deleted file mode 100644 index a91fd93d48c9..000000000000 --- a/content/billing/managing-billing-for-your-products/managing-billing-for-github-packages/viewing-your-github-packages-usage.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Viewing your GitHub Packages usage -intro: 'You can view details of your usage of storage and data transfer for {% data variables.product.prodname_registry %}.' -product: '{% data reusables.gated-features.packages %}' -redirect_from: - - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-packages-usage - - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages/viewing-your-github-packages-usage - - /billing/managing-billing-for-github-packages/viewing-your-github-packages-usage -versions: - fpt: '*' - ghec: '*' -type: how_to -topics: - - Enterprise - - Packages - - Organizations - - User account -shortTitle: View your usage ---- - -## Viewing {% data variables.product.prodname_registry %} usage for your personal account - -Anyone can view {% data variables.product.prodname_registry %} usage for their own personal account. - -{% data reusables.user-settings.access_settings %} -{% data reusables.user-settings.billing_plans %} -{% data reusables.dotcom_billing.packages-view-usage %} -{% data reusables.dotcom_billing.packages-report-download %} - -## Viewing {% data variables.product.prodname_registry %} usage for your organization - -Organization owners and billing managers can view {% data variables.product.prodname_registry %} usage for an organization. For organizations managed by an enterprise account, only the organization owners can view {% data variables.product.prodname_registry %} usage in the organization billing page. - -{% data reusables.organizations.billing-settings %} - -{% data reusables.dotcom_billing.packages-view-usage %} -{% data reusables.dotcom_billing.packages-report-download-org-account %} - -{% ifversion ghec %} - -## Viewing {% data variables.product.prodname_registry %} usage for your enterprise account - -Enterprise owners and billing managers can view {% data variables.product.prodname_registry %} usage for an enterprise account. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.billing.enterprise-billing-menu %} -{% data reusables.dotcom_billing.packages-view-usage %} -{% data reusables.enterprise-accounts.packages-report-download-enterprise-accounts %} -{% endif %} diff --git a/content/billing/managing-billing-for-your-products/viewing-your-product-usage.md b/content/billing/managing-billing-for-your-products/viewing-your-product-usage.md new file mode 100644 index 000000000000..0598b7542471 --- /dev/null +++ b/content/billing/managing-billing-for-your-products/viewing-your-product-usage.md @@ -0,0 +1,95 @@ +--- +title: 'Viewing your usage of metered products' +intro: 'You can explore your use of different products that are billed by usage and see how each product contributes to your bill.' +allowTitleToDifferFromFilename: true +redirect_from: +# Git LFS redirects + - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-git-large-file-storage-usage + - /articles/viewing-storage-and-bandwidth-usage-for-a-personal-account + - /articles/viewing-storage-and-bandwidth-usage-for-an-organization + - /articles/viewing-your-git-large-file-storage-usage + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage + - /billing/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage + - /billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage +# Actions redirects + - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-actions-usage + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions/viewing-your-github-actions-usage + - /billing/managing-billing-for-github-actions/viewing-your-github-actions-usage + - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/viewing-your-github-actions-usage +# Advanced security redirects + - /billing/managing-licensing-for-github-advanced-security/viewing-your-github-advanced-security-usage + - /admin/advanced-security/viewing-your-github-advanced-security-usage + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-licensing-for-github-advanced-security/viewing-your-github-advanced-security-usage + - /github/setting-up-and-managing-your-enterprise/managing-use-of-advanced-security-for-organizations-in-your-enterprise-account + - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-advanced-security-usage + - /billing/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage + - /billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage +# Codespaces redirects + - /billing/managing-billing-for-github-codespaces/viewing-your-codespaces-usage + - /billing/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage + - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/viewing-your-github-codespaces-usage +# Packages redirects + - /github/setting-up-and-managing-billing-and-payments-on-github/viewing-your-github-packages-usage + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages/viewing-your-github-packages-usage + - /billing/managing-billing-for-github-packages/viewing-your-github-packages-usage + - /billing/managing-billing-for-your-products/managing-billing-for-github-packages/viewing-your-github-packages-usage +versions: + fpt: '*' + ghec: '*' +type: how_to +topics: + - Billing +shortTitle: View product use +--- + +## Viewing a summary of usage for billed products + +Anyone can view usage for their own personal account. + +If you have an owner or billing manager role for an organization, an organization account, or enterprise account, you will also have access to usage data for that organization or account. + +### Personal accounts + +{% data reusables.user-settings.access_billing_settings_url %} +1. Scroll to the bottom of the page and use the tabbed view to see a summary of consumed use for each product that you use (in this example, the "{% data variables.product.prodname_AS %}" tab is shown). + + ![Screenshot of the tabbed view showing "{% data variables.product.prodname_AS %}" with the "View details" links outlined in dark orange.](/assets/images/help/billing/overview-product-summary.png) + +1. Optionally, click **View details** to show more detailed information. + +### Organization and enterprise accounts + +1. Display the settings for the organization or enterprise account you want to view data for. For example, using the context switcher shown on all personal and organization account settings pages. + + ![Screenshot of the "Public profile" settings for The Octocat. Next to "Your personal profile," a "Switch settings context" link is outlined in orange.](/assets/images/help/settings/context-switcher-button.png) + +1. Click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing** to display the billing and licensing overview for the account: + * **Organization** accounts: under "Access" in the sidebar for settings. + * **Enterprise** accounts: a separate tab at the top of the page. + +## Exploring usage data in more detail + +You can also explore usage data in more detail in the **{% octicon "graph" aria-label="chart" aria-hidden="true" %} Usage** view. + +* **Filter data on the page**: click in the text box to see a list of available filters. +* **Group data**: options in the "Group" option vary based on the filters you define. +* **Choose a time period**: use the "Time Frame" option. + +The metered usage chart and usage break down table both show your current choice of data. + +![Screenshot of the metered usage chart showing "Actions grouped by SKU" with the three control fields outlined in dark orange.](/assets/images/help/billing/product-usage-chart.png) + +> [!TIP] +> For GitHub Actions, you can also view the billable job execution minutes for an individual workflow run. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-job-execution-time). + +## Downloading the data displayed + +You can download the data plotted on the billing charts shown on the "Overview" or "Usage" page as a table or an image. Click the {% octicon "kebab-horizontal" aria-label="Chart options" aria-hidden="true" %} "Chart options" button and select your preferred format. + +![Screenshot of the metered usage chart on the "Overview" page with the "Chart options" outlined in dark orange.](/assets/images/help/billing/overview-chart-download-button.png) + +## Further reading + +* [AUTOTITLE](/billing/managing-your-billing/about-billing-on-github) +* [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending) +* [AUTOTITLE](/billing/managing-your-billing/automating-usage-reporting) diff --git a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md index 1700ee7bd149..e6bed7f3a80c 100644 --- a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md +++ b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md @@ -31,18 +31,22 @@ If you use {% data variables.product.prodname_ghe_cloud %} through a Microsoft E {% ifversion fpt or ghec %} -## About usage-based billing on {% data variables.product.prodname_dotcom %} - -{% data variables.product.company_short %} provides usage-based billing for the following features and situations. You can learn more about billing and spending limits. - -| Billed feature or situation | Information about billing | Information about spending limits | -| :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------: | -| {% data variables.product.prodname_github_codespaces %} usage | [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces) | [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces) | -| {% data variables.product.prodname_actions %} usage beyond the amounts included with your plan | [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions) | [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions#about-spending-limits) | -| {% data variables.product.prodname_registry %} usage beyond the amounts included with your plan | [AUTOTITLE](/billing/managing-billing-for-github-packages/about-billing-for-github-packages) | [AUTOTITLE](/billing/managing-billing-for-github-packages/about-billing-for-github-packages#about-spending-limits) | -| {% data variables.copilot.copilot_business_short %} usage | [AUTOTITLE](/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot#about-billing-for-github-copilot-business-and-github-copilot-enterprise) | N/A | -| {% data variables.product.prodname_AS %} usage (only available with a trial of {% data variables.product.prodname_ghe_cloud %}) | [AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security#usage-based-billing-for-github-advanced-security) | N/A | -| {% data variables.product.prodname_enterprise %} usage | [AUTOTITLE](/billing/managing-your-billing/about-billing-for-your-enterprise) | N/A | +## About usage-based billing on {% data variables.product.github %} + +{% data variables.product.github %} provides usage-based billing for the following products. + +* {% data variables.product.prodname_actions %}, see [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions) +* {% data variables.product.prodname_github_codespaces %}, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces) +* {% data variables.product.prodname_registry %}, see [AUTOTITLE](/billing/managing-billing-for-github-packages/about-billing-for-github-packages) +* {% data variables.large_files.product_name_long %}, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage) + +In addition, usage-based billing is available for the following licenses + +* {% data variables.product.prodname_enterprise %}, see [AUTOTITLE](/billing/managing-your-billing/about-billing-for-your-enterprise) +* {% data variables.product.prodname_copilot %}, see [AUTOTITLE](/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot) +* {% data variables.product.prodname_GHAS %}, see [AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security) + +For information about controlling spending, see [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). {% endif %} diff --git a/content/billing/managing-your-billing/about-billing-on-github.md b/content/billing/managing-your-billing/about-billing-on-github.md index e9c024af55c4..39ef355fe822 100644 --- a/content/billing/managing-your-billing/about-billing-on-github.md +++ b/content/billing/managing-your-billing/about-billing-on-github.md @@ -38,7 +38,7 @@ For more information about account types, see [AUTOTITLE](/get-started/learning- ## Included amounts by plan -The table below shows what's included with each plan. When you exceed these amounts, you'll be charged for additional usage unless you've set a spending limit. +The table below shows what's included with each plan. When you exceed these amounts, you'll be charged for additional usage unless you've set a budget with the setting "Stop usage when budget limit is reached" enabled. diff --git a/content/billing/managing-your-billing/about-the-billing-cycle.md b/content/billing/managing-your-billing/about-the-billing-cycle.md index 4c538244aa3b..e9149abf4250 100644 --- a/content/billing/managing-your-billing/about-the-billing-cycle.md +++ b/content/billing/managing-your-billing/about-the-billing-cycle.md @@ -8,6 +8,7 @@ redirect_from: - /billing/using-the-billing-platform/viewing-your-subscriptions-and-billing-date - /billing/using-the-billing-platform/changing-the-duration-of-your-billing-cycle - /billing/using-the-new-billing-platform/viewing-your-subscriptions-and-billing-date + - /billing/using-the-new-billing-platform/about-the-billing-cycle type: overview topics: - Enterprise diff --git a/content/billing/managing-your-billing/charging-business-units.md b/content/billing/managing-your-billing/charging-business-units.md index 76565440efdd..c0f70cfd976e 100644 --- a/content/billing/managing-your-billing/charging-business-units.md +++ b/content/billing/managing-your-billing/charging-business-units.md @@ -60,7 +60,7 @@ To allocate spending to a cost center, you add repositories, organizations, or u ## Adding a budget to a cost center -After you create a cost center, you can add a monthly budget and receive alerts from the cost center to monitor your spending and usage. See [AUTOTITLE](/billing/using-the-enhanced-billing-platform-for-enterprises/preventing-overspending). +After you create a cost center, you can add a monthly budget and receive alerts from the cost center to monitor your spending and usage. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). ## Viewing cost center usage diff --git a/content/billing/managing-your-billing/estimating-spending.md b/content/billing/managing-your-billing/estimating-spending.md index 5a25aece2b13..58b2568c8d13 100644 --- a/content/billing/managing-your-billing/estimating-spending.md +++ b/content/billing/managing-your-billing/estimating-spending.md @@ -100,4 +100,4 @@ If you have used all of your budget, a red banner appears at the top of the page ## Creating a budget -As an enterprise owner or billing manager, you can set the budget for your enterprise, an organization within your enterprise, or a cost center. As an organization owner, you are able to set the budgets for the repositories you manage. See [AUTOTITLE](/billing/using-the-new-billing-platform/preventing-overspending#creating-a-budget). +As an enterprise owner or billing manager, you can set the budget for your enterprise, an organization within your enterprise, or a cost center. As an organization owner, you are able to set the budgets for the repositories you manage. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending#creating-a-budget). diff --git a/content/billing/managing-your-billing/index.md b/content/billing/managing-your-billing/index.md index d2e798a69e92..d13e9284c5b1 100644 --- a/content/billing/managing-your-billing/index.md +++ b/content/billing/managing-your-billing/index.md @@ -21,8 +21,8 @@ children: - /estimating-spending - /about-usage-reports - /gathering-insights-on-your-spending + - /using-budgets-control-spending - /charging-business-units - - /preventing-overspending - /managing-your-payment-and-billing-information - /automating-usage-reporting - /adding-a-sales-tax-certificate diff --git a/content/billing/managing-your-billing/preventing-overspending.md b/content/billing/managing-your-billing/preventing-overspending.md deleted file mode 100644 index ea6980fe77de..000000000000 --- a/content/billing/managing-your-billing/preventing-overspending.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Preventing overspending -intro: 'Learn how to set budgets and track when they are nearing or above a threshold to prevent overspending.' -versions: - feature: enhanced-billing-platform -redirect_from: - - /billing/using-the-enhanced-billing-platform-for-enterprises/preventing-overspending - - /billing/using-the-new-billing-platform/preventing-overspending -type: how_to -topics: - - Enterprise - - Team -permissions: '{% data reusables.permissions.enhanced-billing-platform %}' -product: '{% data reusables.billing.enhanced-billing-platform-product %}' -shortTitle: Prevent overspending ---- - -Budgets and alerts allow you to track spending for your {% ifversion fpt %}organization or personal account{% elsif ghec %}enterprise, organizations, repositories, or cost centers{% endif %}. By setting a monthly budget, you can monitor your spending and receive notifications by email when your spending exceeds certain preset percentages of your budget threshold. This can help you stay within your budget and avoid overspending. - -The budget only applies to expenses incurred from the date of its creation onwards. Any expenses incurred prior to the creation of the budget will not be included in the calculations - -{% ifversion ghec %} -Budgets are not applicable to pre-paid volume licenses. -{% endif %} - -For license-based products such as {% data variables.product.prodname_copilot %}, {% data variables.product.prodname_AS %},{% ifversion fpt %} and {% data variables.product.prodname_team %}{% elsif ghec %} and {% data variables.product.prodname_enterprise %}{% endif %}, setting a budget does not prevent usage over the limit. - -> [!NOTE] -> By default, paid usage will be limited to $0 for accounts that do not have a payment method on file. - -{% ifversion fpt %} - -## Managing budgets for your personal account - -You can set spending limits and receive alerts when your usage reaches 75%, 90%, or 100% of your defined budget. Budgets can be scoped at the repository or product level, depending on the product. - -{% data reusables.user-settings.access_settings %} -1. In the "Access" section of the sidebar, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. -1. Click **Budgets and alerts**. -1. To create a new budget, click **New budget**. -1. Under "Budget Type" select either **Product-level budget** or **SKU-level budget**. - - * To create a Product-level budget, choose a metered product from the dropdown. - * To create a SKU-level budget, choose a SKU from the dropdown. This limits spending for an individual SKU. - -1. Under "Budget scope", set the scope of spending for this budget. -1. Under "Budget", set a budget amount. - - To stop any usage and further spending once the budget limit is reached, select **Stop usage when budget limit is reached**, if available. - - >[!IMPORTANT] If you do not select **Stop usage when budget limit is reached**, you will be notified by email if you exceed your budget, but usage **will not** be stopped. - -1. To receive an alert if your budget has reached 75%, 90% and 100% thresholds, select **Receive budget threshold alerts** under "Alerts". When the budget has reached the specific threshold, you will be notified via email and a banner on {% data variables.product.github %}. You may opt out at any time. -1. Click **Create budget**. - -To edit or delete a budget, on the "Budget and alerts page", click **Edit** or **Delete** next to the budget you want to edit or delete. Follow the prompts. - -{% endif %} - -## Managing budgets for your {% data variables.enterprise.enterprise_or_org %} - -You can manage budgets for your {% data variables.enterprise.enterprise_or_org %} by setting a budget, viewing budgets, and editing or deleting budgets. - -{% ifversion ghec %} - -### Budget scopes - -You can create a budget for a given {% data variables.product.github %} product and specific scope: - -* `Enterprise` scoped budgets track spending for all organizations, repositories, and cost centers in the enterprise -* `Organization` scoped budgets track spending for a single organization, repositories, and cost centers in the organization -* `Repository` scoped budgets track spending for a single repository -* `Cost center` scoped budgets track spending for a single cost center - -Usage is applied towards all applicable budgets. If any applicable budget with "Stop usage when budget limit is reached" enabled becomes exhausted, additional usage will be stopped. - -{% endif %} - -### Viewing budgets - -If you are an {% data variables.enterprise.enterprise_or_org %} owner or billing manager, your {% data variables.enterprise.enterprise_or_org %}'s budget will be listed at the top of the "Budgets and alerts" page{% ifversion ghec %}, followed by the budgets for your organizations and cost centers. As an organization owner, you will be able to view the budgets for your organizations, repositories, and cost centers{% endif %}. - -{% ifversion fpt %} - -{% data reusables.profile.access_org %} -{% data reusables.profile.org_settings %} -{% data reusables.billing.org-billing-menu %} - -{% elsif ghec %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.billing.enterprise-billing-menu %} - -{% endif %} - -1. Click **Budgets and alerts**. - -{% ifversion ghec %} -1. To filter by scope, select **Scope**, then choose a scope. -{% endif %} - -### Creating a budget - -As an {% data variables.enterprise.enterprise_or_org %} owner{% ifversion ghec %} or billing manager{% endif %}, you can set the budget for your {% data variables.enterprise.enterprise_or_org %}{% ifversion ghec %}, an organization within your enterprise, or a cost center. As an organization owner, you are able to set the budgets for the repositories you manage{% endif %}. - -{% ifversion fpt %} - -{% data reusables.profile.access_org %} -{% data reusables.profile.org_settings %} -{% data reusables.billing.org-billing-menu %} - -{% elsif ghec %} - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.billing.enterprise-billing-menu %} - -{% endif %} - -{% data reusables.billing.create-product-or-sku-budget %} -1. Under "Budget", set a budget amount. - - To stop any usage and further spending once your {% ifversion fpt %}organization{% elsif ghec %}enterprise or organization{% endif %} reaches the budget limit, select **Stop usage when budget limit is reached**, if available. - - >[!IMPORTANT] If you do not select **Stop usage when budget limit is reached**, you will be notified by email if you exceed your budget, but usage **will not** be stopped. - -1. To receive an alert if your budget has reached 75%, 90% and 100% thresholds, select **Receive budget threshold alerts** under "Alerts". When the budget has reached the specific threshold, you will be notified via email and a banner on {% data variables.product.github %}. You may opt out at any time. - - Under "Alert Recipients", select the people who will receive the alerts. - -1. Click **Create budget**. - -### Editing or deleting a budget - -{% ifversion fpt %} - -As an organization owner, you can edit or delete a budget at any time, but you cannot change the budget scope. - -{% data reusables.profile.access_org %} -{% data reusables.profile.org_settings %} -{% data reusables.billing.org-billing-menu %} - -{% elsif ghec %} - -You can edit or delete a budget at any time, but you cannot change the budget scope. - -{% data reusables.enterprise-accounts.access-enterprise %} -{% data reusables.billing.enterprise-billing-menu %} - -{% endif %} - -1. Click **Budgets and alerts**. -1. To edit a budget, in the list of budgets, click {% octicon "kebab-horizontal" aria-label="View actions" %} next to the budget you want to edit, and click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit** or **{% octicon "trash" aria-hidden="true" aria-label="trash" %} Delete**. -1. Follow the prompts. diff --git a/content/billing/managing-your-billing/using-budgets-control-spending.md b/content/billing/managing-your-billing/using-budgets-control-spending.md new file mode 100644 index 000000000000..3bb71e8d78aa --- /dev/null +++ b/content/billing/managing-your-billing/using-budgets-control-spending.md @@ -0,0 +1,138 @@ +--- +title: Using budgets to control spending on metered products +intro: 'Learn how to set budgets and track when metered usage is nearing or above a budget threshold to prevent overspending.' +allowTitleToDifferFromFilename: true +versions: + feature: enhanced-billing-platform +redirect_from: + - /billing/using-the-enhanced-billing-platform-for-enterprises/preventing-overspending + - /billing/using-the-new-billing-platform/preventing-overspending + - /billing/managing-your-billing/preventing-overspending + # Actions + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-actions + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions + - /billing/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions + - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/managing-your-spending-limit-for-github-actions + # Codespaces + - /billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces + - /billing/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces + - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/managing-the-spending-limit-for-github-codespaces + # Packages + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-your-spending-limit-for-github-packages + - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages + - /billing/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages + - /billing/managing-billing-for-your-products/managing-billing-for-github-packages/managing-your-spending-limit-for-github-packages +type: how_to +topics: + - Enterprise + - Organizations + - Spending limits + - User account +permissions: '{% data reusables.permissions.enhanced-billing-platform %}' +shortTitle: Use budgets to control spending +--- + +Budgets and alerts allow you to track spending on metered products for your accounts, organizations, cost centers (enterprise only), and repositories. By setting a monthly budget, you can monitor your spending and receive notifications by email when your spending exceeds certain preset percentages of your budget threshold. This can help you stay within your budget and avoid overspending. + +If your account does not have a valid payment method on file, usage is blocked once you use up your quota. + +By default, if you have a valid payment method on file, spending is limited to $0 USD until you set a budget. You can set and manage a budget to limit spending for a product or SKU. + + + +## About budgets + +Each budget has a type and a scope that define which paid use contributes to spending against the budget. + +* **Type**: Defines which metered product or SKU is measured. +* **Scope**: Defines whether the budget applies to the whole account, or to a subset of repositories, organizations, or cost centers (enterprise only). + +### Your first billing cycle after creating a budget + +When you first create a budget, be aware that the budget applies only to metered usage from the date of its creation onwards. Any use made before you created the budget, is not included in the calculations. This means that you may exceed your budget in the first billing cycle after you create your budget, even if you select the option stop usage when the limit is reached. + +### Budget limitations + +For license-based products such as {% data variables.product.prodname_copilot %}, {% data variables.product.prodname_AS %}, {% data variables.product.prodname_team %}, and {% data variables.product.prodname_enterprise %}, setting a budget does not prevent usage over the limit but does provide alerts. +Budgets and alerts are not available for pre-paid volume licenses. + +## Deciding on the type and scope for a budget + +When deciding on the type and scope for a budget, remember that the use of metered products is applied towards **all applicable** budgets. If any applicable budget with "Stop usage when budget limit is reached" enabled is exhausted, additional usage is blocked. + +![Screenshot of budgets for "octo-org": "Actions" budget is $50 and "Actions Linux 96-core" budget is $100. All the "Actions" budget has been used.](/assets/images/help/billing/org-budget-example.png) + +In this example, the organization has set a budget of $50 for the "Actions" product and a budget of $100 for one of the SKUs within the "Actions" product. The organization has used all the included quota of actions minutes and an extra $50 of billed minutes. Some of the extra use was for Linux 96-core runners so it is applied to both budgets. Overall, the organization has used the full budget for the "Actions" product of $50. Members are now blocked from using all {% data variables.product.github %}-hosted runners until the next billing cycle or until the "Actions" product budget is increased. The SKU budget for Linux 96-core runners serves no purpose and is confusing, so should be deleted. + +We recommend that you avoid creating overlapping budgets for the use of a product and a SKU, or an organization and a repository, so that users are not unexpectedly blocked from using a feature that they rely on. Alternative, you may prefer to monitor use without blocking users by disabling the "Stop usage when budget limit is reached" option. + +## Managing budgets for your personal account + +You can set budgets and receive alerts when your usage reaches 75%, 90%, or 100% of your defined budget. Budgets can be scoped at the repository or product level, depending on the product. + +{% data reusables.user-settings.access_billing_settings_url %} +1. Click **Budgets and alerts**. +1. To create a new budget, click **New budget**. +1. Under "Budget Type" select either **Product-level budget** or **SKU-level budget**. + + * To create a Product-level budget, choose a metered product from the dropdown. + * To create a SKU-level budget, choose a SKU from the dropdown. This limits spending for an individual SKU. + +1. Under "Budget scope", set the scope of spending for this budget. +1. Under "Budget", set a budget amount. + + To stop any usage and further spending once the budget limit is reached, select **Stop usage when budget limit is reached**, if available. + + >[!IMPORTANT] If you do not select **Stop usage when budget limit is reached**, you will be notified by email if you exceed your budget, but usage **will not** be stopped. + +1. To receive an alert if your budget has reached 75%, 90% and 100% thresholds, select **Receive budget threshold alerts** under "Alerts". When the budget has reached the specific threshold, you will be notified via email and a banner on {% data variables.product.github %}. You may opt out at any time. +1. Click **Create budget**. + +To edit or delete a budget, on the "Budget and alerts page", click **Edit** or **Delete** next to the budget you want to edit or delete. Follow the prompts. + +## Managing budgets for your organization or enterprise + +You can manage budgets for your organization or enterprise by setting a budget, viewing budgets, and editing or deleting budgets. + +### Viewing budgets + +If you are an organization owner, enterprise owner, or billing manager, your budget is listed at the top of the "Budgets and alerts" page, followed by budgets for smaller scopes. + +1. Display the settings for the organization or enterprise account you want to view data for. For example, using the context switcher shown on all personal and organization account settings pages. + + ![Screenshot of the "Public profile" settings for The Octocat. Next to "Your personal profile," a "Switch settings context" link is outlined in orange.](/assets/images/help/settings/context-switcher-button.png) + +1. Click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing** to display the billing and licensing overview for the account: + * **Organization** accounts: under "Access" in the sidebar for settings. + * **Enterprise** accounts: a separate tab at the top of the page. + +1. Click **Budgets and alerts**. +1. Optionally, in the enterprise view only, to filter by scope, select **Scope**, then choose a scope. + +### Creating a budget + +As the onwer of an enterprise or organization account, or as a billing manager, you can set a budget at the account level, or at any level below this. + +1. In the "Budgets and alerts" view, click **New budget**. +1. Under "Budget", set a budget amount. + + To stop any usage and further spending once your {% ifversion fpt %}organization{% elsif ghec %}enterprise or organization{% endif %} reaches the budget limit, select **Stop usage when budget limit is reached**, if available. + + >[!IMPORTANT] If you do not select **Stop usage when budget limit is reached**, you will be notified by email if you exceed your budget, but usage **will not** be stopped. + +1. To receive an alert if your budget has reached 75%, 90% and 100% thresholds, select **Receive budget threshold alerts** under "Alerts". When the budget has reached the specific threshold, you will be notified via email and a banner on {% data variables.product.github %}. You may opt out at any time. + + Under "Alert Recipients", select the people who will receive the alerts. + +1. Click **Create budget**. + +### Editing or deleting a budget + +>[!IMPORTANT] Deleting a budget may remove any limits on spending, depending on your other existing budgets. For example, deleting the default $0 budget for {% data variables.product.prodname_copilot_short %} premium requests allows for unlimited usage. + +You can edit or delete a budget at any time, but you cannot change the scope of a budget after creating it. + +1. In the "Budgets and alerts" view, click **New budget**. +1. Click **Budgets and alerts**. +1. To edit a budget, in the list of budgets, click {% octicon "kebab-horizontal" aria-label="View actions" %} next to the budget you want to edit, and click **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit** or **{% octicon "trash" aria-hidden="true" aria-label="trash" %} Delete**. +1. Follow the prompts. diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.md index bdd06a0aaac7..f5aba431f907 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.md @@ -207,6 +207,9 @@ If your workflow does not contain a matrix called `language`, then {% data varia languages: c-cpp, csharp, python ``` +> [!NOTE] +> When analyzing languages sequentially, the default build-mode for every language will be used. Alternatively, if you provide an explicit `autobuild` step, then every language that supports the `autobuild` mode will use it while other languages use their default mode. If a more complex build-mode configuration than this is required, then you will need to use a `language` matrix. + ## Defining the alert severities that cause a check failure for a pull request {% ifversion code-scanning-merge-protection-rulesets %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts.md b/content/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts.md index a79088e5c1fb..dd25d9df9c66 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts.md @@ -136,6 +136,3 @@ You may have multiple code scanning configurations on a single repository. When * [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests) * [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning) * [AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/about-integration-with-code-scanning) -{%- ifversion copilot-hadron %} -* [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request) -{%- endif %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md index 48670d7f7b01..433c0fb7925c 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md @@ -115,8 +115,6 @@ The best way to mitigate the limitations of suggestions from {% data variables.c It is important to remember that the author of a pull request retains responsibility for how they respond to review comments and suggested code changes, whether proposed by colleagues or automated tools. Developers should always look at suggestions for code changes critically. If needed, they should edit the suggested changes to ensure that the resulting code and application are correct, secure, meet performance criteria, and satisfy all other functional and non-functional requirements for the application. -{% data reusables.rai.code-scanning.copilot-workspaces-prs-autofix-note %} - ## Next steps * [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts) diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md index f7ef03ccc683..3786b2b7edd4 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md @@ -142,9 +142,6 @@ Each {% data variables.copilot.copilot_autofix_short %} suggestion demonstrates 1. Click **Edit** to display the editing options and select your preferred method. * Under **Edit with {% data variables.product.prodname_cli %}**, follow the instructions for checking out the pull request locally and applying the suggested fix. * Select **Edit FILENAME** to edit the file directly on {% data variables.product.prodname_dotcom %} with the suggested fix applied. - - {% data reusables.rai.code-scanning.copilot-workspaces-prs-autofix-note %} - 1. Optionally, if you prefer to apply the fix on a local repository or branch, select the {% octicon "copy" aria-hidden="true" aria-label="copy" %} dropdown menu on the suggestion. * Select **View autofix patch** to display instructions for applying the suggested fix to any local repository or branch. * Select **Copy modified line LINE_NUMBER** to copy a specific line of the suggestion. @@ -169,9 +166,3 @@ An alternative way of closing an alert is to dismiss it. You can dismiss an aler {% data reusables.code-scanning.false-positive-fix-codeql %} For more information about dismissing alerts, see [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts#dismissing--alerts). - -## Further reading - -{%- ifversion copilot-hadron %} -* [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request) -{%- endif %} diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning.md index 2a981362652d..4915169438c9 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning.md @@ -15,8 +15,6 @@ shortTitle: Delegated alert dismissal ## About enabling delegated alert dismissal -{% data reusables.advanced-security.delegated-alert-dismissal-beta %} - {% data reusables.security.delegated-alert-dismissal-intro %} ## Configuring delegated dismissal for a repository @@ -38,3 +36,14 @@ You must configure delegated dismissal for your organization using a custom secu 1. Apply the security configuration to all (or selected) repositories in your organization. See [AUTOTITLE](/code-security/securing-your-organization/enabling-security-features-in-your-organization/applying-a-custom-security-configuration). To learn more about security configurations, see [AUTOTITLE](/code-security/securing-your-organization/introduction-to-securing-your-organization-at-scale/about-enabling-security-features-at-scale). + +{% ifversion secret-scanning-alert-dismiss-custom-role %} + +## Configuring delegated dismissal for an enterprise + +1. Create a new custom security configuration, or edit an existing one. See [AUTOTITLE](/admin/managing-code-security/securing-your-enterprise/creating-a-custom-security-configuration-for-your-enterprise). +1. When defining the custom security configuration, under "{% data variables.product.prodname_secret_protection %}", ensure that the dropdown menu for "Prevent direct alert dismissals" is set to **Enabled**. +1. Click **Save configuration**. +1. Apply the security configuration to all (or selected) repositories in your enterprise. See [AUTOTITLE](/admin/managing-code-security/securing-your-enterprise/applying-a-custom-security-configuration-to-your-enterprise). + +{% endif %} diff --git a/content/code-security/security-overview/viewing-metrics-for-pull-request-alerts.md b/content/code-security/security-overview/viewing-metrics-for-pull-request-alerts.md index 9e274abc1389..916a7df066f3 100644 --- a/content/code-security/security-overview/viewing-metrics-for-pull-request-alerts.md +++ b/content/code-security/security-overview/viewing-metrics-for-pull-request-alerts.md @@ -35,6 +35,8 @@ You can also view: * The number of alerts that were fixed with an accepted {% data variables.copilot.copilot_autofix_short %} suggestion, displayed as a fraction of how many total {% data variables.copilot.copilot_autofix_short %} suggestions were available. * Remediation rates, in a graph showing the percentage of alerts that were remediated with an available {% data variables.copilot.copilot_autofix_short %} suggestion, and the percentage of alerts that were remediated without a {% data variables.copilot.copilot_autofix_short %} suggestion. + +* Mean time to remediate, in a graph showing the average age of closed alerts that were remediated with an available {% data variables.copilot.copilot_autofix_short %} suggestion, and the average age of closed alerts that were remediated without a {% data variables.copilot.copilot_autofix_short %} suggestion. {% endif %} You can apply filters to the data. The metrics are based on activity from the default period or your selected period. diff --git a/content/codespaces/guides.md b/content/codespaces/guides.md index 56d0be0af9d3..6487e6bb2e5f 100644 --- a/content/codespaces/guides.md +++ b/content/codespaces/guides.md @@ -52,7 +52,7 @@ includeGuides: - /codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces - /codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports - /codespaces/managing-codespaces-for-your-organization/reviewing-your-organizations-audit-logs-for-github-codespaces - - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces + - /billing/managing-billing-for-your-products/about-billing-for-github-codespaces - /codespaces/reference/using-the-vs-code-command-palette-in-codespaces - /codespaces/reference/disaster-recovery-for-github-codespaces - /codespaces/reference/security-in-github-codespaces diff --git a/content/codespaces/index.md b/content/codespaces/index.md index a896679b76a7..f9fb9810463b 100644 --- a/content/codespaces/index.md +++ b/content/codespaces/index.md @@ -11,7 +11,7 @@ featuredLinks: - /codespaces/about-codespaces/understanding-the-codespace-lifecycle - /codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers - /codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces - - /billing/managing-billing-for-your-products/managing-billing-for-github-codespaces/about-billing-for-github-codespaces + - /billing/managing-billing-for-your-products/about-billing-for-github-codespaces guideCards: - /codespaces/about-codespaces/deep-dive - /codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository diff --git a/content/copilot/about-github-copilot/github-copilot-features.md b/content/copilot/about-github-copilot/github-copilot-features.md index 4ccfccfbc53f..3c0648912407 100644 --- a/content/copilot/about-github-copilot/github-copilot-features.md +++ b/content/copilot/about-github-copilot/github-copilot-features.md @@ -38,11 +38,7 @@ AI-generated code review suggestions to help you write better code. See [AUTOTIT ### {% data variables.copilot.copilot_for_prs %} -AI-generated summaries of the changes that were made in a pull request, which files they impact, and what a reviewer should focus on when they conduct their review. See [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot). - -### {% data variables.copilot.copilot_workspace %} ({% data variables.release-phases.public_preview %}) - -A {% data variables.product.prodname_copilot_short %}-enabled environment for refining your pull requests, validating changes, and integrating suggestions from reviewers. See [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). +AI-generated summaries of the changes that were made in a pull request, which files they impact, and what a reviewer should focus on when they conduct their review. See [AUTOTITLE](/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot). ### {% data variables.copilot.copilot_autocomplete_pr %} ({% data variables.release-phases.public_preview %}) diff --git a/content/copilot/about-github-copilot/plans-for-github-copilot.md b/content/copilot/about-github-copilot/plans-for-github-copilot.md index b79cdd7b5a6c..9ecdd1acb0e0 100644 --- a/content/copilot/about-github-copilot/plans-for-github-copilot.md +++ b/content/copilot/about-github-copilot/plans-for-github-copilot.md @@ -10,10 +10,6 @@ redirect_from: - /copilot/about-github-copilot/subscription-plans-for-github-copilot --- - -{% data reusables.copilot.unlimited-premium-requests %} - - {% data variables.product.company_short %} offers several plans for {% data variables.product.prodname_copilot %}, depending on your needs and whether you're using {% data variables.product.prodname_copilot_short %} as an individual or as part of an organization or enterprise. * **{% data variables.copilot.copilot_free %}** is available to individual developers who don't have access to {% data variables.product.prodname_copilot_short %} through an organization or enterprise. This free plan includes limited access to select {% data variables.product.prodname_copilot_short %} features, allowing you to try AI-powered coding assistance at no cost. diff --git a/content/copilot/customizing-copilot/adding-personal-custom-instructions-for-github-copilot.md b/content/copilot/customizing-copilot/adding-personal-custom-instructions-for-github-copilot.md index d9100aa893ad..51ff9cbcc5e0 100644 --- a/content/copilot/customizing-copilot/adding-personal-custom-instructions-for-github-copilot.md +++ b/content/copilot/customizing-copilot/adding-personal-custom-instructions-for-github-copilot.md @@ -26,8 +26,10 @@ You can add custom instructions for {% data variables.copilot.copilot_chat %} in You can add personal custom instructions either in the Chat panel or in immersive mode. The same instructions will be applied in both modes. 1. In the top right of any page on {% data variables.product.github %}, either: - * Click the **{% octicon "copilot" aria-label="Copilot" %}** icon to open the {% data variables.copilot.copilot_chat_short %} panel. - * Click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} next to the **{% octicon "copilot" aria-label="Copilot" %}** icon, then click **Immersive** to open {% data variables.copilot.copilot_chat_short %} in the full-page, immersive mode. You can also go directly to [https://github.com/copilot](https://github.com/copilot). + + * Click the **{% octicon "copilot" aria-label="Copilot" %}** icon to open the full-page, immersive mode of {% data variables.copilot.copilot_chat_short %}. + * Click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} next to the **{% octicon "copilot" aria-label="Copilot" %}** icon, then click **Assistive** to open the {% data variables.copilot.copilot_chat_short %} panel. + 1. Select the {% octicon "kebab-horizontal" aria-label="Open conversation options" %} dropdown menu at the top right of the Chat panel, or immersive page, then click **Personal instructions**. 1. Add natural language instructions to the text box. diff --git a/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md b/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md index 38c431719d98..972da647ac7c 100644 --- a/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md +++ b/content/copilot/customizing-copilot/creating-a-custom-model-for-github-copilot.md @@ -37,7 +37,7 @@ By creating a custom model you enable {% data variables.product.prodname_copilot This provides: -* **Personalization** - {% data variables.product.prodname_copilot_short %} has a detailed knowledge of your codebase, including available modules, functions, and internal libraries. A custom model may be particularly beneficial if your code is not typical of the wide range of code used to train the base model. +* **Personalization** - {% data variables.product.prodname_copilot_short %} has a detailed knowledge of your codebase, including available modules, functions, and internal libraries. A custom model may be particularly beneficial if your code is not typical of the wide range of code used to train the included model. * **Efficiency and quality** - {% data variables.product.prodname_copilot_short %} is better equipped to help you write code faster and with fewer errors. * **Privacy** - The custom model’s training process, hosting and inferencing are secure and private to your organization. Your data always remains yours, is never used to train another customer’s model, and your custom model is never shared. @@ -113,7 +113,7 @@ You can check in your organization settings for an indication of how model creat Model training may fail for a variety of reasons, including: * Not enough data or non-representative data. Lack of data provided for training, or too much replication in the data, may make the fine-tuning unstable. -* Non-differentiated data. If the data is not sufficiently different from the public data on which the base model was trained, training may fail or the quality of code completion suggestions from the custom model may be only marginally improved. +* Non-differentiated data. If the data is not sufficiently different from the public data on which the included model was trained, training may fail or the quality of code completion suggestions from the custom model may be only marginally improved. * A data preprocessing step may encounter unexpected files types and formats which causes it to fail. A solution may be to specify only certain file types for training. ## Retraining or deleting the custom model @@ -127,7 +127,7 @@ Retraining the model updates it to include any new code that has been added to t If you retrain the model, {% data variables.product.prodname_copilot_short %} will continue to use the current model to generate code completion suggestions until the new model is ready. Once the new model is ready, it will be automatically be used for code completion suggestions for all managed users who get a {% data variables.copilot.copilot_enterprise_short %} plan from the organization. -If you delete the custom model, {% data variables.product.prodname_copilot_short %} will use the base model for generating code completion suggestions for all users who get a {% data variables.product.prodname_copilot_short %} plan from the organization. +If you delete the custom model, {% data variables.product.prodname_copilot_short %} will use the included model for generating code completion suggestions for all users who get a {% data variables.product.prodname_copilot_short %} plan from the organization. ## Telemetry data collection and usage for custom models @@ -144,7 +144,7 @@ When you create a custom model, you can choose to allow {% data variables.produc Telemetry data is primarily used to fine-tune the {% data variables.product.prodname_copilot_short %} custom model to better understand and predict your organization’s coding patterns. Specifically, it helps: * **Enhance model accuracy:** By analyzing the collected telemetry, {% data variables.product.prodname_copilot_short %} refines your custom model to increase the relevance and accuracy of future coding suggestions. -* **Monitor performance:** Telemetry data allows {% data variables.product.company_short %} to monitor how well custom models are performing compared to the base model, enabling ongoing improvements. +* **Monitor performance:** Telemetry data allows {% data variables.product.company_short %} to monitor how well custom models are performing compared to the included model, enabling ongoing improvements. * **Feedback loops:** The data helps {% data variables.product.company_short %} create feedback loops where the model learns from real-world usage, adapting to your specific coding environment over time. ### Data storage and retention diff --git a/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md b/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md index f4c6ac45f8e8..9f8cc55ceb3a 100644 --- a/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md +++ b/content/copilot/customizing-copilot/extending-the-capabilities-of-github-copilot-in-your-organization.md @@ -47,4 +47,4 @@ You can also manage the permissions of installed {% data variables.copilot.copil ## Further reading * [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-chat-with-mcp) -* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) diff --git a/content/copilot/customizing-copilot/index.md b/content/copilot/customizing-copilot/index.md index 3382e5ee0801..d9ff96ab9762 100644 --- a/content/copilot/customizing-copilot/index.md +++ b/content/copilot/customizing-copilot/index.md @@ -7,6 +7,7 @@ versions: topics: - Copilot children: + - /using-model-context-protocol - /extending-the-capabilities-of-github-copilot-in-your-organization - /about-customizing-github-copilot-chat-responses - /adding-personal-custom-instructions-for-github-copilot @@ -14,8 +15,6 @@ children: - /adding-organization-custom-instructions-for-github-copilot - /customizing-the-development-environment-for-copilot-coding-agent - /customizing-or-disabling-the-firewall-for-copilot-coding-agent - - /extending-copilot-chat-with-mcp - - /extending-copilot-coding-agent-with-mcp - /managing-copilot-knowledge-bases - /creating-a-custom-model-for-github-copilot redirect_from: diff --git a/content/copilot/customizing-copilot/extending-copilot-chat-with-mcp.md b/content/copilot/customizing-copilot/using-model-context-protocol/extending-copilot-chat-with-mcp.md similarity index 87% rename from content/copilot/customizing-copilot/extending-copilot-chat-with-mcp.md rename to content/copilot/customizing-copilot/using-model-context-protocol/extending-copilot-chat-with-mcp.md index 36c40878b584..3e40f0a72f26 100644 --- a/content/copilot/customizing-copilot/extending-copilot-chat-with-mcp.md +++ b/content/copilot/customizing-copilot/using-model-context-protocol/extending-copilot-chat-with-mcp.md @@ -8,6 +8,8 @@ versions: topics: - Copilot type: how_to +redirect_from: + - /copilot/customizing-copilot/extending-copilot-chat-with-mcp --- >[!NOTE] @@ -36,8 +38,7 @@ For information on some of the other currently available MCP servers, see [the M To configure MCP servers in {% data variables.product.prodname_vscode %}, you need to set up a configuration script that specifies the details of the MCP servers you want to use. You can configure MCP servers for either: -* **A specific repository**. This will share MCP servers with anyone who opens the project in {% data variables.product.prodname_vscode %}. To do this, create a `.vscode/mcp.json` file in the root of your repository. -* **Your personal instance of {% data variables.product.prodname_vscode %}**. You will be the only person who has access to configured MCP servers. To do this, add the configuration to your `settings.json` file in {% data variables.product.prodname_vscode %}. +{% data reusables.copilot.mcp.mcp-configuration-location %} >[!NOTE] We recommend you use only one location per server. Adding the same server to both locations may cause conflicts and unexpected behavior. @@ -45,6 +46,8 @@ The steps below show how to configure the Fetch MCP server in your `.vscode/mcp. You can use the same steps to configure MCP servers in your personal {% data variables.product.prodname_vscode %} settings. Details on how to configure other MCP servers are available in the [MCP servers repository](https://github.com/modelcontextprotocol/servers/tree/main). +For information on configuring the {% data variables.product.github %} MCP server, see [AUTOTITLE](/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server). + 1. Add the following configuration to your `.vscode/mcp.json` file: ```json copy @@ -76,17 +79,16 @@ You can use the same steps to configure MCP servers in your personal {% data var ![Screenshot of the {% data variables.copilot.copilot_chat_short %} box in {% data variables.product.prodname_vscode %}. The "Agent" option is outlined in dark orange.](/assets/images/help/copilot/copilot-chat-agent-option.png) 1. To view your list of available MCP servers, click the tools icon in the top left corner of the chat box. This will open the MCP server list, where you can see all the MCP servers and associated tools that are currently available in your {% data variables.product.prodname_vscode %} instance. + * Optionally, you can define toolsets, groups of related tools that you can reference in chat. Toolsets make it easier to group related MCP tools together and quickly enable or disable them. For information on how to define and use a toolset, see the [{% data variables.product.prodname_vscode_shortname %} docs](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode#_define-tool-sets). For more information on configuring MCP servers in {% data variables.product.prodname_vscode %}, see [Use MCP servers in {% data variables.product.prodname_vscode %} (Preview)](https://aka.ms/vscode-add-mcp) in the {% data variables.product.prodname_vscode %} documentation. ->[!IMPORTANT] Beginning April 4, 2025, the {% data variables.product.github %} MCP server, and installation instructions, will be publicly available in the [github-mcp-server](https://github.com/github/github-mcp-server) repository. - ## Using MCP servers in {% data variables.copilot.copilot_chat_short %} Once you have configured your MCP servers, you can use them in {% data variables.copilot.copilot_chat_short %} to access a wide range of tools and services. In the example below, we will use the Fetch MCP server to fetch details about a web page. -1. Open {% data variables.copilot.copilot_chat_short %} by clicking the {% octicon "copilot" aria-hidden="true" aria-label="copilot" %} icon in the title bar of {% data variables.product.prodname_vscode %}. -1. In the {% data variables.copilot.copilot_chat_short %} box, select **Agent** from the popup menu. +{% data reusables.copilot.open-chat-vs-code %} +{% data reusables.copilot.select-agent %} 1. In the file with the MCP configuration, check that the MCP server is running. If it is not running, click the "Start" button to start the MCP server. ![Screenshot of the MCP server configuration in {% data variables.product.prodname_vscode %}. The "Running" status is outlined in dark orange.](/assets/images/help/copilot/vsc-mcp-server-running.png) @@ -99,6 +101,11 @@ Once you have configured your MCP servers, you can use them in {% data variables 1. {% data variables.product.prodname_copilot_short %} will fetch the details of the URL and display them in the chat box. +Optionally, you can use MCP prompts and resources in {% data variables.product.prodname_vscode_shortname %}. + + * MCP servers can define preconfigured prompts for interacting with their tools. You can access these prompts in chat with slash commands, using the format `/mcp.servername.promptname`. + * MCP servers provide resources, which are any kind of data that the server wants to make available. For example, the {% data variables.product.github %} MCP server provides repository content as a resource. To add resources from an MCP server to your chat context, click **Add Context...** in the chat box, then click **MCP Resources**. + For more information on using MCP servers in {% data variables.product.prodname_vscode %}, see [Use MCP servers in {% data variables.product.prodname_vscode %} (Preview)](https://aka.ms/vscode-add-mcp) in the {% data variables.product.prodname_vscode %} documentation. ## Using existing MCP configurations @@ -199,4 +206,5 @@ For more information on creating and configuring your own MCP servers, see [the ## Further reading -* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server) diff --git a/content/copilot/customizing-copilot/using-model-context-protocol/index.md b/content/copilot/customizing-copilot/using-model-context-protocol/index.md new file mode 100644 index 000000000000..4112b8b935bc --- /dev/null +++ b/content/copilot/customizing-copilot/using-model-context-protocol/index.md @@ -0,0 +1,12 @@ +--- +title: Using Model Context Protocol +shortTitle: Use MCP +intro: 'Model Context Protocol (MCP) is a protocol that allows you to extend the capabilities of {% data variables.product.prodname_copilot %} by integrating it with other systems.' +versions: + feature: copilot +topics: + - Copilot +children: + - /extending-copilot-chat-with-mcp + - /using-the-github-mcp-server +--- diff --git a/content/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server.md b/content/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server.md new file mode 100644 index 000000000000..94049676f6b5 --- /dev/null +++ b/content/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server.md @@ -0,0 +1,199 @@ +--- +title: Using the GitHub MCP Server +intro: "Learn how to use the GitHub Model Context Protocol (MCP) server to extend {% data variables.copilot.copilot_chat_short %}." +shortTitle: Use the GitHub MCP Server +versions: + feature: copilot +topics: + - Copilot +type: how_to +--- + +>[!NOTE] +> The {% data variables.product.github %} MCP server is currently in {% data variables.release-phases.public_preview %} and subject to change. + +{% data reusables.copilot.mcp.about-github-mcp-server %} + +## Setting up the {% data variables.product.github %} MCP server in {% data variables.product.prodname_vscode %} + +The instructions below guide you through setting up the {% data variables.product.github %} MCP server in {% data variables.product.prodname_vscode %}. Other MCP-compatible editors may have similar steps, but the exact process may vary. + +You can choose to set up the {% data variables.product.github %} MCP server either remotely or locally, depending on your needs and preferences. You can also configure your {% data variables.product.github %} MCP server for either: + +{% data reusables.copilot.mcp.mcp-configuration-location %} + +The remote {% data variables.product.github %} MCP server uses one-click OAuth authentication by default, but you can also manually configure it to use a {% data variables.product.pat_generic %} (PAT) for authentication. If you use OAuth, the MCP server will have the same access as your personal account. If you use a PAT, the MCP server will have access to the scopes granted by the PAT. + +> [!NOTE] +> If you are an {% data variables.product.prodname_emu %} with PAT restrictions, you won't be able to use PAT authentication. If you have OAuth access policy restrictions, you will need the OAuth apps for each client to be enabled (except {% data variables.product.prodname_vscode %} and {% data variables.product.prodname_vs %}). + +* [Remote MCP server configuration with OAuth](#remote-mcp-server-configuration-with-oauth) +* [Remote MCP server configuration with PAT](#remote-mcp-server-configuration-with-pat) +* [Local MCP server setup](#local-mcp-server-setup) + +### Remote MCP server configuration with OAuth + +> [!NOTE] +> The remote {% data variables.product.github %} MCP server is not available to {% data variables.product.prodname_ghe_server %} users. If you are using {% data variables.product.prodname_ghe_server %}, you can install the {% data variables.product.github %} MCP server locally. See [Local MCP server setup](#local-mcp-server-setup). + +You do not need to create a PAT or install any additional software to use the remote {% data variables.product.github %} MCP server with OAuth. You can set it up directly in {% data variables.product.prodname_vscode %}. You can also install individual toolsets, either in read-only mode or with full read/write access, allowing you to tailor the server's capabilities to your specific needs. For more information, see [Tool configuration](#tool-configuration). + +1. In {% data variables.product.prodname_vscode %}, open the command palette by pressing Ctrl+Shift+P (Windows/Linux) / Command+Shift+P (Mac). +1. Type: `mcp: add server` and then press **Enter**. +1. From the list, select **HTTP (HTTP or Server-Sent Events)**. +1. In the **Server URL** field, enter `https://api.githubcopilot.com/mcp/`, and press **Enter**. +1. Under **Enter Server ID**, press **Enter** to use the default server ID, or enter a custom server ID. +1. Under **Choose where to save the configuration**, select where you want to save the MCP server configuration. + + * {% data variables.product.prodname_vscode %} will open and add the configuration to the selected file in the editor, or create a new file if it doesn't exist. + +1. In the **{% data variables.product.prodname_vscode %}** popup, to authorize the MCP server with OAuth, click **Allow** and select your personal account from the list. + +### Remote MCP server configuration with PAT + +To configure the remote {% data variables.product.github %} MCP server with a PAT, ensure you have created a PAT with the necessary scopes for the access you want to grant to the MCP server. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). + +You will need to manually configure the MCP server in {% data variables.product.prodname_vscode %} to use the PAT for authorization. + +1. In {% data variables.product.prodname_vscode %}, open the command palette by pressing Ctrl+Shift+P (Windows/Linux) / Command+Shift+P (Mac). +1. Type: `mcp: add server` and then press **Enter**. +1. From the list, select **HTTP (HTTP or Server-Sent Events)**. +1. In the **Server URL** field, enter `https://api.githubcopilot.com/mcp/`, and press **Enter**. +1. Under **Enter Server ID**, press **Enter** to use the default server ID, or enter a custom server ID. +1. Under **Choose where to save the configuration**, select where you want to save the MCP server configuration. + + * {% data variables.product.prodname_vscode %} will open and add the configuration to the selected file in the editor, or create a new file if it doesn't exist. + +1. In the **{% data variables.product.prodname_vscode %}** popup, to decline OAuth authorization, click **Cancel**. +1. You will need to manually edit the configuration file to use a PAT. In the configuration file, at the end of the `url` line, add the following: + + ```json copy + , + "headers": { + "Authorization": "Bearer ${input:github_token}" + } + }, + }, + "inputs": [ + { + "id": "github_token", + "type": "promptString", + "description": "{% data variables.product.github %} {% data variables.product.pat_generic_title_case %}", + "password": true + } + ] + } + ``` + +1. A "Restart" button will appear in the file. Click "Restart" to restart the MCP server with the new configuration. + + ![Screenshot of the MCP server restart button in the configuration file. The "Restart" button is outlined in dark orange.](/assets/images/help/copilot/vsc-mcp-server-restart.png) + +1. In the command palette, you will see a prompt to enter your GitHub token. Enter the PAT you created earlier, and press **Enter**. + * The MCP server will now be configured to use the PAT for authorization. + +### Local MCP server setup + +>[!NOTE] +> If you are a {% data variables.product.prodname_ghe_server %} user, and your enterprise has PAT restrictions enabled, you can only use API endpoints for scopes that are allowed by your enterprise's PAT policy. If all API endpoints are restricted, you will not be able to use the MCP server. If you are unsure about your enterprise's PAT policy, contact your enterprise administrator for more information. + +Using the {% data variables.product.github %} MCP server locally requires you to have Docker installed and running on your machine. Additionally, you can only authenticate with a PAT, as OAuth is not supported for local MCP servers. + +1. Ensure you have Docker installed and running on your machine. See [Docker installation instructions](https://docs.docker.com/get-docker/). +1. Create a PAT with (at least) the `read:packages` and `repo` scopes. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). +1. Decide whether you want to configure the MCP server for a specific repository or for your personal instance of {% data variables.product.prodname_vscode %}. + + * If you are using a specific repository, open the `.vscode/mcp.json` file in {% data variables.product.prodname_vscode %}, and add the following configuration: + + ```json copy + { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "{% data variables.product.github %} {% data variables.product.pat_generic_title_case %}", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}" + } + } + } + } + ``` + + * If you are using your personal instance of {% data variables.product.prodname_vscode %}, open your `settings.json` file in {% data variables.product.prodname_vscode %}: + * Press Ctrl+Shift+P (Windows/Linux) or Cmd+Shift+P (macOS). + * Type **Preferences: Open Settings (JSON)** and select it. + * Add the following configuration: + + ```json copy + { + "mcp": { + "inputs": [ + { + "type": "promptString", + "id": "github_token", + "description": "{% data variables.product.github %} {% data variables.product.pat_generic_title_case %}", + "password": true + } + ], + "servers": { + "github": { + "command": "docker", + "args": [ + "run", + "-i", + "--rm", + "-e", + "GITHUB_PERSONAL_ACCESS_TOKEN", + "ghcr.io/github/github-mcp-server" + ], + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}" + } + } + } + } + } + ``` + +1. Save the file. +1. In the command palette, you will see a prompt to enter your {% data variables.product.github %} token. Enter the PAT you created earlier, and press **Enter**. + * The MCP server will now be configured to run locally with the PAT for authorization. + +## Tool configuration + +The {% data variables.product.github %} MCP server supports installing individual toolsets, either in read-only mode or with full read/write access, allowing you to tailor the server's capabilities to your specific needs. For one-click installation options of each toolset, see the [GitHub MCP server repository](https://github.com/github/github-mcp-server/blob/main/docs/remote-server.md). + +## Using the {% data variables.product.github %} MCP server in {% data variables.product.prodname_vscode %} + +The {% data variables.product.github %} MCP server enables you to perform a wide range of actions on {% data variables.product.github %}, via {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_vscode %}. + +{% data reusables.copilot.open-chat-vs-code %} +{% data reusables.copilot.select-agent %} +1. To see the available actions, in the {% data variables.copilot.copilot_chat_short %} box, click the **Select tools** icon. + * In the **Tools** dropdown, under **MCP Server:{% data variables.product.github %}**, you will see a list of available actions. +1. In the {% data variables.copilot.copilot_chat_short %} box, type a command or question related to the action you want to perform, and press **Enter**. + * For example, you can ask the {% data variables.product.github %} MCP server to create a new issue, list pull requests, or retrieve repository information. +1. The {% data variables.product.github %} MCP server will process your request and provide a response in the chat interface. + * In the {% data variables.copilot.copilot_chat_short %} box, you may be asked to give additional permissions or provide more information to complete the action. +1. Follow the prompts to complete the action. + +{% data reusables.copilot.mcp.troubleshooting-mcp-server %} + +## Further reading + +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) diff --git a/content/copilot/index.md b/content/copilot/index.md index 2f9e36240c84..4dbdb50cc4ae 100644 --- a/content/copilot/index.md +++ b/content/copilot/index.md @@ -4,6 +4,7 @@ shortTitle: '{% data variables.product.prodname_copilot %}' intro: 'You can use {% data variables.product.prodname_copilot %} to enhance your productivity and assist as you work on code.' redirect_from: - /github/copilot + - /copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request changelog: label: copilot introLinks: diff --git a/content/copilot/managing-copilot/index.md b/content/copilot/managing-copilot/index.md index 6f018698f604..a8bb2d4852a5 100644 --- a/content/copilot/managing-copilot/index.md +++ b/content/copilot/managing-copilot/index.md @@ -10,7 +10,7 @@ children: - /managing-copilot-as-an-individual-subscriber - /managing-github-copilot-in-your-organization - /managing-copilot-for-your-enterprise - - /monitoring-usage-and-entitlements + - /understanding-and-managing-copilot-usage - /configure-personal-settings - /configuring-and-auditing-content-exclusion --- diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/billing-and-payments/about-billing-for-individual-copilot-plans.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/billing-and-payments/about-billing-for-individual-copilot-plans.md index bcff81645ce5..582e90074b5e 100644 --- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/billing-and-payments/about-billing-for-individual-copilot-plans.md +++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/billing-and-payments/about-billing-for-individual-copilot-plans.md @@ -49,22 +49,18 @@ You can cancel your {% data variables.product.prodname_copilot_short %} trial at ## About premium requests - -{% data reusables.copilot.unlimited-premium-requests %} - - Your {% data variables.product.prodname_copilot_short %} plan includes premium requests. Premium requests use more advanced models or features and count against your monthly premium request allowance. To learn more about premium requests and how they affect your billing, see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs). ### Purchasing additional premium requests -If you use all of your premium requests, you can continue using {% data variables.product.prodname_copilot_short %} with the base model for the rest of the month at no additional cost. +If you use all of your premium requests, you can continue using {% data variables.product.prodname_copilot_short %} with the included models for the rest of the month at no additional cost. If you need more premium requests, you have two options: * Upgrade to a higher plan with a larger monthly premium request allowance. -* Set a spending limit for premium requests over your plan's allowance. Additional premium requests beyond the limit of your Copilot plan are billed at {% data variables.copilot.additional_premium_requests %} per premium request. See [AUTOTITLE](/billing/managing-your-billing/preventing-overspending). +* Set a budget for premium requests over your plan's allowance. Additional premium requests beyond the limit of your {% data variables.product.prodname_copilot_short %} plan are billed at {% data variables.copilot.additional_premium_requests %} per premium request. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). {% data reusables.copilot.premium-requests-mobile %} diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/about-individual-copilot-plans-and-benefits.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/about-individual-copilot-plans-and-benefits.md index d1297b5f7178..bf180e5253d7 100644 --- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/about-individual-copilot-plans-and-benefits.md +++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/about-individual-copilot-plans-and-benefits.md @@ -21,7 +21,7 @@ You can choose from the following plans. For developers looking to get started with {% data variables.product.prodname_copilot_short %}. * Includes up to **2,000 code completions** in IDEs per month -* Includes up to **50 total chat requests** per month in {% data variables.copilot.copilot_chat_short %} +* Includes up to **50 premium requests** per month * Designed to give you a limited taste of {% data variables.product.prodname_copilot_short %}'s capabilities * No subscription or payment required * Intended for **personal use only**, not for users managed by an organization or enterprise @@ -57,10 +57,10 @@ The following table highlights the key differences between individual {% data va | Feature | {% data variables.copilot.copilot_free %} | {% data variables.copilot.copilot_pro %} | {% data variables.copilot.copilot_pro_plus %} | |--------|----------------------------------------------------|--------------------------------------------------|----------------------------------------------------------| | Price | Free | {% data variables.copilot.cfi_price_per_month %} per month, or
{% data variables.copilot.cfi_price_per_year %} per year
([free](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/getting-free-access-to-copilot-pro-as-a-student-teacher-or-maintainer) for some users) | {% data variables.copilot.cpp_price_per_month %} per month, or
{% data variables.copilot.cpp_price_per_year %} per year | -| Real-time code suggestions with the base model | Up to 2,000 per month | Unlimited | Unlimited | +| Real-time code suggestions with included models | Up to 2,000 per month | Unlimited | Unlimited | | Premium requests | 50 per month | 300 per month | 1,500 per month | | Purchase additional premium requests at {% data variables.copilot.additional_premium_requests %} per request | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| {% data variables.copilot.copilot_chat_short %} interactions[^1] | Up to 50 per month | Unlimited with base model | Unlimited with base model | +| {% data variables.copilot.copilot_chat_short %} interactions[^1] | Up to 50 per month | Unlimited with included models | Unlimited with included models | | Access to premium models | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} Full access | {% endrowheaders %} diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber.md index 74662cac7e8d..1dce6f3675b6 100644 --- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber.md +++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber.md @@ -30,7 +30,7 @@ If you choose to allow suggestions matching public code, when {% data variables. {% data reusables.user-settings.copilot-settings %} 1. To the right of **Suggestions matching public code**, select the dropdown menu, then click **Allow** to allow suggestions matching public code, or **Block** to block suggestions matching public code. -## Enabling or disabling {% data variables.copilot.copilot_coding_agent %} +## Disabling or enabling {% data variables.copilot.copilot_coding_agent %} in your repositories {% data variables.copilot.copilot_coding_agent %} allows you to assign {% data variables.product.prodname_copilot_short %} to {% data variables.product.github %} issues, or ask {% data variables.product.prodname_copilot_short %} to raise a pull request from a prompt in {% data variables.copilot.copilot_chat_short %}. @@ -38,7 +38,7 @@ If you choose to allow suggestions matching public code, when {% data variables. > * {% data reusables.gated-features.copilot-coding-agent %} > * {% data reusables.copilot.coding-agent.preview-note-text %} -To use {% data variables.copilot.copilot_coding_agent %} in repositories owned by your own personal account, you must enable it for those repositories in your account settings. +{% data variables.copilot.copilot_coding_agent %} is enabled in all repositories by default, but you can block it from being used in repositories owned by your own personal account by changing your account settings. {% data reusables.user-settings.copilot-settings %} 1. In the sidebar, under **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %} {% data variables.product.prodname_copilot_short %}**, click **Coding agent**. diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/index.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/index.md index 2bf4b0865a63..f991e4248681 100644 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/index.md +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/index.md @@ -10,5 +10,5 @@ children: - /managing-the-copilot-plan-for-your-enterprise - /managing-access-to-copilot-in-your-enterprise - /managing-policies-and-features-for-copilot-in-your-enterprise - - /making-copilot-coding-agent-available-to-enterprise + - /managing-copilot-coding-agent-in-your-enterprise --- diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/making-copilot-coding-agent-available-to-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/making-copilot-coding-agent-available-to-enterprise.md deleted file mode 100644 index 1a31a5f9cf29..000000000000 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/making-copilot-coding-agent-available-to-enterprise.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: 'Making {% data variables.copilot.copilot_coding_agent %} available to enterprise members' -intro: 'Enable members of your enterprise to use {% data variables.copilot.copilot_coding_agent %}.' -allowTitleToDifferFromFilename: true -permissions: Enterprise owners -product: '{% data reusables.gated-features.copilot-coding-agent %}
Sign up for {% data variables.product.prodname_copilot_short %} {% octicon "link-external" height:16 %}' -versions: - feature: copilot-enterprise -topics: - - Copilot -shortTitle: 'Add {% data variables.copilot.copilot_coding_agent %}' -redirect_from: - - /copilot/managing-copilot/managing-copilot-for-your-enterprise/adding-copilot-coding-agent-to-enterprise ---- - - - -{% data reusables.copilot.coding-agent.preview-note %} - -## Prerequisites - -* For general information, see [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org). -* For information on premium requests and Actions minutes, see [Allowance usage for {% data variables.copilot.copilot_coding_agent %}](/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot#allowance-usage-for-copilot-coding-agent). -* For information on MCP servers, see [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). - -## Enabling {% data variables.copilot.copilot_coding_agent %} for your members - -{% data variables.copilot.copilot_coding_agent %} and use of third-party MCP servers are disabled by default for users with a {% data variables.product.prodname_copilot_short %} license. You can enable these features for your members on the {% data variables.product.prodname_copilot_short %} policies page for your enterprise. See [Configuring policies for {% data variables.product.prodname_copilot %}](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#configuring-policies-for-github-copilot). - -* For the "{% data variables.copilot.copilot_coding_agent %}" policy, select "Enabled" or "No policy". -* For the "MCP servers on {% data variables.product.prodname_dotcom_the_website %}" policy, select "Enabled" or "No policy". - -Where: - -* "Enabled" means all users granted a {% data variables.product.prodname_copilot_short %} license by any of your organizations will be able to use the feature. -* "Disabled" means no users granted a {% data variables.product.prodname_copilot_short %} license by your organizations will be able to use the feature. -* "No policy" means organization owners in each of your organizations will be able to decide if their {% data variables.product.prodname_copilot_short %} licensees can use the feature. - -## Next steps - -* If you selected "Enabled", tell organization owners that {% data variables.copilot.copilot_coding_agent %} is enabled for all members. They should define which repositories are allowed to use {% data variables.copilot.copilot_coding_agent %}. -* If you selected "No policy", discuss member enablement and {% data variables.copilot.copilot_coding_agent %} availability in repositories with organization owners. - -For more information, see [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-copilot-coding-agent-in-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-copilot-coding-agent-in-your-enterprise.md new file mode 100644 index 000000000000..79abbd7dd9b4 --- /dev/null +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-copilot-coding-agent-in-your-enterprise.md @@ -0,0 +1,59 @@ +--- +title: 'Managing {% data variables.copilot.copilot_coding_agent %} in your enterprise' +intro: 'Enable members of your enterprise to use {% data variables.copilot.copilot_coding_agent %} and control the repositories where it is available.' +allowTitleToDifferFromFilename: true +permissions: Enterprise owners +product: '{% data reusables.gated-features.copilot-coding-agent %}
Sign up for {% data variables.product.prodname_copilot_short %} {% octicon "link-external" height:16 %}' +versions: + feature: copilot-enterprise +topics: + - Copilot +shortTitle: 'Manage {% data variables.copilot.copilot_coding_agent %}' +redirect_from: + - /copilot/managing-copilot/managing-copilot-for-your-enterprise/adding-copilot-coding-agent-to-enterprise + - /copilot/managing-copilot/managing-copilot-for-your-enterprise/making-copilot-coding-agent-available-to-enterprise +--- + +{% data reusables.copilot.coding-agent.preview-note %} + +## Prerequisites + +* For general information, see [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org). +* For information on premium requests and Actions minutes, see [Allowance usage for {% data variables.copilot.copilot_coding_agent %}](/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot#allowance-usage-for-copilot-coding-agent). +* For information on MCP servers, see [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). + +## Enabling {% data variables.copilot.copilot_coding_agent %} for your {% data variables.product.prodname_copilot_short %} subscribers + +{% data variables.copilot.copilot_coding_agent %} and use of third-party MCP servers are disabled by default for users to whom you have assigned a {% data variables.product.prodname_copilot_short %} license. You can enable these features for your members on the {% data variables.product.prodname_copilot_short %} policies page for your enterprise. See [Configuring policies for {% data variables.product.prodname_copilot %}](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#configuring-policies-for-github-copilot). + +* For the "{% data variables.copilot.copilot_coding_agent %}" policy, select "Enabled" or "No policy". +* For the "MCP servers on {% data variables.product.prodname_dotcom_the_website %}" policy, select "Enabled" or "No policy". + +Where: + +* "Enabled" means all users granted a {% data variables.product.prodname_copilot_short %} license by any of your organizations will be able to use the feature. +* "Disabled" means no users granted a {% data variables.product.prodname_copilot_short %} license by your organizations will be able to use the feature. +* "No policy" means organization owners in each of your organizations will be able to decide if their {% data variables.product.prodname_copilot_short %} licensees can use the feature. + +### Next steps + +* If you selected **Enabled**, tell organization owners that {% data variables.copilot.copilot_coding_agent %} is enabled for all members. By default, the agent will be available in all repositories, but it is possible to opt out some or all repositories. +* If you selected **No policy**, discuss member enablement with organization owners. + +For more information, see [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). + +## Disabling {% data variables.copilot.copilot_coding_agent %} in your repositories + +{% data variables.product.prodname_copilot_short %} policies, like the "{% data variables.copilot.copilot_coding_agent %}" and "MCP servers on {% data variables.product.prodname_dotcom_the_website %}" policies described above, affect only the users you assign a {% data variables.product.prodname_copilot_short %} license to. + +If there are {% data variables.copilot.copilot_pro_plus %} users with access to your enterprise's repositories, they will be able to use {% data variables.copilot.copilot_coding_agent %} and will not be restricted by your policies. + +You can choose to stop anyone using the agent in some or all of your repositories using organization-level settings. For more information, see [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). + +Alternatively, you can disable the agent for all repositories owned by your enterprise. + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.policies-tab %} +{% data reusables.enterprise-accounts.copilot-tab %} +{% data reusables.enterprise-accounts.copilot-policies-tab %} +1. Select **Block {% data variables.copilot.copilot_coding_agent %} in all enterprise repositories**. diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md index e7c18f375625..458293a3f53a 100644 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md @@ -87,7 +87,7 @@ Some features of {% data variables.product.prodname_copilot_short %} are availab > [!NOTE] Support for GPT-4.5 is only available on {% data variables.copilot.copilot_enterprise_short %}. -By default, {% data variables.copilot.copilot_chat_short %} uses a base model. If you grant access to the alternative models, members of your enterprise can choose to use these models rather than the base model. The available alternative models are: +By default, {% data variables.copilot.copilot_chat_short %} uses an included model. If you grant access to the alternative models, members of your enterprise can choose to use these models rather than the included model. The available alternative models are: * **{% data variables.copilot.copilot_claude %}**. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/using-claude-in-github-copilot). * **{% data variables.copilot.copilot_gemini %}**. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/using-gemini-in-github-copilot). @@ -116,7 +116,7 @@ Alternatively, set to "No policy" to leave organization owners to make the decis > [!NOTE] Use of MCP servers on {% data variables.product.prodname_dotcom_the_website %} is in public preview and subject to change. -{% data reusables.copilot.coding-agent.mcp-brief-intro %} See [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +{% data reusables.copilot.coding-agent.mcp-brief-intro %} See [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). ## Configuring policies for {% data variables.product.prodname_copilot %} diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization.md index 20df045f7b49..92f1721d9314 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization.md @@ -1,6 +1,6 @@ --- title: 'Adding {% data variables.copilot.copilot_coding_agent %} to your organization' -intro: 'Enable {% data variables.copilot.copilot_coding_agent %} for your members and define repositories where it is available.' +intro: 'Enable {% data variables.copilot.copilot_coding_agent %} for your members and control the repositories where it is available.' allowTitleToDifferFromFilename: true permissions: Organization owners product: '{% data reusables.gated-features.copilot-coding-agent %}
Sign up for {% data variables.product.prodname_copilot_short %} {% octicon "link-external" height:16 %}' @@ -17,20 +17,23 @@ shortTitle: 'Add {% data variables.copilot.copilot_coding_agent %}' * For general information, see [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org). * For information on premium requests and Actions minutes, see [Allowance usage for {% data variables.copilot.copilot_coding_agent %}](/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot#allowance-usage-for-copilot-coding-agent). -* For information on MCP servers, see [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +* For information on MCP servers, see [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). ## Enabling {% data variables.copilot.copilot_coding_agent %} for your members {% data reusables.organizations.copilot-policy-ent-overrides-org %} -{% data variables.copilot.copilot_coding_agent %} and use of third-party MCP servers are disabled by default for organization members. Organization owners with {% data variables.copilot.copilot_enterprise %} can enable these features for members on the {% data variables.product.prodname_copilot_short %} policies page for their organization. See [Enabling {% data variables.product.prodname_copilot_short %} features in your organization](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization). +{% data variables.copilot.copilot_coding_agent %} and use of third-party MCP servers are disabled by default for organization members. + +Organizations with {% data variables.copilot.copilot_enterprise %} can enable these features for members on the {% data variables.product.prodname_copilot_short %} policies page for their organization. See [Enabling {% data variables.product.prodname_copilot_short %} features in your organization](/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization). * For the "{% data variables.copilot.copilot_coding_agent %}" policy, select "Enabled". * For the "MCP servers on {% data variables.product.prodname_dotcom_the_website %}" policy, select "Enabled". -## Defining which repositories {% data variables.copilot.copilot_coding_agent %} can operate in +## Disabling or enabling {% data variables.copilot.copilot_coding_agent %} in your repositories + +By default, {% data variables.copilot.copilot_coding_agent %} is available in all repositories for users who have access to the agent, but you can block it from being used in some or all repositories owned by your organization. -Owners of any organization—even organizations without a {% data variables.product.prodname_copilot_short %} plan—can define which repositories {% data variables.copilot.copilot_coding_agent %} can work in. {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} {% data reusables.copilot.coding-agent-settings %} diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot.md index 7978cb9205ef..91a17b13c0ae 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/configuring-your-proxy-server-or-firewall-for-copilot.md @@ -11,20 +11,59 @@ shortTitle: Allow Copilot traffic If your company employs security measures like a firewall or proxy server, you should add the following URLs, ports, and protocols to an allowlist to ensure {% data variables.product.prodname_copilot_short %} works as expected: +## GitHub Enterprise Related URLs | Domain and/or URL | Purpose | | :------------------------------------- | :--------------------------------- | -| `https://github.com/login/*` | Authentication | +| `https://github.com/YOUR-ENTERPRISE/*` | Enterprise URL | +| `https://github.com/YOUR-ENTERPRISE?*` | Enterprise URL | | `https://github.com/enterprises/YOUR-ENTERPRISE/*` | Authentication for {% data variables.enterprise.prodname_managed_users %}, only required with {% data variables.product.prodname_emus %} | -| `https://api.github.com/user` | User Management | + +## GitHub Public URLs +| Domain and/or URL | Purpose | +| :------------------------------------- | :--------------------------------- | +| `https://github.com/login/*` | Authentication, only required with Personal Users | +| `https://github.com/login?*` | Authentication, only required with Personal Users | +| `https://github.com/login/oauth/*` | Authentication, only required with {% data variables.product.prodname_emus %} | +| `https://api.github.com/user/*` | User Management | +| `https://github.com/favicon.ico` | Icon | +| `https://github.com/account/*` | Account | +| `https://github.com/settings/*` | Settings | +| `https://avatars.githubusercontent.com/*` | Avatars | +| `https://github.com/copilot/*` | Copilot | +| `https://raw.githubusercontent.com/*` | Raw Content | +| `https://github.githubassets.com/*` | GitHub Assets | +| `https://collector.github.com/*` | Collector | +| `https://github.com/github-copilot/*` | GitHub Copilot | +| `https://api.github.com/*` | API | +| `https://github.com/notifications/*` | Notifications | +| `https://github.com/session/*` | Session | +| `https://github.com/dashboard/*` | Dashboard | +| `https://github.com/dashboard?*` | Dashboard | +| `https://github.com/logout/*` | Logout | +| `https://github.com/logout?*` | Logout | +| `https://github.com/switch_account?*` | Switch Account | +| `https://github.com/switch_account/*` | Switch Account | + +## GitHub Copilot Related URLs +| Domain and/or URL | Purpose | +| :------------------------------------- | :--------------------------------- | | `https://api.github.com/copilot_internal/*` | User Management | -| `https://copilot-telemetry.githubusercontent.com/telemetry` | Telemetry | -| `https://default.exp-tas.com` | Telemetry | -| `https://copilot-proxy.githubusercontent.com` | API service for {% data variables.product.prodname_copilot_short %} suggestions | -| `https://origin-tracker.githubusercontent.com` | API service for {% data variables.product.prodname_copilot_short %} suggestions | -| `https://*.githubcopilot.com`[^1] | API service for {% data variables.product.prodname_copilot_short %} suggestions | -| `https://*.individual.githubcopilot.com`[^2] | API service for {% data variables.product.prodname_copilot_short %} suggestions | -| `https://*.business.githubcopilot.com`[^3] | API service for {% data variables.product.prodname_copilot_short %} suggestions | -| `https://*.enterprise.githubcopilot.com`[^4] | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://copilot-telemetry.githubusercontent.com/telemetry/*` | Telemetry | +| `https://default.exp-tas.com/*` | Telemetry | +| `https://copilot-proxy.githubusercontent.com/*` | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://origin-tracker.githubusercontent.com/*` | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://*.githubcopilot.com/*`[^1] | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://*.individual.githubcopilot.com/*`[^2] | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://*.business.githubcopilot.com/*`[^3] | API service for {% data variables.product.prodname_copilot_short %} suggestions | +| `https://*.enterprise.githubcopilot.com/*`[^4] | API service for {% data variables.product.prodname_copilot_short %} suggestions | + + +If your organization is using Microsoft Extra ID, you also need to add the following URLs to the allowlist: +- `https://login.microsoftonline.com/*` +- `https://aadcdn.msauth.net/*` +- `https://login.live.com/*` +- `https://*.activedirectory.windowsazure.com/*` + Depending on the security policies and editors your organization uses, you may need to allowlist additional domains and URLs. For more information on specific editors, see [Further reading](#further-reading). diff --git a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests.md b/content/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests.md deleted file mode 100644 index 8d2c2e153dfe..000000000000 --- a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: About premium requests -intro: 'Learn about premium requests and how they impact your usage and billing.' -versions: - feature: copilot -topics: - - Copilot -redirect_from: - - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs - - /copilot/managing-copilot/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs ---- - - -{% data reusables.copilot.unlimited-premium-requests-with-date %} - - -## What is a request? - -A request is any interaction where you ask {% data variables.product.prodname_copilot_short %} to do something for you—whether it’s generating code, answering a question, or helping you through an extension. Each time you send a prompt in a chat window or trigger a response from {% data variables.product.prodname_copilot_short %}, you’re making a request. - -If you have {% data variables.copilot.copilot_free_short %} enabled, your {% data variables.product.github %} account comes with up to 2,000 code completions and up to 50 chats or premium requests per month. - -If you're on a paid plan, you get unlimited code completions, unlimited agent requests, and unlimited chat interactions using the base model. Rate limiting is in place to accommodate for high demand. Learn more about [current models and usage](/copilot/about-github-copilot/plans-for-github-copilot). - -Paid plans also receive a monthly allowance of premium requests, which can be used for advanced chat interactions, code completions using premium models, and other premium features. For an overview of the amount of premium requests included in each plan, see [AUTOTITLE](/copilot/about-github-copilot/subscription-plans-for-github-copilot#comparing-copilot-plans). - -## Premium requests - -Some {% data variables.product.prodname_copilot_short %} features use more advanced processing power and count as premium requests. The number of premium requests a feature consumes can vary depending on the feature and the AI model used. - -### Premium features - -The following {% data variables.product.prodname_copilot_short %} features can use premium requests: - -* [{% data variables.copilot.copilot_chat_short %}](/copilot/using-github-copilot/copilot-chat) -* [{% data variables.copilot.copilot_coding_agent %}](/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot) [^1] -* [Agent mode in {% data variables.copilot.copilot_chat_short %}](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide#copilot-edits) -* [{% data variables.product.prodname_copilot_short %} code review](/copilot/using-github-copilot/code-review/using-copilot-code-review) -* [{% data variables.copilot.copilot_extensions_short %}](/copilot/building-copilot-extensions/about-building-copilot-extensions) - -[^1]: {% data variables.copilot.copilot_coding_agent %} uses a fixed multiplier of 1 for the premium requests it uses, and may use multiple premium requests in response to one user prompt. - -### Model multipliers - -Each model has a premium request multiplier, based on its complexity and resource usage. Your premium request allowance is deducted according to this multiplier. - -| Model | Premium requests | -|-------------------------------------------------------------------------|------------------------------------------------------------------------------| -| Base model (currently {% data variables.copilot.copilot_gpt_41 %}) [^2] | 0 (paid users), 1 ({% data variables.copilot.copilot_free_short %}) | -| Premium {% data variables.copilot.copilot_gpt_41 %} | 1 | -| {% data variables.copilot.copilot_gpt_4o %} | 1 | -| {% data variables.copilot.copilot_gpt_45 %} | 50 | -| {% data variables.copilot.copilot_claude_sonnet_35 %} | 1 | -| {% data variables.copilot.copilot_claude_sonnet_37 %} | 1 | -| {% data variables.copilot.copilot_claude_sonnet_37 %} Thinking | 1.25 | -| {% data variables.copilot.copilot_claude_sonnet_40 %} | 1 | -| {% data variables.copilot.copilot_claude_opus %} | 10 | -| {% data variables.copilot.copilot_gemini_flash %} | 0.25 | -| {% data variables.copilot.copilot_gemini_25_pro %} | 1 | -| {% data variables.copilot.copilot_o1 %} | 10 | -| {% data variables.copilot.copilot_o3 %} | 1 | -| {% data variables.copilot.copilot_o3_mini %} | 0.33 | -| {% data variables.copilot.copilot_o4_mini %} | 0.33 | - -[^2]: The base model at the time of writing is powered by {% data variables.copilot.copilot_gpt_41 %}. This is subject to change. Response times for the base model may vary during periods of high usage. Requests to the base model may be subject to rate limiting. - -## Additional premium requests - -> [!NOTE] -> The option to purchase additional premium requests is not available to: -> -> * Users on {% data variables.copilot.copilot_free_short %}. To access more premium requests, upgrade to a paid plan. -> * Users who subscribe, or have subscribed, to {% data variables.copilot.copilot_pro_short %} or {% data variables.copilot.copilot_pro_plus_short %} through {% data variables.product.prodname_mobile %} on iOS or Android. -> -> Budget setting for premium requests is coming soon. Until then, you can continue to use {% data variables.product.prodname_copilot_short %} premium models without being billed for additional premium requests. -> - -If you use all of your premium requests, you can still use {% data variables.product.prodname_copilot_short %} with the base model for the rest of the month. If you need more premium requests, you can upgrade to a higher plan or set a spending limit for premium requests over your plan's allowance. Premium requests over the allowance are rejected unless you have set a budget. See [AUTOTITLE](/billing/managing-your-billing/preventing-overspending). - -Additional premium requests beyond your plan’s included amount are billed at {% data variables.copilot.additional_premium_requests %} per request. - -## Example of premium request usage - -Premium request usage is based on the model’s multiplier and the feature you’re using. For example: - -* If you use **GPT-4.5** (50× multiplier) to ask a single question in {% data variables.copilot.copilot_chat_short %}, that interaction counts as **50 premium requests**. -* If you're on **{% data variables.copilot.copilot_free_short %}**, even interactions with the **base model** use **1 premium request** each. -* If you're on a **paid plan**, using the base model does not count against your monthly premium request allowance. diff --git a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/index.md b/content/copilot/managing-copilot/monitoring-usage-and-entitlements/index.md deleted file mode 100644 index 880833fecdeb..000000000000 --- a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Monitoring usage and entitlements -shortTitle: Monitor usage and entitlements -intro: 'You can track your {% data variables.product.prodname_copilot_short %} usage and monitor your remaining premium request entitlements to avoid unexpected charges.' -versions: - feature: copilot -topics: - - Copilot -children: - - /about-premium-requests - - /monitoring-your-copilot-usage-and-entitlements ---- diff --git a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements.md b/content/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements.md deleted file mode 100644 index 56b70ba840ce..000000000000 --- a/content/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Monitoring your Copilot usage and entitlements -shortTitle: Monitor your Copilot usage and entitlements -intro: Learn how you can monitor your monthly usage of {% data variables.product.prodname_copilot_short %} and get the most value out of your {% data variables.product.prodname_copilot_short %} plan. -versions: - feature: copilot -topics: - - Copilot -redirect_from: - - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements ---- - - -{% data reusables.copilot.unlimited-premium-requests %} - - -You can track your monthly usage of premium requests to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan. - -## Viewing premium request usage - -{% data reusables.user-settings.access_settings %} -1. In the "Access" section of the sidebar, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**. -1. Under "Usage by product", on the "Copilot" tab, you can see the total cost of the additional premium requests you've used this month. Click **View details** to view a breakdown of the amount of additional premium requests you've used. -1. Optionally, to download a CSV usage report, in the sidebar under "Billing & Licensing," select **Usage**. Then click the down arrow next to "Get usage report" to download your monthly **{% data variables.product.prodname_copilot_short %} premium usage report**. Please allow up to 20 minutes to receive the email with the report. - -## Optimizing usage of premium requests - -You can use the following strategies to maximize the value of your premium requests: - -* **Choose the right model for the task**. Some models are better suited to different tasks. If you're using a premium request, you can strategically choose which model you use to get the best result from {% data variables.product.prodname_copilot_short %}. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task). - -* **Setting a budget**. Set a budget to track your overages and receive alerts when you reach 75%, 90%, or 100% of your budget. See [AUTOTITLE](/billing/managing-your-billing/preventing-overspending#managing-budgets-for-your-personal-account). - -* **Monitor your usage regularly**. Check your usage in your {% data variables.product.github %} account settings to see how many premium requests you’ve used. This helps you plan how much you can use for the rest of the month. - -* **Upgrade if needed**. If you find yourself consistently hitting your monthly allowance, consider upgrading to a plan with more premium requests included. - -* **Avoid retrying large prompts unnecessarily**. Submitting the same long or complex prompt multiple times may use more premium requests. Try rephrasing or simplifying your request when needed. diff --git a/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/index.md b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/index.md new file mode 100644 index 000000000000..6e3a94581685 --- /dev/null +++ b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/index.md @@ -0,0 +1,14 @@ +--- +title: Understanding and managing Copilot usage +shortTitle: Understand and manage usage +intro: 'You can track your {% data variables.product.prodname_copilot_short %} usage and premium request entitlements to understand how you''re using {% data variables.product.prodname_copilot_short %} and make informed decisions about your plan and spending.' +versions: + feature: copilot +topics: + - Copilot +children: + - /understanding-and-managing-requests-in-copilot + - /monitoring-your-copilot-usage-and-entitlements +redirect_from: + - /copilot/managing-copilot/monitoring-usage-and-entitlements +--- diff --git a/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements.md b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements.md new file mode 100644 index 000000000000..162d4c81d682 --- /dev/null +++ b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements.md @@ -0,0 +1,80 @@ +--- +title: Monitoring your Copilot usage and entitlements +shortTitle: Monitor your Copilot usage and entitlements +intro: Learn how you can monitor your monthly usage of {% data variables.product.prodname_copilot_short %} and get the most value out of your {% data variables.product.prodname_copilot_short %} plan. +permissions: Individual users on a paid {% data variables.product.prodname_copilot_short %} plan can view their own usage and entitlements. For {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plans, organization admins and billing managers can view usage reports for members. +versions: + feature: copilot +topics: + - Copilot +redirect_from: + - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements + - /copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements +--- + +You can track your monthly usage of premium requests to help you get the most value from your {% data variables.product.prodname_copilot_short %} plan. + +> [!NOTE] +> Premium request counters reset on the 1st of each month. + +## Viewing premium request usage + +There are two ways to view your premium request usage: + +* [View current usage directly within your IDE](#viewing-usage-in-your-ide) +* [Download a monthly usage report](#downloading-a-monthly-usage-report) + +If you reach your limit for premium requests, you will be notified with a message in each of the {% data variables.product.prodname_copilot_short %} interfaces you use. + +### Viewing usage in your IDE + +If you're using {% data variables.product.prodname_copilot_short %} in an editor, you can view your usage directly in the editor. For example, in {% data variables.product.prodname_vscode %}, you can view information about features included in your plan, your progress towards any limits on your plan, and the date your allowance resets. + +![Screenshot of the {% data variables.product.prodname_copilot_short %} current usage window in {% data variables.product.prodname_vscode %}. The "Code completions" and "Chat messages" bars indicate they are included with the user's {% data variables.product.prodname_copilot_short %} plan. The "Premium requests" bar indicates the user has used 99.5% of their allowance, and that it will reset on June 30, 2025.](/assets/images/help/copilot/vscode-current-usage.png) + +You can access usage information in the following IDEs. + +* **In {% data variables.product.prodname_vscode %}**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar. +* **In {% data variables.product.prodname_vs %}**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the top right corner, then click **{% data variables.product.prodname_copilot_short %} Consumptions**. +* **In JetBrains IDEs**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar, then select **View quote usage**. +* **In Xcode**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the menu bar. +* **In Eclipse**, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" aria-label="copilot" %}) in the status bar at the bottom of Eclipse. + +### Downloading a monthly usage report + +>[!NOTE] +> For organizations and enterprises, only admins can download a usage report to understand {% data variables.product.prodname_copilot_short %} usage across their business. Individual members of the organization or enterprise cannot download the report for themselves. + +1. Navigate to your account. + + In the upper-right corner of any page on {% data variables.product.prodname_dotcom %}, click your profile photo. Then: + * For **individual accounts**, click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Settings**. + * For **organizations**, click **{% octicon "organization" aria-hidden="true" aria-label="organization" %} Your organizations**. + * For **enterprises**, click **Your enterprise**, or click **Your enterprises** then click the enterprise you want to view. +1. Navigate to your billing settings. + * For **individual accounts**, in the "Access" section of the sidebar, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**, then click **Overview**. + * For **organizations**, click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Settings**. Then, in the "Access" section of the sidebar, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**, then click **Usage**. + * For **enterprises**, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing & Licensing**, then click **{% octicon "graph" aria-hidden="true" aria-label="graph" %} Usage**. +1. Download a CSV usage report. + * For **individual accounts**, in the sidebar under "Billing & Licensing," select **Usage**. Then click **Get usage report**, choose the report type and time frame, and click **Email me the report**. + * For **organizations**, click the **Get usage report** drop down, then click **{% data variables.product.prodname_copilot_short %} premium requests usage report**. + * For **enterprises**, click the **Get usage report** drop down, then click **{% data variables.product.prodname_copilot_short %} premium requests usage report**. + + Typically the report will be emailed to you within 30 minutes. + +## Optimizing usage of premium requests + +You can use the following strategies to maximize the value of your premium requests: + +* **Choose the right model for the task**. Some models are better suited to different tasks. If you're using a premium request, you can strategically choose which model you use to get the best result from {% data variables.product.prodname_copilot_short %}. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task). + +* **Setting a budget**. Set a budget to track your overages and receive alerts when you reach 75%, 90%, or 100% of your budget. See [AUTOTITLE](/billing/managing-your-billing/preventing-overspending#managing-budgets-for-your-personal-account). + + >[!NOTE] + > By default, all budgets are set to zero and premium requests over the allowance are rejected unless a budget has been created. + +* **Monitor your usage regularly**. Check your usage in your {% data variables.product.github %} account settings to see how many premium requests you’ve used. This helps you plan how much you can use for the rest of the month. + +* **Upgrade if needed**. If you find yourself consistently hitting your monthly allowance, consider upgrading to a plan with more premium requests included. + +* **Avoid retrying large prompts unnecessarily**. Submitting the same long or complex prompt multiple times may use more premium requests. Try rephrasing or simplifying your request when needed. diff --git a/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/understanding-and-managing-requests-in-copilot.md b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/understanding-and-managing-requests-in-copilot.md new file mode 100644 index 000000000000..90ef476df3ee --- /dev/null +++ b/content/copilot/managing-copilot/understanding-and-managing-copilot-usage/understanding-and-managing-requests-in-copilot.md @@ -0,0 +1,109 @@ +--- +title: Understanding and managing requests in Copilot +shortTitle: Understand and manage requests +intro: 'Learn about requests in {% data variables.product.prodname_copilot_short %}, including premium requests, how they work, and how to manage your usage effectively.' +versions: + feature: copilot +topics: + - Copilot +redirect_from: + - /copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs + - /copilot/managing-copilot/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs + - /copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests +--- + +> [!IMPORTANT] +> * Billing for premium requests began on June 18, 2025 for all paid {% data variables.product.prodname_copilot_short %} plans, and the request counters were only set to zero for paid plans. +> * Premium request counters reset on the 1st of each month. See [AUTOTITLE](/copilot/managing-copilot/understanding-and-managing-copilot-usage/monitoring-your-copilot-usage-and-entitlements). +> * Certain requests may experience rate limits to accommodate high demand. Rate limits restrict the number of requests that can be made within a specific time period. + +## What is a request? + +A request is any interaction where you ask {% data variables.product.prodname_copilot_short %} to do something for you—whether it’s generating code, answering a question, or helping you through an extension. Each time you send a prompt in a chat window or trigger a response from {% data variables.product.prodname_copilot_short %}, you’re making a request. + +## What are premium requests? + +Some {% data variables.product.prodname_copilot_short %} features use more advanced processing power and count as premium requests. The number of premium requests a feature consumes can vary depending on the feature and the AI model used. + +### Premium features + +The following {% data variables.product.prodname_copilot_short %} features can use premium requests: + +* [{% data variables.copilot.copilot_chat_short %}](/copilot/using-github-copilot/copilot-chat) +* [{% data variables.copilot.copilot_coding_agent %}](/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot) [^1] +* [Agent mode in {% data variables.copilot.copilot_chat_short %}](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide#copilot-edits) [^2] +* [{% data variables.product.prodname_copilot_short %} code review](/copilot/using-github-copilot/code-review/using-copilot-code-review) +* [{% data variables.copilot.copilot_extensions_short %}](/copilot/building-copilot-extensions/about-building-copilot-extensions) +* [{% data variables.copilot.copilot_spaces %}](/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces) + +[^1]: {% data variables.copilot.copilot_coding_agent %} uses a fixed multiplier of 1 for the premium requests it uses, and may use multiple premium requests in response to one user prompt. +[^2]: Agent mode uses one premium request per user prompt, multiplied by the model's rate. + +## How do request allowances work per plan? + +If you use **{% data variables.copilot.copilot_free_short %}**, your plan comes with up to 2,000 code completion requests and up to 50 premium requests per month. All chat interactions count as premium requests. + +If you're on a **paid plan**, you get unlimited code completions and unlimited chat interactions using the included models ({% data variables.copilot.copilot_gpt_41 %} and {% data variables.copilot.copilot_gpt_4o %}). Rate limiting is in place to accommodate for high demand. See [AUTOTITLE](/copilot/troubleshooting-github-copilot/rate-limits-for-github-copilot). + +Paid plans also receive a monthly allowance of premium requests, which can be used for advanced chat interactions, code completions using premium models, and other premium features. For an overview of the amount of premium requests included in each plan, see [AUTOTITLE](/copilot/about-github-copilot/subscription-plans-for-github-copilot#comparing-copilot-plans). + +## What happens to unused requests at the end of the month? + +Unused requests for the previous month do not carry over to the following month. + +## What if I run out of premium requests? + +> [!NOTE] +> Additional premium requests are not available to: +> +> * Users on {% data variables.copilot.copilot_free_short %}. To access more premium requests, upgrade to a paid plan. +> * Users who subscribe, or have subscribed, to {% data variables.copilot.copilot_pro_short %} or {% data variables.copilot.copilot_pro_plus_short %} through {% data variables.product.prodname_mobile %} on iOS or Android. + +If you're on a **paid plan** and use all of your premium requests, you can still use {% data variables.product.prodname_copilot_short %} with one of the included models for the rest of the month. This is subject to change. Response times for the included models may vary during periods of high usage. Requests to the included models may be subject to rate limiting. See [AUTOTITLE](/copilot/troubleshooting-github-copilot/rate-limits-for-github-copilot). + +If you need more premium requests beyond your monthly allowance, you can: + +* Set a spending limit for additional premium requests. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). +* Upgrade to a higher plan. + +These actions can be taken by organization owners, billing managers, and personal account users. + +> [!IMPORTANT] By default, all budgets are set to zero and premium requests over the allowance are rejected unless a budget has been created. Additional premium requests beyond your plan’s included amount are billed at {% data variables.copilot.additional_premium_requests %} per request. + +## Model multipliers + +The available models vary depending on your {% data variables.product.prodname_copilot_short %} plan. See [AUTOTITLE](/copilot/about-github-copilot/plans-for-github-copilot#models). + +> [!NOTE] +> The models included with {% data variables.product.prodname_copilot_short %} plans are subject to change. + +Each model has a premium request multiplier, based on its complexity and resource usage. If you are on a paid {% data variables.product.prodname_copilot_short %} plan, your premium request allowance is deducted according to this multiplier. + +{% data variables.copilot.copilot_gpt_41 %} and {% data variables.copilot.copilot_gpt_4o %} are the included models, and do not consume any premium requests if you are on a **paid plan**. + +If you use **{% data variables.copilot.copilot_free_short %}**, you have access to a limited number of models, and each model will consume one premium request when used. For example, if you make a request using the {% data variables.copilot.copilot_o3_mini %} model, your interaction will consume **one premium request**, not 0.33 premium requests. + +| Model | Multiplier for **paid plans** | Multiplier for **{% data variables.copilot.copilot_free_short %}** | +|-------------------------------------------------------------------------|--------------------------------|-----------------------| +| {% data variables.copilot.copilot_gpt_41 %} | 0 | 1 | +| {% data variables.copilot.copilot_gpt_4o %} | 0 | 1 | +| {% data variables.copilot.copilot_gpt_45 %} | 50 | Not applicable | +| {% data variables.copilot.copilot_claude_sonnet_35 %} | 1 | 1 | +| {% data variables.copilot.copilot_claude_sonnet_37 %} | 1 | Not applicable | +| {% data variables.copilot.copilot_claude_sonnet_37 %} Thinking | 1.25 | Not applicable | +| {% data variables.copilot.copilot_claude_sonnet_40 %} | 1 | Not applicable | +| {% data variables.copilot.copilot_claude_opus %} | 10 | Not applicable | +| {% data variables.copilot.copilot_gemini_flash %} | 0.25 | 1 | +| {% data variables.copilot.copilot_gemini_25_pro %} | 1 | Not applicable | +| {% data variables.copilot.copilot_o1 %} | 10 | Not applicable | +| {% data variables.copilot.copilot_o3 %} | 1 | Not applicable | +| {% data variables.copilot.copilot_o3_mini %} | 0.33 | 1 | +| {% data variables.copilot.copilot_o4_mini %} | 0.33 | Not applicable | + +## Examples of premium request usage + +Premium request usage is based on the model’s multiplier and the feature you’re using. For example: + +* **Using {% data variables.copilot.copilot_gpt_45 %} in {% data variables.copilot.copilot_chat_short %}**: With a 50× multiplier, one interaction counts as 50 premium requests. +* **Using {% data variables.copilot.copilot_gpt_41 %} on {% data variables.copilot.copilot_free_short %}**: Each interaction counts as 1 premium request. +* **Using {% data variables.copilot.copilot_gpt_41 %} on a paid plan**: No premium requests are consumed. diff --git a/content/copilot/quickstart.md b/content/copilot/quickstart.md index aedabe5ecf73..8ad8ea26e339 100644 --- a/content/copilot/quickstart.md +++ b/content/copilot/quickstart.md @@ -26,8 +26,6 @@ topics: You can use {% data variables.product.prodname_copilot_short %} to get answers to coding-related questions, such as how best to code something, how to fix a bug, or how someone else's code works. For full details of what {% data variables.product.prodname_copilot_short %} can do, see [AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot). -If you have access to {% data variables.copilot.copilot_workspace %}, {% data variables.product.prodname_copilot_short %} can also help you when you are editing files in a pull request on the {% data variables.product.github %} website by offering you code completion suggestions. For more information about {% data variables.copilot.copilot_workspace %}, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on where you are using it. This version of the quickstart is for {% data variables.product.github %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in other environments. {% ifversion fpt %} diff --git a/content/copilot/responsible-use-of-github-copilot-features/index.md b/content/copilot/responsible-use-of-github-copilot-features/index.md index 80656786cbd5..9bc7a09237d9 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/index.md +++ b/content/copilot/responsible-use-of-github-copilot-features/index.md @@ -7,6 +7,7 @@ versions: topics: - Copilot children: + - /responsible-use-of-github-copilot-code-completion - /responsible-use-of-github-copilot-chat-in-your-ide - /responsible-use-of-github-copilot-chat-in-github - /responsible-use-of-github-copilot-chat-in-github-mobile diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom.md index 8366708f1430..9a4e6167467a 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom.md +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom.md @@ -79,7 +79,7 @@ For information about other customizations for {% data variables.copilot.copilot * [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent) * [AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent) -* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) ### Use {% data variables.copilot.copilot_coding_agent %} as a tool, not a replacement @@ -141,13 +141,12 @@ The language model used by {% data variables.copilot.copilot_coding_agent %}’s ### Inaccurate code -> [!Note] -> Allowing {% data variables.product.prodname_copilot %} to make suggestions that match publicly available code is not supported for {% data variables.copilot.copilot_coding_agent %} at this time. For more information, see [AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions). - {% data variables.copilot.copilot_coding_agent %} may generate code that appears to be valid but may not actually be semantically or syntactically correct or may not accurately reflect the intent of the developer. To mitigate the risk of inaccurate code, you should carefully review and test the generated code, particularly when dealing with critical or sensitive applications. You should also ensure that the generated code adheres to best practices and design patterns and fits within the overall architecture and style of the codebase. +> [!NOTE] The setting that blocks suggestions matching public code may not work as intended when using {% data variables.copilot.copilot_coding_agent %}. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-suggestions-matching-public-code). + ### Legal and regulatory considerations Users need to evaluate potential specific legal and regulatory obligations when using any AI services and solutions, which may not be appropriate for use in every industry or scenario. Additionally, AI services or solutions are not designed for and may not be used in ways prohibited in applicable terms of service and relevant codes of conduct. diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-completion.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-completion.md new file mode 100644 index 000000000000..55f6fd445ecc --- /dev/null +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-completion.md @@ -0,0 +1,120 @@ +--- +title: Responsible use of GitHub Copilot code completion +shortTitle: Copilot code completion +intro: "Learn how to use {% data variables.product.prodname_copilot_short %} code completion responsibly by understanding its purposes, capabilities, and limitations." +versions: + feature: copilot +topics: + - Copilot +type: rai +--- + +## About {% data variables.product.prodname_copilot %} code completion + +{% data variables.product.prodname_copilot_short %} code completions are autocomplete-style suggestions generated inline by {% data variables.product.prodname_copilot %}. {% data variables.product.prodname_copilot_short %} code completion creates the experience of working with an AI-powered pair programmer, automatically offering suggestions to complete your code. In addition, it can suggest code comments, tests, and more. It provides these suggestions directly in supported editors while you write your code, and it can work with a broad range of programming languages and frameworks. For more information, see [AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot). + +{% data variables.product.prodname_copilot_short %}'s suggestions may be the completion of the current line, but will sometimes be a whole new block of code. You can accept all or part of a suggestion, dismiss the suggestion, or keep typing and ignore the suggestions. + +{% data variables.product.prodname_copilot_short %} code completion works by using a combination of natural language processing and machine learning to understand your surrounding code (relative to your cursor position) and provide you with suggestions. This process can be broken down into a number of steps. + +### Input processing + +The surrounding code from the user’s cursor is pre-processed by the {% data variables.product.prodname_copilot_short %} code completion system, combined with contextual information (such as code snippets from open tabs in the editor) and sent to a large language model in the form of a prompt. For information about data retention, see the [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page/faq?s=b9buqrq7o9ssfk3ta50x6). + +The large language model then takes the prompt and provides a response based on the prompt. The system is only intended to assist with coding. + +### Language model analysis + +The large language model that processes the input prompt is a fine-tuned code completion language model, which is a neural network that has been trained on a large body of code data specialized for inline code completion. + +You can change the model that is used for code completion. See [AUTOTITLE](/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-code-completion). + +### Response generation + +The language model generates a response based on its analysis of the input prompt and the context provided to it. This response takes the form of generated code and plain text comments, ranging from the completion of the current line to a whole new block of code. + +### Output formatting + +The response generated by {% data variables.product.prodname_copilot_short %} is formatted as “ghost text” that is visually distinct from the surrounding code and presented to the user as a suggestion. It is only added to the file/codebase if the user explicitly accepts the suggestion. Users can accept all or part of a suggestion, dismiss the suggestion, or they can keep typing and ignore the suggestions in which case the suggestion is discarded. + +{% data variables.product.prodname_copilot %} code completion is intended to provide you with the most relevant and useful code suggestions to augment your existing code. However, it may not always provide the answers that you are looking for. Users of {% data variables.product.prodname_copilot_short %} are responsible for reviewing and validating responses generated by the system before they accept them, to ensure they are accurate and appropriate. Additionally, as part of our product development process, we undertake red teaming to understand and improve the safety of {% data variables.product.prodname_copilot_short %} code completion. The generated code completions are also run through content filters. The content filtering system detects and blocks {% data variables.product.prodname_copilot_short %} from outputting any harmful or offensive content, or insecure code. Furthermore, depending on the user’s GitHub settings, the filter also blocks or annotates suggestions that contain matches to public code. + +## Use cases for {% data variables.product.prodname_copilot %} code completion + +{% data variables.product.prodname_copilot %} code completion can provide coding assistance in a variety of scenarios. + +### Generate code based on your instructions + +In addition to relying on {% data variables.product.prodname_copilot_short %} to provide suggestions, you can use code comments to tell {% data variables.product.prodname_copilot_short %} about the code you expect to follow the comment. For example, you could use comments such as "use recursion" or "use a singleton pattern" to specify a type of algorithm {% data variables.product.prodname_copilot_short %} should suggest. Or you could use comments to tell {% data variables.product.prodname_copilot_short %} which methods and properties to add to a class. + +### Generating unit test cases + +{% data variables.product.prodname_copilot_short %} code completion can help you write unit test cases by generating code snippets based on the surrounding code typed in the editor. This may help you spend less time on repetitive tasks writing test cases. For example, if you are writing a test case for a specific function, you can use {% data variables.product.prodname_copilot_short %} to suggest possible input parameters and expected output values based on the function's signature and body. Code completion can also suggest assertions that ensure the function is working correctly, based on the code's context and semantics. + +{% data variables.product.prodname_copilot_short %} code completion can also help generate test cases for edge cases and boundary conditions that might be difficult to identify manually. For instance, {% data variables.product.prodname_copilot_short %} can suggest test cases for error handling, null values, or unexpected input types, helping you ensure your code is robust and resilient. However, it is important to note that generated test cases may not cover all possible scenarios, and manual testing and code review are still necessary to ensure the quality of the code. + +This can be a useful tool for programmers, as it can provide guidance and support for common coding tasks and challenges. + +## Improving performance for {% data variables.product.prodname_copilot %} code completion + +{% data variables.product.prodname_copilot_short %} code completion can generate code suggestions in a number of different contexts, with different performance and quality metrics. To enhance performance and address some of the limitations of {% data variables.product.prodname_copilot_short %} code completion, there are various measures that you can adopt. For more information on the limitations of {% data variables.product.prodname_copilot_short %} code completion, see [Limitations of {% data variables.product.prodname_copilot %} code completion](#limitations-of-github-copilot-code-completion). + +### Keep your prompts on topic + +{% data variables.product.prodname_copilot_short %} is exclusively intended to generate completions that are either code-related or code itself. Therefore, limiting the context of the content in the editor to code, or coding-related information, can enhance the model's output quality. + +### Use {% data variables.product.prodname_copilot_short %} code completion as a tool, not a replacement + +While {% data variables.product.prodname_copilot_short %} can be a powerful tool for generating code, it is important to use it as a tool rather than as a replacement for human programming. You should always review the code generated by {% data variables.product.prodname_copilot_short %} before accepting a suggestion, and further validate it after to ensure that it meets your requirements and is free of errors or security concerns. + +> [!IMPORTANT] +> Users assume all risks associated with generated code including security vulnerabilities, bugs, and IP infringement. + +### Use secure coding and code review practices + +While {% data variables.product.prodname_copilot_short %} code completion can generate syntactically correct code, it may not always be secure. You should always follow best practices for secure coding, such as avoiding hard-coded passwords or SQL injection vulnerabilities, as well as following code review best practices, to address {% data variables.product.prodname_copilot_short %}’s limitations. + +### Stay up to date + +{% data variables.product.prodname_copilot_short %} code completion is still a fairly new technology and is likely to evolve over time. You should stay up to date with any updates or changes to the tool, as well as any new security risks or best practices that may emerge. Automated extension updates are enabled by default in Visual Studio Code, Visual Studio, and the JetBrains suite of IDEs. If you have automatic updates enabled, {% data variables.product.prodname_copilot_short %} will automatically update to the latest version when you open your IDE. For more information on automatic updates in your IDE, see the documentation for your preferred IDE or code editor. + +## Limitations of {% data variables.product.prodname_copilot %} code completion + +Depending on factors such as your codebase and input data, you may experience different levels of performance when interacting with {% data variables.product.prodname_copilot_short %} code completion. The following information is designed to help you understand system limitations and key concepts about performance as they apply to {% data variables.product.prodname_copilot_short %} code completion. + +### Limited scope + +{% data variables.product.prodname_copilot_short %} code completion is trained on a large body of code but still has a limited scope and may not be able to handle more complex code structures or obscure programming languages. For each language, the quality of suggestions you receive may depend on the volume and diversity of training data for that language. For example, JavaScript is well-represented in public repositories and is one of {% data variables.product.prodname_copilot %}'s best supported languages. Languages with less representation in public repositories may be more challenging for {% data variables.product.prodname_copilot_short %} to assist. Additionally, {% data variables.product.prodname_copilot_short %} code completion can only suggest code based on the context of the code being written, so it may not be able to identify larger design or architectural issues. + +Lastly, {% data variables.product.prodname_copilot_short %} code completion is intended to generate code and code-related output. Using {% data variables.product.prodname_copilot_short %} code completion is not intended to generate natural language outputs. + +### Potential biases + +{% data variables.product.prodname_copilot_short %}'s training data is drawn from existing code repositories, which may contain biases and errors that can be perpetuated by the tool. Additionally, {% data variables.product.prodname_copilot_short %} code completion may be biased towards certain programming languages or coding styles, which can lead to suboptimal or incomplete code suggestions. + +### Security risks + +{% data variables.product.prodname_copilot_short %} generates code based on the context of the code being written, which can potentially expose sensitive information or vulnerabilities if not used carefully. You should be careful when using {% data variables.product.prodname_copilot_short %} to generate code for security-sensitive applications and always review and test the generated code thoroughly. + +### Matches with public code + +{% data variables.product.prodname_copilot_short %} code completion is capable of generating new code, which it does in a probabilistic way. While the probability is low, {% data variables.product.prodname_copilot_short %} may generate code suggestions that match code in the training set. + +### Inaccurate code + +One of the limitations of {% data variables.product.prodname_copilot_short %} is that it may generate code that appears to be valid but may not actually be semantically or syntactically correct or may not accurately reflect the intent of the developer. To mitigate the risk of inaccurate code, you should carefully review and test the generated code, particularly when dealing with critical or sensitive applications. You should also ensure that the generated code adheres to best practices and design patterns and fits within the overall architecture and style of the codebase. + +### Legal and regulatory considerations + +Users need to evaluate potential specific legal and regulatory obligations when using any AI services and solutions, which may not be appropriate for use in every industry or scenario. Additionally, AI services or solutions are not designed for and may not be used in ways prohibited in applicable terms of service and relevant codes of conduct. + +## Next steps + +For details of how to use {% data variables.product.prodname_copilot_short %} code completion, see: + +* [AUTOTITLE](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot) + +## Further reading + +* [AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot) +* [{% data variables.product.prodname_copilot %} Trust Center](https://copilot.github.trust.page/) diff --git a/content/copilot/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md b/content/copilot/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md index 799f7fd98a84..881cd4cd29b0 100644 --- a/content/copilot/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md +++ b/content/copilot/rolling-out-github-copilot-at-scale/assigning-licenses/managing-your-companys-spending-on-github-copilot.md @@ -24,10 +24,6 @@ We recommend that you identify the people with this role and communicate with th ## Managing charges for premium requests - -{% data reusables.copilot.unlimited-premium-requests %} - - {% data reusables.copilot.premium-requests-for-enterprises %} Premium requests over the allowance are rejected unless you have set a budget. Depending on the type of development tasks your developers use {% data variables.product.prodname_copilot_short %} for, you may find developers need to make more premium requests than the allowance included in your plan. @@ -38,7 +34,9 @@ For pricing details and a list of available models, see [AUTOTITLE](/copilot/abo ### Managing budgets -By default, a $0 budget for the {% data variables.product.prodname_copilot %} Premium Request SKU is created for your enterprise. You can edit this budget from the "Budgets and alerts" page. See [AUTOTITLE](/billing/using-the-new-billing-platform/preventing-overspending#editing-or-deleting-a-budget). +By default, a $0 budget for the {% data variables.product.prodname_copilot %} Premium Request SKU is created for your enterprise. You can edit this budget from the "Budgets and alerts" page. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). + +> [!WARNING] Deleting this budget without setting a new one will enable **unlimited {% data variables.product.prodname_copilot %} usage**. The default budget that is created applies to your whole enterprise. To set a new budget for a specific part of your enterprise, such as a cost center, you can create a new budget: diff --git a/content/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org.md b/content/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org.md index 44ae09af7fca..52a156970902 100644 --- a/content/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org.md +++ b/content/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org.md @@ -52,7 +52,7 @@ The Model Context Protocol (MCP) is an open standard that defines how applicatio * **Project planning tools**: Allow {% data variables.product.prodname_copilot_short %} direct access to private planning documents that are stored outside {% data variables.product.github %} in tools like Notion or Figma. * **Augment training data**: Each LLM contains training data up to a specific cut-off date. If you're working with fast moving tools, {% data variables.product.prodname_copilot_short %} may not have access to information on new features. You can fill this knowledge gap by making the tool's MCP server available. For example, adding the Terraform MCP server will give {% data variables.product.prodname_copilot_short %} access to the most recently supported Terraform providers. -For more information, see [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +For more information, see [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). ## Using {% data variables.copilot.copilot_coding_agent %} securely @@ -76,7 +76,7 @@ For more information, see: All AI models are trained to meet a request, even if they don't have all the information needed to provide a good answer, and this can lead them to make mistakes. By following best practices, you can reduce the risks of using {% data variables.product.prodname_copilot_short %} in your organization. 1. Give {% data variables.product.prodname_copilot_short %} the information it needs to work successfully in a repository using a `copilot-instructions.md` file. See [AUTOTITLE](/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot). -1. Set up the {% data variables.product.prodname_copilot_short %} development environment for a repository with access to the tools and package repositories approved by the organization using a `copilot-setup-steps.yml` file and local MCP servers. See [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent) and [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +1. Set up the {% data variables.product.prodname_copilot_short %} development environment for a repository with access to the tools and package repositories approved by the organization using a `copilot-setup-steps.yml` file and local MCP servers. See [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent) and [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). 1. Follow best practices for storing secrets securely. See [AUTOTITLE](/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions). 1. Enable code security features to further lower the risk of leaking secrets and introducing vulnerabilities into the code. See [AUTOTITLE](/code-security/securing-your-organization/enabling-security-features-in-your-organization/applying-the-github-recommended-security-configuration-in-your-organization). 1. Configure your branch rulesets to ensure that all pull requests raised by {% data variables.product.prodname_copilot_short %} are approved by a second user with write permissions (a sub-option of "Require a pull request before merging"). See {% ifversion ghec %}[AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-code-governance), {% endif %}[AUTOTITLE](/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization) and [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#require-a-pull-request-before-merging). diff --git a/content/copilot/rolling-out-github-copilot-at-scale/planning-your-rollout/choosing-your-enterprises-plan-for-github-copilot.md b/content/copilot/rolling-out-github-copilot-at-scale/planning-your-rollout/choosing-your-enterprises-plan-for-github-copilot.md index 7d94c884a2ac..681fc6eca4d4 100644 --- a/content/copilot/rolling-out-github-copilot-at-scale/planning-your-rollout/choosing-your-enterprises-plan-for-github-copilot.md +++ b/content/copilot/rolling-out-github-copilot-at-scale/planning-your-rollout/choosing-your-enterprises-plan-for-github-copilot.md @@ -57,10 +57,6 @@ With {% data variables.copilot.copilot_enterprise_short %}, you can make {% data ## How much will we benefit from premium requests? - -{% data reusables.copilot.unlimited-premium-requests %} - - {% data reusables.copilot.premium-requests-for-enterprises %} To decide if you will benefit from a higher allowance for premium requests, compare the goals of your rollout to **development tasks** that each model is specialized in. For example, the o1 model is focused on math and science. Teams who work in specialized areas may require more requests to premium models. To learn about the benefits of different models, see [AUTOTITLE](/copilot/using-github-copilot/ai-models/choosing-the-right-ai-model-for-your-task). diff --git a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md index c8f608fbf14b..4ce9130814d7 100644 --- a/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md +++ b/content/copilot/setting-up-github-copilot/setting-up-github-copilot-for-yourself.md @@ -13,7 +13,7 @@ topics: There are a few ways that you can get access to {% data variables.product.prodname_copilot %}: -* **Use {% data variables.copilot.copilot_free_short %}**. Get a limited experience of {% data variables.product.prodname_copilot_short %} with up to 2,000 code completions and 50 chats or premium requests per month-no paid plan required. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free). +* **Use {% data variables.copilot.copilot_free_short %}**. Get a limited experience of {% data variables.product.prodname_copilot_short %} with up to 2,000 code completion requests and 50 premium requests per month-no paid plan required. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/about-github-copilot-free). * **Sign up for a paid plan**. You can subscribe to either: diff --git a/content/copilot/troubleshooting-github-copilot/index.md b/content/copilot/troubleshooting-github-copilot/index.md index 924e19f25bf7..cccc455549b7 100644 --- a/content/copilot/troubleshooting-github-copilot/index.md +++ b/content/copilot/troubleshooting-github-copilot/index.md @@ -7,6 +7,7 @@ versions: ghec: '*' children: - /troubleshooting-common-issues-with-github-copilot + - /rate-limits-for-github-copilot - /viewing-logs-for-github-copilot-in-your-environment - /troubleshooting-firewall-settings-for-github-copilot - /troubleshooting-network-errors-for-github-copilot diff --git a/content/copilot/troubleshooting-github-copilot/rate-limits-for-github-copilot.md b/content/copilot/troubleshooting-github-copilot/rate-limits-for-github-copilot.md new file mode 100644 index 000000000000..0dbf75cae3f9 --- /dev/null +++ b/content/copilot/troubleshooting-github-copilot/rate-limits-for-github-copilot.md @@ -0,0 +1,33 @@ +--- +title: Rate limits for GitHub Copilot +shortTitle: Rate limits +intro: 'Learn about {% data variables.product.prodname_copilot %} rate limits and what to do if you are rate limited.' +versions: + feature: copilot +topics: + - Copilot +--- + +Rate limiting is a mechanism used to control the number of requests a user or application can make in a given time period. {% data variables.product.github %} uses rate limits to ensure everyone has fair access to {% data variables.product.prodname_copilot %} and to protect against abuse. + +When you hit a rate limit, you may temporarily lose access to certain {% data variables.product.prodname_copilot %} features or models, and you’ll see an error message informing you that you’ve been rate limited. + +## Why does {% data variables.product.github %} use rate limits? + +{% data variables.product.github %} enforces rate limits for several reasons. + +* **Capacity:** There is a limited amount of computing power available to serve all {% data variables.product.prodname_copilot_short %} users. Rate limiting helps prevent the system from being overloaded. +* **High usage:** Popular features and models may receive bursts of requests. Rate limits ensure no single user or group can monopolize these resources. +* **Fairness:** Rate limits ensure that all users have equitable access to {% data variables.product.prodname_copilot_short %}. +* **Abuse mitigation:** Without rate limits, malicious actors could exploit {% data variables.product.prodname_copilot_short %}, leading to degraded service for everyone or even denial of service. + +## What to do if you are rate limited + +If you receive a rate limit error when using {% data variables.product.prodname_copilot_short %}, you should: + +* **Wait and try again.** Rate limits are temporary. Often, waiting a short period and trying again resolves the issue. +* **Check your usage.** If you’re making frequent or automated requests (for example, rapid-fire completions or large-scale usage), consider adjusting your usage pattern. +* **Change your model.** Preview models may have stricter rate limits due to limited capacity. +* **Contact Support.** If you’re repeatedly rate limited and believe it’s impacting legitimate use, contact {% data variables.contact.contact_support_page %} for assistance. + +>[!NOTE] Service-level rate limits should not affect typical {% data variables.product.prodname_copilot_short %} usage. However, if you’re heavily using preview models, you may encounter rate limits more frequently. diff --git a/content/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat.md b/content/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat.md index 4a5bb20d598c..67bd1db3dd57 100644 --- a/content/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat.md +++ b/content/copilot/using-github-copilot/ai-models/changing-the-ai-model-for-copilot-chat.md @@ -47,7 +47,7 @@ For more information about these models, see [AUTOTITLE](/copilot/using-github-c ### Limitations of AI models for {% data variables.copilot.copilot_chat_short %} -Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter. +Experimental pre-release versions of the models may not interact with all filters correctly, including the setting to block suggestions matching public code (see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-suggestions-matching-public-code)). ## Changing the AI model diff --git a/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md b/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md index cf555509794d..6360e418aa43 100644 --- a/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md +++ b/content/copilot/using-github-copilot/code-review/using-copilot-code-review.md @@ -42,11 +42,6 @@ The current functionality and availability of the two types of review is summari The **review changes** type of {% data variables.copilot.copilot_code-review_short %} is a premium feature with a per-person monthly quota. - -> [!NOTE] -> Billing for premium requests is coming soon. Until then, you can continue to use {% data variables.copilot.copilot_code-review_short %} without being billed for additional premium requests. For the most up-to-date start date, see [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). - - When you assign {% data variables.product.prodname_copilot_short %} as a reviewer for a pull request, one premium request is deducted from your monthly quota each time {% data variables.product.prodname_copilot_short %} posts comments to the pull request. See [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). If a repository is configured to automatically request a code review from {% data variables.product.prodname_copilot_short %} for all new pull requests, the premium request usage is applied to the quota of the pull request author. If a pull request is created by {% data variables.product.prodname_actions %} or by a bot, the usage will apply to the user who triggered the workflow (if identifiable), or to a designated billing owner. @@ -72,11 +67,6 @@ This version of the article relates to {% data variables.copilot.copilot_code-re The **review changes** type of {% data variables.copilot.copilot_code-review_short %} is a premium feature with a per-person monthly quota. - -> [!NOTE] -> Billing for premium requests is coming soon. Until then, you can continue to use {% data variables.copilot.copilot_code-review_short %} without being billed for additional premium requests. For the most up-to-date start date, see [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). - - When you assign {% data variables.product.prodname_copilot_short %} as a reviewer for a pull request, one premium request is deducted from your monthly quota each time {% data variables.product.prodname_copilot_short %} posts comments to the pull request. See [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). If a repository is configured to automatically request a code review from {% data variables.product.prodname_copilot_short %} for all new pull requests, the premium request usage is applied to the quota of the pull request author. If a pull request is created by {% data variables.product.prodname_actions %} or by a bot, the usage will apply to the user who triggered the workflow (if identifiable), or to a designated billing owner. @@ -126,8 +116,6 @@ Where possible, {% data variables.product.prodname_copilot_short %}'s feedback i If you're happy with the changes, you can accept a single suggestion from {% data variables.product.prodname_copilot_short %} and commit it, or accept a group of suggestions together in a single commit. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request). -If you want to validate {% data variables.product.prodname_copilot_short %}'s suggested changes (for example by running automated tests or your linter), or if you want to make modifications before committing the suggested changes, click the **Open in Workspace** button. For more information, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - ## Providing feedback on {% data variables.product.prodname_copilot_short %}'s reviews You can provide feedback on {% data variables.product.prodname_copilot_short %}'s comments directly within each comment. We use this information to improve the product and the quality of {% data variables.product.prodname_copilot_short %}'s suggestions. @@ -152,6 +140,10 @@ To request a re-review from {% data variables.product.prodname_copilot_short %}, By default, you manually request a review from {% data variables.product.prodname_copilot_short %} on each pull request, in the same way you would request a review from a human. However, you can set up {% data variables.product.prodname_copilot_short %} to automatically review all pull requests. See [AUTOTITLE](/copilot/using-github-copilot/code-review/configuring-automatic-code-review-by-copilot). +## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with custom instructions + +{% data reusables.copilot.code-review.custom-instructions-information %} + ## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with coding guidelines {% data reusables.copilot.code-review.custom-coding-guidelines %} @@ -223,6 +215,10 @@ To provide feedback, hover over the comment and click the thumbs up or thumbs do ![Screenshot of a comment from {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %} with feedback buttons displayed. The buttons are outlined in dark orange.](/assets/images/help/copilot/code-review/vscode-comment-feedback@2x.png) +## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with custom instructions + +{% data reusables.copilot.code-review.custom-instructions-information %} + ## Customizing {% data variables.product.prodname_copilot_short %}'s reviews with coding guidelines {% data reusables.copilot.code-review.custom-coding-guidelines %} diff --git a/content/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot.md b/content/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot.md index 8feda333cad6..88237e1813a1 100644 --- a/content/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot.md +++ b/content/copilot/using-github-copilot/coding-agent/about-assigning-tasks-to-copilot.md @@ -13,7 +13,9 @@ redirect_from: - /copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-issues/about-assigning-tasks-to-copilot --- -{% data reusables.copilot.coding-agent.preview-note %} +> [!NOTE] +> * {% data reusables.copilot.coding-agent.preview-note-text %} +> * The setting that blocks suggestions matching public code may not work as intended when using {% data variables.copilot.copilot_coding_agent %}. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-suggestions-matching-public-code). ## Overview of {% data variables.copilot.copilot_coding_agent %} @@ -56,8 +58,6 @@ Before you can assign tasks to {% data variables.product.prodname_copilot_short ## {% data variables.copilot.copilot_coding_agent %} usage costs -{% data reusables.copilot.coding-agent.premium-requests-start-date %} - {% data variables.copilot.copilot_coding_agent %} uses {% data variables.product.prodname_actions %} minutes and {% data variables.product.prodname_copilot_short %} premium requests. Within your monthly usage allowance for {% data variables.product.prodname_actions %} and premium requests, you can ask {% data variables.product.prodname_copilot_short %} to work on coding tasks without incurring any additional costs. @@ -97,7 +97,7 @@ Users can include hidden messages in issues assigned to {% data variables.produc ### Limitations in {% data variables.product.prodname_copilot_short %}'s software development workflow * **{% data variables.product.prodname_copilot_short %} can only make changes in the same repository where it is creating its pull request**. When {% data variables.product.prodname_copilot_short %} is assigned an issue, it can only make changes in the repository where that issue is located. In addition, {% data variables.product.prodname_copilot_short %} cannot make changes across multiple repositories in one run. -* **{% data variables.product.prodname_copilot_short %} can only access context in the same repository as the assigned issue**. By default, an integration with the {% data variables.product.prodname_copilot_short %} MCP server provides {% data variables.product.prodname_copilot_short %} access to one repository at a time. You can, however, configure broader access. See [AUTOTITLE](/enterprise-cloud@latest/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +* **{% data variables.product.prodname_copilot_short %} can only access context in the same repository as the assigned issue**. By default, an integration with the {% data variables.product.prodname_copilot_short %} MCP server provides {% data variables.product.prodname_copilot_short %} access to one repository at a time. You can, however, configure broader access. See [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). * **{% data variables.product.prodname_copilot_short %} can only open one pull request at a time**. {% data variables.product.prodname_copilot_short %} will open exactly one pull request to address each task it is assigned. * **{% data variables.product.prodname_copilot_short %} cannot work on an existing pull request that it didn't create**. If you would like {% data variables.product.prodname_copilot_short %} to provide feedback on an existing pull request, you can add it as a reviewer. See [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). * **{% data variables.product.prodname_copilot_short %} will always start its changes from the repository's default branch**. {% data variables.product.prodname_copilot_short %} cannot branch off from any other branch—for example, a feature branch or a release branch. @@ -106,6 +106,7 @@ Users can include hidden messages in issues assigned to {% data variables.produc * **{% data variables.product.prodname_copilot_short %} does not sign its commits**. If you have the "Require signed commits" rule or branch protection enabled, you must rewrite the commit history in order to merge {% data variables.product.prodname_copilot_short %}'s pull requests. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#require-signed-commits). * **{% data variables.product.prodname_copilot_short %} does not work with self-hosted {% data variables.product.prodname_actions %} runners**. {% data variables.product.prodname_copilot_short %} has access to its own development environment, running in {% data variables.product.prodname_actions %}, and must use {% data variables.product.prodname_dotcom %}-hosted runners. See [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent#upgrading-to-larger-github-hosted-github-actions-runners). +* **{% data variables.copilot.copilot_coding_agent %} does not work in personal repositories owned by {% data variables.enterprise.prodname_managed_users %}**. This is because {% data variables.copilot.copilot_coding_agent %} requires {% data variables.product.company_short %}-hosted runners, which are not available to repositories owned by {% data variables.enterprise.prodname_managed_users %}. See [AUTOTITLE](/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners). * **{% data variables.product.prodname_copilot_short %} doesn't account for content exclusions**. Content exclusions allow administrators to configure {% data variables.product.prodname_copilot_short %} to ignore certain files. When using {% data variables.copilot.copilot_coding_agent %}, {% data variables.product.prodname_copilot_short %} will not ignore these files, and will be able to see and update them. See [AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot). * **{% data variables.copilot.copilot_coding_agent %} is not available in {% data variables.enterprise.data_residency %}**. The agent is only available in {% data variables.product.prodname_dotcom_the_website %}. @@ -115,4 +116,4 @@ Users can include hidden messages in issues assigned to {% data variables.produc * [AUTOTITLE](/copilot/responsible-use-of-github-copilot-features/responsible-use-of-copilot-coding-agent-on-githubcom) * [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent) * [AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent) -* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) diff --git a/content/copilot/using-github-copilot/coding-agent/asking-copilot-to-create-a-pull-request.md b/content/copilot/using-github-copilot/coding-agent/asking-copilot-to-create-a-pull-request.md index 2b76374875ad..e406cd5d4872 100644 --- a/content/copilot/using-github-copilot/coding-agent/asking-copilot-to-create-a-pull-request.md +++ b/content/copilot/using-github-copilot/coding-agent/asking-copilot-to-create-a-pull-request.md @@ -40,6 +40,10 @@ For information on making {% data variables.copilot.copilot_coding_agent %} avai 1. Submit your prompt. + {% data variables.product.prodname_copilot_short %} asks you to confirm that you want to use the coding agent to create a pull request. + +1. Click **Allow**. + {% data variables.product.prodname_copilot_short %} will respond with a link to the pull request it creates. It will work on the task and push changes to the pull request, and then add you as a reviewer when it has finished, triggering a notification. ## Monitoring progress diff --git a/content/copilot/using-github-copilot/coding-agent/best-practices-for-using-copilot-to-work-on-tasks.md b/content/copilot/using-github-copilot/coding-agent/best-practices-for-using-copilot-to-work-on-tasks.md index 026a8ee528a9..e0193d48ceea 100644 --- a/content/copilot/using-github-copilot/coding-agent/best-practices-for-using-copilot-to-work-on-tasks.md +++ b/content/copilot/using-github-copilot/coding-agent/best-practices-for-using-copilot-to-work-on-tasks.md @@ -105,7 +105,7 @@ This is a Go based repository with a Ruby client for certain API endpoints. It i ## Using the Model Context Protocol (MCP) -You can extend the capabilities of {% data variables.copilot.copilot_coding_agent %} by using MCP. This allows {% data variables.copilot.copilot_coding_agent %} use tools provided by local MCP servers. For more information, see [AUTOTITLE](/enterprise-cloud@latest/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp). +You can extend the capabilities of {% data variables.copilot.copilot_coding_agent %} by using MCP. This allows {% data variables.copilot.copilot_coding_agent %} use tools provided by local MCP servers. For more information, see [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp). ## Pre-installing dependencies in {% data variables.product.prodname_copilot %}'s environment diff --git a/content/copilot/using-github-copilot/coding-agent/enabling-copilot-coding-agent.md b/content/copilot/using-github-copilot/coding-agent/enabling-copilot-coding-agent.md index e3087cf47516..3744a53fb704 100644 --- a/content/copilot/using-github-copilot/coding-agent/enabling-copilot-coding-agent.md +++ b/content/copilot/using-github-copilot/coding-agent/enabling-copilot-coding-agent.md @@ -19,20 +19,32 @@ redirect_from: {% data reusables.copilot.coding-agent.what-is %} -{% data variables.copilot.copilot_coding_agent %} is off by default and must be enabled before it is available for use. +If you are a {% data variables.copilot.copilot_enterprise %} subscriber, {% data variables.copilot.copilot_coding_agent %} is disabled by default and must be enabled by an administrator before it is available for use. -## Enabling {% data variables.copilot.copilot_coding_agent %} for organizations +If you are a {% data variables.copilot.copilot_pro_plus %} subscriber, {% data variables.copilot.copilot_coding_agent %} is enabled by default. + +Once enabled, you can use {% data variables.copilot.copilot_coding_agent %} in any repository, provided that an administrator hasn't opted the repository out. + +## Enabling {% data variables.copilot.copilot_coding_agent %} for {% data variables.copilot.copilot_enterprise %} subscribers {% data reusables.copilot.coding-agent.enabling-for-orgs-and-enterprises %} -## Enabling {% data variables.copilot.copilot_coding_agent %} for your personal repositories +## Opting repositories out of {% data variables.copilot.copilot_coding_agent %} + +By default, users with {% data variables.copilot.copilot_coding_agent %} enabled can use it in all repositories. + +Enterprise administrators and organization owners (for organization-owned repositories) and users (for user-owned repositories) can opt out repositories and prevent {% data variables.copilot.copilot_coding_agent %} from being used in those repositories. + +For information on disabling {% data variables.copilot.copilot_coding_agent %} in repositories owned by your personal user account, see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-copilot-coding-agent). + +For information on disabling {% data variables.copilot.copilot_coding_agent %} in all repositories owned by an enterprise, see [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-copilot-coding-agent-in-your-enterprise). -If you want {% data variables.copilot.copilot_coding_agent %} to be available in repositories owned by your own personal account, you must enable it in your account settings. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-copilot-coding-agent). +For information on disabling {% data variables.copilot.copilot_coding_agent %} in some or all repositories owned by an organization, see [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). ## Further reading * [AUTOTITLE](/copilot/using-github-copilot/coding-agent) * [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent) * [AUTOTITLE](/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent) -* [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp) +* [AUTOTITLE](/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp) * [AUTOTITLE](/copilot/rolling-out-github-copilot-at-scale/enabling-developers/using-copilot-coding-agent-in-org) diff --git a/content/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp.md b/content/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp.md similarity index 97% rename from content/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp.md rename to content/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp.md index 546e7bdcd654..dd91e3123f60 100644 --- a/content/copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp.md +++ b/content/copilot/using-github-copilot/coding-agent/extending-copilot-coding-agent-with-mcp.md @@ -9,6 +9,8 @@ topics: - Copilot type: how_to redirect_from: + - /copilot/customizing-copilot/using-model-context-protocol/extending-copilot-coding-agent-with-mcp + - /copilot/customizing-copilot/extending-copilot-coding-agent-with-mcp - /early-access/copilot/coding-agent/extending-copilot-coding-agent-with-model-context-protocol --- @@ -276,6 +278,8 @@ If you want to allow {% data variables.product.prodname_copilot_short %} to acce 1. Under "Environment secrets", click **Add environment secret**. 1. Call the secret `COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN`, enter your {% data variables.product.pat_generic %} in the "Value" field, then click **Add secret**. +For information on using the {% data variables.product.github %} MCP server in other environments, see [AUTOTITLE](/copilot/customizing-copilot/using-model-context-protocol/using-the-github-mcp-server). + ## Best practices * Enabling third-party MCP servers for use may impact the performance of the agent and the quality of the outputs. Review the third-party MCP server thoroughly and ensure that it meets your organization’s requirements. diff --git a/content/copilot/using-github-copilot/coding-agent/index.md b/content/copilot/using-github-copilot/coding-agent/index.md index cacd26f65371..0676a4d73f6b 100644 --- a/content/copilot/using-github-copilot/coding-agent/index.md +++ b/content/copilot/using-github-copilot/coding-agent/index.md @@ -13,6 +13,7 @@ children: - /asking-copilot-to-create-a-pull-request - /reviewing-a-pull-request-created-by-copilot - /using-the-copilot-coding-agent-logs + - /extending-copilot-coding-agent-with-mcp - /troubleshooting-copilot-coding-agent redirect_from: - /copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks diff --git a/content/copilot/using-github-copilot/coding-agent/troubleshooting-copilot-coding-agent.md b/content/copilot/using-github-copilot/coding-agent/troubleshooting-copilot-coding-agent.md index 714e4c6cff35..b7291f4a9bfb 100644 --- a/content/copilot/using-github-copilot/coding-agent/troubleshooting-copilot-coding-agent.md +++ b/content/copilot/using-github-copilot/coding-agent/troubleshooting-copilot-coding-agent.md @@ -23,7 +23,7 @@ You can only assign issues to {% data variables.product.prodname_copilot_short % If you do not already have a subscription for one of these plans, click this button for more information:
Sign up for {% data variables.product.prodname_copilot_short %} {% octicon "link-external" height:16 aria-label="link-external" %} -If you _do_ have either {% data variables.copilot.copilot_pro_plus %} or {% data variables.copilot.copilot_enterprise %}, check that {% data variables.copilot.copilot_coding_agent %} {% ifversion ghec %}is enabled and{% endif %} has been made available for the repository: +If you _do_ have {% data variables.copilot.copilot_pro_plus %} or {% data variables.copilot.copilot_enterprise %}, check that {% data variables.copilot.copilot_coding_agent %} {% ifversion ghec %}is enabled and{% endif %} has not been manually disabled for the repository: {% ifversion ghec %} @@ -38,6 +38,14 @@ If you _do_ have either {% data variables.copilot.copilot_pro_plus %} or {% data > [!NOTE] > You can check whether {% data variables.copilot.copilot_coding_agent %} has been enabled for you in the features page of your {% data variables.product.prodname_copilot_short %} settings: [github.com/settings/copilot/features](https://github.com/settings/copilot/features). +## I have an {% data variables.product.prodname_emu %} account and {% data variables.product.prodname_copilot_short %} won't work in my personal repository + +{% data reusables.copilot.coding-agent-emu-limitation %} + +If you have an {% data variables.enterprise.prodname_managed_user %} and try to assign {% data variables.product.prodname_copilot_short %} to an issue in a personal repository, you may see an error message reporting that {% data variables.product.prodname_actions %} are not available for your repository. + +To use {% data variables.copilot.copilot_coding_agent %}, you'll need to work with repositories owned by your organization instead of personal repositories. + ## {% data variables.product.prodname_copilot_short %} can't create a pull request from {% data variables.copilot.copilot_chat_short %} If you asked {% data variables.product.prodname_copilot_short %} to create a pull request and it responds that it cannot directly create a pull request, check that {% data variables.copilot.copilot_coding_agent %} is available. diff --git a/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile.md b/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile.md index c48396ba9218..f2c693087996 100644 --- a/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile.md +++ b/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile.md @@ -22,15 +22,15 @@ redirect_from: In {% data variables.product.prodname_mobile %}, you can use {% data variables.copilot.copilot_chat_short %} to ask: -* General software-related questions, without a particular context. For more information, see [Asking a general question about software development](#asking-a-general-question-about-software-development). -* Questions asked in the context of your project. For more information, see [Asking questions about a specific repository](#asking-exploratory-questions-about-a-repository). -* Questions about a specific file or specified lines of code within a file. For more information, see [Asking questions about specific pieces of code](#asking-questions-about-specific-pieces-of-code).{% ifversion ghec %} +* General software-related questions, without a particular context. See [Asking a general question about software development](#asking-a-general-question-about-software-development). +* Questions asked in the context of your project. See [Asking questions about a specific repository](#asking-exploratory-questions-about-a-repository). +* Questions about a specific file or specified lines of code within a file. See [Asking questions about specific pieces of code](#asking-questions-about-specific-pieces-of-code).{% ifversion ghec %} With {% data variables.copilot.copilot_enterprise_short %}, you can also ask: -* Questions about a specific pull request. For more information, see [Asking questions about a specific pull request](#asking-questions-about-a-specific-pull-request). -* Questions about a specific issue. For more information, see [Asking questions about a specific issue](#asking-questions-about-a-specific-issue). -* Questions about a specific discussion. For more information, see [Asking questions about a specific discussion](#asking-questions-about-a-specific-discussion). +* Questions about a specific pull request. See [Asking questions about a specific pull request](#asking-questions-about-a-specific-pull-request). +* Questions about a specific issue. See [Asking questions about a specific issue](#asking-questions-about-a-specific-issue). +* Questions about a specific discussion. See [Asking questions about a specific discussion](#asking-questions-about-a-specific-discussion). {% endif %} ## Limitations @@ -38,6 +38,11 @@ With {% data variables.copilot.copilot_enterprise_short %}, you can also ask: The following limitations apply to {% data variables.copilot.copilot_mobile_short %}: * The quality of the results from {% data variables.copilot.copilot_chat_short %} may, in some situations, be degraded if very large files, or a large number of files, are used as a context for a question. +* If you reach your premium request limit on mobile, {% data variables.product.prodname_copilot_short %} will automatically fall back to a free, non-premium model. Your access to premium models will reset at the start of the next billing cycle. +* If you purchased {% data variables.copilot.copilot_pro_short %} or {% data variables.copilot.copilot_pro_plus_short %} through {% data variables.product.prodname_mobile %} (via in-app purchase on iOS or Android), you cannot enable additional premium requests. + + * To enable additional premium requests, you'll need to cancel your mobile subscription and re-subscribe on {% data variables.product.prodname_dotcom_the_website %} through a web browser. + * For help, contact {% data variables.contact.contact_support %}. ## Prerequisites diff --git a/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github.md b/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github.md index c657f3f5c864..9b794d1a4da1 100644 --- a/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github.md +++ b/content/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github.md @@ -20,7 +20,7 @@ redirect_from: {% data variables.copilot.copilot_chat_dotcom %} is a chat interface that lets you ask and receive answers to coding-related questions on the {% data variables.product.github %} website. -{% data variables.copilot.copilot_chat_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. For more information, see [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github/about-github-copilot-chat-in-githubcom). +{% data variables.copilot.copilot_chat_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. On {% data variables.product.github %}, you can use {% data variables.copilot.copilot_chat_short %} to ask different questions in different contexts. For example, you can ask about a specific repository, a specific issue, or a specific pull request. You can also ask general questions about software development, or about a specific programming language. @@ -69,11 +69,8 @@ You can open {% data variables.copilot.copilot_chat_short %} from any page on {% Depending on the question you ask, and your enterprise and organization settings, {% data variables.product.prodname_copilot_short %} may respond using information based on the results of a Bing search. By using Bing search, {% data variables.product.prodname_copilot_short %} can answer a broad range of tech-related questions with up-to-date details based on information currently available on the internet. For information on how to enable or disable Bing search integration, see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-web-search-for-github-copilot-chat) and [AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise). -1. At the top right of any page on {% data variables.product.github %}, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} beside the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** icon and click **Immersive** in the dropdown menu. - - ![Screenshot of the 'Immersive' button, highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-immersive-button.png) - -1. At the bottom of the page, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +{% data reusables.copilot.immersive-mode-instructions %} +1. In the prompt box, type a question and press Enter. Some examples of general questions you could ask are: @@ -84,7 +81,7 @@ Depending on the question you ask, and your enterprise and organization settings * `Write a bash script to output today's date.` {% data reusables.copilot.stop-response-generation %} -1. If {% data variables.product.prodname_copilot_short %} uses a Bing search to answer your question, "Using web search results for 'SEARCH QUERY'" is displayed above the response. Click this to see the search results that {% data variables.product.prodname_copilot_short %} used to answer your question. +1. If {% data variables.product.prodname_copilot_short %} uses a Bing search to answer your question, you can click the **_n_ references** link at the top of the response to see the search results that {% data variables.product.prodname_copilot_short %} used to answer your question. 1. Within a conversation thread, you can ask follow-up questions. {% data variables.product.prodname_copilot_short %} will answer within the context of the conversation. For example, you could type "tell me more" to get {% data variables.product.prodname_copilot_short %} to expand on its last comment. You can use your initial question as a foundation for follow-up questions. A detailed foundational prompt can help {% data variables.product.prodname_copilot_short %} provide more relevant answers to your follow-up questions. For more information, see [Prompting {% data variables.copilot.copilot_chat %} to become your personal AI assistant for accessibility](https://github.blog/2023-10-09-prompting-github-copilot-chat-to-become-your-personal-ai-assistant-for-accessibility/) on the {% data variables.product.prodname_dotcom %} Blog. @@ -95,7 +92,7 @@ Depending on the question you ask, and your enterprise and organization settings ### Regenerating a response with a different model > [!NOTE] -> This feature is currently in {% data variables.release-phases.public_preview %} and is subject to change. +> This feature is currently in {% data variables.release-phases.public_preview %} and is subject to change. It is currently not available for all models. After {% data variables.product.prodname_copilot_short %} responds to your question, you can regenerate the same prompt using a different model by clicking the retry icon ({% octicon "sync" aria-label="The re-run icon" %}) below the response. The new response will use your selected model and maintain the full context of the conversation. @@ -157,7 +154,7 @@ You can ask {% data variables.copilot.copilot_chat_short %} different types of q ## Asking {% data variables.copilot.copilot_chat_short %} questions in a repository -To ask a question about a specific repository, you must be viewing the repository on {% data variables.product.github %}. +You can ask {% data variables.product.prodname_copilot_short %} about a specific repository: 1. Navigate to a repository on {% data variables.product.github %}. {% data reusables.copilot.open-chat-panel %} @@ -166,7 +163,7 @@ To ask a question about a specific repository, you must be viewing the repositor ![Screenshot of the {% data variables.product.prodname_copilot_short %} chat panel opened inside a repository. The specified repository is highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-chat-in-repository.png) -1. At the bottom of the panel, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. At the bottom of the panel, in the prompt box, type a question and press Enter. > [!NOTE] > @@ -178,16 +175,11 @@ You can ask {% data variables.product.prodname_copilot_short %} about a specific > [!NOTE] A "symbol" is a named entity in code. This could be a variable, function, class, module, or any other identifier that's part of a codebase. +1. Navigate to a repository on {% data variables.product.github %}. {% data reusables.copilot.open-chat-panel %} -1. To select a repository for context, click {% octicon "paperclip" aria-label="Add attachments" %} at the bottom of the chat panel, then select "Repositories". - - ![Screenshot of the "Attach files or symbols" button, highlighted with a dark orange outline.](/assets/images/help/copilot/chat-paperclip-icon.png) - -1. Once the repository has been attached, click {% octicon "paperclip" aria-label="Add attachments" %} again, then select "Files, folders, and symbols". - +1. In the prompt box, click **{% octicon "paperclip" aria-label="Add attachments" %} Attach**, then click **Files, folders, and symbols**. 1. Search for and select one or more files, folders, or symbols. - -1. In the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. In the prompt box, type a question and press Enter. {% data variables.product.prodname_copilot_short %} replies in the chat panel. @@ -203,19 +195,12 @@ Organization owners (with a {% data variables.copilot.copilot_enterprise_short % When you enter a query, {% data variables.product.prodname_copilot_short %} searches for relevant documentation snippets, synthesizes a summary of the relevant snippets to answer your question, and provides links to the source documentation for additional context. -1. At the top right of any page on {% data variables.product.github %}, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} beside the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** icon and click **Immersive** in the dropdown menu. +{% data reusables.copilot.immersive-mode-instructions %} +1. To select a knowledge base for context, click **{% octicon "paperclip" aria-label="Add attachments" %} Attach** at the bottom of the chat panel, then click **Knowledge bases**. +1. In the "Select knowledge bases" dialog, type the name of the knowledge base you want to use as context, select the knowledge bases you want to use, and click **Save**. +1. In the prompt box, type a question and press Enter. - ![Screenshot of the 'Immersive' button, highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-immersive-button.png) - -1. To select a knowledge base for context, click {% octicon "paperclip" aria-label="Add attachments" %} at the bottom of the chat panel, then select "Knowledge base". - - ![Screenshot of the "Attach files or symbols" button, highlighted with a dark orange outline.](/assets/images/help/copilot/chat-paperclip-icon.png) - -1. In the "Search knowledge bases" box, type the name of the knowledge base you want to use as context, then click the knowledge base in the list of search results. - -1. At the bottom of the page, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. - -1. At the bottom of the response, {% data variables.product.prodname_copilot_short %} provides links to the source documentation for additional context. + You can click the **_n_ references** link at the top of the response to see the sources that {% data variables.product.prodname_copilot_short %} used to answer your question. 1. Within a conversation thread, you can ask follow-up questions. Follow-up questions will continue to use the selected knowledge base as context until you explicitly detach the knowledge base or select a different one. @@ -240,34 +225,12 @@ You can chat with {% data variables.product.prodname_copilot_short %} about a fi ![Screenshot of the {% data variables.product.prodname_copilot_short %} buttons, highlighted with a dark orange outline, to the right of some selected code.](/assets/images/help/copilot/copilot-buttons-inline-code.png) -1. If you clicked the {% data variables.product.prodname_copilot_short %} icon, type a question in the "Ask {% data variables.product.prodname_copilot_short %}" box at the bottom of the chat panel and press Enter. +1. If you clicked the {% data variables.product.prodname_copilot_short %} icon, type a question in the prompt box at the bottom of the chat panel and press Enter. {% data variables.product.prodname_copilot_short %} responds to your request in the panel. ![Screenshot of a response to the question "What does the function at the selected lines do?"](/assets/images/help/copilot/copilot-sample-chat-response.png) -## Asking questions about alerts from {% data variables.product.prodname_GHAS %} products - -{% data variables.product.prodname_copilot_short %} allows you to use natural language questions to ask about security alerts in repositories in your organization when these alerts are generated by {% data variables.product.prodname_GHAS %} features ({% data variables.product.prodname_code_scanning %}, {% data variables.product.prodname_secret_scanning %}, and {% data variables.product.prodname_dependabot_alerts %}). - -1. At the top right of any page on {% data variables.product.github %}, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} beside the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** icon and click **Immersive** in the dropdown menu. - - ![Screenshot of the 'Immersive' button, highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-immersive-button.png) - -1. To select a repository for context, click {% octicon "paperclip" aria-label="Add attachments" %} at the bottom of the chat panel, then select "Repositories". - - ![Screenshot of the "Attach files or symbols" button, highlighted with a dark orange outline.](/assets/images/help/copilot/chat-paperclip-icon.png) - -1. In the "Search repositories" box, type the name of the repository you want to ask about, then click the repository in the list of search results. - -1. In the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. - - - - > [!TIP] - > - > {% data reusables.copilot.semantic-index-info %} - ## Asking questions about a specific pull request You can ask {% data variables.product.prodname_copilot_short %} different questions about a pull request, from different views within the pull request. For example, you can ask {% data variables.product.prodname_copilot_short %} to summarize a pull request, or explain what has changed within specific files or lines of code in a pull request. @@ -277,14 +240,14 @@ You can ask {% data variables.product.prodname_copilot_short %} different questi 1. On {% data variables.product.github %}, navigate to a pull request in a repository. {% data reusables.copilot.open-chat-panel %} {% data reusables.copilot.chat-previous-conversation %} -1. At the bottom of the {% data variables.copilot.copilot_chat_short %} panel, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. At the bottom of the {% data variables.copilot.copilot_chat_short %} panel, in the prompt box, type a question and press Enter. ### Ask about changes to a specific file in a pull request 1. On {% data variables.product.github %}, navigate to a pull request in a repository. 1. Click the **Files changed** tab. 1. Click {% octicon "kebab-horizontal" aria-label="Show options" %} at the top right of the file, then click **Ask {% data variables.product.prodname_copilot_short %} about this diff**. -1. Type a question in the "Ask {% data variables.product.prodname_copilot_short %}" box at the bottom of the chat panel and press Enter. +1. Type a question in the prompt box at the bottom of the chat panel and press Enter. ### Ask about specific lines within a file in a pull request @@ -301,9 +264,9 @@ You can ask {% data variables.product.prodname_copilot_short %} different questi 1. Scroll to the bottom of the page, then, next to one of the failing checks, click **Details**. {% data reusables.copilot.open-chat-panel %} {% data reusables.copilot.chat-previous-conversation %} -1. At the bottom of the {% data variables.copilot.copilot_chat_short %} panel, in the "Ask {% data variables.product.prodname_copilot_short %}" box, ask {% data variables.product.prodname_copilot_short %} why the pull request has failed and press Enter. +1. At the bottom of the {% data variables.copilot.copilot_chat_short %} panel, in the prompt box, ask {% data variables.product.prodname_copilot_short %} why the pull request has failed and press Enter. -{% data variables.product.prodname_copilot_short %} will respond with information about why the pull request failed. {% data variables.product.prodname_copilot_short %} may also provide suggestions for how to fix the issue. + {% data variables.product.prodname_copilot_short %} responds with information about why the pull request failed. {% data variables.product.prodname_copilot_short %} may also provide suggestions for how to fix the issue. 1. If {% data variables.product.prodname_copilot_short %} has provided steps to fix the issue, you can follow the steps to resolve the problem. @@ -316,7 +279,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize or 1. Navigate to an issue or discussion on {% data variables.product.github %}. {% data reusables.copilot.open-chat-panel %} {% data reusables.copilot.chat-previous-conversation %} -1. At the bottom of the {% data variables.product.prodname_copilot_short %} chat panel, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. At the bottom of the {% data variables.product.prodname_copilot_short %} chat panel, in the prompt box, type a question and press Enter. {% data variables.product.prodname_copilot_short %} responds to your request in the panel. @@ -329,7 +292,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to explain the c 1. Navigate to a commit on {% data variables.product.github %}. {% data reusables.copilot.open-chat-panel %} {% data reusables.copilot.chat-previous-conversation %} -1. At the bottom of the {% data variables.product.prodname_copilot_short %} chat panel, in the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. At the bottom of the {% data variables.product.prodname_copilot_short %} chat panel, in the prompt box, type a question and press Enter. > [!TIP] > If you know the SHA for a commit, instead of navigating to the commit, you can ask {% data variables.product.prodname_copilot_short %} about the commit from any page in the repository on {% data variables.product.github %} by including the SHA in your message. For example, `What changed in commit a778e0eab?` @@ -395,11 +358,14 @@ You can ask {% data variables.product.prodname_copilot_short %} a question about You can access {% data variables.product.prodname_copilot_short %}'s immersive view from the dashboard. The dashboard is your personalized overview of your activity on {% data variables.product.github %}, seen when you visit https://github.com while logged in. 1. Go to the dashboard at [https://github.com](https://github.com). -1. In the "Ask {% data variables.product.prodname_copilot_short %}" box, type a question and press Enter. +1. In the prompt box, type a question and press Enter. ![Screenshot of the dashboard with the "Ask Copilot" box highlighted with an orange outline.](/assets/images/help/copilot/copilot-chat-dashboard.png) - You will be taken to the immersive view where {% data variables.product.prodname_copilot_short %} will respond to your request. + You will be taken to the immersive view where {% data variables.product.prodname_copilot_short %} responds to your request. + +> [!NOTE] +> If you don't see the {% data variables.copilot.copilot_chat_short %} prompt box on your dashboard, check that **Dashboard entry point** in enabled in your {% data variables.product.prodname_copilot %} settings. ## Extending {% data variables.copilot.copilot_chat_dotcom_short %} @@ -413,9 +379,9 @@ You can share {% data variables.copilot.copilot_chat_short %} conversations from Once you share a conversation, the conversation and future messages will be visible to anyone with the link. -1. In the top right of any page on {% data variables.product.github %}, click the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** {% data variables.product.prodname_copilot %} icon next to the search bar. -1. To view a conversation in immersive mode, click **{% octicon "screen-full" aria-hidden="true" aria-label="screen-full" %} Immersive**. -1. Once you submit your first prompt, a share button will appear in the upper right corner. Click **{% octicon "lock" aria-hidden="true" aria-label="lock" %} Share** to open the share dialog. +{% data reusables.copilot.immersive-mode-instructions %} +1. After you submit your first prompt, a share button is displayed in the upper right corner. +1. Click **{% octicon "lock" aria-hidden="true" aria-label="lock" %} Share** to open the share dialog. ![Screenshot of the main search box on {% data variables.product.prodname_dotcom %}. The share button is highlighted with an orange outline.](/assets/images/help/copilot/chat-share-button.png) @@ -432,5 +398,6 @@ To give feedback about {% data variables.copilot.copilot_chat_short %} in genera ## Further reading -* [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide). -* [AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile). +* [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide) +* [AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile) +* [AUTOTITLE](/copilot/using-github-copilot/guides-on-using-github-copilot/using-copilot-to-explore-a-codebase) diff --git a/content/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces.md b/content/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces.md index 8c1205df352d..cff69c060083 100644 --- a/content/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces.md +++ b/content/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces.md @@ -48,10 +48,12 @@ During the {% data variables.release-phases.public_preview %}, if you're using a {% data variables.copilot.copilot_spaces_short %} can belong to a personal account or to an organization. Spaces owned by an organization can be shared with other organization members (read-only) or kept private to the person who created the space. +## How does using {% data variables.copilot.copilot_spaces_short %} affect my usage? + Questions you submit in a space count as {% data variables.copilot.copilot_chat_short %} requests. * If you're a {% data variables.copilot.copilot_free_short %} user, this usage counts toward your monthly chat limit. -* If you use {% data variables.copilot.copilot_spaces_short %} with a premium model, this usage counts toward your premium usage quota. +* If you use {% data variables.copilot.copilot_spaces_short %} with a premium model, this usage counts toward your premium usage quota. Every question you submit to a premium model counts as one premium request, multiplied by the model's multiplier. For information about the multipliers applied to each model, see [AUTOTITLE](/copilot/managing-copilot/understanding-and-managing-copilot-usage/understanding-and-managing-requests-in-copilot#model-multipliers). ## Next steps diff --git a/content/copilot/using-github-copilot/copilot-spaces/creating-and-using-copilot-spaces.md b/content/copilot/using-github-copilot/copilot-spaces/creating-and-using-copilot-spaces.md index 8f58661dfd38..38025c6b70a8 100644 --- a/content/copilot/using-github-copilot/copilot-spaces/creating-and-using-copilot-spaces.md +++ b/content/copilot/using-github-copilot/copilot-spaces/creating-and-using-copilot-spaces.md @@ -15,8 +15,11 @@ topics: 1. To create a space, go to [https://github.com/copilot/spaces](https://github.com/copilot/spaces), and click **Create space**. 1. Give your space a name. 1. Choose whether the space is owned by you or by an organization you belong to. Organization-owned {% data variables.copilot.copilot_spaces_short %} can be shared using {% data variables.product.github %}’s built-in permission model. -1. Optionally, add a description to help others understand the purpose of the space. -1. Click **Create**. +1. Optionally, add a description. This does not affect the responses {% data variables.product.prodname_copilot_short %} gives in the space, but it can help others understand the context of the space. + + >[!NOTE] You can change the name and description of your space at any time by clicking **{% octicon "pencil" aria-hidden="true" aria-label="pencil" %} Edit** in the top right corner of the space. + +1. Click **Save** in the top right corner of the page. ## Adding context to {% data variables.copilot.copilot_spaces_short %} @@ -28,11 +31,13 @@ You can add two types of context to your space: > You are a SQL generator. Your job is to take the sample queries and data schemas defined in the attached files and and generate SQL queries based on the user's goals. -* **References**: You can add any code hosted in {% data variables.product.github %} repositories, including public and private repositories. You can also add free-text content, such as transcripts or notes. +* **Attachments**: This context will be used to provide more relevant answers to your questions. Additionally, {% data variables.copilot.copilot_spaces_short %} will always refer to the latest version of the code on the `main` branch of the repository. - >[!TIP] You don’t need formal docs to get value from {% data variables.copilot.copilot_spaces_short %}. Try pasting in a Slack thread, a video call summary, or even bullet-point notes. + To add attachments, click **{% octicon "plus" aria-hidden="true" aria-label="plus" %} Add** to the right of "Attachments", then choose one of the following options: -This context will be used to provide more relevant answers to your questions. Additionally, {% data variables.copilot.copilot_spaces_short %} will always refer to the latest version of the code on the `main` branch of the repository. + * **{% octicon "file-code" aria-hidden="true" aria-label="file-code" %} Add files, folders...**: You can add files and folders from your {% data variables.product.github %} repositories. This includes code files, documentation, and other relevant content that can help {% data variables.product.prodname_copilot_short %} understand the context of your space. + * **{% octicon "plus" aria-hidden="true" aria-label="plus" %} Add a text file...**: You can add free-text content, such as transcripts, notes, or any other relevant information that can help {% data variables.product.prodname_copilot_short %} understand the context of your space. + * **{% octicon "paste" aria-hidden="true" aria-label="paste" %} Add via {% data variables.product.github %} URL...**: You can paste the URLs of the {% data variables.product.github %} content you want to add. This can include issues and pull requests. ## Using {% data variables.copilot.copilot_spaces_short %} diff --git a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md b/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md similarity index 94% rename from content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md rename to content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md index 8645189a95f6..ce828b56e268 100644 --- a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot.md +++ b/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md @@ -8,9 +8,10 @@ topics: - Copilot product: '{% data reusables.gated-features.copilot-free-availability %}' redirect_from: - - /copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot + - /copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot - /copilot/github-copilot-enterprise/copilot-pull-request-summaries/creating-a-pull-request-summary-with-github-copilot - /copilot/github-copilot-enterprise/copilot-pull-request-summaries + - /copilot/using-github-copilot/using-github-copilot-for-pull-requests --- ## About {% data variables.copilot.copilot_for_prs %} diff --git a/content/copilot/using-github-copilot/guides-on-using-github-copilot/choosing-the-right-ai-tool-for-your-task.md b/content/copilot/using-github-copilot/guides-on-using-github-copilot/choosing-the-right-ai-tool-for-your-task.md index a543e3e605d5..de0da26a52ef 100644 --- a/content/copilot/using-github-copilot/guides-on-using-github-copilot/choosing-the-right-ai-tool-for-your-task.md +++ b/content/copilot/using-github-copilot/guides-on-using-github-copilot/choosing-the-right-ai-tool-for-your-task.md @@ -15,22 +15,22 @@ The use of AI tools is increasingly becoming a standard part of a software devel {% data variables.product.github %}'s AI tools assist with every phase of the software development lifecycle (SDLC): * **Planning**: - * {% data variables.product.prodname_copilot_short %} can create issues to help track your ideas. - * {% data variables.copilot.copilot_chat_short %} can help you brainstorm and identify the best technologies for your project. + * **{% data variables.copilot.copilot_chat_short %}** can help you brainstorm and identify the best technologies for your project. + * **{% data variables.copilot.copilot_chat_short %}** can create issues to help track your ideas. * **Code creation**: - * {% data variables.product.prodname_copilot_short %} code completion helps add code as you type. - * {% data variables.copilot.next_edit_suggestions_caps %} ({% data variables.release-phases.public_preview %}) predicts the next edit you are likely to make and suggests a completion for it. - * {% data variables.copilot.copilot_chat_short %} can answer questions and offer suggestions in a conversational environment. - * You can assign {% data variables.copilot.copilot_coding_agent %} to an open issue and it will automatically raise a pull request to address the necessary changes. + * **{% data variables.product.prodname_copilot_short %} code completion** helps add code as you type. + * **{% data variables.copilot.next_edit_suggestions_caps %}** ({% data variables.release-phases.public_preview %}) predicts the next edit you are likely to make and suggests a completion for it. + * **{% data variables.copilot.copilot_chat_short %}** can answer questions and offer suggestions in a conversational environment. + * You can assign **{% data variables.copilot.copilot_coding_agent %}** to an open issue and it will automatically raise a pull request to address the necessary changes. * **Reviews**: - * {% data variables.copilot.copilot_code-review_short %} gives you feedback in your favorite IDE, or as a pull request review on {% data variables.product.github %}. + * **{% data variables.copilot.copilot_code-review_short %}** gives you feedback in your favorite IDE, or as a pull request review on {% data variables.product.github %}. * **Testing**: - * {% data variables.copilot.copilot_chat_short %} can help you write and debug tests. + * **{% data variables.copilot.copilot_chat_short %}** can help you write and debug tests. * **Deployment**: - * {% data variables.copilot.copilot_chat_short %} can help you configure continuous integration and continuous deployment (CI/CD) pipelines. + * **{% data variables.copilot.copilot_chat_short %}** can help you configure continuous integration and continuous deployment (CI/CD) pipelines. * **Operation**: - * {% data variables.copilot.copilot_coding_agent %} ({% data variables.release-phases.public_preview %}) can raise pull requests for open issues. - * {% data variables.copilot.copilot_chat_short %} can help with tasks you're working on yourself. + * **{% data variables.copilot.copilot_coding_agent %}** ({% data variables.release-phases.public_preview %}) can raise pull requests for open issues. + * **{% data variables.copilot.copilot_chat_short %}** can help with tasks you're working on yourself. ## Planning diff --git a/content/copilot/using-github-copilot/guides-on-using-github-copilot/index.md b/content/copilot/using-github-copilot/guides-on-using-github-copilot/index.md index 919f96244799..bd4d228fc640 100644 --- a/content/copilot/using-github-copilot/guides-on-using-github-copilot/index.md +++ b/content/copilot/using-github-copilot/guides-on-using-github-copilot/index.md @@ -9,10 +9,11 @@ topics: redirect_from: - /copilot/using-github-copilot/example-use-cases children: + - /choosing-the-right-ai-tool-for-your-task + - /using-copilot-to-explore-a-codebase - /refactoring-code-with-github-copilot - /using-copilot-to-migrate-a-project - /writing-tests-with-github-copilot - /modernizing-legacy-code-with-github-copilot - /upgrading-java-projects-with-github-copilot - - /choosing-the-right-ai-tool-for-your-task --- diff --git a/content/copilot/using-github-copilot/guides-on-using-github-copilot/using-copilot-to-explore-a-codebase.md b/content/copilot/using-github-copilot/guides-on-using-github-copilot/using-copilot-to-explore-a-codebase.md new file mode 100644 index 000000000000..ac524c3fae2a --- /dev/null +++ b/content/copilot/using-github-copilot/guides-on-using-github-copilot/using-copilot-to-explore-a-codebase.md @@ -0,0 +1,104 @@ +--- +title: Using Copilot to explore a codebase +shortTitle: Explore a codebase +intro: '{% data variables.copilot.copilot_chat %} can help you gain an understanding of the content, structure, and functionality of a codebase.' +topics: + - Copilot +versions: + feature: copilot +--- + +## Introduction + +If you've been assigned to work on a project that you're not familiar with—or you've found an interesting open source project that you want to contribute to—you'll need some understanding of the codebase before you can start making changes. This guide will show you how to use {% data variables.copilot.copilot_chat %} to explore a codebase and quickly learn about the project. + +## Working with {% data variables.copilot.copilot_chat_short %} + +Throughout this guide, we'll work on {% data variables.product.prodname_dotcom_the_website %}, using {% data variables.copilot.copilot_chat_short %} in assistive mode, which displays a {% data variables.copilot.copilot_chat_short %} panel over the bottom right corner of your current page on {% data variables.product.prodname_dotcom_the_website %}. + +You can expand the {% data variables.copilot.copilot_chat_short %} panel, to give more space for displaying {% data variables.product.prodname_copilot_short %}'s responses, by clicking and dragging the edges of the panel. + +## Using the predefined prompts + +{% data variables.copilot.copilot_chat_short %} comes with a set of predefined prompts that can help you get started with exploring a codebase. You can use the prompts by clicking a button in the chat panel. The buttons are displayed when you start a new conversation with {% data variables.copilot.copilot_chat_short %}. The selection of prompts varies depending on the currently displayed page on {% data variables.product.prodname_dotcom_the_website %}. + +1. Open the repository you want to explore on {% data variables.product.prodname_dotcom_the_website %}. +1. Click the **Code** tab to display the main page of the repository. +1. {% data reusables.copilot.assistive-mode-instructions %} +1. Click the **Tell me about this repository** button in the chat panel. + + ![Screenshot of the chat panel with the 'Tell me about this repository' button highlighted.](/assets/images/help/copilot/tell-me-about-repo.png) + + > [!TIP] + > If this button is not displayed, make sure you are on the main page of the repository and click the plus sign ({% octicon "plus" aria-hidden="true" aria-label="plus" %}) at the top right of the {% data variables.product.prodname_copilot_short %} panel to start a new conversation. + + A predefined prompt is submitted to {% data variables.product.prodname_copilot_short %} and the response is displayed in the chat panel. + +1. Optionally, after reading the response, click the plus sign ({% octicon "plus" aria-hidden="true" aria-label="plus" %}) at the top right of the {% data variables.product.prodname_copilot_short %} panel to start a new conversation, then click **How to get started with this repository**. + +## Example prompts + +The following prompts are examples of the kind of questions you can ask {% data variables.product.prodname_copilot_short %} to help you find out about a codebase. + +### General questions + + + +* `Based on the code in this repository, give me an overview of the architecture of the codebase. Provide evidence.` + +* `Which languages are used in this repo? Show the percentages for each language.` + +* `What are the core algorithms implemented in this repo?` + +* `What design patterns are used in this repository? Give a brief explanation of each pattern that you find, and an example of code from this repository that uses the pattern, with a link to the file.` + +### Specific questions + +Whether these questions are useful will depend on the codebase you're exploring. + +* `How do I build this project?` + +* `Where is authentication handled in this codebase?` + +* `Analyze the code in this repository and tell me about the entry points for this application.` + +* `Describe the data flow in this application.` + +* `Analyze the code in this repository and tell me what application-level security mechanisms are employed. Provide references.` + +## Understanding the files in a directory + +Use {% data variables.product.prodname_copilot_short %} to help you understand the purpose of the files in a directory, or individual files. + +To find out about the files in a directory: + +1. Navigate to the directory on {% data variables.product.prodname_dotcom_the_website %}. +1. {% data reusables.copilot.assistive-mode-instructions %} +1. Ask {% data variables.product.prodname_copilot_short %}: `Explain the files in this directory`. + +To find out about a specific file: + +1. Open the file on {% data variables.product.prodname_dotcom_the_website %}. +1. {% data reusables.copilot.assistive-mode-instructions %} +1. For a small file, ask {% data variables.product.prodname_copilot_short %}: `Explain this file`. +1. For a large file, ask: `Explain what this file does. Start with an overview of the purpose of the file. Then, in appropriately headed sections, go through each part of the file and explain what it does in detail.` + +## Finding out about commits + +One good way to familiarize yourself with a project is to look at the recent work that's been happening. You can do this by browsing the recent commits. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.navigate-to-commit-page %} +1. Click a commit message to display a diff view for that commit. +1. In the {% data variables.copilot.copilot_chat_short %} panel, enter: `What does this commit do?`. +1. If necessary, you can follow up by entering: `Explain in more detail`. + +## Using the Insights tab + +In addition to using {% data variables.product.prodname_copilot_short %} to help you become familiar with a project, you can also use the **Insights** tab on {% data variables.product.prodname_dotcom_the_website %}. This gives you a high-level overview of the repository. + +For more information, see [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/using-pulse-to-view-a-summary-of-repository-activity) and [AUTOTITLE](/repositories/viewing-activity-and-data-for-your-repository/viewing-a-projects-contributors). + +## Further reading + +* [AUTOTITLE](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github) diff --git a/content/copilot/using-github-copilot/index.md b/content/copilot/using-github-copilot/index.md index 195f5a8e8827..0f7cd2f45c23 100644 --- a/content/copilot/using-github-copilot/index.md +++ b/content/copilot/using-github-copilot/index.md @@ -19,7 +19,7 @@ children: - /using-extensions-to-integrate-external-tools-with-copilot-chat - /ai-models - /finding-public-code-that-matches-github-copilot-suggestions - - /using-github-copilot-for-pull-requests + - /creating-a-pull-request-summary-with-github-copilot - /using-github-copilot-to-create-issues - /guides-on-using-github-copilot redirect_from: diff --git a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md deleted file mode 100644 index ba3ac0a0197f..000000000000 --- a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/index.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Using GitHub Copilot for pull requests -shortTitle: '{% data variables.product.prodname_copilot_short %} for pull requests' -intro: 'Learn how {% data variables.product.prodname_copilot_short %} can help you work on pull requests.' -versions: - feature: copilot -topics: - - Copilot -children: - - /using-copilot-to-help-you-work-on-a-pull-request - - /creating-a-pull-request-summary-with-github-copilot ---- diff --git a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md b/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md deleted file mode 100644 index 7b1fc067f373..000000000000 --- a/content/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Using Copilot to help you work on a pull request -shortTitle: Work on a PR -intro: 'You can iterate, validate, and integrate suggested changes to code by using {% data variables.copilot.copilot_workspace %}.' -product: '{% data reusables.gated-features.copilot-free-availability %}' -versions: - feature: copilot-hadron -topics: - - Copilot ---- - -> [!NOTE] {% data variables.copilot.copilot_workspace %} is in limited {% data variables.release-phases.public_preview %}. The waitlist for admission to this preview is currently closed. - -## About using {% data variables.product.prodname_copilot_short %} to help you work on your pull requests - -After you create a pull request, you can continue working on the PR on the {% data variables.product.github %} website. This article is about {% data variables.copilot.copilot_workspace %}, which provides a {% data variables.product.prodname_copilot_short %}-enabled environment for: - -* **Refining** your pull requests -* **Validating** changes -* **Integrating** suggestions from reviewers - -{% data variables.copilot.copilot_workspace %} enables you to work on your pull requests in one place - on {% data variables.product.github %} - from pull request creation to merge. - -{% data variables.product.prodname_copilot_short %} can help with pull requests in other ways too. These are explained in separate articles. {% data variables.product.prodname_copilot_short %} can: -* Write a pull request summary for you - see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/creating-a-pull-request-summary-with-github-copilot). -* Review a pull request for you - see [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). -* Suggest fixes for coding problems identified by {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} - see [AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning). - -### Benefits of {% data variables.copilot.copilot_workspace %} - -{% data variables.copilot.copilot_workspace %}: - -* Allows you to work on a pull request without having to switch back and forward between the {% data variables.product.github %} website and your IDE. -* Gives you easy access to view/test/modify/apply coding suggestions, from {% data variables.product.prodname_copilot_short %} code reviews and {% data variables.copilot.copilot_autofix_short %}, as well as reviews by human reviewers. -* Gives you {% data variables.product.prodname_copilot_short %} code completion suggestions on {% data variables.product.github %}. Previously these were only available in an IDE. -* Shows you a list of files changed by the pull request, within the browser-based editor, but also allows you to find and edit any file from across the repo. -* Enables you to build, test, and run your code directly from the {% data variables.copilot.copilot_workspace_short %} environment on {% data variables.product.github %}. - -## Prerequisites - -Using {% data variables.copilot.copilot_workspace %} requires an existing pull request on the {% data variables.product.github %} website and either of the following: - -* Access to this {% data variables.release-phases.public_preview %} from the waitlist (now closed). -* Access to {% data variables.product.prodname_GHAS %} (GHAS) features on a private repository owned by an organization on a {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} plan. See [AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security). - -Without access to {% data variables.copilot.copilot_workspace %} you can still edit the files in pull requests by going to the **Files changed** tab, clicking the ellipsis (**...**) next to the file you want to edit, and then clicking **Edit file**. - -## Editing files in a pull request - -To work on a pull request in {% data variables.copilot.copilot_workspace %}: - -1. Click the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %} Open in {% data variables.copilot.copilot_workspace_short %}** button on the right side of the main page of a pull request. - - {% data variables.copilot.copilot_workspace %} opens, displaying an overview of the pull request. - - At the left of the {% data variables.copilot.copilot_workspace %} window is a list of the files changed by the pull request. - - ![Screenshot of the list of files in a PR, at the left of {% data variables.copilot.copilot_workspace %}.](/assets/images/help/copilot/workspace-files-in-pr.png) - -1. To work on a file that is not currently changed by this pull request, click **Files in this pull request** and, from the dropdown, select **All files in this repository**. -1. Click a file in the list to open the file in the {% data variables.copilot.copilot_workspace_short %} editor. - - The file is displayed in a diff view. You can change the view if required. See [Changing the {% data variables.copilot.copilot_workspace_short %} options](#changing-the-workspace-options) later in this article. - - You can open and change multiple files before committing your changes. - -1. After you have finished making changes, click **Review and commit**. - - The **Commit changes** panel is displayed. {% data variables.product.prodname_copilot_short %} autogenerates a commit message for you, based on the changes you have made. You can edit the message and add an extended description if you want. - - ![Screenshot of the "Commit changes" panel showing an autogenerated commit message and three changed files.](/assets/images/help/copilot/workspace-commit-changes.png) - - The panel lists the files you have changed. You can expand each file to see the changes you have made. - -1. Optionally, if you edited multiple files and you decide you don't want to commit all of the changes in a single commit, clear the check box beside the files whose changes you don't want to commit. When you click **Commit changes**, the changes you applied to those files will remain applied but uncommitted, and you can add them to the pull request in a separate commit. - - > [!NOTE] If you clear the check box beside some files you may need to rewrite the commit message to avoid mentioning the changes to those files. - -1. Click **Commit changes**. - - Alternatively, click **Reset all changes** to return the files to their current state in the pull request, losing the changes you made in the {% data variables.copilot.copilot_workspace_short %} editor panel. Resetting your changes cannot be undone. - -## Using {% data variables.product.prodname_copilot_short %} to work on pull request comments - -You can use {% data variables.copilot.copilot_workspace %} to work through all comments on your pull request, one after the other, and then commit any changes you choose to make in a single commit. - -1. On a comment that includes a code change suggestion, click **Open in {% data variables.copilot.copilot_workspace_short %}**. - - ![Screenshot of a coding suggestion by {% data variables.copilot.copilot_code-review_short %}.](/assets/images/help/copilot/workspace-copilot-review-suggestion.png) - - {% data variables.copilot.copilot_workspace %} opens, displaying the suggested change in the Suggestions panel on the right of the {% data variables.copilot.copilot_workspace_short %} window. - -1. Review the suggested change, then click one of the two buttons at the bottom of the Suggestions panel: - - * **Apply** - If you agree with the suggested change. - * **Dismiss** - If you do not want to make the suggested change. - -1. If there are multiple comments in the pull request, you can step through to the next comment by clicking the **>** arrow at the bottom of the Suggestions panel. - - ![Screenshot of the Suggestions panel, showing the ">" arrow and "Dismiss" and "Apply" buttons.](/assets/images/help/copilot/workspace-next-comment.png) - -1. Optionally, to see a list of all of the comments in the pull request, click the back arrow at the top left of the Suggestions panel. - - ![Screenshot of the Suggestions panel, showing the back arrow at the top left.](/assets/images/help/copilot/workspace-all-comments.png) - - If you have accepted or dismissed any suggestions, these are shown within "applied" and "dismissed" dropdowns, which make it easy to see which suggestions you have not yet dealt with. - - ![Screenshot a list of comments in the Suggestions panel. Two are awaiting action. Beneath this are dropdown links headed "1 applied" and "1 dismissed."](/assets/images/help/copilot/workspace-applied-dismissed.png) - -1. After you have finished reviewing the suggested changes, click **Review and commit**. -1. Optionally, if you decide you don't want to commit all of the applied changes in a single commit, clear the check box beside the files whose changes you don't want to commit. When you click **Commit changes**, the changes you applied to those files will remain applied but uncommitted, and you can add them to the pull request in a separate commit. -1. Click **Commit changes**. - - Alternatively, click **Reset all changes** to return the suggestions to their initial state, losing the apply or dismiss choices you made, and losing any changes you made by editing files directly in the {% data variables.copilot.copilot_workspace_short %} editor panel. Resetting your changes cannot be undone. - -## Chatting with {% data variables.product.prodname_copilot_short %} about a pull request - -1. At the top of the {% data variables.copilot.copilot_workspace_short %} window, click the {% octicon "copilot" aria-label="Toggle {% data variables.product.prodname_copilot_short %} button. -1. At the bottom of the {% data variables.product.prodname_copilot_short %} panel, type a question in the "Ask {% data variables.product.prodname_copilot_short %}" box then press Enter. - - You can ask questions about: - - * **The currently displayed file** - for example, "how could I improve this file?" - * **The whole pull request** - for example, "what frameworks are referenced in this pull request?" - * **General programming topics** - for example, "what is the latest version of ruby?" - - For more information, see [AUTOTITLE](/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom). - -> [!NOTE] Currently not all {% data variables.copilot.copilot_chat_short %} features are available in the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_workspace %}. - -## Verifying your changes - -{% data variables.copilot.copilot_workspace_short %} includes a built-in terminal and a quick way to build, run, and test your code. - -### Opening the terminal - -To open the terminal, click {% octicon "terminal" aria-label="Toggle console panel" %} at the top right of the {% data variables.copilot.copilot_workspace_short %} editor panel. - -> [!NOTE] The terminal requires a codespace to be running. If you don't see the {% octicon "terminal" aria-label="Toggle console panel" %} icon, you may need to wait a few seconds for the codespace to start. - -### Running terminal commands - -You can type commands directly into the terminal, or you can use quick commands to run commonly used commands with a couple of clicks. - -#### Configuring personal quick commands - -You can configure **Build**, **Run**, and **Test** commands that you can use when you work on a specific project in {% data variables.copilot.copilot_workspace %}. If commands have already been configured for the repository, you can replace them with alternative commands for your own personal use. - -1. At the top of the {% data variables.copilot.copilot_workspace_short %} window, click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Configure**. - - If **Build**, **Run**, and **Test** quick commands have already been defined, the **{% octicon "play" aria-hidden="true" aria-label="play" %} Build** button is displayed instead of **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Configure**. Click the dropdown arrow beside the **{% octicon "play" aria-hidden="true" aria-label="play" %} Build** button and then click **{% octicon "gear" aria-hidden="true" aria-label="gear" %} Configure** from the dropdown menu. - - ![Screenshot of the "Commands" dropdown menu with the "Configure" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-configure-commands.png) - -1. In the "Configure commands" dialog, enter the commands you want to use for **Build**, **Run**, and **Test** options. -1. Click **Save**. - -#### Configuring quick commands for your repository - -You can set default **Build**, **Run**, and **Test** commands for everyone who uses {% data variables.copilot.copilot_workspace %} to work on pull requests for your repository. - -1. Create or edit a file in the root of your repository called `.devcontainer/devcontainer.json`. - - > [!NOTE] The `.devcontainer/devcontainer.json` file is a configuration file for codespaces created for a repository. For more information, see [AUTOTITLE](/enterprise-cloud@latest/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#devcontainerjson). - -1. Add a `commands` section as follows, replacing the example commands shown here with the commands that people working on your repository should use. - - ```json - { - "commands": { - "Build": "make", - "Run": "./bin/start", - "Test": "make test" - } - } - ``` - -1. Click **Save**. - -#### Using {% data variables.copilot.copilot_workspace_short %} quick commands - -1. To run the first of the defined quick commands (typically **Build**), click the button at the top of the {% data variables.copilot.copilot_workspace_short %} window. -1. To run a different quick command, click the dropdown arrow beside the button and then click the command you want to run from the dropdown menu. - - ![Screenshot of the "Commands" dropdown menu with the "Run" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-run-command.png) - -1. After clicking **Run**, while the process is running, you can click the dropdown arrow again and choose from options to stop or restart the process, or view the output from the run command. - - ![Screenshot of the dropdown menu for a running application with the "Stop" option highlighted with a dark orange outline.](/assets/images/help/copilot/workspace-stop-command.png) - -#### Previewing a web application - -If your run command starts a web server, the {% octicon "globe" aria-label="Open preview" %} button is displayed at the top of the {% data variables.copilot.copilot_workspace_short %} window. - -Click this button to preview the server output in a new tab of your browser. - -## Changing the {% data variables.copilot.copilot_workspace_short %} options - -You can change how files are displayed in {% data variables.copilot.copilot_workspace %}. - -### Changing the diff view - -1. Click the compare picker icon ({% octicon "git-compare" aria-hidden="true" aria-label="git-compare" %}), at the top right of the {% data variables.copilot.copilot_workspace_short %} editor panel. -1. Choose a view option: - - * **Unified** - Shows changes in a single view, with added lines highlighted in green and removed lines highlighted in red. - * **Split** - Shows changes in a split view, with the original file on the left and the new file on the right. - * **Hidden** - Shows the current state of the file in this pull request, without showing what changes the PR makes. - -### Wrapping long lines - -1. Click the ellipsis (**...**), at the top right of the {% data variables.copilot.copilot_workspace_short %} editor panel. -1. Click **Wrap lines** to toggle line wrapping on or off. diff --git a/content/get-started/exploring-projects-on-github/using-github-copilot-to-explore-projects.md b/content/get-started/exploring-projects-on-github/using-github-copilot-to-explore-projects.md index 6514ab691942..791859858c33 100644 --- a/content/get-started/exploring-projects-on-github/using-github-copilot-to-explore-projects.md +++ b/content/get-started/exploring-projects-on-github/using-github-copilot-to-explore-projects.md @@ -38,6 +38,10 @@ When you’re exploring a project, you might want to understand the contents of {% data reusables.copilot.chat-about-specific-lines %} +## Further reading + +* [AUTOTITLE](/copilot/using-github-copilot/guides-on-using-github-copilot/using-copilot-to-explore-a-codebase) + ## Next steps Now that you know how to use {% data variables.product.prodname_copilot_short %} to explore projects, you can use it to help you understand any repository, file, or line of code on {% data variables.product.prodname_dotcom %}. diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md index 2ac805bed74f..cb09d2d34d15 100644 --- a/content/get-started/learning-about-github/about-github-advanced-security.md +++ b/content/get-started/learning-about-github/about-github-advanced-security.md @@ -150,7 +150,7 @@ A site administrator must enable {% data variables.product.prodname_AS %} for {% {% ifversion security-configurations %}{% else %}Once your system is set up, you can enable and disable these features at the organization or repository level. See [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization) and [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository).{% endif %} -If you are on a {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} plan, license use for the entire team or enterprise is shown on your license page. See [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage). +If you are on a {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} plan, license use for the entire team or enterprise is shown on your license page. {% ifversion fpt or ghec %}See [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage).{% endif %} {% ifversion copilot-chat-ghas-alerts %} diff --git a/content/get-started/learning-to-code/developing-your-project-locally.md b/content/get-started/learning-to-code/developing-your-project-locally.md new file mode 100644 index 000000000000..19e5de650b45 --- /dev/null +++ b/content/get-started/learning-to-code/developing-your-project-locally.md @@ -0,0 +1,104 @@ +--- +title: Developing your project locally +intro: 'Learn how to create a local development environment by working with an example client-side application built on HTML, CSS, and JavaScript.' +versions: + fpt: '*' +shortTitle: Local development +--- + +## Overview + +Local development means setting up and **running your project on your own computer** instead of in the cloud or on a remote server. When you develop locally, you can work on your code without an internet connection and experiment without affecting the live application. + +The steps required to configure a local development environment are different for each project, based on its programming languages, frameworks, tools, and dependencies. In this guide, you'll learn **core skills** needed to set up any project by working with an example client-side application built on HTML, CSS, and JavaScript. You can then apply those same skills to other projects in the future. + +## Installing essential development tools + +Before you can start, you'll need to install some essential tools that are widely used for local development. + +1. [Set up {% data variables.product.prodname_vscode_shortname %} with {% data variables.product.prodname_copilot %}](https://code.visualstudio.com/docs/copilot/setup-simplified). +1. [Install Git](https://git-scm.com/downloads). + +## Cloning and opening the repository in {% data variables.product.prodname_vscode_shortname %} + +First, make a copy of the repository on your computer by cloning it. + +1. [Start by cloning the new2code/client-side-web-application repository](vscode://vscode.git/clone?url=https://github.com/new2code/client-side-web-application). This link opens a dialog in {% data variables.product.prodname_vscode_shortname %} to clone the repository. +1. Choose a location to save the repository on your computer, then click **Select as Repository Destination**. +1. When prompted, open the repository. + +## Installing project requirements + +1. [Open {% data variables.copilot.copilot_chat_short %}](vscode://GitHub.Copilot-Chat), then ask it to identify what you need to install with the following prompt. + + ```text copy + What do I need to install to develop this project locally? + ``` + + For this example, {% data variables.product.prodname_copilot_short %} will say that this project needs Node.js. Node.js allows you to run JavaScript code on your computer and provides tools for web development. + +1. Ask {% data variables.product.prodname_copilot_short %} how to install the project requirements, then follow the steps to install them on your computer. + + For this example, we could ask "How do I install Node.js?" {% data variables.product.prodname_copilot_short %} will provide instructions for visiting https://nodejs.org/ and downloading the installer. + +## Installing project dependencies + +Now that you have the required software installed, you need to understand how to use it for this specific project. + +**Check the README file first**. Most projects include a README file in the root directory that explains how to set up and run the project. For this project, both the README file and asking {% data variables.product.prodname_copilot_short %} will tell you that the next step is to install the project's dependencies using npm, the Node.js package manager. + +1. Open the Command Palette by pressing Ctrl+Shift+P (Windows/Linux) or Cmd+Shift+P (Mac). + +1. Type `Terminal: Create New Terminal` and press Enter. + +1. In the terminal tab, paste the following command. + + ```bash copy + npm install + ``` + +Because this project uses Node.js, we used `npm install` to read the `package.json` file and download all the dependencies the project needs to work properly. Other types of projects will use different commands. For example, Python projects might use `pip install -r requirements.txt`, and Ruby projects might use `bundle install`. + +If the README doesn't include information about installing dependencies, you can: + +* **Look for configuration files**: Different projects use different files to list their dependencies—for example, Node.js projects use `package.json`, Python projects use `requirements.txt`, and Ruby projects use `Gemfile`. +* **Ask {% data variables.product.prodname_copilot_short %}**: Try a prompt like, "Now that I have Node.js installed, what's the next step to set up this project?" + +## Running and developing your project + +Now that your development environment is set up, you can start the development server and use it to preview changes to your code. + +1. Find out how to start the project by checking the README file in your project folder. + + For this example, the "Steps for running locally" section of the README explains that you can start the development server with the `npm start` command. Enter the following command in your terminal. + + ```bash copy + npm start + ``` + +1. To identify where the local server is available, review the terminal output. You'll see that the local server is available on http://localhost:8080. Navigate to that address in your browser. +1. Make a small change to the code, such as editing some text in the HTML file or changing a color in the CSS file. Save your changes. +1. Check the project documentation or terminal output to understand how to see your changes. Some projects automatically refresh after you save the changes, while others require refreshing your browser window. + + For this project, refresh your browser window to see your changes. + +If the README doesn't contain the information you need, check the configuration files for available commands. You can also ask [{% data variables.copilot.copilot_chat_short %}](vscode://GitHub.Copilot-Chat) with the following prompt. + +```text copy +How do I start this project locally? +``` + +## What's next? + +Now that you've successfully set up your first local development environment, it's time to apply these skills to different types of projects. + +**Practice with a different project**: Try setting up another project with different requirements. For example, [@new2code's Python web application](https://github.com/new2code/python-web-application) uses Python and Flask instead of Node.js. + +Use what you learned in this tutorial to: + +* Clone the repository using {% data variables.product.prodname_vscode_shortname %} +* Ask {% data variables.product.prodname_copilot_short %} what tools and dependencies you need to install +* Read the README file to understand how to run the project +* Get the application running in your browser + +This practice will help you recognize patterns across different technologies and build confidence in your ability to set up any project locally. diff --git a/content/get-started/learning-to-code/finding-and-fixing-your-first-code-vulnerability.md b/content/get-started/learning-to-code/finding-and-fixing-your-first-code-vulnerability.md index e91ee9b9c673..a198d41094d0 100644 --- a/content/get-started/learning-to-code/finding-and-fixing-your-first-code-vulnerability.md +++ b/content/get-started/learning-to-code/finding-and-fixing-your-first-code-vulnerability.md @@ -79,3 +79,5 @@ To secure our project quickly and easily, let's use {% data variables.copilot.co ## Next steps Now that you've tried out {% data variables.product.prodname_code_scanning %} on a demo repository, **enable it on your own projects** to quickly find and fix current and future vulnerabilities. + +Now that you've secured the code you've written yourself, take the next step towards secure code by checking the security of your **dependencies**. See [AUTOTITLE](/get-started/learning-to-code/finding-and-fixing-your-first-dependency-vulnerability). diff --git a/content/get-started/learning-to-code/finding-and-fixing-your-first-dependency-vulnerability.md b/content/get-started/learning-to-code/finding-and-fixing-your-first-dependency-vulnerability.md new file mode 100644 index 000000000000..c75afde3ed32 --- /dev/null +++ b/content/get-started/learning-to-code/finding-and-fixing-your-first-dependency-vulnerability.md @@ -0,0 +1,97 @@ +--- +title: Finding and fixing your first dependency vulnerability +shortTitle: Secure your dependencies +intro: 'Learn how to keep your dependencies secure by enabling {% data variables.product.prodname_dependabot %} and its features in a demo repository.' +versions: + fpt: '*' +topics: + - Code Security + - Dependabot + - Dependencies + - Alerts +--- + +Using pre-written collections of code in your project, called **libraries** or **packages**, is common practice. These code modules save you a ton of time, letting you focus on the new, creative aspects of your work instead of coding large reusable components from scratch. When added to your project, they are called **dependencies**, since your work is dependent on the code they contain. + +While using dependencies is perfectly normal, dependencies can contain code vulnerabilities, which would in turn make your project insecure. Luckily, tools like {% data variables.product.prodname_dependabot %} can find dependency vulnerabilities, raise pull requests to fix them, and even prevent them from happening in the future. In this tutorial, you'll learn how to enable and use {% data variables.product.prodname_dependabot %} and its features to keep your dependencies secure. + +## Setting up the demo repository + +Let's get started by forking a demo project with some dependency vulnerabilities. Since we won't deploy the project, there is **no security risk** in this exercise. + +1. Navigate to the [`new2code/dependabot-demo`](https://github.com/new2code/dependabot-demo) repository. +1. In the top right of the page, click {% octicon "repo-forked" aria-hidden="true" %} **Fork**. +1. On the page that appears, click **Create fork**. + +## Enabling dependency security features + +Now that we've set up the project, let's configure {% data variables.product.prodname_dependabot %} to find and create fixes for insecure dependencies. + +1. In the navigation bar for your repository, click {% octicon "shield" aria-hidden="true" %} **Security**. +1. In the "{% data variables.product.prodname_dependabot_alerts %}" row, click **Enable {% data variables.product.prodname_dependabot_alerts %}**. +1. In the "{% data variables.product.prodname_dependabot %}" section, next to "{% data variables.product.prodname_dependabot_alerts %}", click **Enable**. +1. In the pop up that appears, read the statement about enabling the dependency graph, then click **Enable**. +1. To allow {% data variables.product.prodname_dependabot %} to automatically open pull requests fixing dependency vulnerabilities, next to "{% data variables.product.prodname_dependabot_security_updates %}", click **Enable**. + +## Viewing your insecure dependencies + +With {% data variables.product.prodname_dependabot %} configured, let's find out which of our dependencies contain vulnerabilities. + +1. In the navigation bar for your repository, click {% octicon "shield" aria-hidden="true" %} **Security**. +1. To see the {% data variables.product.prodname_dependabot_alerts %} for your repository, in the side navigation, click {% octicon "dependabot" aria-hidden="true" %} **{% data variables.product.prodname_dependabot %}**. +1. To see detailed information about an alert, click the alert title. For this exercise, click **Command Injection in hot-formula-parser**. + +## Understanding a Dependabot alert + +Now that {% data variables.product.prodname_dependabot %} has identified some vulnerabilities in our dependencies, let's break down the information provided in the "Command Injection in hot-formula-parser" alert. + +### Fix summary + +Below the title of the alert, you can see a short summary of the **fix** for this vulnerability, including the number of alerts it will close and the location of the vulnerability. In our case, the alert tells us that upgrading the `hot-formula-parser` package to version 3.0.1 will fix one {% data variables.product.prodname_dependabot %} alert identified in our `javascript/package-lock.json` file. + +This section also tracks {% data variables.product.prodname_dependabot %}'s progress creating a pull request to fix the vulnerability. Once a fix is available, you'll see a button labeled "{% octicon "dependabot" aria-hidden="true" %} Review security update" linking to the pull request. + +![Screenshot of the fix summary section of a {% data variables.product.prodname_dependabot %} alert.](/assets/images/help/dependabot/dependabot-alert-fix-summary.png) + +### Vulnerability details + +Below the fix details, {% data variables.product.prodname_dependabot %} provides more information about the vulnerability, including: + +* The name of the vulnerable package +* The versions of the package that contain the vulnerability +* The version of the package that fixes the vulnerability +* Details on the type of vulnerability and how it can be exploited + +![Screenshot of the vulnerability details section of a {% data variables.product.prodname_dependabot %} alert.](/assets/images/help/dependabot/dependabot-alert-vulnerability-details.png) + +In this alert, we can see that the `parse` function in the `hot-formula-parser` package doesn't properly check that user input is safe before executing it, which allows attackers to run malicious commands. + +> [!TIP] If you don't fully understand the vulnerability details, try [asking {% data variables.copilot.copilot_chat_short %}](https://github.com/copilot) to explain them. + +### Timeline + +Finally, you can see the timeline of the alert at the bottom of the page. Our timeline currently contains the timestamp when {% data variables.product.prodname_dependabot %} opened the alert, and will be updated automatically when we fix the vulnerability. + +![Screenshot of the timeline for a {% data variables.product.prodname_dependabot %} alert.](/assets/images/help/dependabot/dependabot-alert-timeline.png) + +## Securing your dependencies + +To secure our project quickly and easily, let's apply the fix {% data variables.product.prodname_dependabot %} created. + +1. In the alert field with the fix summary, click {% octicon "dependabot" aria-hidden="true" %} **Review security update**. +1. On the pull request page, click {% octicon "file-diff" aria-hidden="true" %} **Files changed** to see {% data variables.product.prodname_dependabot %}'s changes. After you review the changes, click {% octicon "comment-discussion" aria-hidden="true" %} **Conversation** to return to the pull request overview. +1. To apply the fix, at the bottom of the page, click **Merge pull request**, then click **Confirm merge**. + + Once the pull request merges, the linked {% data variables.product.prodname_dependabot %} alert will close automatically, and the fix time will be added to the timeline. + +## Preventing future dependency vulnerabilities + +To help avoid insecure dependencies moving forward, let's allow {% data variables.product.prodname_dependabot %} to automatically open pull requests updating your dependencies as new versions are released. + +1. In the navigation bar for your repository, click {% octicon "gear" aria-hidden="true" %} **Settings**. +1. In the "Security" section of the sidebar, click {% octicon "codescan" aria-hidden="true" %} **{% data variables.product.prodname_AS %}**. +1. Next to "{% data variables.product.prodname_dependabot_version_updates %}", click **Enable**. + +## Next steps + +Now that you've tried out {% data variables.product.prodname_dependabot %} and its features on a demo repository, **enable them on your own projects** to easily find, fix, and prevent dependency vulnerabilities. diff --git a/content/get-started/learning-to-code/getting-feedback-on-your-code-from-github-copilot.md b/content/get-started/learning-to-code/getting-feedback-on-your-code-from-github-copilot.md new file mode 100644 index 000000000000..9ef6ae33f2fd --- /dev/null +++ b/content/get-started/learning-to-code/getting-feedback-on-your-code-from-github-copilot.md @@ -0,0 +1,91 @@ +--- +title: Getting feedback on your code from GitHub Copilot +shortTitle: Getting feedback on your code +intro: "Learn how you can ask {% data variables.product.prodname_copilot %} to review your code changes and apply the suggested changes it creates." +versions: + fpt: '*' +topics: + - Copilot + - Pull requests + - GitHub + - Open Source +--- + +## About coding collaboratively + +When you're working with others on {% data variables.product.github %}, you typically make your changes in a branch or fork of the main project and then submit them as a pull request. A pull request shows the differences between the original code and your changes, and invites the repository maintainer to merge your code into the project. + +Getting feedback on your pull request from others is an important part of the software development process. Pull request reviews improve the specific code you're working on, and also improves your coding and collaboration skills over time. Sometimes, especially when you're learning to code, you may not always have someone to ask for feedback. In those cases, you can get feedback and all its benefits from {% data variables.product.prodname_copilot %} instead. + +A pull request is a collaborative place where you can show other people the changes you're proposing and get feedback. When you request a review from Copilot, you'll be learning the same process that you'll use use when working with development teams. The only difference is you'll also be requesting reviews from human colleagues alongside Copilot. + +>[!NOTE] +>{% data variables.copilot.copilot_code-review_short %} on the {% data variables.product.github %} website is a premium feature, available with the {% data variables.copilot.copilot_pro_short %}, {% data variables.copilot.copilot_pro_plus_short %}, {% data variables.copilot.copilot_business_short %}, and {% data variables.copilot.copilot_enterprise_short %} plans. For more information about how using {% data variables.copilot.copilot_code-review_short %} affects your quotas, see [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review#code-review-monthly-quota). If you're a student, you may be able to get {% data variables.copilot.copilot_pro_short %} for free, see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/getting-started-with-copilot-on-your-personal-account/getting-free-access-to-copilot-pro-as-a-student-teacher-or-maintainer). + +## 1. Creating the practice repository + +In this exercise, you’ll use a sample repository with existing code. The sample repository is [`new2code/grid-toy`](https://github.com/new2code/grid-toy), a small HTML and JavaScript project that displays a grid of color-changing squares. This is a {% data variables.product.prodname_pages %} site and you can view the original version at https://new2code.github.io/grid-toy. + +Get started by creating your own copy of the `grid-toy` repository. + +1. Navigate to the [new repository page](https://github.com/new?template_owner=new2code&template_name=grid-toy). Following this link will pre-select the template on the `new2code` account. +1. Under "Owner", select your user account. +1. In the "Repository name" field, type "grid-toy". +1. Click **Create repository**. + +## 2. Making a change + +Next, you’ll make a change to the JavaScript file. + +1. In your new repository, click **`script.js`** in the file list. +1. To edit the JavaScript file, at the top-right, click {% octicon "pencil" aria-label="Edit this file" %}. +1. On line 25, add the following code: + + ```javascript copy + if (Math.random() < INVERT_PROBABILITY) { + cell.classes.add("black"); + } + ``` + + This change randomly sets some grid squares to black when the page loads. There's a deliberate error to trigger feedback from {% data variables.product.prodname_copilot %}: the correct property is + actually `.classList` and not `.classes`. {% data variables.product.prodname_copilot %} should help us fix this. +1. To commit the change, at the top-right, click **Commit changes...** +1. In the "Commit message" field, enter something like "Randomly set squares on load". +1. Select **Create a new branch for this commit and start a pull request**. +1. Click **Propose changes**. + +## 3. Creating a pull request and requesting a review + +Now complete the pull request and request a review. + +1. Type a title and, optionally, a description for your pull request. +1. Click **Reviewers**. + * If Copilot appears in the suggested list, click "Copilot". + * If not, start typing "Copilot", then click the result. +1. Click **Create pull request**. + +You’ll be taken to your new pull request. + +## 4. Applying a suggested change + +Within a few minutes, {% data variables.product.prodname_copilot %} will review your pull request, produce a summary, and create suggested changes for any problems found. + +1. Wait for the review from {% data variables.product.prodname_copilot %} to appear. +1. One of these suggestions should correct the intentional error from earlier by changing `.classes` to `.classList`. Below the suggested change, click **Commit suggestion**. + + ![Screenshot of a suggested change from {% data variables.product.prodname_copilot %}. The "Commit suggestion" button is highlighted in an orange outline.](/assets/images/help/copilot/copilot-gridtoy-change.png) + +1. Click **Commit changes**. +1. It's possible that {% data variables.product.prodname_copilot %} found other improvements and left additional comments. If you understand the changes suggested, you can apply these too. + +## 5. Merging + +Once you're happy with the changes, you can merge the pull request. This adds the changes from your branch to the repository’s default branch (`main`). + +1. At the bottom of the page, click **Merge pull request**. +1. Optionally, update the commit message. +1. Press **Confirm merge**. + +## Next steps + +The project can be published using {% data variables.product.prodname_pages %}. Now you've made some changes, you could publish your version of the repository to see it in action. See [AUTOTITLE](/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site). diff --git a/content/get-started/learning-to-code/index.md b/content/get-started/learning-to-code/index.md index 67f866e5f4df..6b0b141759d2 100644 --- a/content/get-started/learning-to-code/index.md +++ b/content/get-started/learning-to-code/index.md @@ -8,8 +8,11 @@ children: - /finding-and-understanding-example-code - /reusing-other-peoples-code-in-your-projects - /setting-up-copilot-for-learning-to-code + - /developing-your-project-locally - /learning-to-debug-with-github-copilot - /storing-your-secrets-safely + - /getting-feedback-on-your-code-from-github-copilot - /finding-and-fixing-your-first-code-vulnerability + - /finding-and-fixing-your-first-dependency-vulnerability shortTitle: Learn to code --- diff --git a/content/get-started/using-github/github-mobile.md b/content/get-started/using-github/github-mobile.md index 72cc26805625..e9fc24ec7671 100644 --- a/content/get-started/using-github/github-mobile.md +++ b/content/get-started/using-github/github-mobile.md @@ -26,19 +26,19 @@ With {% data variables.product.prodname_mobile %} you can: * Read, review, and collaborate on issues and pull requests * Edit files in pull requests * Search for, browse, and interact with users, repositories, and organizations -* Receive a push notification when someone mentions your username -{% ifversion mobile-code-search %}- Search through code in a specific repository{% endif %} -{% ifversion fpt or ghec %}- Secure your GitHub.com account with two-factor authentication -* Verify your sign in attempts on unrecognized devices{% endif %} -{% ifversion copilot-chat-for-mobile %}- Use {% data variables.copilot.copilot_chat %} to ask and receive answers to coding-related questions{% endif %} +* Receive a push notification when someone mentions your username{% ifversion mobile-code-search %} +* Search through code in a specific repository{% endif %}{% ifversion fpt or ghec %} +* Secure your {% data variables.product.prodname_dotcom_the_website %} account with two-factor authentication +* Verify your sign in attempts on unrecognized devices{% endif %}{% ifversion copilot-chat-for-mobile %} +* Use {% data variables.copilot.copilot_chat %} to ask and receive answers to coding-related questions{% endif %} The following documentation contains more information about using {% data variables.product.company_short %} features on {% data variables.product.prodname_mobile %}. -* For more information about notifications for {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#enabling-push-notifications-with-github-mobile). -{% ifversion mobile-code-search %}- For more information about using {% data variables.product.prodname_dotcom %} code search on {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/search-github/github-code-search/using-github-code-search#using-github-code-search-on-github-mobile).{% endif %} -{% ifversion fpt or ghec %}- For more information on two-factor authentication using {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-github-mobile) and [Authenticating using {% data variables.product.prodname_mobile %}](/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication#verifying-with-github-mobile). {% endif %} -{% ifversion copilot-chat-for-mobile %}- For more information about using {% data variables.copilot.copilot_mobile %}, see [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github-mobile/using-github-copilot-chat-in-github-mobile).{% endif %} -{% ifversion copilot-chat-for-mobile %}- For more information about using {% data variables.copilot.copilot_extensions %} in {% data variables.product.prodname_mobile %}, see [Extending {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_mobile %}](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile#extending-copilot-chat-in-github-mobile).{% endif %} +* For more information about notifications for {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#enabling-push-notifications-with-github-mobile).{% ifversion mobile-code-search %} +* For more information about using {% data variables.product.prodname_dotcom %} code search on {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/search-github/github-code-search/using-github-code-search#using-github-code-search-on-github-mobile).{% endif %}{% ifversion fpt or ghec %} +* For more information on two-factor authentication using {% data variables.product.prodname_mobile %}, see [AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-github-mobile) and [Authenticating using {% data variables.product.prodname_mobile %}](/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication#verifying-with-github-mobile). {% endif %}{% ifversion copilot-chat-for-mobile %} +* For more information about using {% data variables.copilot.copilot_mobile %}, see [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github-mobile/using-github-copilot-chat-in-github-mobile).{% endif %}{% ifversion copilot-chat-for-mobile %} +* For more information about using {% data variables.copilot.copilot_extensions %} in {% data variables.product.prodname_mobile %}, see [Extending {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_mobile %}](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile#extending-copilot-chat-in-github-mobile).{% endif %} ## Installing {% data variables.product.prodname_mobile %} diff --git a/content/github-models/use-github-models/evaluating-ai-models.md b/content/github-models/use-github-models/evaluating-ai-models.md index 9d43d5e154f4..5bb54d12d3bf 100644 --- a/content/github-models/use-github-models/evaluating-ai-models.md +++ b/content/github-models/use-github-models/evaluating-ai-models.md @@ -1,6 +1,6 @@ --- -title: Evaluating AI models -intro: 'Test and compare AI model outputs using evaluators and scoring metrics in GitHub Models.' +title: Evaluating AI models +intro: 'Test and compare AI model outputs using evaluators and scoring metrics in {% data variables.product.prodname_github_models %}.' versions: feature: github-models shortTitle: Evaluate AI models @@ -10,7 +10,10 @@ topics: ## Overview -{% data variables.product.prodname_github_models %} provides a simple evaluation workflow that helps developers compare large language models (LLMs), refine prompts, and make data-driven decisions within the GitHub platform. You can use {% data variables.product.prodname_github_models %} to experiment with new features or validate model changes by analyzing performance, accuracy, and cost through structured evaluation tools. +{% data variables.product.prodname_github_models %} provides a simple evaluation workflow that helps developers compare large language models (LLMs), refine prompts, and make data-driven decisions within the {% data variables.product.github %} platform. You can use {% data variables.product.prodname_github_models %} to experiment with new features or validate model changes by analyzing performance, accuracy, and cost through structured evaluation tools. + +>[!TIP] +> You can run evaluations directly from the command line using the `gh models eval` command. It uses the same evaluators as the UI: string match, similarity, custom LLM-as-a-judge evaluators, and more, so you can test your `.prompt.yml` file locally or in CI. ## Use cases for {% data variables.product.prodname_github_models %} @@ -41,7 +44,7 @@ In this step, you'll configure a model to generate summaries for customer suppor ### Defining the system prompt -Define the model's behavior for your current goal. In this case, the goal is to summarize customer feedback. Under **Parameters**, enter the following System prompt: +Define the model's behavior for your current goal. In this case, the goal is to summarize customer feedback. Under **Parameters**, enter the following System prompt: You are a helpful assistant that summarizes support ticket responses into concise summaries. @@ -144,13 +147,13 @@ The following tables display each model's output and its evaluator scores: | Model | Output | |-------|--------------------------------------------------------------------------------------------------------------------------------------------| -| GPT-4.1 | User reports that the app crashes when uploading a PDF from mobile, though uploading works on desktop. | +| {% data variables.copilot.copilot_gpt_41 %} | User reports that the app crashes when uploading a PDF from mobile, though uploading works on desktop. | | DeepSeek-R1 | Okay, the user is having trouble with the app crashing when they try to upload a PDF from their phone. It works on the desktop but not mobile. Let me break this down. First, the main issue is the app crashing specifically during PDF uploads on mobile. The fact that it works on desktop suggests it's a mobile-specific problem. Possible causes could be related to the mobile app version, the phone's OS, file size limits on mobile, or compatibility issues with certain PDF formats on mobile devices. I need to make sure the summary mentions the crash during PDF uploads on mobile, note that desktop works, and | | Phi-4 | The app crashes when attempting to upload a PDF from the mobile device, though it functions correctly on the desktop version. | | Model | Similarity | Relevance | Groundedness | Input tokens | Output tokens | Latency | |---------------|------------|-----------|--------------|--------------|---------------|---------| -| GPT-4.1 | 100% | 50% | 100% | 61 | 20 | 918ms | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | 50% | 100% | 61 | 20 | 918ms | | DeepSeek-R1 | 50% | 50% | 75% | 52 | 128 | 2285ms | | Phi-4 | 75% | 100% | 100% | 61 | 66 | 1117ms | @@ -162,11 +165,11 @@ Evaluate how closely each model’s output aligns with the expected summary. The | Model | Similarity score | |---------------|------------------| -| GPT-4.1 | 100% | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | | DeepSeek-R1 | 50% | | Phi-4 | 75% | -While all models included the key content from the input, DeepSeek-R1’s similarity score is significantly lower due to its verbose internal commentary, which deviate from the expected concise summary format. In contrast, GPT-4.1’s response matches the phrasing and structure of the reference output. +While all models included the key content from the input, DeepSeek-R1’s similarity score is significantly lower due to its verbose internal commentary, which deviate from the expected concise summary format. In contrast, {% data variables.copilot.copilot_gpt_41 %}’s response matches the phrasing and structure of the reference output. ### Relevance @@ -174,7 +177,7 @@ Evaluate how well each model captures the core intent of the input. The table be | Model | Relevance score | |---------------|-----------------| -| GPT-4.1 | 50% | +| {% data variables.copilot.copilot_gpt_41 %} | 50% | | DeepSeek-R1 | 50% | | Phi-4 | 100% | @@ -187,7 +190,7 @@ The table below shows the relevance scores for each model. | Model | Groundedness score | |---------------|--------------------| -| GPT-4.1 | 100% | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | | DeepSeek-R1 | 75% | | Phi-4 | 100% | @@ -201,13 +204,13 @@ The following tables display each model's output and its evaluator scores: | Model | Output | |-------|---------------------------------------------------------------------------------------------------------------------------------------------| -| GPT-4.1 | User requests the addition of a dark mode feature due to discomfort and eye strain when using the app at night. | +| {% data variables.copilot.copilot_gpt_41 %} | User requests the addition of a dark mode feature due to discomfort and eye strain when using the app at night. | | DeepSeek-R1 | Okay, the user wants dark mode added because it's hard to use at night and their eyes hurt. I need to make a concise summary. Let me start with the main request: adding dark mode. Then mention the reason: eye strain from prolonged use at night. Keep it to one sentence. Maybe structure it as "Request to implement dark mode to reduce eye strain during nighttime use." That covers the key points without extra details. Check if that's under the character limit. Yep, looks good. Summary: Request to implement dark mode to reduce eye strain caused by prolonged nighttime use. | | Phi-4 | The customer is requesting the addition of a dark mode feature to reduce eye strain when using the product at night. | | Model | Similarity | Relevance | Groundedness | Input Tokens | Output Tokens | Latency | |---------------|------------|-----------|--------------|---------------|----------------|---------| -| GPT-4.1 | 100% | 75% | 100% | 57 | 18 | 1286ms | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | 75% | 100% | 57 | 18 | 1286ms | | DeepSeek-R1 | 50% | 0% | 25% | 49 | 128 | 1946ms | | Phi-4 | 100% | 75% | 100% | 58 | 20 | 899ms | @@ -217,7 +220,7 @@ Evaluate how closely each model’s output aligns with the expected summary. The | Model | Similarity score | |---------------|------------------| -| GPT-4.1 | 100% | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | | DeepSeek-R1 | 50% | | Phi-4 | 100% | @@ -229,11 +232,11 @@ Evaluate how well each model captures the core intent of the input. The table be | Model | Relevance score | |---------------|-----------------| -| GPT-4.1 | 75% | +| {% data variables.copilot.copilot_gpt_41 %} | 75% | | DeepSeek-R1 | 0% | | Phi-4 | 75% | -GPT-4.1 and Phi-4 both captured the main intent of the user’s request: the need for dark mode to reduce eye strain and improve usability at night. DeepSeek-R1 scored 0% in relevance due to its verbose internal commentary that distracted from the actual output. +{% data variables.copilot.copilot_gpt_41 %} and Phi-4 both captured the main intent of the user’s request: the need for dark mode to reduce eye strain and improve usability at night. DeepSeek-R1 scored 0% in relevance due to its verbose internal commentary that distracted from the actual output. ### Groundedness @@ -242,7 +245,7 @@ The table below shows the relevance scores for each model. | Model | Groundedness score | |---------------|--------------------| -| GPT-4.1 | 100% | +| {% data variables.copilot.copilot_gpt_41 %} | 100% | | DeepSeek-R1 | 25% | | Phi-4 | 100% | @@ -250,7 +253,7 @@ DeepSeek-R1 scored lower due to its verbose `` block, which included spec ## Save the configuration -After completing your evaluations, the final step is to choose the model that performs best for your specific use case. In the examples above, Phi-4 and GPT-4.1 delivered strong, consistent results across all evaluators. DeepSeek-R1 scored lower due to its verbose reasoning and less focused outputs. +After completing your evaluations, the final step is to choose the model that performs best for your specific use case. In the examples above, Phi-4 and {% data variables.copilot.copilot_gpt_41 %} delivered strong, consistent results across all evaluators. DeepSeek-R1 scored lower due to its verbose reasoning and less focused outputs. Once you've selected your preferred model and prompt configuration, add a descriptive name to the prompt file, then click **Commit changes**. This will save the model, prompt, parameter settings, and associated dataset as a reusable configuration file in your repository. diff --git a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md index 27a00ee47272..552aead68959 100644 --- a/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md +++ b/content/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository.md @@ -33,7 +33,7 @@ To follow these steps, you must use a macOS or Linux system and have the followi 1. To get a list of authors in your Subversion project and store the list in `authors.txt`, run the following script: ```shell copy - svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt + svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed -E 's/^ *//' | sort | uniq > authors.txt ``` 1. Update your `authors.txt` file, mapping the author name used in the Subversion repository to the name you want to use in your Git repository, with the following format: diff --git a/content/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization.md b/content/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization.md index 493b0c1e076e..e87685802673 100644 --- a/content/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization.md +++ b/content/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization.md @@ -2,7 +2,9 @@ title: Creating rulesets for repositories in your organization intro: 'You can create a ruleset to target multiple repositories in your organization.' versions: - feature: repo-rules-enterprise + fpt: '*' + ghec: '*' + ghes: '>= 3.13' permissions: 'Organization owners can create rulesets at the organization level.' topics: - Organizations @@ -11,7 +13,7 @@ shortTitle: Create rulesets ## Introduction -You can create rulesets in your organization to control how users can interact with repositories in your organization. You can control things like who can push commits to a certain branch and how the commits must be formatted, or who can delete or rename a tag. You can also prevent people from renaming repositories. +For customers on {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} plans you can create rulesets in your organization to control how users can interact with repositories in your organization. You can control things like who can push commits to a certain branch and how the commits must be formatted, or who can delete or rename a tag. You can also prevent people from renaming repositories. {% ifversion push-rulesets %} @@ -39,10 +41,13 @@ To import one of the prebuilt rulesets by {% data variables.product.prodname_dot {% data reusables.repositories.rulesets-fnmatch %} {% ifversion repo-rules-enterprise %} +{% ifversion not fpt %} + ## Using regular expressions for commit metadata {% data reusables.repositories.rulesets-commit-regex %} +{% endif %} {% endif %} ## Using ruleset enforcement statuses @@ -57,10 +62,13 @@ To import one of the prebuilt rulesets by {% data variables.product.prodname_dot {% data reusables.repositories.create-ruleset-step %} {% data reusables.repositories.rulesets-general-step %} +{% ifversion not fpt %} + ### Granting bypass permissions for your branch or tag ruleset {% data reusables.repositories.rulesets-bypass-step %} {% data reusables.repositories.rulesets-branch-tag-bypass-optional-step %} +{% endif %} ### Choosing which repositories to target in your organization @@ -74,9 +82,12 @@ To import one of the prebuilt rulesets by {% data variables.product.prodname_dot {% data reusables.repositories.rulesets-protections-step %} +{% ifversion not fpt %} + ### Adding metadata restrictions {% data reusables.repositories.rulesets-metadata-step %} +{% endif %} ### Finalizing your branch or tag ruleset and next steps diff --git a/content/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization.md b/content/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization.md index f4c986005641..56ff6c0a9ab5 100644 --- a/content/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization.md +++ b/content/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization.md @@ -16,9 +16,7 @@ shortTitle: Custom properties Custom properties allow you to decorate your repositories with information such as compliance frameworks, data sensitivity, or project details. Custom properties visibility follows the visibility of the repository. Custom properties on public repositories can be viewed by anyone, while custom properties on internal or private repositories can be viewed by accounts with read permissions to the repository. An organization can have up to 100 property definitions. An allowed value list can have up to 200 items. -{% ifversion ghec or ghes %} You can use repository properties to determine which repositories to target with a ruleset. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization#targeting-repositories-by-properties-in-your-organization). -{% endif %} {% ifversion ghec %} You can define custom properties at the enterprise level to create a consistent experience across organizations. See [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-repositories-in-your-enterprise/managing-custom-properties-for-repositories-in-your-enterprise). diff --git a/content/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization.md b/content/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization.md index 5e1e6e5224b1..639729327304 100644 --- a/content/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization.md +++ b/content/organizations/managing-organization-settings/managing-rulesets-for-repositories-in-your-organization.md @@ -2,7 +2,9 @@ title: Managing rulesets for repositories in your organization intro: 'You can edit, monitor, and delete existing rulesets to alter how people can interact with repositories in your organization.' versions: - feature: repo-rules-enterprise + fpt: '*' + ghec: '*' + ghes: '>= 3.13' permissions: 'Organization owners and users with the "Manage organization ref update rules and rulesets" permission can manage rulesets at the organization level.' topics: - Organizations @@ -11,7 +13,7 @@ shortTitle: Manage rulesets ## About managing rulesets for an organization -After creating a ruleset at the organization level, you can make changes to the ruleset to alter how people can interact with the targeted repositories. For example, you can add rules to better protect the branches or tags in those repositories, or you can switch your ruleset from "Evaluate" mode to "Active" after testing its effects on the contributor experience for your repositories. Organizational rulesets that apply to branches of a repository will no longer allow the repository administrator to rename branches of the targeted repository or change the default branch to another branch. Repository administrators may create and delete branches so long as they have the appropriate permissions. +After creating a ruleset at the organization level, you can make changes to the ruleset to alter how people can interact with the targeted repositories. For example, you can add rules to better protect the branches or tags in those repositories{% ifversion not fpt %}, or you can switch your ruleset from "Evaluate" mode to "Active" after testing its effects on the contributor experience for your repositories{% endif %}. Organizational rulesets that apply to branches of a repository will no longer allow the repository administrator to rename branches of the targeted repository or change the default branch to another branch. Repository administrators may create and delete branches so long as they have the appropriate permissions. {% ifversion push-rule-delegated-bypass %} @@ -64,6 +66,7 @@ You can import a ruleset from another repository or organization using the expor {% data reusables.repositories.import-a-ruleset %} {% endif %} +{% ifversion not fpt %} ## Viewing insights for rulesets @@ -83,3 +86,4 @@ You can view insights for rulesets to see how rulesets are affecting the reposit {% data reusables.repositories.managing-delegated-bypass %} {% endif %} +{% endif %} diff --git a/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md b/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md index cec6c64ad215..009c9a4b24b3 100644 --- a/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md +++ b/content/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles.md @@ -65,6 +65,9 @@ Manage organization OAuth app policies | Access to the "OAuth app policy" settin | {% ifversion push-protection-bypass-fine-grained-permissions %} | | Review and manage {% data variables.product.prodname_secret_scanning %} bypass requests | Review and manage {% data variables.product.prodname_secret_scanning %} bypass requests for your organization. | [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection) | | {% endif %} | +| {% ifversion secret-scanning-alert-dismiss-custom-role %} | +| Review and manage {% data variables.product.prodname_secret_scanning %} alert dismissal requests | Review and manage {% data variables.product.prodname_secret_scanning %} alert dismissal requests for your organization. | [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning) | +| {% endif %} | {% endrowheaders %} diff --git a/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md b/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md index 0bc2dde6d50e..9adeed2f6cab 100644 --- a/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md +++ b/content/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization.md @@ -200,10 +200,10 @@ Some of the features listed below are limited to organizations using {% data var | Review and manage {% data variables.product.prodname_secret_scanning %} bypass requests (see [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection)) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | {% endif %} | | {% ifversion security-delegated-alert-dismissal %} | -| Review and manage {% data variables.product.prodname_secret_scanning %} dismissal requests | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | +| Review and manage {% data variables.product.prodname_secret_scanning %} dismissal requests (see [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/enabling-delegated-alert-dismissal-for-secret-scanning)) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | {% endif %} | | {% ifversion security-delegated-alert-dismissal %} | -| Review and manage {% data variables.product.prodname_code_scanning %} dismissal requests | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | +| Review and manage {% data variables.product.prodname_code_scanning %} dismissal requests (see [AUTOTITLE](/code-security/code-scanning/managing-your-code-scanning-configuration/enabling-delegated-alert-dismissal-for-code-scanning)) | {% octicon "check" aria-label="Yes" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | | {% endif %} | {% endrowheaders %} diff --git a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md index cf5b8480aea7..cfdc713708ef 100644 --- a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md +++ b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md @@ -164,6 +164,7 @@ Some of the features listed below are limited to organizations using {% data var | [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for private{% ifversion ghec %}/internal{% endif %} repositories with [Codespaces secrets access](/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization?tool=webui) | {% octicon "check" aria-label="No" %} | {% octicon "check" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for public repositories
(users with read-only access can only create codespaces at their own expense) | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | {% endif %} | +| Edit the custom property values for the repository | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% endrowheaders %} diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md index d02d9a44d6c0..0938070e897a 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request.md @@ -185,14 +185,6 @@ You can also make changes to files on the {% data variables.product.github %} we 1. In the menu, click **Edit file**. 1. Make your changes in the editor and when committing your change, choose to commit directly back to your head branch. -{% ifversion copilot-hadron %} - -If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_workspace %}, clicking **Edit** on a file on the "Files changed" tab will open the file in a {% data variables.copilot.copilot_workspace %} on {% data variables.product.prodname_dotcom %}. In a {% data variables.copilot.copilot_workspace %}, you can still make changes to the file but also make changes to other files in the repository, group your changes into a single commit, and take advantage of {% data variables.product.prodname_copilot_short %} code completion. - -You can access {% data variables.copilot.copilot_workspace %} by choosing to edit an individual file or by clicking **Open in {% data variables.copilot.copilot_workspace_short %}** in your pull request's right sidebar. For more information about {% data variables.copilot.copilot_workspace %} and joining the {% data variables.release-phases.public_preview %}, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - -{% endif %} - {% endwebui %} ## Further reading diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md index 5937dbfb44c2..bf49380fbebe 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review.md @@ -25,7 +25,7 @@ Organization members with write access can also assign a pull request review to > [!NOTE] > Pull request authors can't request reviews unless they are either a repository owner or collaborator with write access to the repository. -{% ifversion copilot-hadron %} +{% ifversion copilot %} ## Requesting reviews from collaborators and organization members @@ -47,13 +47,10 @@ You can request a review from either a suggested or specific person. Suggested r ![Screenshot of the "Reviewers" section of a pull request's sidebar. To the right of @octocat, a sync icon is outlined in dark orange.](/assets/images/help/pull_requests/request-re-review.png) -{% ifversion copilot-hadron %} +{% ifversion copilot %} ## Requesting a review from {% data variables.product.prodname_copilot %} ->[!NOTE] ->{% data variables.copilot.copilot_workspace %} is currently in {% data variables.release-phases.public_preview %}. For information about joining the {% data variables.release-phases.public_preview %}, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - You can also request that {% data variables.product.prodname_copilot_short %} reviews your code and provides feedback and suggested changes on your work. See [AUTOTITLE](/copilot/using-github-copilot/code-review/using-copilot-code-review). {% endif %} diff --git a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md index 562257615443..5008cbd2cbc6 100644 --- a/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/using-query-parameters-to-create-a-pull-request.md @@ -11,10 +11,7 @@ topics: - Pull requests --- -You can use query parameters to open pull requests. Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair. - -> [!TIP] -> You can also create pull request templates that open with default labels, assignees, and a pull request title. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests). +You can use query parameters to open pull requests. Query parameters are optional parts of a URL you can customize to share a specific web page view, such as search filter results or a pull request template on {% data variables.product.prodname_dotcom %}. To create your own query parameters, you must match the key and value pair. For more information on creating pull request templates, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository). You must have the proper permissions for any action to use the equivalent query parameter. For example, you must have permission to add a label to a pull request to use the `labels` query parameter. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization). diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md index 9662e3bb0481..b7935b568244 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request.md @@ -20,15 +20,6 @@ Other people can suggest specific changes to your pull request. You can apply th To quickly incorporate more than one suggested change into a single commit, you can also apply suggested changes as a batch. Applying one suggested change or a batch of suggested changes creates a single commit on the compare branch of the pull request. -{% ifversion copilot-hadron %} - ->[!NOTE] ->If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_workspace %}, suggested changes from people on your team, {% data variables.product.prodname_copilot_short %}, or {% data variables.copilot.copilot_autofix %} can all be applied and edited in {% data variables.copilot.copilot_workspace %}. Click **Open in {% data variables.copilot.copilot_workspace_short %}** on a suggested change to get started. -> ->For more information about {% data variables.copilot.copilot_workspace %} and joining the {% data variables.release-phases.public_preview %}, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - -{% endif %} - Each person who suggested a change included in the commit will be a co-author of the commit. The person who applies the suggested changes will be a co-author and the committer of the commit. For more information about the term committer in Git, see [Git Basics - Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History) from the _Pro Git_ book site. {% data reusables.repositories.sidebar-pr %} diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md index 893bbf24c8d2..534d01a01498 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md @@ -46,9 +46,10 @@ Forking a repository is similar to duplicating a repository, with the following * Code pushed to a fork is visible to all repositories in the fork network, even after that fork is deleted. * You can use a pull request to suggest changes from your fork to the upstream repository. * You can bring changes from the upstream repository to your fork by synchronizing your fork with the upstream repository. -* Forks have their own members, branches, tags, labels, policies, issues, pull requests, discussions, actions, projects, and wikis. * Forks inherit the restrictions of their upstream repositories. For example, branch protection rules cannot be passed down if the upstream repository belongs to an organization on a {% data variables.product.prodname_free_team %} plan. +Like duplicated repositories, forks have their own members, branches, tags, labels, policies, issues, pull requests, discussions, actions, projects, and wikis. + ## Further reading * [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models) diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets.md index 4da3fec039f4..a697d6ee97e4 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets.md @@ -14,7 +14,7 @@ shortTitle: About rulesets ## About rulesets -A ruleset is a named list of rules that applies to a repository{% ifversion repo-rules-enterprise %}, or to multiple repositories in an organization{% endif %}. You can have up to 75 rulesets per repository{% ifversion repo-rules-enterprise %}, and 75 organization-wide rulesets{% endif %}. +A ruleset is a named list of rules that applies to a repository or to multiple repositories in an organization for customers on {% data variables.product.prodname_team %} and {% data variables.product.prodname_enterprise %} plans. You can have up to 75 rulesets per repository, and 75 organization-wide rulesets. When you create a ruleset, you can allow certain users to bypass the rules in the ruleset. This can be users with a certain role, such as repository administrator, or it can be specific teams or {% data variables.product.prodname_github_apps %}. For more information about granting bypass permissions, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository#granting-bypass-permissions-for-your-ruleset). diff --git a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository.md b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository.md index a7b4566e4d9b..963ebbc2b340 100644 --- a/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository.md +++ b/content/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository.md @@ -26,8 +26,7 @@ When you create a ruleset, you can allow certain users to bypass the rules in th For more information on rulesets, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). -{% ifversion repo-rules-enterprise %} -You can also create rulesets for all repositories in an organization. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization).{% endif %} +For customers on {% data variables.product.prodname_team %} and {% data variables.product.prodname_enterprise %} plans you can also create rulesets for repositories in an organization. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/creating-rulesets-for-repositories-in-your-organization). {% ifversion repo-rules-management %} diff --git a/content/repositories/working-with-files/managing-large-files/about-git-large-file-storage.md b/content/repositories/working-with-files/managing-large-files/about-git-large-file-storage.md index e4fbbf85fa28..4c26db7e360e 100644 --- a/content/repositories/working-with-files/managing-large-files/about-git-large-file-storage.md +++ b/content/repositories/working-with-files/managing-large-files/about-git-large-file-storage.md @@ -55,4 +55,5 @@ It tracks the `version` of {% data variables.large_files.product_name_short %} y ## Further reading -* [AUTOTITLE](/repositories/working-with-files/managing-large-files/collaboration-with-git-large-file-storage) +* [AUTOTITLE](/repositories/working-with-files/managing-large-files/collaboration-with-git-large-file-storage) {% ifversion fpt or ghec %} +* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage) {% endif %} diff --git a/content/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage.md b/content/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage.md index 2408624d118c..9a572eb35891 100644 --- a/content/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage.md +++ b/content/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage.md @@ -27,17 +27,16 @@ If {% data variables.large_files.product_name_long %} ({% data variables.large_f > [!TIP] > * {% data reusables.large_files.owner_quota_only %} -> * {% data reusables.large_files.does_not_carry %} ## Storage quota -If you use more than {% data variables.large_files.initial_storage_quota %} of storage without purchasing a data pack, you can still clone repositories with large assets, but you will only retrieve the pointer files, and you will not be able to push new files back up. For more information about pointer files, see [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage#pointer-file-format). +If you use more than {% data variables.large_files.initial_storage_quota %} of storage without a payment method on file, you can still clone repositories with large assets, but you will only retrieve the pointer files, and you will not be able to push new files back up. For more information about pointer files, see [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage#pointer-file-format). ## Bandwidth quota -If you use more than {% data variables.large_files.initial_bandwidth_quota %} of bandwidth per month without purchasing a data pack, {% data variables.large_files.product_name_short %} support is disabled on your account until the next month. +If you use more than {% data variables.large_files.initial_bandwidth_quota %} of bandwidth per month without a payment method on file, {% data variables.large_files.product_name_short %} support is disabled on your account until the next month. ## Further reading -* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/viewing-your-git-large-file-storage-usage) -* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage) +* [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-git-large-file-storage/about-billing-for-git-large-file-storage) +* [AUTOTITLE](/billing/managing-billing-for-your-products/viewing-your-product-usage) diff --git a/content/rest/authentication/authenticating-to-the-rest-api.md b/content/rest/authentication/authenticating-to-the-rest-api.md index 94a81a139e86..3ce5ec0a7eb3 100644 --- a/content/rest/authentication/authenticating-to-the-rest-api.md +++ b/content/rest/authentication/authenticating-to-the-rest-api.md @@ -46,6 +46,8 @@ If you are using a {% data variables.product.pat_v2 %}, your {% data variables.p If you are using a {% data variables.product.pat_v1 %}, it requires specific scopes in order to access each REST API endpoint. For general guidance about what scopes to choose, see [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes). +{% data variables.product.pat_generic_caps_plural %} act as your identity (limited by the scopes or permissions you selected) when you make requests to the REST API. As such, it is important to keep your {% data variables.product.pat_generic_plural %} secure. For more information about keeping your {% data variables.product.pat_generic_plural %} secure, see [AUTOTITLE](/rest/authentication/keeping-your-api-credentials-secure?apiVersion=2022-11-28). + ### {% data variables.product.pat_generic_caps_plural %} and SAML SSO {% ifversion fpt or ghec %}If you use a {% data variables.product.pat_v1 %} to access an organization that enforces SAML single sign-on (SSO) for authentication, you will need to authorize your token after creation. {% data variables.product.pat_v2_caps %}s are authorized during token creation, before access to the organization is granted. For more information, see [AUTOTITLE](/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on). diff --git a/content/rest/copilot/copilot-metrics.md b/content/rest/copilot/copilot-metrics.md index db797fa86298..2b16cb5744ec 100644 --- a/content/rest/copilot/copilot-metrics.md +++ b/content/rest/copilot/copilot-metrics.md @@ -1,7 +1,7 @@ --- title: REST API endpoints for Copilot metrics shortTitle: Copilot metrics -intro: Use the REST API to view Copilot metrics. +intro: Use the REST API to view {% data variables.product.prodname_copilot_short %} metrics. versions: # DO NOT MANUALLY EDIT. CHANGES WILL BE OVERWRITTEN BY A 🤖 fpt: '*' ghec: '*' diff --git a/content/rest/copilot/copilot-user-management.md b/content/rest/copilot/copilot-user-management.md index 7fd1ddcdbd8c..776f3fa347c9 100644 --- a/content/rest/copilot/copilot-user-management.md +++ b/content/rest/copilot/copilot-user-management.md @@ -1,7 +1,7 @@ --- title: REST API endpoints for Copilot user management shortTitle: Copilot user management -intro: 'Use the REST API to manage the {% data variables.copilot.copilot_for_business %} or {% data variables.copilot.copilot_enterprise %} subscription for your organization.' +intro: 'Use the REST API to manage the {% data variables.copilot.copilot_for_business %}{% ifversion ghec %} or {% data variables.copilot.copilot_enterprise %}{% endif %} subscription for your organization.' versions: # DO NOT MANUALLY EDIT. CHANGES WILL BE OVERWRITTEN BY A 🤖 fpt: '*' ghec: '*' diff --git a/content/rest/copilot/index.md b/content/rest/copilot/index.md index 0ed3ee053dc7..1671a163fb21 100644 --- a/content/rest/copilot/index.md +++ b/content/rest/copilot/index.md @@ -2,9 +2,7 @@ title: REST API endpoints for Copilot shortTitle: Copilot intro: >- - Use the REST API to manage the {% data - variables.copilot.copilot_for_business %} subscription for your - organization. + Use the REST API to monitor and manage {% data variables.product.prodname_copilot %}. topics: - API autogenerated: rest diff --git a/content/site-policy/acceptable-use-policies/github-appeal-and-reinstatement.md b/content/site-policy/acceptable-use-policies/github-appeal-and-reinstatement.md index deed7e722ba3..d2544ee37529 100644 --- a/content/site-policy/acceptable-use-policies/github-appeal-and-reinstatement.md +++ b/content/site-policy/acceptable-use-policies/github-appeal-and-reinstatement.md @@ -53,4 +53,4 @@ We track Appeals and Reinstatements in our [Transparency Center](https://transpa ### Legal Rights -If you believe that a final decision made on Appeal is still incorrect you may, in certain circumstances, have additional rights to seek review of the decision under your local law. For example, if you are located in the European Union, it might be possible to access an out-of-court dispute settlement process under the [Digital Services Act](https://eur-lex.europa.eu/eli/reg/2022/2065/oj#d1e2819-1-1). +If you believe that a final decision made on Appeal is still incorrect you may, in certain circumstances, have additional rights to seek review of the decision under your local law. For example, if you are located in the European Union, it might be possible to access an out-of-court dispute settlement process under the [Digital Services Act](https://eur-lex.europa.eu/eli/reg/2022/2065/oj#d1e2819-1-1). This process reflects GitHub's commitment to internationally recognized human rights set out in the United Nations Guiding Principles on Business and Human Rights (UNGPs), privacy, and free expression. diff --git a/data/features/metered-ghe-ghas.yml b/data/features/metered-ghe-ghas.yml deleted file mode 100644 index 96035e99360c..000000000000 --- a/data/features/metered-ghe-ghas.yml +++ /dev/null @@ -1,8 +0,0 @@ -# Reference: 13369 -# Documentation for metered GHE/GHAS. -# Reference: 16705 GHAS is now available to GitHub Team users. - -versions: - fpt: '*' - ghec: '*' - ghes: '>= 3.13' diff --git a/data/features/scim-enterprise-scope.yml b/data/features/scim-enterprise-scope.yml index eab6cd71e87d..35484bc61d7b 100644 --- a/data/features/scim-enterprise-scope.yml +++ b/data/features/scim-enterprise-scope.yml @@ -4,4 +4,4 @@ versions: ghec: '*' - ghes: '>=3.15' + ghes: '>=3.16' diff --git a/data/features/secret-scanning-alert-dismiss-custom-role.yml b/data/features/secret-scanning-alert-dismiss-custom-role.yml new file mode 100644 index 000000000000..3127fdd7ff79 --- /dev/null +++ b/data/features/secret-scanning-alert-dismiss-custom-role.yml @@ -0,0 +1,6 @@ +# Reference: #16320 +# Delegated alert closures for secret scanning [GA] +versions: + fpt: '*' + ghec: '*' + ghes: '>=3.18' diff --git a/data/learning-tracks/actions.yml b/data/learning-tracks/actions.yml index 4a4d73f20940..624a2ad268b5 100644 --- a/data/learning-tracks/actions.yml +++ b/data/learning-tracks/actions.yml @@ -31,7 +31,7 @@ adopting_github_actions_for_your_enterprise_ghec: - >- /actions/security-for-github-actions/security-guides/security-hardening-for-github-actions - >- - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions + /billing/managing-billing-for-your-products/about-billing-for-github-actions adopting_github_actions_for_your_enterprise_ghes: title: Adopt GitHub Actions for your enterprise description: >- @@ -56,7 +56,7 @@ adopting_github_actions_for_your_enterprise_ghes: - >- /actions/security-for-github-actions/security-guides/security-hardening-for-github-actions - >- - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions + /billing/managing-billing-for-your-products/about-billing-for-github-actions hosting_your_own_runners: title: Host your own runners description: >- diff --git a/data/learning-tracks/admin.yml b/data/learning-tracks/admin.yml index 19a09223faba..8c393a19d61f 100644 --- a/data/learning-tracks/admin.yml +++ b/data/learning-tracks/admin.yml @@ -54,7 +54,7 @@ adopting_github_actions_for_your_enterprise_ghec: - >- /actions/security-for-github-actions/security-guides/security-hardening-for-github-actions - >- - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions + /billing/managing-billing-for-your-products/about-billing-for-github-actions adopting_github_actions_for_your_enterprise_ghes: title: Adopt GitHub Actions for your enterprise description: >- @@ -79,7 +79,7 @@ adopting_github_actions_for_your_enterprise_ghes: - >- /actions/security-for-github-actions/security-guides/security-hardening-for-github-actions - >- - /billing/managing-billing-for-your-products/managing-billing-for-github-actions/about-billing-for-github-actions + /billing/managing-billing-for-your-products/about-billing-for-github-actions increase_fault_tolerance: title: Increase the fault tolerance of your instance description: >- diff --git a/data/release-notes/enterprise-server/3-13/14.yml b/data/release-notes/enterprise-server/3-13/14.yml index 1600d11b414b..de6ab133810b 100644 --- a/data/release-notes/enterprise-server/3-13/14.yml +++ b/data/release-notes/enterprise-server/3-13/14.yml @@ -1,8 +1,6 @@ date: '2025-04-17' sections: security_fixes: - - | - **HIGH**: An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available, such as during a hot patch upgrade. This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/cverecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). - | **MEDIUM:** An attacker could view private repository names, which the signed-in user is not authorized to see, in the GitHub Advanced Security Overview. This was due to a missing authorization check and occurred when filtering with _only_ `archived:`. GitHub has requested CVE ID [CVE-2025-3124](https://www.cve.org/CVERecord?id=CVE-2025-3124) for this vulnerability. bugs: diff --git a/data/release-notes/enterprise-server/3-13/16.yml b/data/release-notes/enterprise-server/3-13/16.yml new file mode 100644 index 000000000000..8ed9b3162f8a --- /dev/null +++ b/data/release-notes/enterprise-server/3-13/16.yml @@ -0,0 +1,44 @@ +date: '2025-06-18' +sections: + security_fixes: + - | + **HIGH:** An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available (for example, during a hot patch upgrade). This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. The initial fix for this issue was found to be incomplete, leaving the vulnerability exploitable in some cases. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/CVERecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + - | + Packages have been updated to the latest security versions. + bugs: + - | + On an instance with GitHub Actions configured to connect to Azure OIDC storage through a proxy, Actions logs and artifacts would not be properly stored. + - | + Site administrators and auditors reviewing audit logs saw the `mc_actor` field was empty when a user signed out, because audit logging occurred after the user was removed from session state. + - | + During hotpatching, site administrators could encounter issues with the kernel partition table not updating correctly when running `ghe-partition-setup`. These users had to manually intervene in order to complete the upgrade process. + - | + Users of GitHub Actions could not view or manage Actions artifacts and logs if the global AWS STS endpoint was unavailable, because Actions did not use the configured regional STS endpoint. + - | + If an Enterprise Managed User (EMU) pushed to their personal repository with both secret scanning and push protection enabled, the custom patterns defined at enterprise level were not being applied during the push protection scan. + changes: + - | + Site administrators can now set rate limits for the WebSockets controller used for live updates, with `ghe-config app.github.web-sockets-rate-limit`. For more information, see [Controlling the rate for the live update service](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#controlling-the-rate-for-the-live-update-service). + known_issues: + - | + During the validation phase of a configuration run, a `No such object` error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start. + - | + If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)." + - | + On an instance with the HTTP `X-Forwarded-For` header configured for use behind a load balancer, all client IP addresses in the instance's audit log erroneously appear as 127.0.0.1. + - | + For an instance in a cluster configuration and with GitHub Actions enabled, restoring a cluster from backup requires targeting the primary DB node. + - | + When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed. + - | + Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps. + - | + {% data reusables.release-notes.2024-06-possible-frontend-5-minute-outage-during-hotpatch-upgrade %} + - | + When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`. + - | + When restoring from a backup snapshot, a large number of `mapper_parsing_exception` errors may be displayed. + - | + After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. + - | + After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. diff --git a/data/release-notes/enterprise-server/3-14/11.yml b/data/release-notes/enterprise-server/3-14/11.yml index 35652395b6d4..62bc6e3e2bb7 100644 --- a/data/release-notes/enterprise-server/3-14/11.yml +++ b/data/release-notes/enterprise-server/3-14/11.yml @@ -1,8 +1,6 @@ date: '2025-04-17' sections: security_fixes: - - | - **HIGH**: An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available, such as during a hot patch upgrade. This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/cverecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). - | **MEDIUM:** An attacker could view private repository names, which the signed-in user is not authorized to see, in the GitHub Advanced Security Overview. This was due to a missing authorization check and occurred when filtering with _only_ `archived:`. GitHub has requested CVE ID [CVE-2025-3124](https://www.cve.org/CVERecord?id=CVE-2025-3124) for this vulnerability. bugs: diff --git a/data/release-notes/enterprise-server/3-14/12.yml b/data/release-notes/enterprise-server/3-14/12.yml index f12244924fe6..ea9b11c84ca3 100644 --- a/data/release-notes/enterprise-server/3-14/12.yml +++ b/data/release-notes/enterprise-server/3-14/12.yml @@ -85,7 +85,9 @@ sections: After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. - | After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. - - | - Repository cache replicas return `Repository not found` when changes have been pushed to the primary instance that have not yet synchronized to the cache replica. This issue can also occur in all previous patches of this release. - | Unexpected elements may appear in the UI on the repository overview page for locked repositories. + + errata: + - | + The [Known issues](/admin/release-notes#3.14.12-known-issues) section previously indicated that `repository cache replicas return "Repository not found" when changes have been pushed to the primary instance that have not yet synchronized to the cache replica` is still an issue. The issue is resolved and is documented in the [Bug fixes](/admin/release-notes#3.14.12-bugs) section. [Updated: 2025-06-19] diff --git a/data/release-notes/enterprise-server/3-14/13.yml b/data/release-notes/enterprise-server/3-14/13.yml new file mode 100644 index 000000000000..5e8bdd4258a9 --- /dev/null +++ b/data/release-notes/enterprise-server/3-14/13.yml @@ -0,0 +1,61 @@ +date: '2025-06-18' +sections: + security_fixes: + - | + **HIGH:** An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available (for example, during a hot patch upgrade). This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. The initial fix for this issue was found to be incomplete, leaving the vulnerability exploitable in some cases. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/CVERecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + - | + Packages have been updated to the latest security versions. + bugs: + - | + On an instance with GitHub Actions configured to connect to Azure OIDC storage through a proxy, Actions logs and artifacts would not be properly stored. + - | + Site administrators and auditors reviewing audit logs saw the `mc_actor` field was empty when a user signed out, because audit logging occurred after the user was removed from session state. + - | + During hotpatching, site administrators could encounter issues with the kernel partition table not updating correctly when running `ghe-partition-setup`. These users had to manually intervene in order to complete the upgrade process. + - | + Users of GitHub Actions could not view or manage Actions artifacts and logs if the global AWS STS endpoint was unavailable, because Actions did not use the configured regional STS endpoint. + - | + On instances with a large number of code scanning users, running `ghe-config-apply` previously resulted in slow performance. + - | + Organization owners had no audit log events to track organization announcements displayed on banners in the UI. + - | + If an Enterprise Managed User (EMU) pushed to their personal repository with both secret scanning and push protection enabled, the custom patterns defined at enterprise level were not being applied during the push protection scan. + changes: + - | + Site administrators can now set rate limits for the WebSockets controller used for live updates, with `ghe-config app.github.web-sockets-rate-limit`. For more information, see [Controlling the rate for the live update service](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#controlling-the-rate-for-the-live-update-service). + closing_down: + - | + Site administrators who manage dependencies with the base-pinned image should no longer rely on the vulcanizer CLI, as it is in the process of being retired and replaced with vulcancli. Transition to vulcancli to ensure continued support and compatibility. + known_issues: + - | + During the validation phase of a configuration run, a `No such object` error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start. + - | + If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)." + - | + On an instance with the HTTP `X-Forwarded-For` header configured for use behind a load balancer, all client IP addresses in the instance's audit log erroneously appear as 127.0.0.1. + - | + {% data reusables.release-notes.large-adoc-files-issue %} + - | + Admin stats REST API endpoints may timeout on appliances with many users or repositories. Retrying the request until data is returned is advised. + - | + When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed. + - | + Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps. + - | + {% data reusables.release-notes.2024-06-possible-frontend-5-minute-outage-during-hotpatch-upgrade %} + - | + When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`. + - | + An organization-level code scanning configuration page is displayed on instances that do not use GitHub Advanced Security or code scanning. + - | + In the header bar displayed to site administrators, some icons are not available. + - | + When enabling automatic update checks for the first time in the Management Console, the status is not dynamically reflected until the "Updates" page is reloaded. + - | + When restoring from a backup snapshot, a large number of `mapper_parsing_exception` errors may be displayed. + - | + After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. + - | + After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. + - | + Unexpected elements may appear in the UI on the repo overview page for locked repositories. diff --git a/data/release-notes/enterprise-server/3-15/6.yml b/data/release-notes/enterprise-server/3-15/6.yml index 5818e2fea987..e44bcc5ff936 100644 --- a/data/release-notes/enterprise-server/3-15/6.yml +++ b/data/release-notes/enterprise-server/3-15/6.yml @@ -1,8 +1,6 @@ date: '2025-04-17' sections: security_fixes: - - | - **HIGH**: An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available, such as during a hot patch upgrade. This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/cverecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). - | **MEDIUM:** An attacker could view private repository names, which the signed-in user is not authorized to see, in the GitHub Advanced Security Overview. This was due to a missing authorization check and occurred when filtering with _only_ `archived:`. GitHub has requested CVE ID [CVE-2025-3124](https://www.cve.org/CVERecord?id=CVE-2025-3124) for this vulnerability. bugs: diff --git a/data/release-notes/enterprise-server/3-15/7.yml b/data/release-notes/enterprise-server/3-15/7.yml index c39c6dd44fde..da6f696bf5af 100644 --- a/data/release-notes/enterprise-server/3-15/7.yml +++ b/data/release-notes/enterprise-server/3-15/7.yml @@ -91,5 +91,7 @@ sections: Administrators setting up cluster high availability (HA) may encounter a spokes error when running `ghe-cluster-repl-status` if a new organization and repositories are created before using the `ghe-cluster-repl-bootstrap` command. To avoid this issue, complete the cluster HA setup with `ghe-cluster-repl-bootstrap` before creating new organizations and repositories. - | After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. + + errata: - | - Repository cache replicas return `Repository not found` when changes have been pushed to the primary instance that have not yet synchronized to the cache replica. This issue can also occur in all previous patches of this release. + The [Known issues](/admin/release-notes#3.15.7-known-issues) section previously indicated that `repository cache replicas return "Repository not found" when changes have been pushed to the primary instance that have not yet synchronized to the cache replica` is still an issue. The issue is resolved and is documented in the [Bug fixes](/admin/release-notes#3.15.7-bugs) section. [Updated: 2025-06-19] diff --git a/data/release-notes/enterprise-server/3-15/8.yml b/data/release-notes/enterprise-server/3-15/8.yml new file mode 100644 index 000000000000..2a49880de83a --- /dev/null +++ b/data/release-notes/enterprise-server/3-15/8.yml @@ -0,0 +1,65 @@ +date: '2025-06-18' +sections: + security_fixes: + - | + **HIGH:** An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available (for example, during a hot patch upgrade). This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. The initial fix for this issue was found to be incomplete, leaving the vulnerability exploitable in some cases. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/CVERecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + - | + Packages have been updated to the latest security versions. + bugs: + - | + The Management Console maintenance page would not load correctly if the underlying API call fails to load the connection services data. + - | + On an instance with GitHub Actions configured to connect to Azure OIDC storage through a proxy, Actions logs and artifacts would not be properly stored. + - | + Site administrators and auditors reviewing audit logs saw the `mc_actor` field was empty when a user signed out, because audit logging occurred after the user was removed from session state. + - | + On instances with a large number of code scanning users, running `ghe-config-apply` previously resulted in slow performance. + - | + During hotpatching, site administrators could encounter issues with the kernel partition table not updating correctly when running `ghe-partition-setup`. These users had to manually intervene in order to complete the upgrade process. + - | + Users of GitHub Actions could not view or manage Actions artifacts and logs if the global AWS STS endpoint was unavailable, because Actions did not use the configured regional STS endpoint. + - | + Organization owners had no audit log events to track organization announcements displayed on banners in the UI. + - | + If an Enterprise Managed User (EMU) pushed to their personal repository with both secret scanning and push protection enabled, the custom patterns defined at enterprise level were not being applied during the push protection scan. + changes: + - | + To ensure critical integrations and automated systems have uninterrupted access, the `/repositories/:repository_id/collaborators` endpoints now honor the higher rate limits for exempt users set with `ghe-config app.github.rate-limiting-exempt-users ""`. + - | + Site administrators can now set rate limits for the WebSockets controller used for live updates, with `ghe-config app.github.web-sockets-rate-limit`. For more information, see [Controlling the rate for the live update service](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#controlling-the-rate-for-the-live-update-service). + closing_down: + - | + Site administrators who manage dependencies with the base-pinned image should no longer rely on the vulcanizer CLI, as it is in the process of being retired and replaced with vulcancli. Transition to vulcancli to ensure continued support and compatibility. + known_issues: + - | + During the validation phase of a configuration run, a `No such object` error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start. + - | + If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)." + - | + On an instance with the HTTP `X-Forwarded-For` header configured for use behind a load balancer, all client IP addresses in the instance's audit log erroneously appear as 127.0.0.1. + - | + {% data reusables.release-notes.large-adoc-files-issue %} + - | + Admin stats REST API endpoints may timeout on appliances with many users or repositories. Retrying the request until data is returned is advised. + - | + When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed. + - | + Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps. + - | + {% data reusables.release-notes.2024-06-possible-frontend-5-minute-outage-during-hotpatch-upgrade %} + - | + When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`. + - | + An organization-level code scanning configuration page is displayed on instances that do not use GitHub Advanced Security or code scanning. + - | + In the header bar displayed to site administrators, some icons are not available. + - | + When enabling automatic update checks for the first time in the Management Console, the status is not dynamically reflected until the "Updates" page is reloaded. + - | + When restoring from a backup snapshot, a large number of `mapper_parsing_exception` errors may be displayed. + - | + When initializing a new GHES cluster, nodes with the `consul-server` role should be added to the cluster before adding additional nodes. Adding all nodes simultaneously creates a race condition between nomad server registration and nomad client registration. + - | + Admins setting up cluster high availability (HA) may encounter a spokes error when running `ghe-cluster-repl-status` if a new organization and repositories are created before using the `ghe-cluster-repl-bootstrap` command. To avoid this issue, complete the cluster HA setup with `ghe-cluster-repl-bootstrap` before creating new organizations and repositories. + - | + After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. diff --git a/data/release-notes/enterprise-server/3-16/0.yml b/data/release-notes/enterprise-server/3-16/0.yml index 6972de450ba4..1191445f1aec 100644 --- a/data/release-notes/enterprise-server/3-16/0.yml +++ b/data/release-notes/enterprise-server/3-16/0.yml @@ -177,6 +177,8 @@ sections: # https://github.com/github/releases/issues/5415 - | The CodeQL Action has been updated to v3.28.6 to enable uploading artifacts in debug mode without logging the complete environment when running CodeQL CLI v2.20.3+. + - | + Customers who have code scanning enabled may experience slower transitions when upgrading to version 3.16.0, due to changes in the data model that require data migration. We recommend testing this upgrade in a non-production environment first, as it could result in longer downtime than expected. [Updated: 2025-06-12] known_issues: - | @@ -265,3 +267,5 @@ sections: The release notes previously did not mention VMware ESXi 8.0 support. [Updated: 2025-04-02] - | The release notes previously mentioned Dependabot support for `pnpm` workspace catalogs, which did not ship in 3.16 and will ship in 3.17. [Updated: 2025-05-08] + - | + Customers who have code scanning enabled may experience slower transitions when upgrading to version 3.16.0, due to changes in the data model that require data migration. We recommend testing this upgrade in a non-production environment first, as it could result in longer downtime than expected. [Updated: 2025-06-12] \ No newline at end of file diff --git a/data/release-notes/enterprise-server/3-16/2.yml b/data/release-notes/enterprise-server/3-16/2.yml index 436f4d0965cf..484d9eac3b3e 100644 --- a/data/release-notes/enterprise-server/3-16/2.yml +++ b/data/release-notes/enterprise-server/3-16/2.yml @@ -1,8 +1,6 @@ date: '2025-04-17' sections: security_fixes: - - | - **HIGH**: An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available, such as during a hot patch upgrade. This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/cverecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). - | **MEDIUM:** An attacker could view private repository names, which the signed-in user is not authorized to see, in the GitHub Advanced Security Overview. This was due to a missing authorization check and occurred when filtering with _only_ `archived:`. GitHub has requested CVE ID [CVE-2025-3124](https://www.cve.org/CVERecord?id=CVE-2025-3124) for this vulnerability. - | diff --git a/data/release-notes/enterprise-server/3-16/3.yml b/data/release-notes/enterprise-server/3-16/3.yml index 5465ed1bc631..bfa30d5ca52a 100644 --- a/data/release-notes/enterprise-server/3-16/3.yml +++ b/data/release-notes/enterprise-server/3-16/3.yml @@ -91,5 +91,7 @@ sections: After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. - | After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. + + errata: - | - Repository cache replicas return `Repository not found` when changes have been pushed to the primary instance that have not yet synchronized to the cache replica. This issue can also occur in all previous patches of this release. + The [Known issues](/admin/release-notes#3.16.3-known-issues) section previously indicated that `repository cache replicas return "Repository not found" when changes have been pushed to the primary instance that have not yet synchronized to the cache replica` is still an issue. The issue is resolved and is documented in the [Bug fixes](/admin/release-notes#3.16.3-bugs) section. [Updated: 2025-06-19] diff --git a/data/release-notes/enterprise-server/3-16/4.yml b/data/release-notes/enterprise-server/3-16/4.yml new file mode 100644 index 000000000000..2288fe4e663d --- /dev/null +++ b/data/release-notes/enterprise-server/3-16/4.yml @@ -0,0 +1,81 @@ +date: '2025-06-18' +sections: + security_fixes: + - | + **HIGH:** An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available (for example, during a hot patch upgrade). This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. The initial fix for this issue was found to be incomplete, leaving the vulnerability exploitable in some cases. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/CVERecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + - | + Packages have been updated to the latest security versions. + bugs: + - | + The Management Console maintenance page would not load correctly if the underlying API call fails to load the connection services data. + - | + On an instance with GitHub Actions configured to connect to Azure OIDC storage through a proxy, Actions logs and artifacts would not be properly stored. + - | + Site administrators and auditors reviewing audit logs saw the `mc_actor` field was empty when a user signed out, because audit logging occurred after the user was removed from session state. + - | + On instances with a large number of code scanning users, running `ghe-config-apply` previously resulted in slow performance. + - | + During hotpatching, site administrators could encounter issues with the kernel partition table not updating correctly when running `ghe-partition-setup`. These users had to manually intervene in order to complete the upgrade process. + - | + Users of GitHub Actions could not view or manage Actions artifacts and logs if the global AWS STS endpoint was unavailable, because Actions did not use the configured regional STS endpoint. + - | + On an instance with GitHub Actions disabled, status check icons failed to render on repository commit lists. + - | + When users clicked and held on search suggestions in the search bar, they were not taken to the correct location. + - | + Organization owners had no audit log events to track organization announcements displayed on banners in the UI. + - | + If an Enterprise Managed User (EMU) pushed to their personal repository with both secret scanning and push protection enabled, the custom patterns defined at enterprise level were not being applied during the push protection scan. + - | + When an administrator suspended a user from the site admin dashboard, the form required them to complete Digital Services Act (DSA) fields that are not relevant on GitHub Enterprise Server. + - | + After an appliance reboot, code scanning did not always trigger or process analyses. + changes: + - | + Site administrators who test the Prometheus endpoint can now use 127.0.0.1 as a trusted IP address. Previously, only specific IPs were allowed for testing. + - | + To ensure critical integrations and automated systems have uninterrupted access, the `/repositories/:repository_id/collaborators` endpoints now honor the higher rate limits for exempt users set with `ghe-config app.github.rate-limiting-exempt-users ""`. + - | + Site administrators can now set rate limits for the WebSockets controller used for live updates, with `ghe-config app.github.web-sockets-rate-limit`. For more information, see [Controlling the rate for the live update service](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#controlling-the-rate-for-the-live-update-service). + closing_down: + - | + Site administrators who manage dependencies with the base-pinned image should no longer rely on the vulcanizer CLI, as it is in the process of being retired and replaced with vulcancli. Transition to vulcancli to ensure continued support and compatibility. + known_issues: + - | + Custom firewall rules are removed during the upgrade process. + - | + During the validation phase of a configuration run, a `No such object` error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start. + - | + If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)." + - | + On an instance with the HTTP `X-Forwarded-For` header configured for use behind a load balancer, all client IP addresses in the instance's audit log erroneously appear as 127.0.0.1. + - | + {% data reusables.release-notes.large-adoc-files-issue %} + - | + Admin stats REST API endpoints may timeout on appliances with many users or repositories. Retrying the request until data is returned is advised. + - | + When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed. + - | + Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps. + - | + {% data reusables.release-notes.2024-06-possible-frontend-5-minute-outage-during-hotpatch-upgrade %} + - | + When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`. + - | + An organization-level code scanning configuration page is displayed on instances that do not use GitHub Advanced Security or code scanning. + - | + When enabling automatic update checks for the first time in the Management Console, the status is not dynamically reflected until the "Updates" page is reloaded. + - | + When restoring from a backup snapshot, a large number of `mapper_parsing_exception` errors may be displayed. + - | + When initializing a new GHES cluster, nodes with the `consul-server` role should be added to the cluster before adding additional nodes. Adding all nodes simultaneously creates a race condition between nomad server registration and nomad client registration. + - | + Admins setting up cluster high availability (HA) may encounter a spokes error when running `ghe-cluster-repl-status` if a new organization and repositories are created before using the `ghe-cluster-repl-bootstrap` command. To avoid this issue, complete the cluster HA setup with `ghe-cluster-repl-bootstrap` before creating new organizations and repositories. + - | + In a cluster, the host running restore requires access the storage nodes via their private IPs. + - | + On an instance hosted on Azure, comments made on an issue via email are not added to the issue. + - | + After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. + - | + After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. diff --git a/data/release-notes/enterprise-server/3-17/0.yml b/data/release-notes/enterprise-server/3-17/0.yml index 3284267a13b3..f1715a51a264 100644 --- a/data/release-notes/enterprise-server/3-17/0.yml +++ b/data/release-notes/enterprise-server/3-17/0.yml @@ -165,6 +165,10 @@ sections: - | Enterprise owners can centrally manage and share GitHub Apps across all organizations in their enterprise by creating enterprise-owned GitHub Apps. This eliminates the need to duplicate apps or make them `public`, reducing management overhead and improving security. `Private` and `internal` apps can be transferred to the enterprise level, with permission updates automatically applied across all organizations. Only `internal` visibility is supported, meaning only users and organizations within the enterprise can install and authorize these Apps. See [AUTOTITLE](/admin/managing-your-enterprise-account/creating-github-apps-for-your-enterprise). + bugs: + - | + Fetches from repository caches returned a "Repository not found" error when the cache is out of sync. [Updated: 2025-06-19] + changes: # https://github.com/github/releases/issues/5956 - | @@ -202,12 +206,10 @@ sections: After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. - | After a geo-replica is promoted to primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. - - | - Repository Cache Replicas return `Repository not found` when changes have been pushed to the primary instance that have not yet synchronized to the Cache Replica. This issue can also occur in all previous patches of this release. - | When publishing npm packages in a workflow after restoring from a backup to GitHub Enterprise Server 3.13.5.gm4 or 3.14.2.gm3, you may encounter a `401 Unauthorized` error from the GitHub Packages service. This can happen if the restore is from an N-1 or N-2 version and the workflow targets the npm endpoint on the backup instance. To avoid this issue, ensure the access token is valid and includes the correct scopes for publishing to GitHub Packages. - | - Uploading a new license with unbundled GitHub Advanced Security may not fully unbundle all the Security Configurations on the instance in certain cases. Any active Security Configurations will continue to function, but when attempting to apply the configurations to new repositories you may see errors like "Advanced Security is not purchased" or `Validation failed: Secret scanning non provider patterns Non-provider patterns must be disabled when secret scanning is disabled`. Contact GitHub Support for assistance clearing this state in version 3.17.0. This issue will be resolved in version 3.17.1. + Uploading a new license with unbundled GitHub Advanced Security may not fully unbundle all the Security Configurations on the instance in certain cases. Any active Security Configurations will continue to function, but when attempting to apply the configurations to new repositories you may see errors like "Advanced Security is not purchased" or `Validation failed: Secret scanning non provider patterns Non-provider patterns must be disabled when secret scanning is disabled`. Contact GitHub Support for assistance clearing this state in version 3.17.0. This issue will be resolved in version 3.17.2. closing_down: # https://github.com/github/releases/issues/5177 diff --git a/data/release-notes/enterprise-server/3-17/1.yml b/data/release-notes/enterprise-server/3-17/1.yml new file mode 100644 index 000000000000..7c95b1bb7a66 --- /dev/null +++ b/data/release-notes/enterprise-server/3-17/1.yml @@ -0,0 +1,75 @@ +date: '2025-06-18' +sections: + security_fixes: + - | + **HIGH:** An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available (for example, during a hot patch upgrade). This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. The initial fix for this issue was found to be incomplete, leaving the vulnerability exploitable in some cases. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/CVERecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/). + - | + Packages have been updated to the latest security versions. + bugs: + - | + The Management Console maintenance page would not load correctly if the underlying API call fails to load the connection services data. + - | + On an instance with GitHub Actions configured to connect to Azure OIDC storage through a proxy, Actions logs and artifacts would not be properly stored. + - | + Site administrators and auditors reviewing audit logs saw the `mc_actor` field was empty when a user signed out, because audit logging occurred after the user was removed from session state. + - | + On instances with a large number of code scanning users, running `ghe-config-apply` previously resulted in slow performance. + - | + During hotpatching, site administrators could encounter issues with the kernel partition table not updating correctly when running `ghe-partition-setup`. These users had to manually intervene in order to complete the upgrade process. + - | + Users of GitHub Actions could not view or manage Actions artifacts and logs if the global AWS STS endpoint was unavailable, because Actions did not use the configured regional STS endpoint. + - | + Fixed an edge case for certain Security Configurations that would not automatically work when transitioning to unbundled GitHub Advanced Security SKUs. + - | + When users clicked and held on search suggestions in the search bar, they were not taken to the correct location. + - | + Organization owners had no audit log events to track organization announcements displayed on banners in the UI. + - | + If an Enterprise Managed User (EMU) pushed to their personal repository with both secret scanning and push protection enabled, the custom patterns defined at enterprise level were not being applied during the push protection scan. + - | + On instances with dangling commit graph lock files, recompute checksum operations were unexpectedly triggered. + - | + After an appliance reboot, code scanning did not always trigger or process analyses. + changes: + - | + Site administrators who test the Prometheus endpoint can now use 127.0.0.1 as a trusted IP address. Previously, only specific IPs were allowed for testing. + - | + To ensure critical integrations and automated systems have uninterrupted access, the `/repositories/:repository_id/collaborators` endpoints now honor the higher rate limits for exempt users set with `ghe-config app.github.rate-limiting-exempt-users ""`. + - | + Site administrators can now set rate limits for the WebSockets controller used for live updates, with `ghe-config app.github.web-sockets-rate-limit`. For more information, see [Controlling the rate for the live update service](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#controlling-the-rate-for-the-live-update-service). + closing_down: + - | + Site administrators who manage dependencies with the base-pinned image should no longer rely on the vulcanizer CLI, as it is in the process of being retired and replaced with vulcancli. Transition to vulcancli to ensure continued support and compatibility. + known_issues: + - | + Custom firewall rules are removed during the upgrade process. + - | + During the validation phase of a configuration run, a `No such object` error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start. + - | + If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)." + - | + {% data reusables.release-notes.large-adoc-files-issue %} + - | + Admin stats REST API endpoints may timeout on appliances with many users or repositories. Retrying the request until data is returned is advised. + - | + When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed. + - | + Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps. + - | + When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`. + - | + When initializing a new GHES cluster, nodes with the `consul-server` role should be added to the cluster before adding additional nodes. Adding all nodes simultaneously creates a race condition between nomad server registration and nomad client registration. + - | + Admins setting up cluster high availability (HA) may encounter a spokes error when running `ghe-cluster-repl-status` if a new organization and repositories are created before using the `ghe-cluster-repl-bootstrap` command. To avoid this issue, complete the cluster HA setup with `ghe-cluster-repl-bootstrap` before creating new organizations and repositories. + - | + In a cluster, the host running restore requires to access the storage nodes via their private IP addresses. + - | + On an instance hosted on Azure, comments made on an issue via email are not added to the issue. + - | + After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance. + - | + After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows. + - | + When publishing npm packages in a workflow after restoring from a backup to GitHub Enterprise Server 3.13.5.gm4 or 3.14.2.gm3, you may encounter a `401 Unauthorized` error from the GitHub Packages service. This can happen if the restore is from an N-1 or N-2 version and the workflow targets the npm endpoint on the backup instance. To avoid this issue, ensure the access token is valid and includes the correct scopes for publishing to GitHub Packages. + - | + Uploading a new license with unbundled GitHub Advanced Security may not fully unbundle all the Security Configurations on the instance in certain cases. Any active Security Configurations will continue to function, but when attempting to apply the configurations to new repositories you may see errors like "Advanced Security is not purchased" or `Validation failed: Secret scanning non provider patterns. Non-provider patterns must be disabled when secret scanning is disabled`. Contact GitHub Support for assistance clearing this state in version 3.17.1. This issue will be resolved in version 3.17.2. diff --git a/data/reusables/actions/actions-billing.md b/data/reusables/actions/actions-billing.md index 384523c5a247..a25bb9d1c19f 100644 --- a/data/reusables/actions/actions-billing.md +++ b/data/reusables/actions/actions-billing.md @@ -1 +1 @@ -{% data variables.product.prodname_actions %} usage is free for standard {% data variables.product.prodname_dotcom %}-hosted runners in public repositories, and for self-hosted runners. See [AUTOTITLE](/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job#standard-github-hosted-runners-for-public-repositories). For private repositories, each {% data variables.product.prodname_dotcom %} account receives a certain amount of free minutes and storage for use with {% data variables.product.prodname_dotcom %}-hosted runners, depending on the account's plan. Any usage beyond the included amounts is controlled by spending limits. +{% data variables.product.prodname_actions %} usage is free for standard {% data variables.product.prodname_dotcom %}-hosted runners in public repositories, and for self-hosted runners. See [AUTOTITLE](/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job#standard-github-hosted-runners-for-public-repositories). For private repositories, each {% data variables.product.prodname_dotcom %} account receives a quota of free minutes and storage for use with {% data variables.product.prodname_dotcom %}-hosted runners, depending on the account's plan. Any usage beyond the included amounts is billed to your account. diff --git a/data/reusables/actions/actions-secrets-and-variables-naming.md b/data/reusables/actions/actions-secrets-and-variables-naming.md index e0652847d0e6..986eb56cca61 100644 --- a/data/reusables/actions/actions-secrets-and-variables-naming.md +++ b/data/reusables/actions/actions-secrets-and-variables-naming.md @@ -1,5 +1,5 @@ * Can only contain alphanumeric characters (`[a-z]`, `[A-Z]`, `[0-9]`) or underscores (`_`). Spaces are not allowed. * Must not start with the `GITHUB_` prefix. * Must not start with a number. -* Are case insensitive. +* Are case insensitive when referenced. {% data variables.product.github %} stores secret names as uppercase regardless of how they are entered. * Must be unique to the repository, organization, or enterprise where they are created. diff --git a/data/reusables/actions/actions-spending-limit-brief.md b/data/reusables/actions/actions-spending-limit-brief.md index 3371718741ec..8005a32b08eb 100644 --- a/data/reusables/actions/actions-spending-limit-brief.md +++ b/data/reusables/actions/actions-spending-limit-brief.md @@ -1 +1,3 @@ -If you are a monthly-billed customer, your account will have a default spending limit of 0 US dollars (USD), which prevents additional usage of minutes or storage for private repositories beyond the amounts included with your account. If you pay your account by invoice, your account will have an unlimited default spending limit. +If you are a monthly-billed customer, your account will have a default budget of 0 US dollars (USD), which prevents additional usage of minutes or storage for private repositories beyond the quota included with your account. If you pay your account by invoice, your account will have an unlimited default spending limit. + + diff --git a/data/reusables/actions/azure-vnet-supported-regions.md b/data/reusables/actions/azure-vnet-supported-regions.md index 82afe2664ec3..41071c1f3b45 100644 --- a/data/reusables/actions/azure-vnet-supported-regions.md +++ b/data/reusables/actions/azure-vnet-supported-regions.md @@ -15,7 +15,7 @@ The following regions are supported on {% data variables.product.prodname_dotcom
  • EastUs2
  • FranceCentral
  • GermanyWestCentral
  • -
  • JapanEast
  • +
  • JapanWest
  • KoreaCentral
  • NorthCentralUs
  • NorthEurope
  • @@ -26,6 +26,7 @@ The following regions are supported on {% data variables.product.prodname_dotcom
  • SwedenCentral
  • SwitzerlandNorth
  • UkSouth
  • +
  • UkWest
  • WestUs
  • WestUs2
  • WestUs3
  • diff --git a/data/reusables/actions/configuration-variables-beta-note.md b/data/reusables/actions/configuration-variables-beta-note.md deleted file mode 100644 index 9aaebc0d63fe..000000000000 --- a/data/reusables/actions/configuration-variables-beta-note.md +++ /dev/null @@ -1,2 +0,0 @@ -> [!NOTE] -> Configuration variables for {% data variables.product.prodname_actions %} are in {% data variables.release-phases.public_preview %} and subject to change. diff --git a/data/reusables/actions/self-hosted-runner-group-limit.md b/data/reusables/actions/self-hosted-runner-group-limit.md new file mode 100644 index 000000000000..a8377e59c362 --- /dev/null +++ b/data/reusables/actions/self-hosted-runner-group-limit.md @@ -0,0 +1 @@ +You can have a maximum of 10,000 self-hosted runners in one runner group. If this limit is reached, adding a new runner will not be possible. diff --git a/data/reusables/advanced-security/control-use-cost-links.md b/data/reusables/advanced-security/control-use-cost-links.md index 4c27c6aa7ecf..313c33f67d2f 100644 --- a/data/reusables/advanced-security/control-use-cost-links.md +++ b/data/reusables/advanced-security/control-use-cost-links.md @@ -1,3 +1,3 @@ -{% ifversion fpt or ghec %}[AUTOTITLE](/billing/managing-your-billing/preventing-overspending){% ifversion ghec %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-advanced-security-in-your-enterprise){% endif %} -{% elsif ghes %}[AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-billing/preventing-overspending) in the {% data variables.product.prodname_ghe_cloud %} docs +{% ifversion fpt or ghec %}[AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending){% ifversion ghec %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-advanced-security-in-your-enterprise){% endif %} +{% elsif ghes %}[AUTOTITLE](/enterprise-cloud@latest/billing/managing-your-billing/using-budgets-control-spending) in the {% data variables.product.prodname_ghe_cloud %} docs {% endif %} diff --git a/data/reusables/billing/default-over-quota-behavior.md b/data/reusables/billing/default-over-quota-behavior.md new file mode 100644 index 000000000000..5b6dd38d52ee --- /dev/null +++ b/data/reusables/billing/default-over-quota-behavior.md @@ -0,0 +1,5 @@ +If your account does not have a valid payment method on file, usage is blocked once you use up your quota. + +By default, if you have a valid payment method on file, spending is limited to $0 USD until you set a budget. You can set and manage a budget to limit spending for a product or SKU. See [AUTOTITLE](/billing/managing-your-billing/using-budgets-control-spending). + + diff --git a/data/reusables/billing/license-models.md b/data/reusables/billing/license-models.md index fc73e8e0e497..b8ba350dc9b3 100644 --- a/data/reusables/billing/license-models.md +++ b/data/reusables/billing/license-models.md @@ -2,16 +2,16 @@ {% rowheaders %} -| License model | GHE (Metered) | GHE (Volume/subscription) | -|----------------------------------|-------------------------------------|------------------------------------| -| **Billing type** | Usage-based | Volume-based | -| **Cloud vs. Server** | Cloud-first, with a Server use right for Cloud users | 1 user license covers both Cloud and Server (hybrid, Cloud-only, or Server-only) | -| **Setup** | Self-service | Manual setup via {% data variables.product.github %} Sales | -| **Server license generation** | Users generate their own {% data variables.product.prodname_enterprise %} Server license | License file provided by {% data variables.product.github %} Sales | -| **License file scope** | Covers Cloud-assigned users at time of generation | Covers all purchased users for both Cloud and Server | -| **License expiration** | Expires in 12 months | Aligned with volume license term | -| **License key usage** | Limits max Server users | Covers all users in the volume subscription | -| **Required {% data variables.product.prodname_enterprise %} version** | {% data variables.product.prodname_enterprise %} 3.13+, with {% data variables.product.prodname_github_connect %} | No specific version required | -| **Billing model** | Invoiced for users not assigned on Cloud via {% data variables.product.prodname_github_connect %} | Fixed cost based on purchased volume | +| License model | GHE (Metered) | GHE (Volume/subscription) | +|----------------------------------|-------------------------------------|-----------------------------------------------------------------------------------------------| +| **Billing type** | Usage-based | Volume-based | +| **Cloud vs. Server** | Cloud-first, with a Server use right for Cloud users | 1 user license covers both Cloud and Server (hybrid, Cloud-only, or Server-only) | +| **Setup** | Self-service | Manual setup via {% data variables.product.github %} Sales | +| **Server license generation** | Users generate their own {% data variables.product.prodname_ghe_server %} license | Enterprise owners download their own {% data variables.product.prodname_ghe_server %} license | +| **License file scope** | Covers Cloud-assigned users at time of generation | Covers all purchased users for both Cloud and Server | +| **License expiration** | Expires in 12 months | Aligned with volume license term | +| **License key usage** | Limits max Server users | Covers all users in the volume subscription | +| **Required {% data variables.product.prodname_enterprise %} version** | {% data variables.product.prodname_enterprise %} 3.13+, with {% data variables.product.prodname_github_connect %} | No specific version required | +| **Billing model** | Invoiced for users not assigned on Cloud via {% data variables.product.prodname_github_connect %} | Fixed cost based on purchased volume | {% endrowheaders %} diff --git a/data/reusables/code-scanning/codeql-query-tables/actions.md b/data/reusables/code-scanning/codeql-query-tables/actions.md index 19608e8e0460..0e99d6984af0 100644 --- a/data/reusables/code-scanning/codeql-query-tables/actions.md +++ b/data/reusables/code-scanning/codeql-query-tables/actions.md @@ -19,11 +19,11 @@ | [Untrusted Checkout TOCTOU](https://codeql.github.com/codeql-query-help/actions/actions-untrusted-checkout-toctou-critical/) | 367 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Use of a known vulnerable action](https://codeql.github.com/codeql-query-help/actions/actions-vulnerable-action/) | 1395 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Workflow does not contain permissions](https://codeql.github.com/codeql-query-help/actions/actions-missing-workflow-permissions/) | 275 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| [Artifact poisoning](https://codeql.github.com/codeql-query-help/actions/actions-artifact-poisoning-medium/) | 829 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | -| [Checkout of untrusted code in trusted context](https://codeql.github.com/codeql-query-help/actions/actions-untrusted-checkout-medium/) | 829 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | -| [Code injection](https://codeql.github.com/codeql-query-help/actions/actions-code-injection-medium/) | 094, 095, 116 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | -| [Environment variable built from user-controlled sources](https://codeql.github.com/codeql-query-help/actions/actions-envvar-injection-medium/) | 077, 020 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | -| [PATH environment variable built from user-controlled sources](https://codeql.github.com/codeql-query-help/actions/actions-envpath-injection-medium/) | 077, 020 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | +| [Artifact poisoning](https://codeql.github.com/codeql-query-help/actions/actions-artifact-poisoning-medium/) | 829 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| [Checkout of untrusted code in trusted context](https://codeql.github.com/codeql-query-help/actions/actions-untrusted-checkout-medium/) | 829 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| [Code injection](https://codeql.github.com/codeql-query-help/actions/actions-code-injection-medium/) | 094, 095, 116 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| [Environment variable built from user-controlled sources](https://codeql.github.com/codeql-query-help/actions/actions-envvar-injection-medium/) | 077, 020 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| [PATH environment variable built from user-controlled sources](https://codeql.github.com/codeql-query-help/actions/actions-envpath-injection-medium/) | 077, 020 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Unpinned tag for a non-immutable Action in workflow](https://codeql.github.com/codeql-query-help/actions/actions-unpinned-tag/) | 829 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | {% endrowheaders %} diff --git a/data/reusables/code-scanning/codeql-query-tables/go.md b/data/reusables/code-scanning/codeql-query-tables/go.md index 9e64ab117674..7bb25f200e8c 100644 --- a/data/reusables/code-scanning/codeql-query-tables/go.md +++ b/data/reusables/code-scanning/codeql-query-tables/go.md @@ -7,6 +7,7 @@ | [Bad redirect check](https://codeql.github.com/codeql-query-help/go/go-bad-redirect-check/) | 601 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Clear-text logging of sensitive information](https://codeql.github.com/codeql-query-help/go/go-clear-text-logging/) | 312, 315, 359 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Command built from user-controlled sources](https://codeql.github.com/codeql-query-help/go/go-command-injection/) | 078 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | +| [Cross-site scripting via HTML template escaping bypass](https://codeql.github.com/codeql-query-help/go/go-html-template-escaping-bypass-xss/) | 079, 116 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | | [Database query built from user-controlled sources](https://codeql.github.com/codeql-query-help/go/go-sql-injection/) | 089 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Disabled TLS certificate check](https://codeql.github.com/codeql-query-help/go/go-disabled-certificate-check/) | 295 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Email content injection](https://codeql.github.com/codeql-query-help/go/go-email-injection/) | 640 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | diff --git a/data/reusables/codespaces/exporting-changes.md b/data/reusables/codespaces/exporting-changes.md index 550a51c4db3c..e78fce0e6341 100644 --- a/data/reusables/codespaces/exporting-changes.md +++ b/data/reusables/codespaces/exporting-changes.md @@ -1 +1 @@ -If your personal, organization, or enterprise account reaches its spending limit, you will no longer be able to create or resume codespaces that are billable to that account. However, you can still export any work-in-progress changes to a new branch. For more information, see [AUTOTITLE](/codespaces/troubleshooting/exporting-changes-to-a-branch). +If your personal, organization, or enterprise account uses all of its quota or budget, you will no longer be able to create or resume codespaces that are billable to that account. However, you can still export any work-in-progress changes to a new branch. For more information, see [AUTOTITLE](/codespaces/troubleshooting/exporting-changes-to-a-branch). diff --git a/data/reusables/codespaces/when-an-org-pays.md b/data/reusables/codespaces/when-an-org-pays.md index e0981d15aabc..233d4d196c37 100644 --- a/data/reusables/codespaces/when-an-org-pays.md +++ b/data/reusables/codespaces/when-an-org-pays.md @@ -1,3 +1,3 @@ -* The organization has set a non-zero spending limit for {% data variables.product.prodname_github_codespaces %}. +* The organization has no budget defined for {% data variables.product.prodname_github_codespaces %} or has set a non-zero budget. * The codespace is created from one of the organization's repositories, or from a fork of one of the organization's repositories. This includes {% ifversion ghec %}public, private, and internal{% elsif fpt %}both public and private{% endif %} repositories. * The user creating the codespace is a member or collaborator of the organization, and the organization has enabled {% data variables.product.prodname_github_codespaces %} for this user. This can include all members and collaborators if the organization has chosen to enable {% data variables.product.prodname_codespaces %} for all users. If {% data variables.product.prodname_codespaces %} isn't enabled for a user, they can still create codespaces from public repositories in the organization, but the user will pay for these codespaces. diff --git a/data/reusables/copilot/assistive-mode-instructions.md b/data/reusables/copilot/assistive-mode-instructions.md new file mode 100644 index 000000000000..008ac5646cf7 --- /dev/null +++ b/data/reusables/copilot/assistive-mode-instructions.md @@ -0,0 +1 @@ +Press Shift+C to open {% data variables.copilot.copilot_chat_short %} in assistive mode. diff --git a/data/reusables/copilot/chat-model-limitations-ide.md b/data/reusables/copilot/chat-model-limitations-ide.md index e4a8889bafae..3564a872e167 100644 --- a/data/reusables/copilot/chat-model-limitations-ide.md +++ b/data/reusables/copilot/chat-model-limitations-ide.md @@ -1,4 +1,4 @@ > [!NOTE] > > * If you use {% data variables.copilot.copilot_extensions_short %}, they may override the model you select. -> * Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter. +> * Experimental pre-release versions of the models may not interact with all filters correctly, including the setting to block suggestions matching public code (see [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-your-copilot-plan/managing-copilot-policies-as-an-individual-subscriber#enabling-or-disabling-suggestions-matching-public-code)). diff --git a/data/reusables/copilot/code-review/custom-instructions-information.md b/data/reusables/copilot/code-review/custom-instructions-information.md new file mode 100644 index 000000000000..90c8ffbdb162 --- /dev/null +++ b/data/reusables/copilot/code-review/custom-instructions-information.md @@ -0,0 +1,22 @@ +> [!NOTE] +> Custom instructions for {% data variables.copilot.copilot_code-review_short %} are in {% data variables.release-phases.public_preview %} and are subject to change. +> +> This feature is available with the {% data variables.copilot.copilot_pro_short %}, {% data variables.copilot.copilot_pro_plus_short %} {% data variables.copilot.copilot_business_short %}, and {% data variables.copilot.copilot_enterprise_short %} plan. +> +> During the {% data variables.release-phases.public_preview %}, if you're using a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, the organization or enterprise that provides your plan must have the **Opt in to preview features** setting enabled. See [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization) or [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#copilot-in-githubcom) + +Customize {% data variables.copilot.copilot_code-review_short %} behavior by adding a repository custom instructions file. To do this, create a `.github/copilot-instructions.md` file in your repository and add natural language text that you want {% data variables.product.prodname_copilot_short %} to consider when reviewing code. This is the same `copilot-instructions.md` used by {% data variables.copilot.copilot_chat_short %}. See [AUTOTITLE](/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot). + +To enable or disable custom instructions for code review, go to your repository’s settings, then navigate to **Code Review** under **Copilot**, and toggle the “Use custom instructions when reviewing pull requests” option. + +### Example + +This example of a `.github/copilot-instructions.md` file contains three instructions that will be applied to all {% data variables.copilot.copilot_code-review_short %}s in the repository. + +```text +When performing a code review, respond in Spanish. + +When performing a code review, follow our internal security checklist. + +When performing a code review, focus on readability and avoid nested ternary operators. +``` diff --git a/data/reusables/copilot/coding-agent-emu-limitation.md b/data/reusables/copilot/coding-agent-emu-limitation.md new file mode 100644 index 000000000000..f12b2c5bb0e2 --- /dev/null +++ b/data/reusables/copilot/coding-agent-emu-limitation.md @@ -0,0 +1,3 @@ +{% data variables.copilot.copilot_coding_agent %} is not available in personal repositories owned by {% data variables.enterprise.prodname_managed_users %}. This is because {% data variables.copilot.copilot_coding_agent %} runs on {% data variables.product.company_short %}-hosted runners, which are not available to repositories owned by {% data variables.enterprise.prodname_managed_users %}. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners). + + diff --git a/data/reusables/copilot/coding-agent/enabling-for-orgs-and-enterprises.md b/data/reusables/copilot/coding-agent/enabling-for-orgs-and-enterprises.md index ca7d769d39b6..4fe9696d4832 100644 --- a/data/reusables/copilot/coding-agent/enabling-for-orgs-and-enterprises.md +++ b/data/reusables/copilot/coding-agent/enabling-for-orgs-and-enterprises.md @@ -1,3 +1,3 @@ -For organizations, the ability to use {% data variables.copilot.copilot_coding_agent %} is controlled by policy settings for the organization. See [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). +For {% data variables.copilot.copilot_enterprise %} subscribers, the ability to use {% data variables.copilot.copilot_coding_agent %} is controlled by policy settings defined at the organization level. See [AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/adding-copilot-coding-agent-to-organization). -If the organization is owned by an enterprise, enablement may be controlled at the enterprise level. See [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/adding-copilot-coding-agent-to-enterprise). +If the organization is owned by an enterprise, enablement may be controlled at the enterprise level. See [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-copilot-coding-agent-in-your-enterprise). diff --git a/data/reusables/copilot/coding-agent/premium-requests-start-date.md b/data/reusables/copilot/coding-agent/premium-requests-start-date.md deleted file mode 100644 index bd2aecba576c..000000000000 --- a/data/reusables/copilot/coding-agent/premium-requests-start-date.md +++ /dev/null @@ -1,3 +0,0 @@ ->[!NOTE] Billing for premium requests is coming soon. Until then, you can continue to use {% data variables.copilot.copilot_coding_agent %} without being billed for additional premium requests. For the most up-to-date start date, see [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). -> -> This is a preview feature and may change in the future. diff --git a/data/reusables/copilot/coding-agent/preview-note-text.md b/data/reusables/copilot/coding-agent/preview-note-text.md index f5c817918426..ecae0fc2e7c7 100644 --- a/data/reusables/copilot/coding-agent/preview-note-text.md +++ b/data/reusables/copilot/coding-agent/preview-note-text.md @@ -1 +1 @@ -{% data variables.copilot.copilot_coding_agent %} is in {% data variables.release-phases.public_preview %} and subject to change. +{% data variables.copilot.copilot_coding_agent %} is in {% data variables.release-phases.public_preview %} and subject to change. During the preview, use of the feature is subject to [AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-pre-release-license-terms). diff --git a/data/reusables/copilot/copilot-edits/agent-mode-requests.md b/data/reusables/copilot/copilot-edits/agent-mode-requests.md index 87c86c293c6d..6d860b2b8a47 100644 --- a/data/reusables/copilot/copilot-edits/agent-mode-requests.md +++ b/data/reusables/copilot/copilot-edits/agent-mode-requests.md @@ -1,3 +1,3 @@ -When you use {% data variables.copilot.copilot_agent_short %} mode, each prompt you send counts as one premium request, multiplied by the model's rate. {% data variables.product.prodname_copilot_short %} may take several follow-up actions to complete your task, but these follow-up actions do not count toward your premium request usage. Only the prompts you enter are billed—tool calls or background steps taken by the agent are not charged. +When you use {% data variables.copilot.copilot_agent_short %} mode, each prompt you enter counts as one premium request, multiplied by the model’s multiplier. For example, if you're using the included model—which has a multiplier of 0—your prompts won’t consume any premium requests. {% data variables.product.prodname_copilot_short %} may take several follow-up actions to complete your task, but these follow-up actions do **not** count toward your premium request usage. Only the prompts you enter are billed—tool calls or background steps taken by the agent are not charged. The total number of premium requests you use depends on how many prompts you enter and which model you select. See [AUTOTITLE](/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/monitoring-usage-and-entitlements/avoiding-unexpected-copilot-costs). diff --git a/data/reusables/copilot/differences-cfi-cfb-table.md b/data/reusables/copilot/differences-cfi-cfb-table.md index 8afb4423f8bb..9cc791dcb113 100644 --- a/data/reusables/copilot/differences-cfi-cfb-table.md +++ b/data/reusables/copilot/differences-cfi-cfb-table.md @@ -27,7 +27,7 @@ | Chat | {% data variables.copilot.copilot_free_short %} | {% data variables.copilot.copilot_pro_short %} | {% data variables.copilot.copilot_pro_plus_short %} | {% data variables.copilot.copilot_business_short %} | {% data variables.copilot.copilot_enterprise_short %} | | --- | --- | --- | --- | --- | --- | -| {% data variables.copilot.copilot_chat_short %} in IDEs[^1] [^2] | 50 messages per month | Unlimited with base model | Unlimited with base model | Unlimited with base model | Unlimited with base model | +| {% data variables.copilot.copilot_chat_short %} in IDEs[^1] [^2] | 50 messages per month | Unlimited with included models | Unlimited with included models | Unlimited with included models | Unlimited with included models | | Inline chat | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | Slash commands | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | {% data variables.copilot.copilot_mobile_short %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | @@ -67,7 +67,7 @@ | Code completion | {% data variables.copilot.copilot_free_short %} | {% data variables.copilot.copilot_pro_short %} | {% data variables.copilot.copilot_pro_plus_short %} | {% data variables.copilot.copilot_business_short %} | {% data variables.copilot.copilot_enterprise_short %} | | --- | --- | --- | --- | --- | --- | -| Real-time code suggestions with the base model[^5] | 2000 completions per month | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| Real-time code suggestions with included models[^5] | 2000 completions per month | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | {% data variables.copilot.next_edit_suggestions_caps %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% endrowheaders %} @@ -79,13 +79,13 @@ | Customization | {% data variables.copilot.copilot_free_short %} | {% data variables.copilot.copilot_pro_short %} | {% data variables.copilot.copilot_pro_plus_short %} | {% data variables.copilot.copilot_business_short %} | {% data variables.copilot.copilot_enterprise_short %} | | --- | --- | --- | --- | --- | --- | | Repository and personal custom instructions | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| Organization custom instructions ({% data variables.release-phases.public_preview %}) | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | +| Organization custom instructions ({% data variables.release-phases.public_preview %}) | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | Prompt files | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | Private extensions | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | Coding guidelines for code review | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | | Block suggestions matching public code | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | Exclude specified files from {% data variables.product.prodname_copilot_short %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| Organization-wide policy management | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| Organization-wide policy management | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% endrowheaders %} diff --git a/data/reusables/copilot/immersive-mode-instructions.md b/data/reusables/copilot/immersive-mode-instructions.md new file mode 100644 index 000000000000..f3dd5693627e --- /dev/null +++ b/data/reusables/copilot/immersive-mode-instructions.md @@ -0,0 +1,3 @@ +1. At the top right of any page on {% data variables.product.github %}, click the **{% octicon "copilot" aria-label="Copilot icon" %}** button next to the search bar. + + The full-page, immersive, mode of {% data variables.copilot.copilot_chat_short %} is displayed. diff --git a/data/reusables/copilot/mcp/about-github-mcp-server.md b/data/reusables/copilot/mcp/about-github-mcp-server.md new file mode 100644 index 000000000000..d6a7d2632efa --- /dev/null +++ b/data/reusables/copilot/mcp/about-github-mcp-server.md @@ -0,0 +1,30 @@ +## About the {% data variables.product.github %} MCP server + +The {% data variables.product.github %} MCP server is a Model Context Protocol (MCP) server provided and maintained by {% data variables.product.github %}. MCP allows you to integrate AI capabilities with other tools and services, enhancing your development experience by providing context-aware AI assistance. + +For more information on MCP, see [the official MCP documentation](https://modelcontextprotocol.io/introduction). + +You can access the {% data variables.product.github %} MCP server remotely through {% data variables.product.prodname_vscode %}, or other editors that support remote MCP; or you can run it locally in any MCP-compatible editor, allowing you to choose between the convenience of a hosted solution or the customizability of a self-hosted setup. + +If you want to utilize the remote {% data variables.product.github %} MCP server, you can do so in a few steps, without any local setup. This is particularly useful for users who want to quickly leverage {% data variables.product.github %}’s AI capabilities without the overhead of managing a local MCP server. + +Running the {% data variables.product.github %} MCP server locally requires a bit more setup, but it allows for greater customization and control over your AI interactions. + +{% data variables.product.github %} MCP server can be used to: + +* Automate and streamline code-related tasks. +* Connect third-party tools (like Cursor, Windsurf, or future integrations) to leverage {% data variables.product.github %}’s context and AI capabilities. +* Enable cloud-based workflows that work from any device, without local setup. + +## Availability + +There is currently broad support for local MCP servers in clients such as {% data variables.product.prodname_vscode %}, JetBrains IDEs, XCode, and others. + +Support for remote MCP servers is growing, with editors like {% data variables.product.prodname_vscode %} (with OAuth or PAT), {% data variables.product.prodname_vs %} (PAT only), Windsurf (PAT only), and Cursor (PAT only) already providing this functionality. + +To find out if your preferred editor supports remote MCP servers, check the documentation for your specific editor. + +## Prerequisites + +* A {% data variables.product.github %} account. +* {% data variables.product.prodname_vscode %}, or another MCP-compatible editor. diff --git a/data/reusables/copilot/mcp/mcp-configuration-location.md b/data/reusables/copilot/mcp/mcp-configuration-location.md new file mode 100644 index 000000000000..9aba15822083 --- /dev/null +++ b/data/reusables/copilot/mcp/mcp-configuration-location.md @@ -0,0 +1,2 @@ +* **A specific repository**. This enables you to share MCP servers with anyone who opens the project in {% data variables.product.prodname_vscode %}. To do this, create a `.vscode/mcp.json` file in the root of your repository. +* **Your personal instance of {% data variables.product.prodname_vscode %}**. You will be the only person who has access to configured MCP servers. To do this, add the configuration to your `settings.json` file in {% data variables.product.prodname_vscode %}. MCP servers configured this way will be available in all workspaces. diff --git a/data/reusables/copilot/mcp/troubleshooting-mcp-server.md b/data/reusables/copilot/mcp/troubleshooting-mcp-server.md new file mode 100644 index 000000000000..d2babb3b521c --- /dev/null +++ b/data/reusables/copilot/mcp/troubleshooting-mcp-server.md @@ -0,0 +1,28 @@ +## Troubleshooting + +If you encounter issues while using the {% data variables.product.github %} MCP server, there are a few common troubleshooting steps you can take. + +### Authorization issues + +If you are having trouble authorizing the MCP server, ensure that: + +* You are signed in to {% data variables.product.github %} in your choice of IDE. + +If you are authenticating with a {% data variables.product.pat_generic %} (PAT), ensure that: +* Your GitHub PAT is valid and has the necessary scopes for the actions you want to perform. +* You have entered the correct PAT when prompted in {% data variables.product.prodname_vscode %}. + +### Copilot agent mode problems + +If you are having trouble with the {% data variables.copilot.copilot_chat_short %} agent mode, ensure that: +* You have selected the correct agent in the {% data variables.copilot.copilot_chat_short %} box. +* You have configured the MCP server correctly in {% data variables.product.prodname_vscode %}. +* You have the necessary permissions to perform the actions you are trying to execute. + +### General tips + +If you are experiencing other issues with the {% data variables.product.github %} MCP server, here are some general tips to help you troubleshoot: + +* Check the output logs of the MCP server for any error messages. +* If you are running the MCP server locally, ensure that your local environment is set up correctly for running Docker containers. +* Try restarting the MCP server or your IDE. diff --git a/data/reusables/copilot/open-chat-panel.md b/data/reusables/copilot/open-chat-panel.md index e9b6f1e2fcd3..37e393b57748 100644 --- a/data/reusables/copilot/open-chat-panel.md +++ b/data/reusables/copilot/open-chat-panel.md @@ -1 +1 @@ -1. At the top right of the page, click the **{% octicon "copilot" aria-hidden="true" aria-label="copilot" %}** {% data variables.product.prodname_copilot %} icon next to the search bar. +1. At the top right of the page, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %} next to the **{% octicon "copilot" aria-label="Copilot" %}** icon, then click **Assistive** to open the {% data variables.copilot.copilot_chat_short %} panel. diff --git a/data/reusables/copilot/open-chat-vs-code.md b/data/reusables/copilot/open-chat-vs-code.md index e7072263f891..13b233ada0a1 100644 --- a/data/reusables/copilot/open-chat-vs-code.md +++ b/data/reusables/copilot/open-chat-vs-code.md @@ -1 +1 @@ -1. To open the chat view, click the chat icon in the activity bar or press Control+Command+i (Mac) / Ctrl+Alt+i (Windows/Linux). +1. Open {% data variables.copilot.copilot_chat_short %} by clicking the {% octicon "copilot" aria-hidden="true" aria-label="copilot" %} icon in the title bar of {% data variables.product.prodname_vscode %}. diff --git a/data/reusables/copilot/policies-for-dotcom.md b/data/reusables/copilot/policies-for-dotcom.md index ae2e4cf35077..4c26aa1174d3 100644 --- a/data/reusables/copilot/policies-for-dotcom.md +++ b/data/reusables/copilot/policies-for-dotcom.md @@ -1,2 +1,5 @@ * **Opt in to user feedback collection:** If enabled, users can provide feedback on {% data variables.product.prodname_copilot_short %} pull request summaries. For more information, see [AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-enterprise/copilot-pull-request-summaries/creating-a-pull-request-summary-with-github-copilot). -* **Opt in to preview features:** If enabled, users can test new {% data variables.product.prodname_copilot_short %} features that are not yet generally available. Be aware that previews of features may have flaws, and the features may be changed or discontinued at any time. Current previews of {% data variables.product.prodname_copilot_short %} features include {% data variables.copilot.copilot_spaces %}. See [AUTOTITLE](/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces). +* **Opt in to preview features:** If enabled, users can test new {% data variables.product.prodname_copilot_short %} features that are not yet generally available. Be aware that previews of features may have flaws, and the features may be changed or discontinued at any time. Current previews of {% data variables.product.prodname_copilot_short %} features include: + + * {% data variables.copilot.copilot_spaces %}. See [AUTOTITLE](/copilot/using-github-copilot/copilot-spaces/about-organizing-and-sharing-context-with-copilot-spaces). + * Repository custom instructions for {% data variables.copilot.copilot_code-review_short %}. See [Customizing {% data variables.product.prodname_copilot_short %}'s reviews with custom instructions](/copilot/using-github-copilot/code-review/using-copilot-code-review#customizing-copilots-reviews-with-custom-instructions). diff --git a/data/reusables/copilot/quickstart-nextsteps1.md b/data/reusables/copilot/quickstart-nextsteps1.md index 77e4c5a5f8b3..d5a75afbb78a 100644 --- a/data/reusables/copilot/quickstart-nextsteps1.md +++ b/data/reusables/copilot/quickstart-nextsteps1.md @@ -1,3 +1,3 @@ -* **Find out more about {% data variables.product.prodname_copilot_short %} code completion** - See [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-code-suggestions-in-your-editor). -* **Find out more about {% data variables.copilot.copilot_chat %}** - See [AUTOTITLE](/copilot/github-copilot-chat/using-github-copilot-chat-in-your-ide){% ifversion fpt %}.{% endif %}{% ifversion ghec %} and [AUTOTITLE](/copilot/github-copilot-enterprise/copilot-chat-in-github/using-github-copilot-chat-in-githubcom).{% endif %} -* **Learn how to write effective prompts** - See [AUTOTITLE](/copilot/using-github-copilot/prompt-engineering-for-github-copilot). +* **Find out more about {% data variables.product.prodname_copilot_short %} code completion** - See [AUTOTITLE](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot). +* **Find out more about {% data variables.copilot.copilot_chat %}** - See [AUTOTITLE](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-your-ide){% ifversion fpt %}.{% endif %}{% ifversion ghec %} and [AUTOTITLE](/copilot/github-copilot-enterprise/copilot-chat-in-github/using-github-copilot-chat-in-githubcom).{% endif %} +* **Learn how to write effective prompts** - See [AUTOTITLE](/copilot/using-github-copilot/copilot-chat/prompt-engineering-for-copilot-chat). diff --git a/data/reusables/copilot/quickstart-nextsteps2.md b/data/reusables/copilot/quickstart-nextsteps2.md index 4a8441b3b74c..f57d916aca8b 100644 --- a/data/reusables/copilot/quickstart-nextsteps2.md +++ b/data/reusables/copilot/quickstart-nextsteps2.md @@ -1,3 +1,3 @@ -* **Use {% data variables.product.prodname_copilot_short %} on your mobile device** - See [AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github-mobile/using-github-copilot-chat-in-github-mobile). -* **Use {% data variables.product.prodname_copilot_short %} on the command line** - See [AUTOTITLE](/copilot/github-copilot-in-the-cli/using-github-copilot-in-the-cli). -* **Configure {% data variables.product.prodname_copilot_short %} in your editor** - You can enable or disable {% data variables.product.prodname_copilot %} from within your editor, and create your own preferred keyboard shortcuts for {% data variables.product.prodname_copilot_short %}. See [AUTOTITLE](/copilot/configuring-github-copilot/configuring-github-copilot-in-your-environment). +* **Use {% data variables.product.prodname_copilot_short %} on your mobile device** - See [AUTOTITLE](/copilot/using-github-copilot/copilot-chat/asking-github-copilot-questions-in-github-mobile). +* **Use {% data variables.product.prodname_copilot_short %} on the command line** - See [AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-the-cli). +* **Configure {% data variables.product.prodname_copilot_short %} in your editor** - You can enable or disable {% data variables.product.prodname_copilot %} from within your editor, and create your own preferred keyboard shortcuts for {% data variables.product.prodname_copilot_short %}. See [AUTOTITLE](/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment). diff --git a/data/reusables/copilot/requests-rate-limits.md b/data/reusables/copilot/requests-rate-limits.md new file mode 100644 index 000000000000..0917245e06f8 --- /dev/null +++ b/data/reusables/copilot/requests-rate-limits.md @@ -0,0 +1,5 @@ +> [!IMPORTANT] +> Certain requests may experience rate limits. +> +> * Rate limits restrict the number of requests that can be made within a specific time period. +> * High demand may result in rate limiting. diff --git a/data/reusables/copilot/select-agent.md b/data/reusables/copilot/select-agent.md new file mode 100644 index 000000000000..8042627be020 --- /dev/null +++ b/data/reusables/copilot/select-agent.md @@ -0,0 +1 @@ +1. In the {% data variables.copilot.copilot_chat_short %} box, select **Agent** from the popup menu. diff --git a/data/reusables/copilot/unlimited-premium-requests-with-date.md b/data/reusables/copilot/unlimited-premium-requests-with-date.md deleted file mode 100644 index 7a3459d6bf77..000000000000 --- a/data/reusables/copilot/unlimited-premium-requests-with-date.md +++ /dev/null @@ -1,8 +0,0 @@ -> [!IMPORTANT] -> Billing for premium requests is coming soon. Until then, you can continue to use {% data variables.product.prodname_copilot_short %} premium models without being billed for additional premium requests. We’ll update this article with the latest start date at least two business days in advance. -> -> When billing begins, your premium request counter will be reset to zero and you will be able to track your usage. See [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/monitoring-your-copilot-usage-and-entitlements). -> -> Certain requests may experience rate limits. -> * Rate limits restrict the number of requests that can be made within a specific time period. -> * High demand may result in rate limiting. diff --git a/data/reusables/copilot/unlimited-premium-requests.md b/data/reusables/copilot/unlimited-premium-requests.md deleted file mode 100644 index babbb5199d15..000000000000 --- a/data/reusables/copilot/unlimited-premium-requests.md +++ /dev/null @@ -1 +0,0 @@ ->[!IMPORTANT] Billing for premium requests is coming soon. Until then, you can continue to use {% data variables.product.prodname_copilot_short %} premium models without being billed for additional premium requests. For the most up-to-date start date, see [AUTOTITLE](/copilot/managing-copilot/monitoring-usage-and-entitlements/about-premium-requests). diff --git a/data/reusables/enterprise_management_console/privacy.md b/data/reusables/enterprise_management_console/privacy.md index f7de58c0a47f..47f7df0edf27 100644 --- a/data/reusables/enterprise_management_console/privacy.md +++ b/data/reusables/enterprise_management_console/privacy.md @@ -1 +1 @@ -1. In the "Settings" sidebar, click **Privacy** and uncheck **Privacy mode**. +1. In the "Settings" sidebar, click **Privacy** and uncheck **Private mode**. diff --git a/data/reusables/gated-features/copilot-coding-agent.md b/data/reusables/gated-features/copilot-coding-agent.md index 996e507a8dad..1ead032624d9 100644 --- a/data/reusables/gated-features/copilot-coding-agent.md +++ b/data/reusables/gated-features/copilot-coding-agent.md @@ -1 +1 @@ -{% data variables.copilot.copilot_coding_agent %} is available with the {% data variables.copilot.copilot_pro_plus %} and {% data variables.copilot.copilot_enterprise %} plans in repositories where it is enabled. +{% data variables.copilot.copilot_coding_agent %} is available with the {% data variables.copilot.copilot_pro_plus %} and {% data variables.copilot.copilot_enterprise %} plans in repositories where it has not been disabled. {% data variables.copilot.copilot_coding_agent %} is not available in repositories owned by {% data variables.enterprise.prodname_managed_users %}. diff --git a/data/reusables/github-connect/rate-limit-live-dotcom-requests.md b/data/reusables/github-connect/rate-limit-live-dotcom-requests.md new file mode 100644 index 000000000000..4c9dcb4dcd42 --- /dev/null +++ b/data/reusables/github-connect/rate-limit-live-dotcom-requests.md @@ -0,0 +1,10 @@ +{% ifversion ghes < 3.18 %} + +The `app.github.web-sockets-rate-limit` configuration setting was introduced in +{%- ifversion ghes = 3.13 %} **3.13.16**{%- endif %} +{%- ifversion ghes = 3.14 %} **3.14.13**{%- endif %} +{%- ifversion ghes = 3.15 %} **3.15.8**{%- endif %} +{%- ifversion ghes = 3.16 %} **3.16.4**{%- endif %} +{%- ifversion ghes = 3.17 %} **3.17.1**{%- endif %}. + +{% endif %} diff --git a/data/reusables/github-connect/sync-frequency.md b/data/reusables/github-connect/sync-frequency.md index 93f01ae83703..4ea0e58faf9c 100644 --- a/data/reusables/github-connect/sync-frequency.md +++ b/data/reusables/github-connect/sync-frequency.md @@ -1 +1 @@ -{% data variables.product.prodname_ghe_server %} sends updates hourly. +{% data variables.product.github %} requests updates hourly using {% data variables.product.prodname_github_connect %}. diff --git a/data/reusables/large_files/owner_quota_only.md b/data/reusables/large_files/owner_quota_only.md index 463985208fd0..10adafcc7f44 100644 --- a/data/reusables/large_files/owner_quota_only.md +++ b/data/reusables/large_files/owner_quota_only.md @@ -1 +1 @@ -Bandwidth and storage usage only count against the repository owner's account. In forks, bandwidth and storage usage count against the root of the repository network. Anyone with write access to a repository can push files to {% data variables.large_files.product_name_short %} without affecting their personal bandwidth and storage{% ifversion enhanced-billing-platform %} usage{% else %} quotas or purchasing data packs{% endif %}. Forking and pulling a repository counts against the parent repository's bandwidth usage. +Bandwidth and storage usage count only against the repository owner's account. In forks, bandwidth and storage usage count against the root of the repository network. Anyone with write access to a repository can push files to {% data variables.large_files.product_name_short %} without affecting their personal bandwidth and storage. Forking and pulling a repository counts against the parent repository's bandwidth usage. diff --git a/data/reusables/package_registry/packages-billing.md b/data/reusables/package_registry/packages-billing.md index 3e4078659f0e..15b85adea968 100644 --- a/data/reusables/package_registry/packages-billing.md +++ b/data/reusables/package_registry/packages-billing.md @@ -1 +1 @@ -{% data variables.product.prodname_registry %} usage is free for public packages. For private packages, each account on {% data variables.product.github %} receives a certain amount of free storage and data transfer, depending on the account's plan. Any usage beyond the included amounts is controlled by spending limits. +{% data variables.product.prodname_registry %} usage is free for public packages. For private packages, each account on {% data variables.product.github %} receives a quota of free storage and data transfer, depending on the account's plan. Any usage beyond the included amounts is controlled by budgets. diff --git a/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md b/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md deleted file mode 100644 index dae4d0d45617..000000000000 --- a/data/reusables/rai/code-scanning/copilot-workspaces-prs-autofix-note.md +++ /dev/null @@ -1,6 +0,0 @@ -{% ifversion copilot-hadron %} - -> [!NOTE] -> If you are part of the {% data variables.release-phases.public_preview %} of {% data variables.copilot.copilot_workspace_pr_short %}, you can click **Open in Workspace** on a {% data variables.copilot.copilot_autofix_short %} suggestion to open a {% data variables.copilot.copilot_workspace %} directly on {% data variables.product.github %}. {% data variables.copilot.copilot_workspace_pr_short %} allows you to view and edit all {% data variables.copilot.copilot_autofix_short %} suggestions and other review suggestions for the pull request, run CI tests to confirm they still pass, and then apply multiple changes in one commit. For more information, see [AUTOTITLE](/copilot/using-github-copilot/using-github-copilot-for-pull-requests/using-copilot-to-help-you-work-on-a-pull-request). - -{% endif %} diff --git a/data/reusables/reminders/scheduled-reminders-limitations.md b/data/reusables/reminders/scheduled-reminders-limitations.md index 6a36803460fb..9a756ed7f2b3 100644 --- a/data/reusables/reminders/scheduled-reminders-limitations.md +++ b/data/reusables/reminders/scheduled-reminders-limitations.md @@ -1 +1,4 @@ -{% data variables.product.github %} will only trigger reminders for up to five repositories per owner and 20 pull requests per repository. Reminders are not sent when changes are merged from upstream into a fork. +Reminders will only be triggered for up to five repositories per scheduled reminder. Users can either select up to five specific repositories or allow the system to automatically choose the five repositories with the oldest average pull request age. For each repository, up to 20 of the oldest pull requests will be shown. + +> [!NOTE] +> Reminders are not sent when changes are merged from upstream into a fork. diff --git a/data/reusables/security/delegated-alert-dismissal-intro.md b/data/reusables/security/delegated-alert-dismissal-intro.md index 760421ecb443..a8d3c60c4025 100644 --- a/data/reusables/security/delegated-alert-dismissal-intro.md +++ b/data/reusables/security/delegated-alert-dismissal-intro.md @@ -4,7 +4,7 @@ Enabling the feature automatically assigns organization owners and security mana * "Review and manage {% data variables.product.prodname_code_scanning %} alert dismissal requests" permission for {% data variables.product.prodname_code_scanning %}. -* "Review and manage {% data variables.product.prodname_secret_scanning %} alert dismissal requests" permission for {% data variables.product.prodname_secret_scanning %}' +* "Review and manage {% data variables.product.prodname_secret_scanning %} alert dismissal requests" permission for {% data variables.product.prodname_secret_scanning %}. This permission can also be applied to custom roles. For more information about these permissions, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#permissions-for-organization-roles). diff --git a/data/reusables/user-settings/access_billing_settings_url.md b/data/reusables/user-settings/access_billing_settings_url.md new file mode 100644 index 000000000000..9e050a1d2c00 --- /dev/null +++ b/data/reusables/user-settings/access_billing_settings_url.md @@ -0,0 +1 @@ +1. Open your billing overview page: https://github.com/settings/billing. diff --git a/data/ui.yml b/data/ui.yml index d5e6fa9dea6b..0dab040b7da1 100644 --- a/data/ui.yml +++ b/data/ui.yml @@ -50,8 +50,8 @@ search: references: Copilot Sources loading_status_message: Loading Copilot response... done_loading_status_message: Done loading Copilot response - copy_answer: Copy answer - copied_announcement: Copied! + share_answer: Copy answer URL + share_copied_announcement: Copied share URL! thumbs_up: This answer was helpful thumbs_down: This answer was not helpful thumbs_announcement: Thank you for your feedback! @@ -61,6 +61,9 @@ search: query_too_large: Sorry, your question is too long. Please try shortening it and asking again. asked_too_many_times: Sorry, you've asked too many questions in a short time period. Please wait a few minutes and try again. invalid_query: Sorry, I'm unable to answer that question. Please try asking a different question. + response: + copy_code: Copy code to clipboard + copied_code: Copied! failure: general_title: There was an error loading search results. ai_title: There was an error loading Copilot. diff --git a/package-lock.json b/package-lock.json index 952a34c75fe6..0eff4b5e5af6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,7 @@ "dereference-json-schema": "^0.2.1", "dotenv": "^16.4.7", "escape-string-regexp": "5.0.0", - "express": "4.21.2", + "express": "^5.1.0", "fastest-levenshtein": "1.0.16", "file-type": "21.0.0", "flat": "^6.0.1", @@ -115,7 +115,7 @@ "@types/cookie": "0.6.0", "@types/cookie-parser": "1.4.8", "@types/event-to-promise": "^0.7.5", - "@types/express": "4.17.21", + "@types/express": "^5.0.3", "@types/imurmurhash": "^0.1.4", "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.9", @@ -1279,9 +1279,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -1601,11 +1601,10 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4444,22 +4443,23 @@ } }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", "dev": true, + "license": "MIT", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", + "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -4590,16 +4590,18 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "dev": true + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.20", @@ -5409,11 +5411,34 @@ "license": "MIT" }, "node_modules/accepts": { - "version": "1.3.8", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -5567,10 +5592,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "license": "MIT" - }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", @@ -5814,45 +5835,30 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">=18" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/body-parser/node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -5911,8 +5917,9 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.1", - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dependencies": { "balanced-match": "^1.0.0" } @@ -5974,6 +5981,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6016,6 +6024,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6043,6 +6052,22 @@ "node": ">= 0.4" } }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "dev": true, @@ -6506,7 +6531,9 @@ } }, "node_modules/content-disposition": { - "version": "0.5.4", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" @@ -6517,6 +6544,8 @@ }, "node_modules/content-disposition/node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -6537,6 +6566,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6830,6 +6860,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6905,15 +6936,6 @@ "integrity": "sha512-uzJsrg225owJyRQ8FNTPHIuBOdSzIZlHhss9u6W8mp7jJldHqGuLv9cULagP/E26QVJDnjtG8U7Dw139mM1ydA==", "license": "MIT" }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -7086,7 +7108,9 @@ "license": "MIT" }, "node_modules/encodeurl": { - "version": "1.0.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -7335,6 +7359,8 @@ }, "node_modules/escape-html": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "node_modules/escape-string-regexp": { @@ -7680,9 +7706,10 @@ } }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7758,9 +7785,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -7999,9 +8026,10 @@ } }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8241,6 +8269,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -8301,78 +8330,77 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "node_modules/express/node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "license": "MIT", "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "mime-db": "^1.54.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, "node_modules/express/node_modules/on-finished": { "version": "2.4.1", "license": "MIT", @@ -8383,24 +8411,6 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -8540,47 +8550,27 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/finalhandler/node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -8612,9 +8602,10 @@ } }, "node_modules/flat-cache/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8759,11 +8750,12 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/from": { @@ -9228,6 +9220,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -9671,6 +9664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9682,6 +9676,15 @@ "node": ">= 0.8" } }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/http-proxy": { "version": "1.18.1", "license": "MIT", @@ -9778,11 +9781,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -10198,6 +10202,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -11054,8 +11064,9 @@ } }, "node_modules/matcher-collection/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11450,17 +11461,22 @@ "dev": true }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -11480,13 +11496,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/micromark": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", @@ -12034,19 +12043,9 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12054,6 +12053,7 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -12240,7 +12240,9 @@ "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.3", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -12760,9 +12762,10 @@ } }, "node_modules/nodemon/node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12860,6 +12863,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12960,7 +12964,6 @@ }, "node_modules/once": { "version": "1.4.0", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -13164,6 +13167,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -13213,10 +13217,13 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } }, "node_modules/path-type": { "version": "4.0.0", @@ -13494,11 +13501,12 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -13542,18 +13550,20 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", - "iconv-lite": "0.4.24", + "iconv-lite": "0.6.3", "unpipe": "1.0.0" }, "engines": { @@ -14006,6 +14016,22 @@ "fsevents": "~2.3.2" } }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/rss-parser": { "version": "3.13.0", "license": "MIT", @@ -14100,7 +14126,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sanitize-filename": { "version": "1.6.3", @@ -14207,50 +14234,59 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/send/node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -14259,31 +14295,25 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "engines": { - "node": ">= 0.8" + "node": ">= 18" } }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -14314,7 +14344,8 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/shallowequal": { "version": "1.1.0", @@ -14377,15 +14408,118 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel/node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -14557,9 +14691,10 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -15148,6 +15283,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -15318,12 +15454,35 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -15702,6 +15861,8 @@ }, "node_modules/unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -15799,13 +15960,6 @@ "dev": true, "license": "WTFPL" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -16195,8 +16349,9 @@ } }, "node_modules/walk-sync/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16452,7 +16607,6 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, "license": "ISC" }, "node_modules/xml2js": { diff --git a/package.json b/package.json index bdb8eda6b9d6..85a96d5b51af 100644 --- a/package.json +++ b/package.json @@ -269,7 +269,7 @@ "dereference-json-schema": "^0.2.1", "dotenv": "^16.4.7", "escape-string-regexp": "5.0.0", - "express": "4.21.2", + "express": "^5.1.0", "fastest-levenshtein": "1.0.16", "file-type": "21.0.0", "flat": "^6.0.1", @@ -349,7 +349,7 @@ "@types/cookie": "0.6.0", "@types/cookie-parser": "1.4.8", "@types/event-to-promise": "^0.7.5", - "@types/express": "4.17.21", + "@types/express": "^5.0.3", "@types/imurmurhash": "^0.1.4", "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.9", diff --git a/src/audit-logs/data/ghec/enterprise.json b/src/audit-logs/data/ghec/enterprise.json index e135f0c4cd90..b9b2215cd2ff 100644 --- a/src/audit-logs/data/ghec/enterprise.json +++ b/src/audit-logs/data/ghec/enterprise.json @@ -154,6 +154,11 @@ "description": "GitHub Advanced Security was enabled for new user namespace repositories in your enterprise.", "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" }, + { + "action": "business.advanced_security_metered_usage_unlock", + "description": "Enablement for Advanced Security features on new repositories has been unlocked for this enterprise.", + "docs_reference_links": "N/A" + }, { "action": "business.advanced_security_policy_update", "description": "An enterprise owner created, updated, or removed a policy for GitHub Advanced Security.", @@ -239,6 +244,11 @@ "description": "The policy for Code Security enablement was updated for an enterprise.", "docs_reference_links": "/code-security/getting-started/github-security-features#available-with-github-code-security" }, + { + "action": "business.code_security_metered_usage_lock", + "description": "Enablement for Code Security features on new repositories has been locked for this enterprise.", + "docs_reference_links": "N/A" + }, { "action": "business.connect_usage_metrics_export", "description": "Server statistics were exported for the enterprise.", diff --git a/src/audit-logs/data/ghes-3.18/enterprise.json b/src/audit-logs/data/ghes-3.18/enterprise.json new file mode 100644 index 000000000000..84f6fb87d111 --- /dev/null +++ b/src/audit-logs/data/ghes-3.18/enterprise.json @@ -0,0 +1,3982 @@ +[ + { + "action": "account.billing_date_change", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account.plan_change", + "description": "The account's plan changed.", + "docs_reference_links": "/billing/managing-the-plan-for-your-github-account/about-billing-for-plans" + }, + { + "action": "account_recovery_token.confirm", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account_recovery_token.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account_recovery_token.recover", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "actions_cache.delete", + "description": "A GitHub Actions cache was deleted using the REST API.", + "docs_reference_links": "N/A" + }, + { + "action": "api.request", + "description": "An API request was made to an endpoint for the enterprise, or an enterprise owned resource. This event is only included if API Request Events is enabled in the enterprise's audit log settings. This event is only available via audit log streaming.", + "docs_reference_links": "/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise#enabling-audit-log-streaming-of-api-requests" + }, + { + "action": "artifact.destroy", + "description": "A workflow run artifact was manually deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "audit_log_streaming.check", + "description": "A manual check of the endpoint configured for audit log streaming was performed.", + "docs_reference_links": "N/A" + }, + { + "action": "audit_log_streaming.create", + "description": "An endpoint was added for audit log streaming.", + "docs_reference_links": "N/A" + }, + { + "action": "audit_log_streaming.destroy", + "description": "An audit log streaming endpoint was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "audit_log_streaming.update", + "description": "An endpoint configuration was updated for audit log streaming, such as the stream was paused, enabled, or disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "billing.change_billing_type", + "description": "The way the account pays for GitHub was changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/adding-or-editing-a-payment-method" + }, + { + "action": "billing.change_email", + "description": "The billing email address changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/setting-your-billing-email" + }, + { + "action": "billing.lock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "billing.unlock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "billing.update_bill_cycle_day", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "business.add_admin", + "description": "An enterprise owner was added to an enterprise.", + "docs_reference_links": "/admin/user-management/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise" + }, + { + "action": "business.add_organization", + "description": "An organization was added to an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business_advanced_security.disabled", + "description": "GitHub Advanced Security was disabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.disabled_for_new_repos", + "description": "GitHub Advanced Security was disabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.disabled_for_new_user_namespace_repos", + "description": "GitHub Advanced Security was disabled for new user namespace repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.enabled", + "description": "GitHub Advanced Security was enabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.enabled_for_new_repos", + "description": "GitHub Advanced Security was enabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.enabled_for_new_user_namespace_repos", + "description": "GitHub Advanced Security was enabled for new user namespace repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business.advanced_security_policy_update", + "description": "An enterprise owner created, updated, or removed a policy for GitHub Advanced Security.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-code-security-and-analysis-for-your-enterprise" + }, + { + "action": "business.advanced_security_repo_admin_enablement_policy_update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "business_advanced_security.user_namespace_repos_disabled", + "description": "GitHub Advanced Security was disabled for user namespace repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_advanced_security.user_namespace_repos_enabled", + "description": "GitHub Advanced Security was enabled for user namespace repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business.clear_actions_settings", + "description": "An enterprise owner or site administrator cleared GitHub Actions policy settings for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise" + }, + { + "action": "business.clear_default_repository_permission", + "description": "An enterprise owner cleared the base repository permission policy setting for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-base-repository-permissions" + }, + { + "action": "business.clear_members_can_create_repos", + "description": "An enterprise owner cleared a restriction on repository creation in organizations in the enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#setting-a-policy-for-repository-creation" + }, + { + "action": "business.code_scanning_autofix_policy_update", + "description": "The policy for Code scanning autofix was updated for an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business.code_scanning_autofix_third_party_tools_policy_update", + "description": "The policy for Code scanning autofix third party tools was updated for an enterprise.", + "docs_reference_links": "/code-security/getting-started/github-security-features#available-with-github-code-security" + }, + { + "action": "business.code_security_enablement_policy_update", + "description": "The policy for Code Security enablement was updated for an enterprise.", + "docs_reference_links": "/code-security/getting-started/github-security-features#available-with-github-code-security" + }, + { + "action": "business.create", + "description": "An enterprise was created.", + "docs_reference_links": "N/A" + }, + { + "action": "business_dependabot_alerts_new_repos.disable", + "description": "Dependabot alerts were disabled for new repositories in your enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business_dependabot_alerts_new_repos.enable", + "description": "Dependabot alerts were enabled for new repositories in your enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business.dependabot_alerts_repo_admin_enablement_policy_update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "business.disable_open_scim", + "description": "SCIM provisioning for custom integrations that use the REST API was disabled for the enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business.disable_source_ip_disclosure", + "description": "Display of IP addresses within audit log events for the enterprise was disabled.", + "docs_reference_links": "/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise" + }, + { + "action": "business.disable_two_factor_requirement", + "description": "The requirement for members to have two-factor authentication enabled to access an enterprise was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "business.enable_open_scim", + "description": "SCIM provisioning for custom integrations that use the REST API was enabled for the enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business.enable_source_ip_disclosure", + "description": "Display of IP addresses within audit log events for the enterprise was enabled.", + "docs_reference_links": "/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/displaying-ip-addresses-in-the-audit-log-for-your-enterprise" + }, + { + "action": "business.enable_two_factor_requirement", + "description": "The requirement for members to have two-factor authentication enabled to access an enterprise was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "business.members_can_update_protected_branches.clear", + "description": "An enterprise owner unset a policy for whether members of an enterprise can update protected branches on repositories for individual organizations. Organization owners can choose whether to allow updating protected branches settings.", + "docs_reference_links": "N/A" + }, + { + "action": "business.members_can_update_protected_branches.disable", + "description": "The ability for enterprise members to update branch protection rules was disabled. Only enterprise owners can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "business.members_can_update_protected_branches.enable", + "description": "The ability for enterprise members to update branch protection rules was enabled. Enterprise owners and members can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "business.remove_admin", + "description": "An enterprise owner was removed from an enterprise.", + "docs_reference_links": "/admin/user-management/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise" + }, + { + "action": "business.remove_organization", + "description": "An organization was removed from an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "business.rename_slug", + "description": "The slug for the enterprise URL was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "business.revoke_sso_session", + "description": "The SAML single sign-on session for a member in an enterprise was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "business_secret_scanning_automatic_validity_checks.disabled", + "description": "Automatic partner validation checks have been disabled at the business level", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise#managing-advanced-security-features" + }, + { + "action": "business_secret_scanning_automatic_validity_checks.enabled", + "description": "Automatic partner validation checks have been enabled at the business level", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise#managing-advanced-security-features" + }, + { + "action": "business_secret_scanning_custom_pattern.create", + "description": "An enterprise-level custom pattern was created for secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-enterprise-account" + }, + { + "action": "business_secret_scanning_custom_pattern.delete", + "description": "An enterprise-level custom pattern was removed from secret scanning.", + "docs_reference_links": "N/A" + }, + { + "action": "business_secret_scanning_custom_pattern.publish", + "description": "An enterprise-level custom pattern was published for secret scanning.", + "docs_reference_links": "N/A" + }, + { + "action": "business_secret_scanning_custom_pattern_push_protection.disabled", + "description": "Push protection for a custom pattern for secret scanning was disabled for your enterprise.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-enterprise-account" + }, + { + "action": "business_secret_scanning_custom_pattern_push_protection.enabled", + "description": "Push protection for a custom pattern for secret scanning was enabled for your enterprise.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-enterprise-account" + }, + { + "action": "business_secret_scanning_custom_pattern.update", + "description": "Changes to an enterprise-level custom pattern were saved and a dry run was executed for secret scanning.", + "docs_reference_links": "N/A" + }, + { + "action": "business_secret_scanning.disable", + "description": "Secret scanning was disabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning.disabled_for_new_repos", + "description": "Secret scanning was disabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning.enable", + "description": "Secret scanning was enabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning.enabled_for_new_repos", + "description": "Secret scanning was enabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_non_provider_patterns.disabled", + "description": "Secret scanning for non-provider patterns was disabled at the enterprise level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "business_secret_scanning_non_provider_patterns.enabled", + "description": "Secret scanning for non-provider patterns was enabled at the enterprise level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "business_secret_scanning_push_protection_custom_message.disable", + "description": "The custom message triggered by an attempted push to a push-protected repository was disabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection_custom_message.enable", + "description": "The custom message triggered by an attempted push to a push-protected repository was enabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection_custom_message.update", + "description": "The custom message triggered by an attempted push to a push-protected repository was updated for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection.disable", + "description": "Push protection for secret scanning was disabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection.disabled_for_new_repos", + "description": "Push protection for secret scanning was disabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection.enable", + "description": "Push protection for secret scanning was enabled for your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business_secret_scanning_push_protection.enabled_for_new_repos", + "description": "Push protection for secret scanning was enabled for new repositories in your enterprise.", + "docs_reference_links": "/admin/code-security/managing-github-advanced-security-for-your-enterprise/managing-github-advanced-security-features-for-your-enterprise" + }, + { + "action": "business.secret_scanning_repo_admin_settings_policy_update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_code_scanning_metrics", + "description": "A CSV export was requested on the \"CodeQL pull request alerts\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_coverage", + "description": "A CSV export was requested on the \"Coverage\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_overview_dashboard", + "description": "A CSV export was requested on the \"Overview Dashboard\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_risk", + "description": "A CSV export was requested on the \"Risk\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.set_actions_fork_pr_approvals_policy", + "description": "The policy for requiring approvals for workflows from public forks was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-your-enterprise" + }, + { + "action": "business.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-private-repositories" + }, + { + "action": "business.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-artifact-and-log-retention-in-your-enterprise" + }, + { + "action": "business.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise" + }, + { + "action": "business.set_fork_pr_workflows_policy", + "description": "The policy for fork pull request workflows was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-your-enterprise" + }, + { + "action": "business.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "business.sso_response", + "description": "A SAML single sign-on (SSO) response was generated when a member attempted to authenticate with your enterprise. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "N/A" + }, + { + "action": "business.update_actions_settings", + "description": "An enterprise owner or site administrator updated GitHub Actions policy settings for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise" + }, + { + "action": "business.update_default_repository_permission", + "description": "The base repository permission setting was updated for all organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-base-repository-permissions" + }, + { + "action": "business.update_member_repository_creation_permission", + "description": "The repository creation setting was updated for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-creation" + }, + { + "action": "business.update_member_repository_invitation_permission", + "description": "The policy setting for enterprise members inviting outside collaborators to repositories was updated.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-inviting-outside-collaborators-to-repositories" + }, + { + "action": "checks.auto_trigger_disabled", + "description": "Automatic creation of check suites was disabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.auto_trigger_enabled", + "description": "Automatic creation of check suites was enabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.delete_logs", + "description": "Logs in a check suite were deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "code_scanning.alert_appeared_in_branch", + "description": "Existing code scanning alerts appeared in a branch.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_became_fixed", + "description": "Code scanning alerts were fixed.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_became_outdated", + "description": "Code scanning alerts were closed as outdated (all configurations they were detected in were deleted).", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_by_user", + "description": "Code scanning alerts were manually dismissed.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_approved", + "description": "Dismissal of code scanning alerts was approved.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_denied", + "description": "Dismissal of code scanning alerts was denied.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_requested", + "description": "Dismissal of code scanning alerts was requested.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_created", + "description": "Code scanning alerts were seen for the first time.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_reappeared", + "description": "Code scanning alerts that were previously fixed reappeared.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_reopened_by_user", + "description": "Code scanning alerts that were previously dismissed were reopened.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code.search", + "description": "A code search was run targeting an organization. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/search-github/github-code-search" + }, + { + "action": "codespaces.allow_permissions", + "description": "A codespace using custom permissions from its devcontainer.json file was launched.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.connect", + "description": "Credentials for a codespace were refreshed.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.create", + "description": "A codespace was created", + "docs_reference_links": "/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository" + }, + { + "action": "codespaces.destroy", + "description": "A user deleted a codespace.", + "docs_reference_links": "/codespaces/developing-in-codespaces/deleting-a-codespace" + }, + { + "action": "codespaces.export_environment", + "description": "A codespace was exported to a branch on GitHub.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.restore", + "description": "A codespace was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.start_environment", + "description": "A codespace was started.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.suspend_environment", + "description": "A codespace was stopped.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.trusted_repositories_access_update", + "description": "A personal account's access and security setting for Codespaces were updated.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "copilot.cfb_seat_added", + "description": "A Copilot Business or Copilot Enterprise seat was added for a user and they have received access to GitHub Copilot. This can occur as the result of directly assigning a seat for a user, assigning a seat for a team, or setting the organization to allow access for all members.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_created", + "description": "A Copilot Business or Copilot Enterprise seat assignment was newly created for a user or a team, and seats are being created.", + "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" + }, + { + "action": "copilot.cfb_seat_assignment_refreshed", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_reused", + "description": "A Copilot Business or Copilot Enterprise seat assignment was re-created for a user who already had a seat with no pending cancellation date, and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_unassigned", + "description": "A user or team's Copilot Business or Copilot Enterprise seat assignment was unassigned, and the user(s) will lose access to Copilot at the end of the current billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled_by_staff", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled manually by GitHub staff, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_disabled", + "description": "Specific repositories were disabled from using Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enabled", + "description": "Specific repositories were enabled to use Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enablement_updated", + "description": "Copilot coding agent access was updated for the organization's or user's repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_property_definition.create", + "description": "A new custom property definition was created.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_definition.destroy", + "description": "A custom property definition was deleted.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_definition.update", + "description": "A custom property definition was updated.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.create", + "description": "A repository's custom property value was manually set for the first time.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.destroy", + "description": "A repository's custom property value was deleted.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.update", + "description": "A repository's custom property value was updated.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "dependabot_alerts.disable", + "description": "Dependabot alerts were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts.enable", + "description": "Dependabot alerts were enabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts_new_repos.disable", + "description": "Dependabot alerts were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_alerts_new_repos.enable", + "description": "Dependabot alerts were enabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_repository_access.default_access_level_updated", + "description": "The default repository access for Dependabot was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_repository_access.repositories_updated", + "description": "The repositories that Dependabot can access were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates.disable", + "description": "Dependabot security updates were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates.enable", + "description": "Dependabot security updates were enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates_new_repos.disable", + "description": " Dependabot security updates were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates_new_repos.enable", + "description": "Dependabot security updates were enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph.disable", + "description": "The dependency graph was disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph.enable", + "description": "The dependency graph was enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph_new_repos.disable", + "description": "The dependency graph was disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph_new_repos.enable", + "description": "The dependency graph was enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "discussion_post.destroy", + "description": "Triggered when a team discussion post is deleted.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#deleting-a-comment" + }, + { + "action": "discussion_post_reply.destroy", + "description": "Triggered when a reply to a team discussion post is deleted.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#deleting-a-comment" + }, + { + "action": "discussion_post_reply.update", + "description": "Triggered when a reply to a team discussion post is edited.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#editing-a-comment" + }, + { + "action": "discussion_post.update", + "description": "Triggered when a team discussion post is edited.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#editing-a-comment" + }, + { + "action": "enterprise_announcement.create", + "description": "A global announcement banner was created for the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise#creating-a-global-announcement-banner" + }, + { + "action": "enterprise_announcement.destroy", + "description": "A global announcement banner was removed from the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise" + }, + { + "action": "enterprise_announcement.update", + "description": "A global announcement banner was updated for the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise" + }, + { + "action": "enterprise.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_domain.approve", + "description": "A domain was approved for an enterprise.", + "docs_reference_links": "/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise#approving-a-domain-for-your-enterprise-account" + }, + { + "action": "enterprise_domain.create", + "description": "A domain was added to an enterprise.", + "docs_reference_links": "/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise#verifying-a-domain-for-your-enterprise-account" + }, + { + "action": "enterprise_domain.destroy", + "description": "A domain was removed from an enterprise.", + "docs_reference_links": "/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise#removing-an-approved-or-verified-domain" + }, + { + "action": "enterprise_domain.verify", + "description": "A domain was verified for an enterprise.", + "docs_reference_links": "/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise#verifying-a-domain-for-your-enterprise-account" + }, + { + "action": "enterprise.register_self_hosted_runner", + "description": "A new GitHub Actions self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository" + }, + { + "action": "enterprise.remove_self_hosted_runner", + "description": "A GitHub Actions self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository" + }, + { + "action": "enterprise.runner_group_created", + "description": "A GitHub Actions self-hosted runner group was created.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository" + }, + { + "action": "enterprise.runner_group_removed", + "description": "A GitHub Actions self-hosted runner group was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group" + }, + { + "action": "enterprise.runner_group_runner_removed", + "description": "The REST API was used to remove a GitHub Actions self-hosted runner from a group.", + "docs_reference_links": "/rest/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization" + }, + { + "action": "enterprise.runner_group_runners_added", + "description": "A GitHub Actions self-hosted runner was added to a group.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group" + }, + { + "action": "enterprise.runner_group_runners_updated", + "description": "A GitHub Actions runner group's list of members was updated.", + "docs_reference_links": "/rest/actions#set-self-hosted-runners-in-a-group-for-an-organization" + }, + { + "action": "enterprise.runner_group_updated", + "description": "The configuration of a GitHub Actions self-hosted runner group was changed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group" + }, + { + "action": "enterprise.self_hosted_runner_offline", + "description": "The GitHub Actions runner application was stopped. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "enterprise.self_hosted_runner_online", + "description": "The GitHub Actions runner application was started. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "enterprise.self_hosted_runner_updated", + "description": "The GitHub Actions runner application was updated. This event is not included in the JSON/CSV export.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#about-self-hosted-runners" + }, + { + "action": "enterprise_team.add_member", + "description": "A new member was added to the enterprise team or an IdP group linked to an enterprise team, or an IdP group was linked to an enterprise team.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.copilot_assignment", + "description": "A license for GitHub Copilot was assigned to an enterprise team.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.copilot_unassignment", + "description": "A license for GitHub Copilot was unassigned from an enterprise team.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.create", + "description": "A new enterprise team was created.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.destroy", + "description": "An enterprise team was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.remove_member", + "description": "A member was removed from the enterprise team or an IdP group linked to an enterprise team, or an IdP group was unlinked from an enterprise team.", + "docs_reference_links": "N/A" + }, + { + "action": "enterprise_team.rename", + "description": "The name of an enterprise team was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "environment.add_protection_rule", + "description": "A GitHub Actions deployment protection rule was created via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "environment.create_actions_secret", + "description": "A secret was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.create_actions_variable", + "description": "A variable was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.delete", + "description": "An environment was deleted.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deleting-an-environment" + }, + { + "action": "environment.remove_actions_secret", + "description": "A secret was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.remove_actions_variable", + "description": "A variable was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.remove_protection_rule", + "description": "A GitHub Actions deployment protection rule was deleted via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.update_actions_secret", + "description": "A secret was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.update_actions_variable", + "description": "A variable was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.update_protection_rule", + "description": "A GitHub Actions deployment protection rule was updated via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "external_group.add_member", + "description": "A user was added to an external group.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.delete", + "description": "An external group was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.link", + "description": "An external group was linked to a GitHub team.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.provision", + "description": "An external group was created.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.remove_member", + "description": "A user was removed from an external group.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.scim_api_failure", + "description": "Failed external group SCIM API request.", + "docs_reference_links": "/rest/scim/scim" + }, + { + "action": "external_group.scim_api_success", + "description": "Successful external group SCIM API request. Excludes GET API requests.", + "docs_reference_links": "/rest/scim/scim" + }, + { + "action": "external_group.unlink", + "description": "An external group was unlinked to a GitHub team.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.update", + "description": "An external group was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "external_group.update_display_name", + "description": "An external group's display name was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "external_identity.deprovision", + "description": "An external identity was deprovisioned, suspending the linked GitHub user.", + "docs_reference_links": "N/A" + }, + { + "action": "external_identity.provision", + "description": "An external identity was created and linked to a GitHub user.", + "docs_reference_links": "N/A" + }, + { + "action": "external_identity.scim_api_failure", + "description": "Failed external identity SCIM API request.", + "docs_reference_links": "/rest/scim/scim" + }, + { + "action": "external_identity.scim_api_success", + "description": "Successful external identity SCIM API request. Excludes GET API requests.", + "docs_reference_links": "/rest/scim/scim" + }, + { + "action": "external_identity.update", + "description": "An external identity was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "gist.create", + "description": "A gist was created.", + "docs_reference_links": "N/A" + }, + { + "action": "gist.destroy", + "description": "A gist was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "gist.visibility_change", + "description": "The visibility of a gist was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "git.clone", + "description": "A repository was cloned.", + "docs_reference_links": "N/A" + }, + { + "action": "git.fetch", + "description": "Changes were fetched from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "git.push", + "description": "Changes were pushed to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "git_signing_ssh_public_key.create", + "description": "An SSH key was added to a user account as a Git commit signing key.", + "docs_reference_links": "/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key" + }, + { + "action": "git_signing_ssh_public_key.delete", + "description": "An SSH key was removed from a user account as a Git commit signing key.", + "docs_reference_links": "/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key" + }, + { + "action": "github_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "gpg_key.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "gpg_key.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "hook.active_changed", + "description": "A hook's active status was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.config_changed", + "description": "A hook's configuration was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.create", + "description": "A new hook was added.", + "docs_reference_links": "/get-started/exploring-integrations/about-webhooks" + }, + { + "action": "hook.destroy", + "description": "A hook was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.events_changed", + "description": "A hook's configured events were changed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.create", + "description": "A GitHub App was created.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.destroy", + "description": "A GitHub App was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.generate_client_secret", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "integration_installation.create", + "description": "A GitHub App was installed.", + "docs_reference_links": "/apps/using-github-apps/authorizing-github-apps" + }, + { + "action": "integration_installation.destroy", + "description": "A GitHub App was uninstalled.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.repositories_added", + "description": "Repositories were added to a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation.repositories_removed", + "description": "Repositories were removed from a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation_request.close", + "description": "A request to install a GitHub App was either approved or denied by an owner, or canceled by the member who opened the request.", + "docs_reference_links": "/apps/using-github-apps/requesting-a-github-app-from-your-organization-owner" + }, + { + "action": "integration_installation_request.create", + "description": "A member requested that an owner install a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/requesting-a-github-app-from-your-organization-owner" + }, + { + "action": "integration_installation.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.version_updated", + "description": "Permissions for a GitHub App were updated.", + "docs_reference_links": "/apps/using-github-apps/approving-updated-permissions-for-a-github-app" + }, + { + "action": "integration.manager_added", + "description": "A member of an enterprise or organization was added as a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#giving-someone-the-ability-to-manage-all-github-apps-owned-by-the-organization" + }, + { + "action": "integration.manager_removed", + "description": "A member of an enterprise or organization was removed from being a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#removing-a-github-app-managers-permissions-for-the-entire-organization" + }, + { + "action": "integration.remove_client_secret", + "description": "A client secret for a GitHub App was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_all_tokens", + "description": "All user tokens for a GitHub App were requested to be revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_tokens", + "description": "Token(s) for a GitHub App were revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "integration.transfer", + "description": "Ownership of a GitHub App was transferred to another user or organization.", + "docs_reference_links": "/apps/maintaining-github-apps/transferring-ownership-of-a-github-app" + }, + { + "action": "integration.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "ip_allow_list.disable", + "description": "An IP allow list was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.disable_for_installed_apps", + "description": "An IP allow list was disabled for installed GitHub Apps.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.disable_user_level_enforcement", + "description": "IP allow list user level enforcement was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.enable", + "description": "An IP allow list was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.enable_for_installed_apps", + "description": "An IP allow list was enabled for installed GitHub Apps.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.enable_user_level_enforcement", + "description": "IP allow list user level enforcement was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.create", + "description": "An IP address was added to an IP allow list.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.destroy", + "description": "An IP address was deleted from an IP allow list.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.update", + "description": "An IP address or its description was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_agreement_signature.create", + "description": "The GitHub Marketplace Developer Agreement was signed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.approve", + "description": "A listing was approved for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.change_category", + "description": "A category for a listing for an app in GitHub Marketplace was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.create", + "description": "A listing for an app in GitHub Marketplace was created.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.delist", + "description": "A listing was removed from GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.publish", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.retire", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.redraft", + "description": "A listing was sent back to draft state.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.reject", + "description": "A listing was not accepted for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.pull_request_dequeued", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.pull_request_queue_jump", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.queue_cleared", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.update_settings", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "migration.create", + "description": "A migration file was created for transferring data from a source location (such as a GitHub.com organization or a GitHub Enterprise Server instance) to a target GitHub Enterprise Server instance.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.create", + "description": "An OAuth access token was generated.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps, /authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token" + }, + { + "action": "oauth_access.destroy", + "description": "An OAuth access token was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "oauth_access.regenerate", + "description": "An OAuth access token was regenerated.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.revoke", + "description": "An OAuth access token was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.update", + "description": "An OAuth access token was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_application.create", + "description": "An OAuth application was created.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.destroy", + "description": "An OAuth application was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.generate_client_secret", + "description": "An OAuth application's secret key was generated.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.remove_client_secret", + "description": "An OAuth application's secret key was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.reset_secret", + "description": "The secret key for an OAuth application was reset.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_all_tokens", + "description": "All user tokens for an OAuth application were requested to be revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_tokens", + "description": "Token(s) for an OAuth application were revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.suspend", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_application.transfer", + "description": "An OAuth application was transferred from one account to another.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.unsuspend", + "description": "An OAuth application was unsuspended for a user or organization account.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_authorization.create", + "description": "An authorization for an OAuth application was created.", + "docs_reference_links": "/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "oauth_authorization.destroy", + "description": "An authorization for an OAuth application was deleted.", + "docs_reference_links": "/apps/using-github-apps/reviewing-your-authorized-integrations" + }, + { + "action": "oauth_authorization.update", + "description": "An authorization for an OAuth application was updated.", + "docs_reference_links": "/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "org.accept_business_invitation", + "description": "An invitation sent to an organization to join an enterprise was accepted.", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.add_billing_manager", + "description": "A billing manager was added to an organization.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/adding-a-billing-manager-to-your-organization" + }, + { + "action": "org.add_member", + "description": "A user joined an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_outside_collaborator", + "description": "An outside collaborator was added to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_security_manager", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_for_new_repos", + "description": "GitHub Advanced Security was disabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_on_all_repos", + "description": "GitHub Advanced Security was disabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_for_new_repos", + "description": "GitHub Advanced Security was enabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_on_all_repos", + "description": "GitHub Advanced Security was enabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_entity_policy_update", + "description": "An enterprise owner updated the GitHub Advanced Security access policy for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.advanced_security_policy_selected_member_disabled", + "description": "An enterprise owner prevented GitHub Advanced Security features from being enabled for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.advanced_security_policy_selected_member_enabled", + "description": "An enterprise owner allowed GitHub Advanced Security features to be enabled for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.async_delete", + "description": "A user initiated a background job to delete an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.billing_signup_error", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.block_user", + "description": "An organization owner blocked a user from accessing the organization's repositories.", + "docs_reference_links": "/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization" + }, + { + "action": "org.cancel_business_invitation", + "description": "An invitation for an organization to join an enterprise was revoked", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.cancel_invitation", + "description": "An invitation sent to a user to join an organization was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "org.clear_custom_invitation_rate_limit", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_disabled", + "description": "Autofix for code scanning alerts was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_enabled", + "description": "Autofix for code scanning alerts was enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_third_party_tools_disabled", + "description": "Autofix for third party tools for code scanning alerts was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_third_party_tools_enabled", + "description": "Autofix for third party tools for code scanning alerts was enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.codeql_disabled", + "description": "Code scanning using the default setup was disabled for an organization.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale" + }, + { + "action": "org.codeql_enabled", + "description": "Code scanning using the default setup was enabled for an organization.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale" + }, + { + "action": "org.config.disable_collaborators_only", + "description": "The interaction limit for collaborators only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.disable_contributors_only", + "description": "The interaction limit for prior contributors only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.disable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_collaborators_only", + "description": "The interaction limit for collaborators only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_contributors_only", + "description": "The interaction limit for prior contributors only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.confirm_business_invitation", + "description": "An invitation for an organization to join an enterprise was confirmed.", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.create", + "description": "An organization was created.", + "docs_reference_links": "/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch" + }, + { + "action": "org.delete", + "description": "An organization was deleted by a user or staff.", + "docs_reference_links": "N/A" + }, + { + "action": "org.disable_member_team_creation_permission", + "description": "Team creation was limited to owners.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-team-creation-permissions-in-your-organization" + }, + { + "action": "org.disable_reader_discussion_creation_permission", + "description": "An organization owner limited discussion creation to users with at least triage permission in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-discussion-creation-for-repositories-in-your-organization" + }, + { + "action": "org.disable_saml", + "description": "SAML single sign-on was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.disable_two_factor_requirement", + "description": "A two-factor authentication requirement was disabled for the organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.display_commenter_full_name_disabled", + "description": "An organization owner disabled the display of a commenter's full name in an organization. Members cannot see a comment author's full name.", + "docs_reference_links": "N/A" + }, + { + "action": "org.display_commenter_full_name_enabled", + "description": "An organization owner enabled the display of a commenter's full name in an organization. Members can see a comment author's full name.", + "docs_reference_links": "N/A" + }, + { + "action": "org.enable_member_team_creation_permission", + "description": "Team creation by members was allowed.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-team-creation-permissions-in-your-organization" + }, + { + "action": "org.enable_reader_discussion_creation_permission", + "description": "An organization owner allowed users with read access to create discussions in an organization", + "docs_reference_links": "/organizations/managing-organization-settings/managing-discussion-creation-for-repositories-in-your-organization" + }, + { + "action": "org.enable_saml", + "description": "SAML single sign-on was enabled for the organization.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/enabling-and-testing-saml-single-sign-on-for-your-organization" + }, + { + "action": "org.enable_two_factor_requirement", + "description": "Two-factor authentication is now required for the organization.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization" + }, + { + "action": "org.integration_manager_added", + "description": "An organization owner granted a member access to manage all GitHub Apps owned by an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.integration_manager_removed", + "description": "An organization owner removed access to manage all GitHub Apps owned by an organization from an organization member.", + "docs_reference_links": "N/A" + }, + { + "action": "org.invite_member", + "description": "A new user was invited to join an organization.", + "docs_reference_links": "/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization" + }, + { + "action": "org.invite_to_business", + "description": "An organization was invited to join an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "org.members_can_update_protected_branches.disable", + "description": "The ability for enterprise members to update protected branches was disabled. Only enterprise owners can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "org.members_can_update_protected_branches.enable", + "description": "The ability for enterprise members to update protected branches was enabled. Members of an organization can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "org.rate_limited_invites", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.recreate", + "description": "An organization was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "org.register_self_hosted_runner", + "description": "A new self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-organization" + }, + { + "action": "org.remove_billing_manager", + "description": "A billing manager was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/removing-a-billing-manager-from-your-organization, /organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization" + }, + { + "action": "org.remove_member", + "description": "A member was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_outside_collaborator", + "description": "An outside collaborator was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_security_manager", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_self_hosted_runner", + "description": "A self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-an-organization" + }, + { + "action": "org.rename", + "description": "An organization was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.restore_member", + "description": "An organization member was restored.", + "docs_reference_links": "/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization" + }, + { + "action": "org.runner_group_created", + "description": "A self-hosted runner group was created.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization" + }, + { + "action": "org.runner_group_removed", + "description": "A self-hosted runner group was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group" + }, + { + "action": "org.runner_group_runner_removed", + "description": "The REST API was used to remove a self-hosted runner from a group.", + "docs_reference_links": "/rest/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization" + }, + { + "action": "org.runner_group_runners_added", + "description": "A self-hosted runner was added to a group.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group" + }, + { + "action": "org.runner_group_runners_updated", + "description": "A runner group's list of members was updated.", + "docs_reference_links": "/rest/actions#set-self-hosted-runners-in-a-group-for-an-organization" + }, + { + "action": "org.runner_group_updated", + "description": "The configuration of a self-hosted runner group was changed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group" + }, + { + "action": "org_secret_scanning_automatic_validity_checks.disabled", + "description": "Automatic partner validation checks have been disabled at the organization level", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#allowing-validity-checks-for-partner-patterns-in-an-organization" + }, + { + "action": "org_secret_scanning_automatic_validity_checks.enabled", + "description": "Automatic partner validation checks have been enabled at the organization level", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#allowing-validity-checks-for-partner-patterns-in-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.create", + "description": "A custom pattern was created for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.delete", + "description": "A custom pattern was removed from secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#removing-a-custom-pattern" + }, + { + "action": "org_secret_scanning_custom_pattern.publish", + "description": "A custom pattern was published for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org.secret_scanning_custom_pattern_push_protection_disabled", + "description": "Push protection for a custom pattern for secret scanning was disabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org.secret_scanning_custom_pattern_push_protection_enabled", + "description": "Push protection for a custom pattern for secret scanning was enabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.update", + "description": "Changes to a custom pattern were saved and a dry run was executed for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#editing-a-custom-pattern" + }, + { + "action": "org_secret_scanning_non_provider_patterns.disabled", + "description": "Secret scanning for non-provider patterns was disabled at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "org_secret_scanning_non_provider_patterns.enabled", + "description": "Secret scanning for non-provider patterns was enabled at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.add", + "description": "A role or team was added to the push protection bypass list at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.disable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Specific roles or teams\" to \"Anyone with write access\" at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.enable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Anyone with write access\" to \"Specific roles or teams\" at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.remove", + "description": "A role or team was removed from the push protection bypass list at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_disabled", + "description": "The custom message triggered by an attempted push to a push-protected repository was disabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_enabled", + "description": "The custom message triggered by an attempted push to a push-protected repository was enabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_updated", + "description": "The custom message triggered by an attempted push to a push-protected repository was updated for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_disable", + "description": "Push protection for secret scanning was disabled.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "org.secret_scanning_push_protection_enable", + "description": "Push protection for secret scanning was enabled.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.secret_scanning_push_protection_new_repos_disable", + "description": "Push protection for secret scanning was disabled for all new repositories in the organization.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.secret_scanning_push_protection_new_repos_enable", + "description": "Push protection for secret scanning was enabled for all new repositories in the organization.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.security_center_export_code_scanning_metrics", + "description": "A CSV export was requested on the CodeQL pull request alerts page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_coverage", + "description": "A CSV export was requested on the Coverage page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_overview_dashboard", + "description": "A CSV export was requested on the Overview Dashboard page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_risk", + "description": "A CSV export was requested on the Risk page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.self_hosted_runner_offline", + "description": "The runner application was stopped. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "org.self_hosted_runner_online", + "description": "The runner application was started. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "org.self_hosted_runner_updated", + "description": "The runner application was updated. This event is not included in the JSON/CSV export.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#about-self-hosted-runners" + }, + { + "action": "org.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#requiring-approval-for-workflows-from-public-forks" + }, + { + "action": "org.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in an organization was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization" + }, + { + "action": "org.set_custom_invitation_rate_limit", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization" + }, + { + "action": "org.set_fork_pr_workflows_policy", + "description": "The policy for workflows on private repository forks was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "org.sso_response", + "description": "A SAML single sign-on (SSO) response was generated when a member attempted to authenticate with your organization. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "N/A" + }, + { + "action": "org.transform", + "description": "A user account was converted into an organization.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/converting-a-user-into-an-organization" + }, + { + "action": "org.unblock_user", + "description": "A user was unblocked from an organization.", + "docs_reference_links": "/communities/maintaining-your-safety-on-github/unblocking-a-user-from-your-organization" + }, + { + "action": "org.update_actions_settings", + "description": "An organization owner or site administrator updated GitHub Actions policy settings for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization" + }, + { + "action": "org.update_default_repository_permission", + "description": "The default repository permission level for organization members was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member", + "description": "A person's role was changed from owner to member or member to owner.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_creation_permission", + "description": "The create repository permission for organization members was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_invitation_permission", + "description": "An organization owner changed the policy setting for organization members inviting outside collaborators to repositories.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators" + }, + { + "action": "org.update_saml_provider_settings", + "description": "An organization's SAML provider settings were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_terms_of_service", + "description": "An organization changed between the Standard Terms of Service and the GitHub Customer Agreement.", + "docs_reference_links": "/organizations/managing-organization-settings/upgrading-to-the-github-customer-agreement" + }, + { + "action": "organization_domain.approve", + "description": "A domain was approved for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#approving-a-domain-for-your-organization" + }, + { + "action": "organization_domain.create", + "description": "A domain was added to an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#verifying-a-domain-for-your-organization" + }, + { + "action": "organization_domain.destroy", + "description": "A domain was removed from an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#removing-an-approved-or-verified-domain" + }, + { + "action": "organization_domain.verify", + "description": "A domain was verified for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#verifying-a-domain-for-your-organization" + }, + { + "action": "packages.package_deleted", + "description": "An entire package was deleted.", + "docs_reference_links": "/packages/learn-github-packages/deleting-and-restoring-a-package" + }, + { + "action": "packages.package_published", + "description": "A package was published or republished to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "packages.package_version_deleted", + "description": "A specific package version was deleted.", + "docs_reference_links": "/packages/learn-github-packages/deleting-and-restoring-a-package" + }, + { + "action": "packages.package_version_published", + "description": "A specific package version was published or republished to a package.", + "docs_reference_links": "N/A" + }, + { + "action": "pages_protected_domain.create", + "description": "A GitHub Pages verified domain was created for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.delete", + "description": "A GitHub Pages verified domain was deleted from an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.verify", + "description": "A GitHub Pages domain was verified for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "passkey.register", + "description": "A new passkey was added.", + "docs_reference_links": "N/A" + }, + { + "action": "passkey.remove", + "description": "A new passkey was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.create", + "description": "A new payment method was added, such as a new credit card or PayPal account.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.remove", + "description": "A payment method was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.update", + "description": "An existing payment method was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_granted", + "description": "A fine-grained personal access token was granted access to resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.access_restriction_disabled", + "description": "The configured restriction for access to resources via personal access tokens was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_restriction_enabled", + "description": "The configured restriction for access to resources via personal access tokens was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_restriction_reset", + "description": "The configured restriction for access to resources via personal access tokens was reset and delegated to organizations.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_revoked", + "description": "A fine-grained personal access token was revoked. The token can still read public organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/reviewing-and-revoking-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.auto_approve_grant_requests_disabled", + "description": "Triggered when fine-grained personal access tokens can access organization resources without prior approval.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.auto_approve_grant_requests_enabled", + "description": "Triggered when the organization must approve fine-grained personal access tokens before the tokens can access organization resources.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.auto_approve_grant_requests_reset", + "description": "Triggered when the enterprise delegates to the organizations when to require approval for fine-grained personal access tokens before the tokens can access organization resources.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.create", + "description": "Triggered when you create a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.credential_regenerated", + "description": "Triggered when you regenerate a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.credential_revoked", + "description": "A fine-grained personal access token was revoked by GitHub Advanced Security.", + "docs_reference_links": "/code-security/getting-started/github-security-features#secret-scanning-alerts-for-users" + }, + { + "action": "personal_access_token.destroy", + "description": "Triggered when you delete a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.expiration_limit_set", + "description": "A personal access token expiration limit was set.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.expiration_limit_unset", + "description": "A personal access token expiration limit was unset.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_cancelled", + "description": "A pending request for a fine-grained personal access token to access organization resources was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_created", + "description": "Triggered when a fine-grained personal access token was created to access organization resources and the organization requires approval before the token can access organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.request_denied", + "description": "A request for a fine-grained personal access token to access organization resources was denied.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.update", + "description": "A fine-grained personal access token was updated.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#fine-grained-personal-access-tokens" + }, + { + "action": "premium_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "profile_picture.update", + "description": "A profile picture was updated.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile" + }, + { + "action": "project.access", + "description": "A project board visibility was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.close", + "description": "A project board was closed.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board" + }, + { + "action": "project_collaborator.add", + "description": "A collaborator was added to a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.remove", + "description": "A collaborator was removed from a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.update", + "description": "A project collaborator's permission level was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.create", + "description": "A project board was created.", + "docs_reference_links": "N/A" + }, + { + "action": "project.delete", + "description": "A project board was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "project_field.create", + "description": "A field was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields" + }, + { + "action": "project_field.delete", + "description": "A field was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields/deleting-custom-fields" + }, + { + "action": "project.link", + "description": "A repository was linked to a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.open", + "description": "A project board was reopened.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board" + }, + { + "action": "project.rename", + "description": "A project board was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.unlink", + "description": "A repository was unlinked from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_org_permission", + "description": "The project's base-level permission for all organization members was changed or removed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_team_permission", + "description": "A team's project board permission level was changed or when a team was added or removed from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_user_permission", + "description": "A user was added to or removed from a project board or had their permission level changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project_view.create", + "description": "A view was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project_view.delete", + "description": "A view was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project.visibility_private", + "description": "A project's visibility was changed from public to private.", + "docs_reference_links": "N/A" + }, + { + "action": "project.visibility_public", + "description": "A project's visibility was changed from private to public.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.authorized_users_teams", + "description": "The users, teams, or integrations allowed to bypass a branch protection were changed.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches" + }, + { + "action": "protected_branch.branch_allowances", + "description": "A protected branch allowance was given to a specific user, team or integration.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.create", + "description": "Branch protection was enabled on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.destroy", + "description": "Branch protection was disabled on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.dismiss_stale_reviews", + "description": "Enforcement of dismissing stale pull requests was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.dismissal_restricted_users_teams", + "description": "Enforcement of restricting users and/or teams who can dismiss reviews was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.policy_override", + "description": "A branch protection requirement was overridden by a repository administrator.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.rejected_ref_update", + "description": "A branch update attempt was rejected.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_admin_enforced", + "description": "Branch protection was enforced for repository administrators.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_allow_deletions_enforcement_level", + "description": "Branch deletion was enabled or disabled for a protected branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_allow_force_pushes_enforcement_level", + "description": "Force pushes were enabled or disabled for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_ignore_approvals_from_contributors", + "description": "Ignoring of approvals from contributors to a pull request was enabled or disabled for a branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "protected_branch.update_linear_history_requirement_enforcement_level", + "description": "Required linear commit history was enabled or disabled for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_lock_allows_fetch_and_merge", + "description": "Fork syncing was enabled or disabled for a read-only branch", + "docs_reference_links": "repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#lock-branch" + }, + { + "action": "protected_branch.update_lock_branch_enforcement_level", + "description": "The enforcement of a branch lock was updated.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#lock-branch" + }, + { + "action": "protected_branch.update_merge_queue_enforcement_level", + "description": "Enforcement of the merge queue was modified for a branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-merge-queue" + }, + { + "action": "protected_branch.update_name", + "description": "A branch name pattern was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_pull_request_reviews_enforcement_level", + "description": "Enforcement of required pull request reviews was updated for a branch. Can be 0 (deactivated), 1 (non-admins), or 2 (everyone).", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_require_code_owner_review", + "description": "Enforcement of required code owner review was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_require_last_push_approval", + "description": "Someone other than the person who pushed the last code-modifying commit to the branch must approve pull requests for the branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging" + }, + { + "action": "protected_branch.update_required_approving_review_count", + "description": "Enforcement of the required number of approvals before merging was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_required_status_checks_enforcement_level", + "description": "Enforcement of required status checks was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_signature_requirement_enforcement_level", + "description": "Enforcement of required commit signing was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_strict_required_status_checks_policy", + "description": "Enforcement of required status checks was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "public_key.create", + "description": "An SSH key was added to a user account or a deploy key was added to a repository.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" + }, + { + "action": "public_key.delete", + "description": "An SSH key was removed from a user account or a deploy key was removed from a repository.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys" + }, + { + "action": "public_key.unverification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.unverify", + "description": "A user account's SSH key or a repository's deploy key was unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.update", + "description": "A user account's SSH key or a repository's deploy key was updated.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verify", + "description": "A user account's SSH key or a repository's deploy key was verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "pull_request.close", + "description": "A pull request was closed without being merged.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request" + }, + { + "action": "pull_request.converted_to_draft", + "description": "A pull request was converted to a draft.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft" + }, + { + "action": "pull_request.create", + "description": "A pull request was created.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request" + }, + { + "action": "pull_request.create_review_request", + "description": "A review was requested on a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request.in_progress", + "description": "A pull request was marked as in progress.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.indirect_merge", + "description": "A pull request was considered merged because the pull request's commits were merged into the target branch.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.merge", + "description": "A pull request was merged.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request" + }, + { + "action": "pull_request.ready_for_review", + "description": "A pull request was marked as ready for review.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review" + }, + { + "action": "pull_request.rebase", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.remove_review_request", + "description": "A review request was removed from a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request.reopen", + "description": "A pull request was reopened after previously being closed.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review_comment.create", + "description": "A review comment was added to a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request_review_comment.delete", + "description": "A review comment on a pull request was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review_comment.update", + "description": "A review comment on a pull request was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review.delete", + "description": "A review on a pull request was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review.dismiss", + "description": "A review on a pull request was dismissed.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review" + }, + { + "action": "pull_request_review.submit", + "description": "A review on a pull request was submitted.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#submitting-your-review" + }, + { + "action": "repo.access", + "description": "The visibility of a repository changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility" + }, + { + "action": "repo.actions_enabled", + "description": "GitHub Actions was enabled for a repository.", + "docs_reference_links": "organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#using-the-audit-log-api" + }, + { + "action": "repo.add_member", + "description": "A collaborator was added to a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository" + }, + { + "action": "repo.add_topic", + "description": "A topic was added to a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics" + }, + { + "action": "repo.advanced_security_disabled", + "description": "GitHub Advanced Security was disabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.advanced_security_enabled", + "description": "GitHub Advanced Security was enabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.archived", + "description": "A repository was archived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.change_merge_setting", + "description": "Pull request merge options were changed for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_analysis_deleted", + "description": "Code scanning analysis for a repository was deleted.", + "docs_reference_links": "/rest/code-scanning#delete-a-code-scanning-analysis-from-a-repository" + }, + { + "action": "repo.code_scanning_autofix_disabled", + "description": "Autofix for code scanning alerts was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_enabled", + "description": "Autofix for code scanning alerts was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_third_party_tools_disabled", + "description": "Autofix for third party tools for code scanning alerts was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_third_party_tools_enabled", + "description": "Autofix for third party tools for code scanning alerts was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_configuration_for_branch_deleted", + "description": "A code scanning configuration for a branch of a repository was deleted.", + "docs_reference_links": "/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository#removing-stale-configurations-and-alerts-from-a-branch" + }, + { + "action": "repo.code_scanning_delegated_alert_dismissal_disabled", + "description": "Prevention of direct alert dismissal for code scanning was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_delegated_alert_dismissal_enabled", + "description": "Prevention of direct alert dismissal for code scanning was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.codeql_disabled", + "description": "Code scanning using the default setup was disabled for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.codeql_enabled", + "description": "Code scanning using the default setup was enabled for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.codeql_updated", + "description": "Code scanning using the default setup was updated for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.collaborators_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.config.disable_collaborators_only", + "description": "The interaction limit for collaborators only was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_contributors_only", + "description": "The interaction limit for prior contributors only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_collaborators_only", + "description": "The interaction limit for collaborators only was enabled in a repository Users that are not collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_contributors_only", + "description": "The interaction limit for prior contributors only was enabled in a repository Users that are not prior contributors, collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_sockpuppet_disallowed", + "description": "The interaction limit for existing users was enabled in a repository New users aren't able to interact with a repository for a set duration Existing users of the repository, contributors, collaborators or organization members are able to interact with a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.create", + "description": "A repository was created.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/creating-a-new-repository" + }, + { + "action": "repo.create_actions_secret", + "description": "A GitHub Actions secret was created for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.create_actions_variable", + "description": "A GitHub Actions variable was created for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.create_integration_secret", + "description": "A Codespaces or Dependabot secret was created for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.destroy", + "description": "A repository was deleted.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/deleting-a-repository" + }, + { + "action": "repo.disk_archive", + "description": "A repository was archived on disk.", + "docs_reference_links": "/repositories/archiving-a-github-repository/archiving-repositories" + }, + { + "action": "repo.download_zip", + "description": "A source code archive of a repository was downloaded as a ZIP file.", + "docs_reference_links": "/repositories/working-with-files/using-files/downloading-source-code-archives" + }, + { + "action": "repo.hide_from_discovery", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.noindex", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.override_unlock", + "description": "The repository was unlocked.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_build", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_cname", + "description": "A GitHub Pages custom domain was modified in a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_create", + "description": "A GitHub Pages site was created.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_destroy", + "description": "A GitHub Pages site was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_disabled", + "description": "HTTPS redirects were disabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_enabled", + "description": "HTTPS redirects were enabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_private", + "description": "A GitHub Pages site visibility was changed to private.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_public", + "description": "A GitHub Pages site visibility was changed to public.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete", + "description": "A GitHub Pages site was soft-deleted because its owner's plan changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete_restore", + "description": "A GitHub Pages site that was previously soft-deleted was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_source", + "description": "A GitHub Pages source was modified.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.register_self_hosted_runner", + "description": "A new self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository" + }, + { + "action": "repo.remove_actions_secret", + "description": "A GitHub Actions secret was deleted for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.remove_actions_variable", + "description": "A GitHub Actions variable was deleted for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.remove_integration_secret", + "description": "A Codespaces or Dependabot secret was deleted for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.remove_member", + "description": "A collaborator was removed from a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository" + }, + { + "action": "repo.remove_self_hosted_runner", + "description": "A self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository" + }, + { + "action": "repo.remove_topic", + "description": "A topic was removed from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.rename", + "description": "A repository was renamed.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/renaming-a-repository" + }, + { + "action": "repo.require_login", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.restore", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.self_hosted_runner_offline", + "description": "The runner application was stopped. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "repo.self_hosted_runner_online", + "description": "The runner application was started. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "repo.self_hosted_runner_updated", + "description": "The runner application was updated. This event is not included in the JSON/CSV export.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#about-self-hosted-runners" + }, + { + "action": "repo.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-required-approval-for-workflows-from-public-forks" + }, + { + "action": "repo.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-forks-of-private-repositories" + }, + { + "action": "repo.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository" + }, + { + "action": "repo.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository" + }, + { + "action": "repo.set_fork_pr_workflows_policy", + "description": "Triggered when the policy for workflows on private repository forks is changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-private-repository-forks" + }, + { + "action": "repo.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "repo.staff_unlock", + "description": "An enterprise owner or GitHub staff (with permission from a repository administrator) temporarily unlocked the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.temporary_access_granted", + "description": "Temporary access was enabled for a repository.", + "docs_reference_links": "/admin/user-management/managing-repositories-in-your-enterprise/accessing-user-owned-repositories-in-your-enterprise" + }, + { + "action": "repo.transfer", + "description": "A user accepted a request to receive a transferred repository.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/transferring-a-repository" + }, + { + "action": "repo.transfer_outgoing", + "description": "A repository was transferred to another repository network.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.transfer_start", + "description": "A user sent a request to transfer a repository to another user or organization.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.unarchived", + "description": "A repository was unarchived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.update_actions_access_settings", + "description": "The setting to control how a repository was used by GitHub Actions workflows in other repositories was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_secret", + "description": "A GitHub Actions secret was updated for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.update_actions_settings", + "description": "A repository administrator changed GitHub Actions policy settings for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_variable", + "description": "A GitHub Actions variable was updated for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.update_default_branch", + "description": "The default branch for a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_integration_secret", + "description": "A Codespaces or Dependabot secret was updated for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_member", + "description": "A user's permission to a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_branch_protection_evaluation.disable", + "description": "Branch protections were disabled for the repository.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "repository_branch_protection_evaluation.enable", + "description": "Branch protections were enabled for this repository.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "repository_code_security.disable", + "description": "Code security was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_code_security.enable", + "description": "Code security was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.create", + "description": "An image to represent a repository was uploaded.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.destroy", + "description": "An image to represent a repository was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.accept", + "description": "An invitation to join a repository was accepted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.cancel", + "description": "An invitation to join a repository was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.create", + "description": "An invitation to join a repository was sent.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.reject", + "description": "An invitation to join a repository was declined.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_ruleset.create", + "description": "A repository ruleset was created.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository" + }, + { + "action": "repository_ruleset.destroy", + "description": "A repository ruleset was deleted.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#deleting-a-ruleset" + }, + { + "action": "repository_ruleset.update", + "description": "A repository ruleset was edited.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#editing-a-ruleset" + }, + { + "action": "repository_secret_scanning_automatic_validity_checks.disabled", + "description": "Automatic partner validation checks have been disabled at the repository level", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#allowing-validity-checks-for-partner-patterns-in-a-repository" + }, + { + "action": "repository_secret_scanning_automatic_validity_checks.enabled", + "description": "Automatic partner validation checks have been enabled at the repository level", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#allowing-validity-checks-for-partner-patterns-in-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.create", + "description": "A custom pattern was created for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.delete", + "description": "A custom pattern was removed from secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#removing-a-custom-pattern" + }, + { + "action": "repository_secret_scanning_custom_pattern.publish", + "description": "A custom pattern was published for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern_push_protection.disabled", + "description": "Push protection for a custom pattern for secret scanning was disabled for your repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern_push_protection.enabled", + "description": "Push protection for a custom pattern for secret scanning was enabled for your repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.update", + "description": "Changes to a custom pattern were saved and a dry run was executed for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#editing-a-custom-pattern" + }, + { + "action": "repository_secret_scanning.disable", + "description": "Secret scanning was disabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "repository_secret_scanning.enable", + "description": "Secret scanning was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_secret_scanning_non_provider_patterns.disabled", + "description": "Secret scanning for non-provider patterns was disabled at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "repository_secret_scanning_non_provider_patterns.enabled", + "description": "Secret scanning for non-provider patterns was enabled at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.add", + "description": "A role or team was added to the push protection bypass list at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.disable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Specific roles or teams\" to \"Anyone with write access\" at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.enable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Anyone with write access\" to \"Specific roles or teams\" at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.remove", + "description": "A role or team was removed from the push protection bypass list at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection.disable", + "description": "Secret scanning push protection was disabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "repository_secret_scanning_push_protection.enable", + "description": "Secret scanning push protection was enabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "repository_security_configuration.applied", + "description": "A code security configuration was applied to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.failed", + "description": "A code security configuration failed to attach to the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.removed", + "description": "A code security configuration was removed from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.removed_by_settings_change", + "description": "A code security configuration was removed due to a change in repository or enterprise settings.", + "docs_reference_links": "N/A" + }, + { + "action": "restrict_notification_delivery.disable", + "description": "Email notification restrictions for an organization or enterprise were disabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/restricting-email-notifications-for-your-organization, /admin/policies/enforcing-policies-for-your-enterprise/restricting-email-notifications-for-your-enterprise" + }, + { + "action": "restrict_notification_delivery.enable", + "description": "Email notification restrictions for an organization or enterprise were enabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/restricting-email-notifications-for-your-organization, /admin/policies/enforcing-policies-for-your-enterprise/restricting-email-notifications-for-your-enterprise" + }, + { + "action": "secret_scanning_alert.create", + "description": "GitHub detected a secret and created a secret scanning alert.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning" + }, + { + "action": "secret_scanning_alert.reopen", + "description": "A secret scanning alert was reopened.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.resolve", + "description": "A secret scanning alert was resolved.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.revoke", + "description": "A secret scanning alert was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.validate", + "description": "A secret scanning alert was validated.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning" + }, + { + "action": "secret_scanning.disable", + "description": "Secret scanning was disabled for all existing repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning.enable", + "description": "Secret scanning was enabled for all existing repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_new_repos.disable", + "description": "Secret scanning was disabled for all new repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_new_repos.enable", + "description": "Secret scanning was enabled for all new repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_push_protection.bypass", + "description": "Triggered when a user bypasses the push protection on a secret detected by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#bypassing-push-protection-for-a-secret" + }, + { + "action": "secret_scanning_push_protection_request.approve", + "description": "A request to bypass secret scanning push protection was approved by a user.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#managing-requests-to-bypass-push-protection" + }, + { + "action": "secret_scanning_push_protection_request.deny", + "description": "A request to bypass secret scanning push protection was denied by a user.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#managing-requests-to-bypass-push-protection" + }, + { + "action": "secret_scanning_push_protection_request.request", + "description": "A user requested to bypass secret scanning push protection.", + "docs_reference_links": "/code-security/secret-scanning/working-with-push-protection#requesting-bypass-privileges-when-working-with-the-command-line" + }, + { + "action": "secret_scanning_scan.completed", + "description": "A secret scanning scan has completed on this repository.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "security_configuration.create", + "description": "A security configuration was created", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_default.delete", + "description": "A default security configuration setting for new repositories was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_default.update", + "description": "A default security configuration setting for new repositories was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration.delete", + "description": "A security configuration was deleted", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_policy.update", + "description": "A security configuration policy was updated", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration.update", + "description": "A security configuration was updated", + "docs_reference_links": "N/A" + }, + { + "action": "security_key.register", + "description": "A security key was registered for an account.", + "docs_reference_links": "N/A" + }, + { + "action": "security_key.remove", + "description": "A security key was removed from an account.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.agreement_sign", + "description": "A GitHub Sponsors agreement was signed on behalf of an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.custom_amount_settings_change", + "description": "Custom amounts for GitHub Sponsors were enabled or disabled, or the suggested custom amount was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.fiscal_host_change", + "description": "The fiscal host for a GitHub Sponsors listing was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.repo_funding_links_file_action", + "description": "The FUNDING file in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository" + }, + { + "action": "sponsors.sponsor_sponsorship_cancel", + "description": "A sponsorship was canceled.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_create", + "description": "A sponsorship was created, by sponsoring an account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_payment_complete", + "description": "After you sponsor an account and a payment has been processed, the sponsorship payment was marked as complete.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_preference_change", + "description": "The option to receive email updates from a sponsored account was changed.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/managing-your-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_tier_change", + "description": "A sponsorship was upgraded or downgraded.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/upgrading-a-sponsorship, /billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsored_developer_approve", + "description": "A GitHub Sponsors account was approved.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_create", + "description": "A GitHub Sponsors account was created.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_disable", + "description": "A GitHub Sponsors account was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_profile_update", + "description": "The profile for GitHub Sponsors account was edited.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/editing-your-profile-details-for-github-sponsors" + }, + { + "action": "sponsors.sponsored_developer_redraft", + "description": "A GitHub Sponsors account was returned to draft state from approved state.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_request_approval", + "description": "An application for GitHub Sponsors was submitted for approval.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_tier_description_update", + "description": "The description for a sponsorship tier was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.sponsored_developer_update_newsletter_send", + "description": "Triggered when you send an email update to your sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/contacting-your-sponsors" + }, + { + "action": "sponsors.sponsors_patreon_user_create", + "description": "A Patreon account was linked to a user account for use with GitHub Sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/enabling-sponsorships-through-patreon#linking-your-patreon-account-to-your-github-account" + }, + { + "action": "sponsors.sponsors_patreon_user_destroy", + "description": "A Patreon account for use with GitHub Sponsors was unlinked from a user account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-your-github-account" + }, + { + "action": "sponsors.update_tier_repository", + "description": "A GitHub Sponsors tier changed access for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.update_tier_welcome_message", + "description": "The welcome message for a GitHub Sponsors tier for an organization was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.waitlist_join", + "description": "You join the waitlist to join GitHub Sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.withdraw_agreement_signature", + "description": "A signature was withdrawn from a GitHub Sponsors agreement that applies to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "ssh_certificate_authority.create", + "description": "An SSH certificate authority for an organization or enterprise was created.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_authority.destroy", + "description": "An SSH certificate authority for an organization or enterprise was deleted.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_requirement.disable", + "description": "The requirement for members to use SSH certificates to access an organization resources was disabled.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_requirement.enable", + "description": "The requirement for members to use SSH certificates to access an organization resources was enabled.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "staff.set_domain_token_expiration", + "description": "The verification code expiry time for an organization or enterprise domain was set.", + "docs_reference_links": "N/A" + }, + { + "action": "staff.unverify_domain", + "description": "An organization or enterprise domain was unverified.", + "docs_reference_links": "N/A" + }, + { + "action": "staff.verify_domain", + "description": "An organization or enterprise domain was verified.", + "docs_reference_links": "N/A" + }, + { + "action": "successor_invitation.accept", + "description": "Triggered when you accept a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.cancel", + "description": "Triggered when you cancel a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.create", + "description": "Triggered when you create a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.decline", + "description": "Triggered when you decline a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "successor_invitation.revoke", + "description": "Triggered when you revoke a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "team.add_member", + "description": "A member of an organization was added to a team.", + "docs_reference_links": "/organizations/organizing-members-into-teams/adding-organization-members-to-a-team" + }, + { + "action": "team.add_repository", + "description": "A team was given access and permissions to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "team.change_parent_team", + "description": "A child team was created or a child team's parent was changed.", + "docs_reference_links": "/organizations/organizing-members-into-teams/moving-a-team-in-your-organizations-hierarchy" + }, + { + "action": "team.change_privacy", + "description": "A team's privacy level was changed.", + "docs_reference_links": "/organizations/organizing-members-into-teams/changing-team-visibility" + }, + { + "action": "team.create", + "description": "A new team is created.", + "docs_reference_links": "N/A" + }, + { + "action": "team.demote_maintainer", + "description": "A user was demoted from a team maintainer to a team member.", + "docs_reference_links": "/organizations/organizing-members-into-teams/assigning-the-team-maintainer-role-to-a-team-member" + }, + { + "action": "team.destroy", + "description": "A team was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "team_discussions.clear", + "description": "An organization owner cleared the setting to allow team discussions for an organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "team_discussions.disable", + "description": "Team discussions were disabled for an organization.", + "docs_reference_links": "/organizations/organizing-members-into-teams/disabling-team-discussions-for-your-organization" + }, + { + "action": "team_discussions.enable", + "description": "Team discussions were enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "team.promote_maintainer", + "description": "A user was promoted from a team member to a team maintainer.", + "docs_reference_links": "/organizations/organizing-members-into-teams/assigning-the-team-maintainer-role-to-a-team-member#promoting-an-organization-member-to-team-maintainer" + }, + { + "action": "team.remove_member", + "description": "An organization member was removed from a team.", + "docs_reference_links": "/organizations/organizing-members-into-teams/removing-organization-members-from-a-team" + }, + { + "action": "team.remove_repository", + "description": "A repository was removed from a team's control.", + "docs_reference_links": "N/A" + }, + { + "action": "team.rename", + "description": "A team's name was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "team_sync_tenant.disabled", + "description": "Team synchronization with a tenant was disabled.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/managing-team-synchronization-for-your-organization, /admin/identity-and-access-management/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise" + }, + { + "action": "team_sync_tenant.enabled", + "description": "Team synchronization with a tenant was enabled.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/managing-team-synchronization-for-your-organization, /admin/identity-and-access-management/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise" + }, + { + "action": "team.update_repository_permission", + "description": "A team's permission to a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "trusted_device.register", + "description": "A new trusted device was added.", + "docs_reference_links": "N/A" + }, + { + "action": "trusted_device.remove", + "description": "A trusted device was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.abort", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.complete", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.ignore", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.staff_approve", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.staff_decline", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.start", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.two_factor_destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.add_factor", + "description": "A secondary authentication factor was added to a user account.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.disabled", + "description": "Two-factor authentication was disabled for a user account.", + "docs_reference_links": "https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account" + }, + { + "action": "two_factor_authentication.enabled", + "description": "Two-factor authentication was enabled for a user account.", + "docs_reference_links": "https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.password_reset_fallback_sms", + "description": "A one-time password code was sent to a user account fallback phone number.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.recovery_codes_regenerated", + "description": "Two factor recovery codes were regenerated for a user account.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.remove_factor", + "description": "A secondary authentication factor was removed from a user account.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.sign_in_fallback_sms", + "description": "A one-time password code was sent to a user account fallback phone number.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.update_fallback", + "description": "The two-factor authentication fallback for a user account was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.add_email", + "description": "An email address was added to a user account.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account" + }, + { + "action": "user.async_delete", + "description": "An asynchronous job was started to destroy a user account, eventually triggering a user.delete event.", + "docs_reference_links": "N/A" + }, + { + "action": "user.audit_log_export", + "description": "Audit log entries were exported.", + "docs_reference_links": "N/A" + }, + { + "action": "user.block_user", + "description": "A user was blocked by another user.", + "docs_reference_links": "N/A" + }, + { + "action": "user.change_password", + "description": "A user changed their password.", + "docs_reference_links": "N/A" + }, + { + "action": "user.codespaces_trusted_repo_access_granted", + "description": "Triggered when you allow the codespaces you create for a repository to access other repositories owned by your personal account.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "user.codespaces_trusted_repo_access_revoked", + "description": "Triggered when you disallow the codespaces you create for a repository to access other repositories owned by your personal account.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "user.correct_password_from_unrecognized_device", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.correct_password_from_unrecognized_device_and_location", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.correct_password_from_unrecognized_location", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.create", + "description": "A new user account was created.", + "docs_reference_links": "N/A" + }, + { + "action": "user.create_integration_secret", + "description": "A user secret for Codespaces was created.", + "docs_reference_links": "N/A" + }, + { + "action": "user.creation_rate_limit_exceeded", + "description": "The rate of creation of user accounts, applications, issues, pull requests or other resources exceeded the configured rate limits, or too many users were followed too quickly.", + "docs_reference_links": "N/A" + }, + { + "action": "user.delete", + "description": "A user account was destroyed by an asynchronous job.", + "docs_reference_links": "N/A" + }, + { + "action": "user.demote", + "description": "A site administrator was demoted to an ordinary user account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.destroy", + "description": "A user deleted his or her account, triggering user.async_delete.", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_failure", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_requested", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_success", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_collaborators_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_contributors_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_sockpuppet_disallowed", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user_email.confirm_claim", + "description": "An enterprise managed user claimed an email address.", + "docs_reference_links": "N/A" + }, + { + "action": "user_email.mark_as_unclaimed", + "description": "N/A", + "docs_reference_links": "An enterprise managed user unclaimed an email address." + }, + { + "action": "user.enable_collaborators_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.enable_contributors_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.enable_sockpuppet_disallowed", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.failed_login", + "description": "A user tried to sign in with an incorrect username, password, or two-factor authentication code.", + "docs_reference_links": "N/A" + }, + { + "action": "user.flag_as_large_scale_contributor", + "description": "A user account was flagged as a large scale contributor. Only contributions from public repositories the user owns will be shown in their contribution graph, in order to prevent timeouts.", + "docs_reference_links": "N/A" + }, + { + "action": "user.forgot_password", + "description": "A user requested a password reset.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials" + }, + { + "action": "user.grant_github_developer", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.hide_private_contributions_count", + "description": "A user changed the visibility of their private contributions. The number of contributions to private repositories on the user's profile are now hidden.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile" + }, + { + "action": "user.login", + "description": "A user signed in.", + "docs_reference_links": "N/A" + }, + { + "action": "user.logout", + "description": "A user signed out.", + "docs_reference_links": "N/A" + }, + { + "action": "user.minimize_comment", + "description": "A comment made by a user was minimized.", + "docs_reference_links": "N/A" + }, + { + "action": "user.new_device_used", + "description": "A user signed in from a new device.", + "docs_reference_links": "N/A" + }, + { + "action": "user.partial_two_factor_email_followup", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.promote", + "description": "An ordinary user account was promoted to a site administrator.", + "docs_reference_links": "N/A" + }, + { + "action": "user.recreate", + "description": "A user's account was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "user.remove_email", + "description": "An email address was removed from a user account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.remove_integration_secret", + "description": "A user secret for Codespaces was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "user.remove_large_scale_contributor_flag", + "description": "A user account was no longer flagged as a large scale contributor.", + "docs_reference_links": "N/A" + }, + { + "action": "user.rename", + "description": "A username was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.report_abuse", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.report_content", + "description": "Triggered when you report an issue or pull request, or a comment on an issue, pull request, or commit.", + "docs_reference_links": "/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam" + }, + { + "action": "user.reset_password", + "description": "A user reset their account password.", + "docs_reference_links": "N/A" + }, + { + "action": "user_session.country_change", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.show_private_contributions_count", + "description": "A user changed the visibility of their private contributions. The number of contributions to private repositories on the user's profile are now shown.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile" + }, + { + "action": "user.sign_in_from_unrecognized_device", + "description": "A user signed in from an unrecognized device.", + "docs_reference_links": "N/A" + }, + { + "action": "user.sign_in_from_unrecognized_device_and_location", + "description": "A user signed in from an unrecognized device and location.", + "docs_reference_links": "N/A" + }, + { + "action": "user.sign_in_from_unrecognized_location", + "description": "A user signed in from an unrecognized location.", + "docs_reference_links": "N/A" + }, + { + "action": "user_status.destroy", + "description": "Triggered when you clear the status on your profile.", + "docs_reference_links": "N/A" + }, + { + "action": "user_status.update", + "description": "Triggered when you set or change the status on your profile.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#setting-a-status" + }, + { + "action": "user.suspend", + "description": "A user account was suspended.", + "docs_reference_links": "N/A" + }, + { + "action": "user.toggle_warn_private_email", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_challenge_failure", + "description": "A 2FA challenge issued for a user account failed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_challenge_success", + "description": "A 2FA challenge issued for a user account succeeded.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recover", + "description": "A user used their 2FA recovery codes.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_downloaded", + "description": "A user downloaded 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_printed", + "description": "A user printed 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_viewed", + "description": "A user viewed 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_requested", + "description": "A user was prompted for a two-factor authentication code.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication" + }, + { + "action": "user.unblock_user", + "description": "A user was unblocked by another user.", + "docs_reference_links": "N/A" + }, + { + "action": "user.unminimize_comment", + "description": "A comment made by a user was unminimized.", + "docs_reference_links": "N/A" + }, + { + "action": "user.unsuspend", + "description": "A user account was unsuspended.", + "docs_reference_links": "N/A" + }, + { + "action": "user.update_integration_secret", + "description": "A user secret for Codespaces was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "user.update_new_repository_default_branch_setting", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.approve_workflow_job", + "description": "A workflow job was approved.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.bypass_protection_rules", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.cancel_workflow_run", + "description": "A workflow run was cancelled.", + "docs_reference_links": "/actions/managing-workflow-runs/canceling-a-workflow" + }, + { + "action": "workflows.comment_workflow_job", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.completed_workflow_run", + "description": "A workflow status changed to completed. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history" + }, + { + "action": "workflows.created_workflow_run", + "description": "A workflow run was create. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/learn-github-actions/understanding-github-actions#create-an-example-workflow" + }, + { + "action": "workflows.delete_workflow_run", + "description": "A workflow run was deleted.", + "docs_reference_links": "/actions/managing-workflow-runs/deleting-a-workflow-run" + }, + { + "action": "workflows.disable_workflow", + "description": "A workflow was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.enable_workflow", + "description": "A workflow was enabled, after previously being disabled by disable_workflow.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.pin_workflow", + "description": "A workflow was pinned.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.prepared_workflow_job", + "description": "A workflow job was started. Includes the list of secrets that were provided to the job. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/using-workflows/events-that-trigger-workflows" + }, + { + "action": "workflows.reject_workflow_job", + "description": "A workflow job was rejected.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.rerun_workflow_run", + "description": "A workflow run was re-run.", + "docs_reference_links": "/actions/managing-workflow-runs/re-running-workflows-and-jobs" + }, + { + "action": "workflows.unpin_workflow", + "description": "A workflow was unpinned after previously being pinned.", + "docs_reference_links": "N/A" + } +] \ No newline at end of file diff --git a/src/audit-logs/data/ghes-3.18/organization.json b/src/audit-logs/data/ghes-3.18/organization.json new file mode 100644 index 000000000000..5b05777e59e9 --- /dev/null +++ b/src/audit-logs/data/ghes-3.18/organization.json @@ -0,0 +1,3717 @@ +[ + { + "action": "account.billing_date_change", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account.plan_change", + "description": "The account's plan changed.", + "docs_reference_links": "/billing/managing-the-plan-for-your-github-account/about-billing-for-plans" + }, + { + "action": "actions_cache.delete", + "description": "A GitHub Actions cache was deleted using the REST API.", + "docs_reference_links": "N/A" + }, + { + "action": "advisory_credit.accept", + "description": "Credit was accepted for a security advisory.", + "docs_reference_links": "/code-security/security-advisories/working-with-repository-security-advisories/editing-a-repository-security-advisory" + }, + { + "action": "advisory_credit.create", + "description": "Someone was added to the credit section of a security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "advisory_credit.decline", + "description": "Credit was declined for a security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "advisory_credit.destroy", + "description": "Someone was removed from the credit section of a security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "artifact.destroy", + "description": "A workflow run artifact was manually deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "auto_approve_personal_access_token_requests.disable", + "description": "Triggered when the organization must approve fine-grained personal access tokens before the tokens can access organization resources. See also: personal_access_token.auto_approve_grant_requests_disabled", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization" + }, + { + "action": "auto_approve_personal_access_token_requests.enable", + "description": "Triggered when fine-grained personal access tokens can access organization resources without prior approval. See also: personal_access_token.auto_approve_grant_requests_enabled", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization" + }, + { + "action": "billing.change_billing_type", + "description": "The way the account pays for GitHub was changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/adding-or-editing-a-payment-method" + }, + { + "action": "billing.change_email", + "description": "The billing email address changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/setting-your-billing-email" + }, + { + "action": "billing.lock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "billing.unlock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "checks.auto_trigger_disabled", + "description": "Automatic creation of check suites was disabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.auto_trigger_enabled", + "description": "Automatic creation of check suites was enabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.delete_logs", + "description": "Logs in a check suite were deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "code_scanning.alert_appeared_in_branch", + "description": "Existing code scanning alerts appeared in a branch.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_became_fixed", + "description": "Code scanning alerts were fixed.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_became_outdated", + "description": "Code scanning alerts were closed as outdated (all configurations they were detected in were deleted).", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closed_by_user", + "description": "Code scanning alerts were manually dismissed.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_approved", + "description": "Dismissal of code scanning alerts was approved.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_denied", + "description": "Dismissal of code scanning alerts was denied.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_closure_requested", + "description": "Dismissal of code scanning alerts was requested.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_created", + "description": "Code scanning alerts were seen for the first time.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_reappeared", + "description": "Code scanning alerts that were previously fixed reappeared.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "code_scanning.alert_reopened_by_user", + "description": "Code scanning alerts that were previously dismissed were reopened.", + "docs_reference_links": "/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning" + }, + { + "action": "codespaces.allow_permissions", + "description": "A codespace using custom permissions from its devcontainer.json file was launched.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.attempted_to_create_from_prebuild", + "description": "An attempt to create a codespace from a prebuild was made.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.business_enablement_updated", + "description": "Enterprise setting for Codespaces ownership was updated.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization" + }, + { + "action": "codespaces.connect", + "description": "Credentials for a codespace were refreshed.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.create", + "description": "A codespace was created", + "docs_reference_links": "/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository" + }, + { + "action": "codespaces.destroy", + "description": "A user deleted a codespace.", + "docs_reference_links": "/codespaces/developing-in-codespaces/deleting-a-codespace" + }, + { + "action": "codespaces.export_environment", + "description": "A codespace was exported to a branch on GitHub.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.policy_group_created", + "description": "Policies were applied to codespaces in an organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.policy_group_deleted", + "description": "Policies were removed from codespaces in an organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.policy_group_updated", + "description": "Policies were updated for codespaces in an organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.restore", + "description": "A codespace was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.start_environment", + "description": "A codespace was started.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.suspend_environment", + "description": "A codespace was stopped.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.trusted_repositories_access_update", + "description": "A personal account's access and security setting for Codespaces were updated.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "commit_comment.destroy", + "description": "A commit comment was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "commit_comment.update", + "description": "A commit comment was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.access_revoked", + "description": "Copilot access was revoked for the organization or enterprise due to its Copilot subscription ending, an issue with billing the entity, the entity being marked spammy, or the entity being suspended.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_org_settings_changed", + "description": "Copilot feature settings were changed at the organization level.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_added", + "description": "A Copilot Business or Copilot Enterprise seat was added for a user and they have received access to GitHub Copilot. This can occur as the result of directly assigning a seat for a user, assigning a seat for a team, or setting the organization to allow access for all members.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_created", + "description": "A Copilot Business or Copilot Enterprise seat assignment was newly created for a user or a team, and seats are being created.", + "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" + }, + { + "action": "copilot.cfb_seat_assignment_refreshed", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_reused", + "description": "A Copilot Business or Copilot Enterprise seat assignment was re-created for a user who already had a seat with no pending cancellation date, and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_unassigned", + "description": "A user or team's Copilot Business or Copilot Enterprise seat assignment was unassigned, and the user(s) will lose access to Copilot at the end of the current billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled_by_staff", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled manually by GitHub staff, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_management_changed", + "description": "The seat management setting was changed at the organization level to either enable or disable Copilot access for all members of the organization, or to enable Copilot access for selected members or teams.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.content_exclusion_changed", + "description": "The excluded paths for GitHub Copilot were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.custom_instructions_created", + "description": "Copilot custom instructions were created for the organization.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.custom_instructions_updated", + "description": "Copilot custom instructions were updated for the organization.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.knowledge_base_created", + "description": "A knowledge base was created in the organization.", + "docs_reference_links": "copilot/github-copilot-enterprise/copilot-chat-in-github/managing-copilot-knowledge-bases" + }, + { + "action": "copilot.knowledge_base_deleted", + "description": "A knowledge base was deleted from the organization.", + "docs_reference_links": "copilot/github-copilot-enterprise/copilot-chat-in-github/managing-copilot-knowledge-bases" + }, + { + "action": "copilot.knowledge_base_updated", + "description": "A knowledge base was updated in the organization.", + "docs_reference_links": "copilot/github-copilot-enterprise/copilot-chat-in-github/managing-copilot-knowledge-bases" + }, + { + "action": "copilot.plan_changed", + "description": "The plan for GitHub Copilot was updated.", + "docs_reference_links": "/billing/managing-billing-for-github-copilot/about-billing-for-github-copilot" + }, + { + "action": "copilot.plan_downgrade_scheduled", + "description": "The plan for GitHub Copilot was scheduled to be downgraded.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_disabled", + "description": "Specific repositories were disabled from using Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enabled", + "description": "Specific repositories were enabled to use Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enablement_updated", + "description": "Copilot coding agent access was updated for the organization's or user's repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_property_definition.create", + "description": "A new custom property definition was created.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_definition.destroy", + "description": "A custom property definition was deleted.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_definition.update", + "description": "A custom property definition was updated.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.create", + "description": "A repository's custom property value was manually set for the first time.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.destroy", + "description": "A repository's custom property value was deleted.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "custom_property_value.update", + "description": "A repository's custom property value was updated.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-custom-properties-for-repositories-in-your-organization" + }, + { + "action": "dependabot_alerts.disable", + "description": "Dependabot alerts were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts.enable", + "description": "Dependabot alerts were enabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts_new_repos.disable", + "description": "Dependabot alerts were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_alerts_new_repos.enable", + "description": "Dependabot alerts were enabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_repository_access.default_access_level_updated", + "description": "The default repository access for Dependabot was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_repository_access.repositories_updated", + "description": "The repositories that Dependabot can access were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates.disable", + "description": "Dependabot security updates were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates.enable", + "description": "Dependabot security updates were enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates_new_repos.disable", + "description": " Dependabot security updates were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates_new_repos.enable", + "description": "Dependabot security updates were enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph.disable", + "description": "The dependency graph was disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph.enable", + "description": "The dependency graph was enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph_new_repos.disable", + "description": "The dependency graph was disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph_new_repos.enable", + "description": "The dependency graph was enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "discussion_comment.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "discussion_comment.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "discussion.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "discussion_post.destroy", + "description": "Triggered when a team discussion post is deleted.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#deleting-a-comment" + }, + { + "action": "discussion_post_reply.destroy", + "description": "Triggered when a reply to a team discussion post is deleted.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#deleting-a-comment" + }, + { + "action": "discussion_post_reply.update", + "description": "Triggered when a reply to a team discussion post is edited.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#editing-a-comment" + }, + { + "action": "discussion_post.update", + "description": "Triggered when a team discussion post is edited.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/managing-disruptive-comments#editing-a-comment" + }, + { + "action": "enterprise_announcement.create", + "description": "A global announcement banner was created for the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise#creating-a-global-announcement-banner" + }, + { + "action": "enterprise_announcement.destroy", + "description": "A global announcement banner was removed from the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise" + }, + { + "action": "enterprise_announcement.update", + "description": "A global announcement banner was updated for the enterprise.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/communicating-information-to-users-in-your-enterprise/customizing-user-messages-for-your-enterprise" + }, + { + "action": "enterprise_installation.create", + "description": "The GitHub App associated with a GitHub Connect connection was created.", + "docs_reference_links": "/admin/configuration/configuring-github-connect/managing-github-connect" + }, + { + "action": "enterprise_installation.destroy", + "description": "The GitHub App associated with a GitHub Connect connection was deleted.", + "docs_reference_links": "/admin/configuration/configuring-github-connect/managing-github-connect" + }, + { + "action": "environment.add_protection_rule", + "description": "A GitHub Actions deployment protection rule was created via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "environment.create_actions_secret", + "description": "A secret was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.create_actions_variable", + "description": "A variable was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.delete", + "description": "An environment was deleted.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deleting-an-environment" + }, + { + "action": "environment.remove_actions_secret", + "description": "A secret was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.remove_actions_variable", + "description": "A variable was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.remove_protection_rule", + "description": "A GitHub Actions deployment protection rule was deleted via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.update_actions_secret", + "description": "A secret was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.update_actions_variable", + "description": "A variable was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.update_protection_rule", + "description": "A GitHub Actions deployment protection rule was updated via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "git.clone", + "description": "A repository was cloned.", + "docs_reference_links": "N/A" + }, + { + "action": "git.fetch", + "description": "Changes were fetched from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "git.push", + "description": "Changes were pushed to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "hook.active_changed", + "description": "A hook's active status was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.config_changed", + "description": "A hook's configuration was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.create", + "description": "A new hook was added.", + "docs_reference_links": "/get-started/exploring-integrations/about-webhooks" + }, + { + "action": "hook.destroy", + "description": "A hook was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.events_changed", + "description": "A hook's configured events were changed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.create", + "description": "A GitHub App was created.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.destroy", + "description": "A GitHub App was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.generate_client_secret", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "integration_installation.create", + "description": "A GitHub App was installed.", + "docs_reference_links": "/apps/using-github-apps/authorizing-github-apps" + }, + { + "action": "integration_installation.destroy", + "description": "A GitHub App was uninstalled.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.repositories_added", + "description": "Repositories were added to a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation.repositories_removed", + "description": "Repositories were removed from a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation_request.close", + "description": "A request to install a GitHub App was either approved or denied by an owner, or canceled by the member who opened the request.", + "docs_reference_links": "/apps/using-github-apps/requesting-a-github-app-from-your-organization-owner" + }, + { + "action": "integration_installation_request.create", + "description": "A member requested that an owner install a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/requesting-a-github-app-from-your-organization-owner" + }, + { + "action": "integration_installation.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.version_updated", + "description": "Permissions for a GitHub App were updated.", + "docs_reference_links": "/apps/using-github-apps/approving-updated-permissions-for-a-github-app" + }, + { + "action": "integration.manager_added", + "description": "A member of an enterprise or organization was added as a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#giving-someone-the-ability-to-manage-all-github-apps-owned-by-the-organization" + }, + { + "action": "integration.manager_removed", + "description": "A member of an enterprise or organization was removed from being a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#removing-a-github-app-managers-permissions-for-the-entire-organization" + }, + { + "action": "integration.remove_client_secret", + "description": "A client secret for a GitHub App was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_all_tokens", + "description": "All user tokens for a GitHub App were requested to be revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_tokens", + "description": "Token(s) for a GitHub App were revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "integration.transfer", + "description": "Ownership of a GitHub App was transferred to another user or organization.", + "docs_reference_links": "/apps/maintaining-github-apps/transferring-ownership-of-a-github-app" + }, + { + "action": "integration.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "ip_allow_list.disable", + "description": "An IP allow list was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.disable_for_installed_apps", + "description": "An IP allow list was disabled for installed GitHub Apps.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.enable", + "description": "An IP allow list was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list.enable_for_installed_apps", + "description": "An IP allow list was enabled for installed GitHub Apps.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.create", + "description": "An IP address was added to an IP allow list.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.destroy", + "description": "An IP address was deleted from an IP allow list.", + "docs_reference_links": "N/A" + }, + { + "action": "ip_allow_list_entry.update", + "description": "An IP address or its description was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "issue_comment.destroy", + "description": "A comment on an issue was deleted from the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "issue_comment.update", + "description": "A comment on an issue (other than the initial one) changed.", + "docs_reference_links": "N/A" + }, + { + "action": "issue.destroy", + "description": "An issue was deleted from the repository.", + "docs_reference_links": "/issues/tracking-your-work-with-issues/deleting-an-issue" + }, + { + "action": "issue.pinned", + "description": "An issue was pinned to a repository.", + "docs_reference_links": "/issues/tracking-your-work-with-issues/pinning-an-issue-to-your-repository" + }, + { + "action": "issue.transfer", + "description": "An issue was transferred to another repository.", + "docs_reference_links": "/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository" + }, + { + "action": "issue_type.create", + "description": "An issue type was created.", + "docs_reference_links": "N/A" + }, + { + "action": "issue_type.destroy", + "description": "An issue type was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "issue_type.update", + "description": "An issue type was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "issue.unpinned", + "description": "An issue was unpinned from a repository.", + "docs_reference_links": "/issues/tracking-your-work-with-issues/pinning-an-issue-to-your-repository" + }, + { + "action": "issues.deletes_disabled", + "description": "The ability for enterprise members to delete issues was disabled Members cannot delete issues in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-deleting-issues" + }, + { + "action": "issues.deletes_enabled", + "description": "The ability for enterprise members to delete issues was enabled Members can delete issues in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-deleting-issues" + }, + { + "action": "issues.deletes_policy_cleared", + "description": "An enterprise owner cleared the policy setting for allowing members to delete issues in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-deleting-issues" + }, + { + "action": "marketplace_agreement_signature.create", + "description": "The GitHub Marketplace Developer Agreement was signed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.approve", + "description": "A listing was approved for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.change_category", + "description": "A category for a listing for an app in GitHub Marketplace was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.create", + "description": "A listing for an app in GitHub Marketplace was created.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.delist", + "description": "A listing was removed from GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.redraft", + "description": "A listing was sent back to draft state.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.reject", + "description": "A listing was not accepted for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "members_can_create_pages.disable", + "description": "The ability for members to publish GitHub Pages sites was disabled.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_create_pages.enable", + "description": "The ability for members to publish GitHub Pages sites was enabled.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_create_private_pages.disable", + "description": "The ability for members to publish private GitHub Pages was disabled Members cannot publish private GitHub Pages in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_create_private_pages.enable", + "description": "The ability for members to publish private GitHub Pages was enabled Members can publish private GitHub Pages in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_create_public_pages.disable", + "description": "The ability for members to publish public GitHub Pages was disabled Members cannot publish public GitHub Pages in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_create_public_pages.enable", + "description": "The ability for members to publish public GitHub Pages was enabled Members can publish public GitHub Pages in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-publication-of-github-pages-sites-for-your-organization" + }, + { + "action": "members_can_delete_repos.clear", + "description": "An enterprise owner cleared the policy setting for deleting or transferring repositories in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-deletion-and-transfer" + }, + { + "action": "members_can_delete_repos.disable", + "description": "The ability for enterprise members to delete repositories was disabled Members cannot delete or transfer repositories in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-deletion-and-transfer" + }, + { + "action": "members_can_delete_repos.enable", + "description": "The ability for enterprise members to delete repositories was enabled Members can delete or transfer repositories in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-deletion-and-transfer" + }, + { + "action": "members_can_view_dependency_insights.clear", + "description": "An enterprise owner cleared the policy setting for viewing dependency insights in any organizations in an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "members_can_view_dependency_insights.disable", + "description": "The ability for enterprise members to view dependency insights was disabled. Members cannot view dependency insights in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-dependency-insights-in-your-enterprise" + }, + { + "action": "members_can_view_dependency_insights.enable", + "description": "The ability for enterprise members to view dependency insights was enabled. Members can view dependency insights in any organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-dependency-insights-in-your-enterprise" + }, + { + "action": "merge_queue.pull_request_dequeued", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.pull_request_queue_jump", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.queue_cleared", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.update_settings", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "migration.create", + "description": "A migration file was created for transferring data from a source location (such as a GitHub.com organization or a GitHub Enterprise Server instance) to a target GitHub Enterprise Server instance.", + "docs_reference_links": "N/A" + }, + { + "action": "migration.destroy_file", + "description": "A migration file for transferring data from a source location (such as a GitHub.com organization or a GitHub Enterprise Server instance) to a target GitHub Enterprise Server instance was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "migration.download", + "description": "A migration file for transferring data from a source location (such as a GitHub.com organization or a GitHub Enterprise Server instance) to a target GitHub Enterprise Server instance was downloaded.", + "docs_reference_links": "N/A" + }, + { + "action": "network_configuration.create", + "description": "A network configuration for a hosted compute service was created.", + "docs_reference_links": "/admin/configuration/configuring-private-networking-for-hosted-compute-products/about-networking-for-hosted-compute-products" + }, + { + "action": "network_configuration.delete", + "description": "A network configuration for a hosted compute service was deleted.", + "docs_reference_links": "/admin/configuration/configuring-private-networking-for-hosted-compute-products/about-networking-for-hosted-compute-products" + }, + { + "action": "network_configuration.update", + "description": "A network configuration for a hosted compute service was updated.", + "docs_reference_links": "/admin/configuration/configuring-private-networking-for-hosted-compute-products/about-networking-for-hosted-compute-products" + }, + { + "action": "oauth_application.create", + "description": "An OAuth application was created.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.destroy", + "description": "An OAuth application was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.generate_client_secret", + "description": "An OAuth application's secret key was generated.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.remove_client_secret", + "description": "An OAuth application's secret key was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.reset_secret", + "description": "The secret key for an OAuth application was reset.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_all_tokens", + "description": "All user tokens for an OAuth application were requested to be revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_tokens", + "description": "Token(s) for an OAuth application were revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.transfer", + "description": "An OAuth application was transferred from one account to another.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "org.accept_business_invitation", + "description": "An invitation sent to an organization to join an enterprise was accepted.", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.add_billing_manager", + "description": "A billing manager was added to an organization.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/adding-a-billing-manager-to-your-organization" + }, + { + "action": "org.add_disallowed_two_factor_method", + "description": "An organization prevented access to resources by users with the given two-factor method.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_member", + "description": "A user joined an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_outside_collaborator", + "description": "An outside collaborator was added to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_security_manager", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_for_new_repos", + "description": "GitHub Advanced Security was disabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_on_all_repos", + "description": "GitHub Advanced Security was disabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_for_new_repos", + "description": "GitHub Advanced Security was enabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_on_all_repos", + "description": "GitHub Advanced Security was enabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_entity_policy_update", + "description": "An enterprise owner updated the GitHub Advanced Security access policy for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.advanced_security_policy_selected_member_disabled", + "description": "An enterprise owner prevented GitHub Advanced Security features from being enabled for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.advanced_security_policy_selected_member_enabled", + "description": "An enterprise owner allowed GitHub Advanced Security features to be enabled for repositories owned by the organization.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-advanced-security-in-your-enterprise" + }, + { + "action": "org.allow_third_party_access_requests_from_outside_collaborators_disabled", + "description": "Third-party application access for outside collaborators was disabled for the organization.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/limiting-oauth-app-and-github-app-access-requests#enabling-or-disabling-integration-access-requests" + }, + { + "action": "org.allow_third_party_access_requests_from_outside_collaborators_enabled", + "description": "Third-party application access for outside collaborators was enabled for the organization.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/limiting-oauth-app-and-github-app-access-requests#enabling-or-disabling-integration-access-requests" + }, + { + "action": "org.archive", + "description": "The organization was archived.", + "docs_reference_links": "N/A" + }, + { + "action": "org.audit_log_export", + "description": "An export of the organization audit log was created. If the export included a query, the log will list the query used and the number of audit log entries matching that query.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#exporting-the-audit-log" + }, + { + "action": "org.audit_log_git_event_export", + "description": "An export of the organization's Git events was created.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization" + }, + { + "action": "org.billing_signup_error", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.block_user", + "description": "An organization owner blocked a user from accessing the organization's repositories.", + "docs_reference_links": "/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization" + }, + { + "action": "org.cancel_business_invitation", + "description": "An invitation for an organization to join an enterprise was revoked", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.cancel_invitation", + "description": "An invitation sent to a user to join an organization was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "org.clear_custom_invitation_rate_limit", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.clear_disallowed_two_factor_methods", + "description": "Cleared two-factor authentication restrictions for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_disabled", + "description": "Autofix for code scanning alerts was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_enabled", + "description": "Autofix for code scanning alerts was enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_third_party_tools_disabled", + "description": "Autofix for third party tools for code scanning alerts was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.code_scanning_autofix_third_party_tools_enabled", + "description": "Autofix for third party tools for code scanning alerts was enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.codeql_disabled", + "description": "Code scanning using the default setup was disabled for an organization.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale" + }, + { + "action": "org.codeql_enabled", + "description": "Code scanning using the default setup was enabled for an organization.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning-at-scale" + }, + { + "action": "org.codespaces_access_updated", + "description": "Access to use Codespaces on internal and private repositories was updated for an organization.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/enabling-or-disabling-github-codespaces-for-your-organization" + }, + { + "action": "org.codespaces_ownership_updated", + "description": "Ownership and payment for codespaces was updated for an organization.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization" + }, + { + "action": "org.codespaces_team_access_allowed", + "description": "A team has been allowed to use Codespaces for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.codespaces_team_access_revoked", + "description": "A team has been prevented from using Codespaces for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.codespaces_trusted_repo_access_granted", + "description": "GitHub Codespaces was granted trusted repository access to all other repositories in an organization.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "org.codespaces_trusted_repo_access_revoked", + "description": "GitHub Codespaces trusted repository access to all other repositories in an organization was revoked.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "org.codespaces_user_access_allowed", + "description": "A user has been allowed to use Codespaces for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.codespaces_user_access_revoked", + "description": "A user has been prevented from using Codespaces for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.config.disable_collaborators_only", + "description": "The interaction limit for collaborators only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.disable_contributors_only", + "description": "The interaction limit for prior contributors only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.disable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only for an organization was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_collaborators_only", + "description": "The interaction limit for collaborators only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_contributors_only", + "description": "The interaction limit for prior contributors only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.config.enable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only for an organization was enabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-organization#limiting-interactions-in-your-organization" + }, + { + "action": "org.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.confirm_business_invitation", + "description": "An invitation for an organization to join an enterprise was confirmed.", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#inviting-an-organization-to-join-your-enterprise-account" + }, + { + "action": "org.connect_usage_metrics_export", + "description": "Server statistics were exported for the organization.", + "docs_reference_links": "/admin/monitoring-activity-in-your-enterprise/analyzing-how-your-team-works-with-server-statistics/exporting-server-statistics" + }, + { + "action": "org.create", + "description": "An organization was created.", + "docs_reference_links": "/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch" + }, + { + "action": "org.create_actions_secret", + "description": "A GitHub Actions secret was created for an organization.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-an-organization" + }, + { + "action": "org.create_actions_variable", + "description": "A GitHub Actions variable was created for an organization.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-organization" + }, + { + "action": "org.create_integration_secret", + "description": "A Codespaces or Dependabot secret was created for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org_credential_authorization.deauthorize", + "description": "A member removed the SSO (SAML or OIDC) authorization from a credential that had access to your organization.", + "docs_reference_links": "/authentication/authenticating-with-saml-single-sign-on/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on" + }, + { + "action": "org_credential_authorization.grant", + "description": "A member authorized credentials for use with SAML or OIDC single sign-on.", + "docs_reference_links": "/authentication/authenticating-with-saml-single-sign-on" + }, + { + "action": "org_credential_authorization.revoke", + "description": "An owner revoked authorized credentials.", + "docs_reference_links": "/organizations/granting-access-to-your-organization-with-saml-single-sign-on/viewing-and-managing-a-members-saml-access-to-your-organization" + }, + { + "action": "org.delete", + "description": "An organization was deleted by a user or staff.", + "docs_reference_links": "N/A" + }, + { + "action": "org.disable_member_team_creation_permission", + "description": "Team creation was limited to owners.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-team-creation-permissions-in-your-organization" + }, + { + "action": "org.disable_oauth_app_restrictions", + "description": "Third-party application access restrictions for an organization were disabled.", + "docs_reference_links": "/organizations/managing-oauth-access-to-your-organizations-data/disabling-oauth-app-access-restrictions-for-your-organization" + }, + { + "action": "org.disable_reader_discussion_creation_permission", + "description": "An organization owner limited discussion creation to users with at least triage permission in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-discussion-creation-for-repositories-in-your-organization" + }, + { + "action": "org.disable_saml", + "description": "SAML single sign-on was disabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.disable_source_ip_disclosure", + "description": "Display of IP addresses within audit log events for the organization was disabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/displaying-ip-addresses-in-the-audit-log-for-your-organization" + }, + { + "action": "org.disable_two_factor_requirement", + "description": "A two-factor authentication requirement was disabled for the organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.display_commenter_full_name_disabled", + "description": "An organization owner disabled the display of a commenter's full name in an organization. Members cannot see a comment author's full name.", + "docs_reference_links": "N/A" + }, + { + "action": "org.display_commenter_full_name_enabled", + "description": "An organization owner enabled the display of a commenter's full name in an organization. Members can see a comment author's full name.", + "docs_reference_links": "N/A" + }, + { + "action": "org.enable_member_team_creation_permission", + "description": "Team creation by members was allowed.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-team-creation-permissions-in-your-organization" + }, + { + "action": "org.enable_oauth_app_restrictions", + "description": "Third-party application access restrictions for an organization were enabled.", + "docs_reference_links": "/organizations/managing-oauth-access-to-your-organizations-data/enabling-oauth-app-access-restrictions-for-your-organization" + }, + { + "action": "org.enable_reader_discussion_creation_permission", + "description": "An organization owner allowed users with read access to create discussions in an organization", + "docs_reference_links": "/organizations/managing-organization-settings/managing-discussion-creation-for-repositories-in-your-organization" + }, + { + "action": "org.enable_saml", + "description": "SAML single sign-on was enabled for the organization.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/enabling-and-testing-saml-single-sign-on-for-your-organization" + }, + { + "action": "org.enable_source_ip_disclosure", + "description": "Display of IP addresses within audit log events for the organization was enabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/displaying-ip-addresses-in-the-audit-log-for-your-organization" + }, + { + "action": "org.enable_two_factor_requirement", + "description": "Two-factor authentication is now required for the organization.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization" + }, + { + "action": "org.integration_manager_added", + "description": "An organization owner granted a member access to manage all GitHub Apps owned by an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.integration_manager_removed", + "description": "An organization owner removed access to manage all GitHub Apps owned by an organization from an organization member.", + "docs_reference_links": "N/A" + }, + { + "action": "org.invite_member", + "description": "A new user was invited to join an organization.", + "docs_reference_links": "/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization" + }, + { + "action": "org.invite_to_business", + "description": "An organization was invited to join an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "org.members_can_update_protected_branches.disable", + "description": "The ability for enterprise members to update protected branches was disabled. Only enterprise owners can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "org.members_can_update_protected_branches.enable", + "description": "The ability for enterprise members to update protected branches was enabled. Members of an organization can update protected branches.", + "docs_reference_links": "N/A" + }, + { + "action": "org.oauth_app_access_approved", + "description": "Access to an organization was granted for an OAuth App.", + "docs_reference_links": "/organizations/managing-oauth-access-to-your-organizations-data/approving-oauth-apps-for-your-organization" + }, + { + "action": "org.oauth_app_access_blocked", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.oauth_app_access_denied", + "description": "Access was disabled for an OAuth App that was previously approved.", + "docs_reference_links": "/organizations/managing-oauth-access-to-your-organizations-data/denying-access-to-a-previously-approved-oauth-app-for-your-organization" + }, + { + "action": "org.oauth_app_access_requested", + "description": "An organization member requested that an owner grant an OAuth App access to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.oauth_app_access_unblocked", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.rate_limited_invites", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.recovery_code_failed", + "description": "An organization owner failed to sign into a organization with an external identity provider (IdP) using a recovery code.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/accessing-your-organization-if-your-identity-provider-is-unavailable" + }, + { + "action": "org.recovery_code_used", + "description": "An organization owner successfully signed into an organization with an external identity provider (IdP) using a recovery code.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/accessing-your-organization-if-your-identity-provider-is-unavailable" + }, + { + "action": "org.recovery_codes_downloaded", + "description": "An organization owner downloaded the organization's SSO recovery codes.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/downloading-your-organizations-saml-single-sign-on-recovery-codes" + }, + { + "action": "org.recovery_codes_generated", + "description": "An organization owner generated the organization's SSO recovery codes.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/downloading-your-organizations-saml-single-sign-on-recovery-codes" + }, + { + "action": "org.recovery_codes_printed", + "description": "An organization owner printed the organization's SSO recovery codes.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/downloading-your-organizations-saml-single-sign-on-recovery-codes" + }, + { + "action": "org.recovery_codes_viewed", + "description": "An organization owner viewed the organization's SSO recovery codes.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/downloading-your-organizations-saml-single-sign-on-recovery-codes" + }, + { + "action": "org.register_self_hosted_runner", + "description": "A new self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-organization" + }, + { + "action": "org.remove_actions_secret", + "description": "A GitHub Actions secret was removed from an organization.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-an-organization" + }, + { + "action": "org.remove_actions_variable", + "description": "A GitHub Actions variable was removed from an organization.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-organization" + }, + { + "action": "org.remove_billing_manager", + "description": "A billing manager was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/removing-a-billing-manager-from-your-organization, /organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization" + }, + { + "action": "org.remove_disallowed_two_factor_method", + "description": "Removed a two-factor authentication method restriction for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_integration_secret", + "description": "A Codespaces or Dependabot secret was removed from an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_member", + "description": "A member was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_outside_collaborator", + "description": "An outside collaborator was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_security_manager", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_self_hosted_runner", + "description": "A self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-an-organization" + }, + { + "action": "org.rename", + "description": "An organization was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.required_workflow_create", + "description": "Triggered when a required workflow is created.", + "docs_reference_links": "/actions/using-workflows/required-workflows" + }, + { + "action": "org.required_workflow_delete", + "description": "Triggered when a required workflow is deleted.", + "docs_reference_links": "/actions/using-workflows/required-workflows" + }, + { + "action": "org.required_workflow_update", + "description": "Triggered when a required workflow is updated.", + "docs_reference_links": "/actions/using-workflows/required-workflows" + }, + { + "action": "org.restore_member", + "description": "An organization member was restored.", + "docs_reference_links": "/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization" + }, + { + "action": "org.revoke_external_identity", + "description": "A member's linked identity was revoked.", + "docs_reference_links": "/organizations/granting-access-to-your-organization-with-saml-single-sign-on/viewing-and-managing-a-members-saml-access-to-your-organization#viewing-and-revoking-a-linked-identity" + }, + { + "action": "org.revoke_sso_session", + "description": "A member's SAML session was revoked.", + "docs_reference_links": "/organizations/granting-access-to-your-organization-with-saml-single-sign-on/viewing-and-managing-a-members-saml-access-to-your-organization#viewing-and-revoking-a-linked-identity" + }, + { + "action": "org.runner_group_created", + "description": "A self-hosted runner group was created.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#creating-a-self-hosted-runner-group-for-an-organization" + }, + { + "action": "org.runner_group_removed", + "description": "A self-hosted runner group was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#removing-a-self-hosted-runner-group" + }, + { + "action": "org.runner_group_renamed", + "description": "A self-hosted runner group was renamed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group" + }, + { + "action": "org.runner_group_runner_removed", + "description": "The REST API was used to remove a self-hosted runner from a group.", + "docs_reference_links": "/rest/actions#remove-a-self-hosted-runner-from-a-group-for-an-organization" + }, + { + "action": "org.runner_group_runners_added", + "description": "A self-hosted runner was added to a group.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group" + }, + { + "action": "org.runner_group_runners_updated", + "description": "A runner group's list of members was updated.", + "docs_reference_links": "/rest/actions#set-self-hosted-runners-in-a-group-for-an-organization" + }, + { + "action": "org.runner_group_updated", + "description": "The configuration of a self-hosted runner group was changed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group" + }, + { + "action": "org.runner_group_visiblity_updated", + "description": "The visibility of a self-hosted runner group was updated via the REST API.", + "docs_reference_links": "/rest/actions#update-a-self-hosted-runner-group-for-an-organization" + }, + { + "action": "org_secret_scanning_automatic_validity_checks.disabled", + "description": "Automatic partner validation checks have been disabled at the organization level", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#allowing-validity-checks-for-partner-patterns-in-an-organization" + }, + { + "action": "org_secret_scanning_automatic_validity_checks.enabled", + "description": "Automatic partner validation checks have been enabled at the organization level", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#allowing-validity-checks-for-partner-patterns-in-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.create", + "description": "A custom pattern was created for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.delete", + "description": "A custom pattern was removed from secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#removing-a-custom-pattern" + }, + { + "action": "org_secret_scanning_custom_pattern.publish", + "description": "A custom pattern was published for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org.secret_scanning_custom_pattern_push_protection_disabled", + "description": "Push protection for a custom pattern for secret scanning was disabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org.secret_scanning_custom_pattern_push_protection_enabled", + "description": "Push protection for a custom pattern for secret scanning was enabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-an-organization" + }, + { + "action": "org_secret_scanning_custom_pattern.update", + "description": "Changes to a custom pattern were saved and a dry run was executed for secret scanning in an organization.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#editing-a-custom-pattern" + }, + { + "action": "org_secret_scanning_generic_secrets.disabled", + "description": "Generic secrets have been disabled at the organization level", + "docs_reference_links": "N/A" + }, + { + "action": "org_secret_scanning_generic_secrets.enabled", + "description": "Generic secrets have been enabled at the organization level", + "docs_reference_links": "N/A" + }, + { + "action": "org_secret_scanning_non_provider_patterns.disabled", + "description": "Secret scanning for non-provider patterns was disabled at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "org_secret_scanning_non_provider_patterns.enabled", + "description": "Secret scanning for non-provider patterns was enabled at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.add", + "description": "A role or team was added to the push protection bypass list at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.disable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Specific roles or teams\" to \"Anyone with write access\" at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.enable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Anyone with write access\" to \"Specific roles or teams\" at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org_secret_scanning_push_protection_bypass_list.remove", + "description": "A role or team was removed from the push protection bypass list at the organization level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_disabled", + "description": "The custom message triggered by an attempted push to a push-protected repository was disabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_enabled", + "description": "The custom message triggered by an attempted push to a push-protected repository was enabled for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_custom_message_updated", + "description": "The custom message triggered by an attempted push to a push-protected repository was updated for an organization.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#enabling-secret-scanning-as-a-push-protection-for-an-organization" + }, + { + "action": "org.secret_scanning_push_protection_disable", + "description": "Push protection for secret scanning was disabled.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "org.secret_scanning_push_protection_enable", + "description": "Push protection for secret scanning was enabled.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.secret_scanning_push_protection_new_repos_disable", + "description": "Push protection for secret scanning was disabled for all new repositories in the organization.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.secret_scanning_push_protection_new_repos_enable", + "description": "Push protection for secret scanning was enabled for all new repositories in the organization.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations" + }, + { + "action": "org.security_center_export_code_scanning_metrics", + "description": "A CSV export was requested on the CodeQL pull request alerts page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_coverage", + "description": "A CSV export was requested on the Coverage page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_overview_dashboard", + "description": "A CSV export was requested on the Overview Dashboard page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_risk", + "description": "A CSV export was requested on the Risk page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.self_hosted_runner_offline", + "description": "The runner application was stopped. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "org.self_hosted_runner_online", + "description": "The runner application was started. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "org.self_hosted_runner_updated", + "description": "The runner application was updated. This event is not included in the JSON/CSV export.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#about-self-hosted-runners" + }, + { + "action": "org.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#requiring-approval-for-workflows-from-public-forks" + }, + { + "action": "org.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in an organization was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization" + }, + { + "action": "org.set_custom_invitation_rate_limit", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization" + }, + { + "action": "org.set_fork_pr_workflows_policy", + "description": "The policy for workflows on private repository forks was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "org.sso_response", + "description": "A SAML single sign-on (SSO) response was generated when a member attempted to authenticate with your organization. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "N/A" + }, + { + "action": "org.transfer", + "description": "An organization was transferred between enterprise accounts.", + "docs_reference_links": "/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#transferring-an-organization-between-enterprise-accounts" + }, + { + "action": "org.transfer_outgoing", + "description": "An organization was transferred between enterprise accounts.", + "docs_reference_links": "/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise#transferring-an-organization-between-enterprise-accounts" + }, + { + "action": "org.unarchive", + "description": "The organization was unarchived.", + "docs_reference_links": "N/A" + }, + { + "action": "org.unblock_user", + "description": "A user was unblocked from an organization.", + "docs_reference_links": "/communities/maintaining-your-safety-on-github/unblocking-a-user-from-your-organization" + }, + { + "action": "org.update_actions_secret", + "description": "A GitHub Actions secret was updated for an organization.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-an-organization" + }, + { + "action": "org.update_actions_settings", + "description": "An organization owner or site administrator updated GitHub Actions policy settings for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization" + }, + { + "action": "org.update_actions_variable", + "description": "A GitHub Actions variable was updated for an organization.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-organization" + }, + { + "action": "org.update_default_repository_permission", + "description": "The default repository permission level for organization members was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_integration_secret", + "description": "A Codespaces or Dependabot secret was updated for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member", + "description": "A person's role was changed from owner to member or member to owner.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_creation_permission", + "description": "The create repository permission for organization members was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_invitation_permission", + "description": "An organization owner changed the policy setting for organization members inviting outside collaborators to repositories.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators" + }, + { + "action": "org.update_new_repository_default_branch_setting", + "description": "The name of the default branch was changed for new repositories in the organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-the-default-branch-name-for-repositories-in-your-organization" + }, + { + "action": "org.update_repo_self_hosted_runners_policy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_saml_provider_settings", + "description": "An organization's SAML provider settings were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_terms_of_service", + "description": "An organization changed between the Standard Terms of Service and the GitHub Customer Agreement.", + "docs_reference_links": "/organizations/managing-organization-settings/upgrading-to-the-github-customer-agreement" + }, + { + "action": "organization_default_label.create", + "description": "A default label was created for repositories in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-default-labels-for-repositories-in-your-organization#creating-a-default-label" + }, + { + "action": "organization_default_label.destroy", + "description": "A default label was deleted for repositories in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-default-labels-for-repositories-in-your-organization#deleting-a-default-label" + }, + { + "action": "organization_default_label.update", + "description": "A default label was edited for repositories in an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/managing-default-labels-for-repositories-in-your-organization#editing-a-default-label" + }, + { + "action": "organization_domain.approve", + "description": "A domain was approved for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#approving-a-domain-for-your-organization" + }, + { + "action": "organization_domain.create", + "description": "A domain was added to an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#verifying-a-domain-for-your-organization" + }, + { + "action": "organization_domain.destroy", + "description": "A domain was removed from an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#removing-an-approved-or-verified-domain" + }, + { + "action": "organization_domain.verify", + "description": "A domain was verified for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization#verifying-a-domain-for-your-organization" + }, + { + "action": "organization_moderators.add_team", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "organization_moderators.add_user", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "organization_moderators.remove_team", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "organization_moderators.remove_user", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "organization_projects_change.clear", + "description": "An enterprise owner cleared the policy setting for organization-wide project boards in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise#enforcing-a-policy-for-organization-wide-project-boards" + }, + { + "action": "organization_projects_change.disable", + "description": "Organization projects were disabled for all organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise#enforcing-a-policy-for-organization-wide-project-boards" + }, + { + "action": "organization_projects_change.enable", + "description": "Organization projects were enabled for all organizations in an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise#enforcing-a-policy-for-organization-wide-project-boards" + }, + { + "action": "organization_role.assign", + "description": "An organization role was assigned to a user or team.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles" + }, + { + "action": "organization_role.create", + "description": "A custom organization role was created in an organization.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles" + }, + { + "action": "organization_role.destroy", + "description": "A custom organization role was deleted in an organization.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles" + }, + { + "action": "organization_role.revoke", + "description": "A user or team was unassigned an organization role.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles" + }, + { + "action": "organization_role.update", + "description": "A custom organization role was edited in an organization.", + "docs_reference_links": "/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles" + }, + { + "action": "organization_wide_project_base_role.update", + "description": "An organization's default project base role was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "packages.package_deleted", + "description": "An entire package was deleted.", + "docs_reference_links": "/packages/learn-github-packages/deleting-and-restoring-a-package" + }, + { + "action": "packages.package_published", + "description": "A package was published or republished to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "packages.package_version_deleted", + "description": "A specific package version was deleted.", + "docs_reference_links": "/packages/learn-github-packages/deleting-and-restoring-a-package" + }, + { + "action": "packages.package_version_published", + "description": "A specific package version was published or republished to a package.", + "docs_reference_links": "N/A" + }, + { + "action": "pages_protected_domain.create", + "description": "A GitHub Pages verified domain was created for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.delete", + "description": "A GitHub Pages verified domain was deleted from an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.verify", + "description": "A GitHub Pages domain was verified for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "payment_method.create", + "description": "A new payment method was added, such as a new credit card or PayPal account.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.remove", + "description": "A payment method was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.update", + "description": "An existing payment method was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_granted", + "description": "A fine-grained personal access token was granted access to resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.access_restriction_disabled", + "description": "The configured restriction for access to resources via personal access tokens was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_restriction_enabled", + "description": "The configured restriction for access to resources via personal access tokens was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_revoked", + "description": "A fine-grained personal access token was revoked. The token can still read public organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/reviewing-and-revoking-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.auto_approve_grant_requests_disabled", + "description": "Triggered when fine-grained personal access tokens can access organization resources without prior approval.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.auto_approve_grant_requests_enabled", + "description": "Triggered when the organization must approve fine-grained personal access tokens before the tokens can access organization resources.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.expiration_limit_set", + "description": "A personal access token expiration limit was set.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.expiration_limit_unset", + "description": "A personal access token expiration limit was unset.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_cancelled", + "description": "A pending request for a fine-grained personal access token to access organization resources was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_created", + "description": "Triggered when a fine-grained personal access token was created to access organization resources and the organization requires approval before the token can access organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.request_denied", + "description": "A request for a fine-grained personal access token to access organization resources was denied.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "prebuild_configuration.create", + "description": "A GitHub Codespaces prebuild configuration for a repository was created.", + "docs_reference_links": "/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds" + }, + { + "action": "prebuild_configuration.destroy", + "description": "A GitHub Codespaces prebuild configuration for a repository was deleted.", + "docs_reference_links": "/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds" + }, + { + "action": "prebuild_configuration.run_triggered", + "description": "A user initiated a run of a GitHub Codespaces prebuild configuration for a repository branch.", + "docs_reference_links": "/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds" + }, + { + "action": "prebuild_configuration.update", + "description": "A GitHub Codespaces prebuild configuration for a repository was edited.", + "docs_reference_links": "/codespaces/prebuilding-your-codespaces/about-github-codespaces-prebuilds" + }, + { + "action": "premium_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_repository_forking.clear", + "description": "An enterprise owner cleared the policy setting for allowing forks of private and internal repositories, for a repository, organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "private_repository_forking.disable", + "description": "An enterprise owner disabled the policy setting for allowing forks of private and internal repositories, for a repository, organization or enterprise. Private and internal repositories are never allowed to be forked.", + "docs_reference_links": "N/A" + }, + { + "action": "private_repository_forking.enable", + "description": "An enterprise owner enabled the policy setting for allowing forks of private and internal repositories, for a repository, organization or enterprise. Private and internal repositories are always allowed to be forked.", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "profile_picture.update", + "description": "A profile picture was updated.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile" + }, + { + "action": "project.access", + "description": "A project board visibility was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project_base_role.update", + "description": "A project's base role was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "project.close", + "description": "A project board was closed.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board" + }, + { + "action": "project_collaborator.add", + "description": "A collaborator was added to a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.remove", + "description": "A collaborator was removed from a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.update", + "description": "A project collaborator's permission level was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.create", + "description": "A project board was created.", + "docs_reference_links": "N/A" + }, + { + "action": "project.delete", + "description": "A project board was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "project_field.create", + "description": "A field was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields" + }, + { + "action": "project_field.delete", + "description": "A field was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields/deleting-custom-fields" + }, + { + "action": "project.link", + "description": "A repository was linked to a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.open", + "description": "A project board was reopened.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board" + }, + { + "action": "project.rename", + "description": "A project board was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.unlink", + "description": "A repository was unlinked from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_org_permission", + "description": "The project's base-level permission for all organization members was changed or removed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_team_permission", + "description": "A team's project board permission level was changed or when a team was added or removed from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_user_permission", + "description": "A user was added to or removed from a project board or had their permission level changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project_view.create", + "description": "A view was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project_view.delete", + "description": "A view was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project.visibility_private", + "description": "A project's visibility was changed from public to private.", + "docs_reference_links": "N/A" + }, + { + "action": "project.visibility_public", + "description": "A project's visibility was changed from private to public.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.authorized_users_teams", + "description": "The users, teams, or integrations allowed to bypass a branch protection were changed.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches" + }, + { + "action": "protected_branch.branch_allowances", + "description": "A protected branch allowance was given to a specific user, team or integration.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.create", + "description": "Branch protection was enabled on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.destroy", + "description": "Branch protection was disabled on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.dismiss_stale_reviews", + "description": "Enforcement of dismissing stale pull requests was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.dismissal_restricted_users_teams", + "description": "Enforcement of restricting users and/or teams who can dismiss reviews was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.policy_override", + "description": "A branch protection requirement was overridden by a repository administrator.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.rejected_ref_update", + "description": "A branch update attempt was rejected.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_admin_enforced", + "description": "Branch protection was enforced for repository administrators.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_allow_deletions_enforcement_level", + "description": "Branch deletion was enabled or disabled for a protected branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_allow_force_pushes_enforcement_level", + "description": "Force pushes were enabled or disabled for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_ignore_approvals_from_contributors", + "description": "Ignoring of approvals from contributors to a pull request was enabled or disabled for a branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "protected_branch.update_linear_history_requirement_enforcement_level", + "description": "Required linear commit history was enabled or disabled for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_lock_allows_fetch_and_merge", + "description": "Fork syncing was enabled or disabled for a read-only branch", + "docs_reference_links": "repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#lock-branch" + }, + { + "action": "protected_branch.update_lock_branch_enforcement_level", + "description": "The enforcement of a branch lock was updated.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#lock-branch" + }, + { + "action": "protected_branch.update_merge_queue_enforcement_level", + "description": "Enforcement of the merge queue was modified for a branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-merge-queue" + }, + { + "action": "protected_branch.update_name", + "description": "A branch name pattern was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_pull_request_reviews_enforcement_level", + "description": "Enforcement of required pull request reviews was updated for a branch. Can be 0 (deactivated), 1 (non-admins), or 2 (everyone).", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_require_code_owner_review", + "description": "Enforcement of required code owner review was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_require_last_push_approval", + "description": "Someone other than the person who pushed the last code-modifying commit to the branch must approve pull requests for the branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging" + }, + { + "action": "protected_branch.update_required_approving_review_count", + "description": "Enforcement of the required number of approvals before merging was updated on a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_required_status_checks_enforcement_level", + "description": "Enforcement of required status checks was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_signature_requirement_enforcement_level", + "description": "Enforcement of required commit signing was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_strict_required_status_checks_policy", + "description": "Enforcement of required status checks was updated for a branch.", + "docs_reference_links": "N/A" + }, + { + "action": "public_key.create", + "description": "An SSH key was added to a user account or a deploy key was added to a repository.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" + }, + { + "action": "public_key.delete", + "description": "An SSH key was removed from a user account or a deploy key was removed from a repository.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys" + }, + { + "action": "public_key.unverification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.unverify", + "description": "A user account's SSH key or a repository's deploy key was unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.update", + "description": "A user account's SSH key or a repository's deploy key was updated.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verify", + "description": "A user account's SSH key or a repository's deploy key was verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "pull_request.close", + "description": "A pull request was closed without being merged.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/closing-a-pull-request" + }, + { + "action": "pull_request.converted_to_draft", + "description": "A pull request was converted to a draft.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#converting-a-pull-request-to-a-draft" + }, + { + "action": "pull_request.create", + "description": "A pull request was created.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request" + }, + { + "action": "pull_request.create_review_request", + "description": "A review was requested on a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request.in_progress", + "description": "A pull request was marked as in progress.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.indirect_merge", + "description": "A pull request was considered merged because the pull request's commits were merged into the target branch.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.merge", + "description": "A pull request was merged.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/merging-a-pull-request" + }, + { + "action": "pull_request.ready_for_review", + "description": "A pull request was marked as ready for review.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request#marking-a-pull-request-as-ready-for-review" + }, + { + "action": "pull_request.rebase", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request.remove_review_request", + "description": "A review request was removed from a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request.reopen", + "description": "A pull request was reopened after previously being closed.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review_comment.create", + "description": "A review comment was added to a pull request.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews" + }, + { + "action": "pull_request_review_comment.delete", + "description": "A review comment on a pull request was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review_comment.update", + "description": "A review comment on a pull request was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review.delete", + "description": "A review on a pull request was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "pull_request_review.dismiss", + "description": "A review on a pull request was dismissed.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/dismissing-a-pull-request-review" + }, + { + "action": "pull_request_review.submit", + "description": "A review on a pull request was submitted.", + "docs_reference_links": "/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request#submitting-your-review" + }, + { + "action": "repo.access", + "description": "The visibility of a repository changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility" + }, + { + "action": "repo.actions_enabled", + "description": "GitHub Actions was enabled for a repository.", + "docs_reference_links": "organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#using-the-audit-log-api" + }, + { + "action": "repo.add_member", + "description": "A collaborator was added to a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository" + }, + { + "action": "repo.add_topic", + "description": "A topic was added to a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics" + }, + { + "action": "repo.advanced_security_disabled", + "description": "GitHub Advanced Security was disabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.advanced_security_enabled", + "description": "GitHub Advanced Security was enabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.archived", + "description": "A repository was archived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.change_merge_setting", + "description": "Pull request merge options were changed for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_analysis_deleted", + "description": "Code scanning analysis for a repository was deleted.", + "docs_reference_links": "/rest/code-scanning#delete-a-code-scanning-analysis-from-a-repository" + }, + { + "action": "repo.code_scanning_autofix_disabled", + "description": "Autofix for code scanning alerts was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_enabled", + "description": "Autofix for code scanning alerts was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_third_party_tools_disabled", + "description": "Autofix for third party tools for code scanning alerts was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_autofix_third_party_tools_enabled", + "description": "Autofix for third party tools for code scanning alerts was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_configuration_for_branch_deleted", + "description": "A code scanning configuration for a branch of a repository was deleted.", + "docs_reference_links": "/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository#removing-stale-configurations-and-alerts-from-a-branch" + }, + { + "action": "repo.code_scanning_delegated_alert_dismissal_disabled", + "description": "Prevention of direct alert dismissal for code scanning was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_delegated_alert_dismissal_enabled", + "description": "Prevention of direct alert dismissal for code scanning was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.codeql_disabled", + "description": "Code scanning using the default setup was disabled for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.codeql_enabled", + "description": "Code scanning using the default setup was enabled for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.codeql_updated", + "description": "Code scanning using the default setup was updated for a repository.", + "docs_reference_links": "/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning" + }, + { + "action": "repo.codespaces_trusted_repo_access_granted", + "description": "GitHub Codespaces was granted trusted repository access to this repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.codespaces_trusted_repo_access_revoked", + "description": "GitHub Codespaces trusted repository access to this repository was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.config.disable_collaborators_only", + "description": "The interaction limit for collaborators only was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_contributors_only", + "description": "The interaction limit for prior contributors only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_collaborators_only", + "description": "The interaction limit for collaborators only was enabled in a repository Users that are not collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_contributors_only", + "description": "The interaction limit for prior contributors only was enabled in a repository Users that are not prior contributors, collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_sockpuppet_disallowed", + "description": "The interaction limit for existing users was enabled in a repository New users aren't able to interact with a repository for a set duration Existing users of the repository, contributors, collaborators or organization members are able to interact with a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.create", + "description": "A repository was created.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/creating-a-new-repository" + }, + { + "action": "repo.create_actions_secret", + "description": "A GitHub Actions secret was created for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.create_actions_variable", + "description": "A GitHub Actions variable was created for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.create_integration_secret", + "description": "A Codespaces or Dependabot secret was created for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.destroy", + "description": "A repository was deleted.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/deleting-a-repository" + }, + { + "action": "repo.download_zip", + "description": "A source code archive of a repository was downloaded as a ZIP file.", + "docs_reference_links": "/repositories/working-with-files/using-files/downloading-source-code-archives" + }, + { + "action": "repo.pages_cname", + "description": "A GitHub Pages custom domain was modified in a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_create", + "description": "A GitHub Pages site was created.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_destroy", + "description": "A GitHub Pages site was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_disabled", + "description": "HTTPS redirects were disabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_enabled", + "description": "HTTPS redirects were enabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_private", + "description": "A GitHub Pages site visibility was changed to private.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_public", + "description": "A GitHub Pages site visibility was changed to public.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete", + "description": "A GitHub Pages site was soft-deleted because its owner's plan changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete_restore", + "description": "A GitHub Pages site that was previously soft-deleted was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_source", + "description": "A GitHub Pages source was modified.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.register_self_hosted_runner", + "description": "A new self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository" + }, + { + "action": "repo.remove_actions_secret", + "description": "A GitHub Actions secret was deleted for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.remove_actions_variable", + "description": "A GitHub Actions variable was deleted for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.remove_integration_secret", + "description": "A Codespaces or Dependabot secret was deleted for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.remove_member", + "description": "A collaborator was removed from a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository" + }, + { + "action": "repo.remove_self_hosted_runner", + "description": "A self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository" + }, + { + "action": "repo.remove_topic", + "description": "A topic was removed from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.rename", + "description": "A repository was renamed.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/renaming-a-repository" + }, + { + "action": "repo.rename_branch", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.restore", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.self_hosted_runner_offline", + "description": "The runner application was stopped. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "repo.self_hosted_runner_online", + "description": "The runner application was started. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#checking-the-status-of-a-self-hosted-runner" + }, + { + "action": "repo.self_hosted_runner_updated", + "description": "The runner application was updated. This event is not included in the JSON/CSV export.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#about-self-hosted-runners" + }, + { + "action": "repo.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-required-approval-for-workflows-from-public-forks" + }, + { + "action": "repo.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-forks-of-private-repositories" + }, + { + "action": "repo.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository" + }, + { + "action": "repo.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository" + }, + { + "action": "repo.set_fork_pr_workflows_policy", + "description": "Triggered when the policy for workflows on private repository forks is changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-private-repository-forks" + }, + { + "action": "repo.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "repo.staff_unlock", + "description": "An enterprise owner or GitHub staff (with permission from a repository administrator) temporarily unlocked the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.transfer", + "description": "A user accepted a request to receive a transferred repository.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/transferring-a-repository" + }, + { + "action": "repo.transfer_outgoing", + "description": "A repository was transferred to another repository network.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.transfer_start", + "description": "A user sent a request to transfer a repository to another user or organization.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.unarchived", + "description": "A repository was unarchived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.update_actions_access_settings", + "description": "The setting to control how a repository was used by GitHub Actions workflows in other repositories was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_secret", + "description": "A GitHub Actions secret was updated for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.update_actions_settings", + "description": "A repository administrator changed GitHub Actions policy settings for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_variable", + "description": "A GitHub Actions variable was updated for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.update_default_branch", + "description": "The default branch for a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_integration_secret", + "description": "A Codespaces or Dependabot secret was updated for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_member", + "description": "A user's permission to a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.close", + "description": "Someone closed a security advisory.", + "docs_reference_links": "/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories" + }, + { + "action": "repository_advisory.cve_request", + "description": "Someone requested a CVE (Common Vulnerabilities and Exposures) number from GitHub for a draft security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.github_broadcast", + "description": "GitHub made a security advisory public in the GitHub Advisory Database.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.github_withdraw", + "description": "GitHub withdrew a security advisory that was published in error.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.open", + "description": "Someone opened a draft security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.publish", + "description": "Someone published a security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.reopen", + "description": "Someone reopened as draft security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_advisory.update", + "description": "Someone edited a draft or published security advisory.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_branch_protection_evaluation.disable", + "description": "Branch protections were disabled for the repository.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "repository_branch_protection_evaluation.enable", + "description": "Branch protections were enabled for this repository.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule" + }, + { + "action": "repository_code_security.disable", + "description": "Code security was disabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_code_security.enable", + "description": "Code security was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_content_analysis.disable", + "description": "Data use settings were disabled for a private repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#enabling-or-disabling-security-and-analysis-features-for-private-repositories" + }, + { + "action": "repository_content_analysis.enable", + "description": "Data use settings were enabled for a private repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#enabling-or-disabling-security-and-analysis-features-for-private-repositories" + }, + { + "action": "repository_dependency_graph.disable", + "description": "The dependency graph was disabled for a private repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-fea tures-for-your-repository/managing-security-and-analysis-settings-for-your-repository#enabling-or-disabling-security-and-analysis-features-for-private-repositories" + }, + { + "action": "repository_dependency_graph.enable", + "description": "The dependency graph was enabled for a private repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.create", + "description": "An image to represent a repository was uploaded.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.destroy", + "description": "An image to represent a repository was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.accept", + "description": "An invitation to join a repository was accepted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.cancel", + "description": "An invitation to join a repository was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.create", + "description": "An invitation to join a repository was sent.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.reject", + "description": "An invitation to join a repository was declined.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_limit.reached", + "description": "An organization has reached their repository limit.", + "docs_reference_links": "repositories/creating-and-managing-repositories/repository-limits" + }, + { + "action": "repository_limit.warning", + "description": "An organization is approaching their repository limit.", + "docs_reference_links": "repositories/creating-and-managing-repositories/repository-limits" + }, + { + "action": "repository_projects_change.clear", + "description": "The repository projects policy was removed for an organization, or all organizations in the enterprise Organization owners can now control their repository projects settings.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-projects-in-your-enterprise" + }, + { + "action": "repository_projects_change.disable", + "description": "Repository projects were disabled for a repository, all repositories in an organization, or all organizations in an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_projects_change.enable", + "description": "Repository projects were enabled for a repository, all repositories in an organization, or all organizations in an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_ruleset.create", + "description": "A repository ruleset was created.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository" + }, + { + "action": "repository_ruleset.destroy", + "description": "A repository ruleset was deleted.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#deleting-a-ruleset" + }, + { + "action": "repository_ruleset.update", + "description": "A repository ruleset was edited.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#editing-a-ruleset" + }, + { + "action": "repository_secret_scanning_automatic_validity_checks.disabled", + "description": "Automatic partner validation checks have been disabled at the repository level", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#allowing-validity-checks-for-partner-patterns-in-a-repository" + }, + { + "action": "repository_secret_scanning_automatic_validity_checks.enabled", + "description": "Automatic partner validation checks have been enabled at the repository level", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#allowing-validity-checks-for-partner-patterns-in-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.create", + "description": "A custom pattern was created for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.delete", + "description": "A custom pattern was removed from secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#removing-a-custom-pattern" + }, + { + "action": "repository_secret_scanning_custom_pattern.publish", + "description": "A custom pattern was published for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern_push_protection.disabled", + "description": "Push protection for a custom pattern for secret scanning was disabled for your repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern_push_protection.enabled", + "description": "Push protection for a custom pattern for secret scanning was enabled for your repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#defining-a-custom-pattern-for-a-repository" + }, + { + "action": "repository_secret_scanning_custom_pattern.update", + "description": "Changes to a custom pattern were saved and a dry run was executed for secret scanning in a repository.", + "docs_reference_links": "/code-security/secret-scanning/defining-custom-patterns-for-secret-scanning#editing-a-custom-pattern" + }, + { + "action": "repository_secret_scanning.disable", + "description": "Secret scanning was disabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "repository_secret_scanning.enable", + "description": "Secret scanning was enabled for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_secret_scanning_generic_secrets.disabled", + "description": "Generic secrets have been disabled at the repository level", + "docs_reference_links": "N/A" + }, + { + "action": "repository_secret_scanning_generic_secrets.enabled", + "description": "Generic secrets have been enabled at the repository level", + "docs_reference_links": "N/A" + }, + { + "action": "repository_secret_scanning_non_provider_patterns.disabled", + "description": "Secret scanning for non-provider patterns was disabled at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "repository_secret_scanning_non_provider_patterns.enabled", + "description": "Secret scanning for non-provider patterns was enabled at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/secret-scanning-patterns#non-provider-patterns" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.add", + "description": "A role or team was added to the push protection bypass list at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.disable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Specific roles or teams\" to \"Anyone with write access\" at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.enable", + "description": "Push protection settings for \"Users who can bypass push protection for secret scanning\" changed from \"Anyone with write access\" to \"Specific roles or teams\" at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection_bypass_list.remove", + "description": "A role or team was removed from the push protection bypass list at the repository level.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#enabling-delegated-bypass-for-push-protection" + }, + { + "action": "repository_secret_scanning_push_protection.disable", + "description": "Secret scanning push protection was disabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "repository_secret_scanning_push_protection.enable", + "description": "Secret scanning push protection was enabled for a repository.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning" + }, + { + "action": "repository_security_configuration.applied", + "description": "A code security configuration was applied to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.failed", + "description": "A code security configuration failed to attach to the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.removed", + "description": "A code security configuration was removed from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_security_configuration.removed_by_settings_change", + "description": "A code security configuration was removed due to a change in repository or enterprise settings.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_visibility_change.clear", + "description": "The repository visibility change setting was cleared for an organization or enterprise.", + "docs_reference_links": "/organizations/managing-organization-settings/restricting-repository-visibility-changes-in-your-organization, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-changes-to-repository-visibility" + }, + { + "action": "repository_visibility_change.disable", + "description": "The ability for enterprise members to update a repository's visibility was disabled. Members are unable to change repository visibilities in an organization, or all organizations in an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_visibility_change.enable", + "description": "The ability for enterprise members to update a repository's visibility was enabled. Members are able to change repository visibilities in an organization, or all organizations in an enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alert.auto_dismiss", + "description": "A Dependabot alert was automatically dismissed because its metadata matches an enabled Dependabot rule.", + "docs_reference_links": "/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts" + }, + { + "action": "repository_vulnerability_alert.auto_reopen", + "description": "A previously auto-dismissed Dependabot alert was automatically reopened because its metadata no longer matches an enabled Dependabot rule.", + "docs_reference_links": "/code-security/dependabot/dependabot-alerts/using-alert-rules-to-prioritize-dependabot-alerts" + }, + { + "action": "repository_vulnerability_alert.create", + "description": "GitHub created a Dependabot alert because the repository uses a vulnerable dependency.", + "docs_reference_links": "/code-security/dependabot/dependabot-alerts/about-dependabot-alerts" + }, + { + "action": "repository_vulnerability_alert.dismiss", + "description": "A Dependabot alert was manually dismissed.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alert.reintroduce", + "description": "A Dependabot alert was automatically reopened because the repository resumed use of a vulnerable dependency.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alert.reopen", + "description": "A Dependabot alert was manually reopened.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alert.resolve", + "description": "Changes were pushed to update and resolve a Dependabot alert in a project dependency.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alert.withdraw", + "description": "A Dependabot alert was withdrawn.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alerts.authorized_users_teams", + "description": "The list of people or teams authorized to receive Dependabot alerts for the repository was updated.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts" + }, + { + "action": "repository_vulnerability_alerts_auto_dismissal.disable", + "description": "Automatic dismissal of low-impact Dependabot alerts was disabled for the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alerts_auto_dismissal.enable", + "description": "Automatic dismissal of low-impact Dependabot alerts was enabled for the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alerts.disable", + "description": "Dependabot alerts was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_vulnerability_alerts.enable", + "description": "Dependabot alerts was enabled.", + "docs_reference_links": "N/A" + }, + { + "action": "required_status_check.create", + "description": "A status check was marked as required for a protected branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging" + }, + { + "action": "required_status_check.destroy", + "description": "A status check was no longer marked as required for a protected branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging" + }, + { + "action": "restrict_notification_delivery.disable", + "description": "Email notification restrictions for an organization or enterprise were disabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/restricting-email-notifications-for-your-organization, /admin/policies/enforcing-policies-for-your-enterprise/restricting-email-notifications-for-your-enterprise" + }, + { + "action": "restrict_notification_delivery.enable", + "description": "Email notification restrictions for an organization or enterprise were enabled.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/restricting-email-notifications-for-your-organization, /admin/policies/enforcing-policies-for-your-enterprise/restricting-email-notifications-for-your-enterprise" + }, + { + "action": "role.create", + "description": "A new custom repository role was created.", + "docs_reference_links": "/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-custom-repository-roles-for-an-organization" + }, + { + "action": "role.destroy", + "description": "A custom repository role was deleted.", + "docs_reference_links": "/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-custom-repository-roles-for-an-organization" + }, + { + "action": "role.update", + "description": "A custom repository role was edited.", + "docs_reference_links": "/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-custom-repository-roles-for-an-organization" + }, + { + "action": "secret_scanning_alert.create", + "description": "GitHub detected a secret and created a secret scanning alert.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning" + }, + { + "action": "secret_scanning_alert.public_leak", + "description": "A secret scanning alert was leaked in a public repo.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning" + }, + { + "action": "secret_scanning_alert.reopen", + "description": "A secret scanning alert was reopened.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.report", + "description": "A leaked secret was reported to the secret's provider by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts" + }, + { + "action": "secret_scanning_alert.resolve", + "description": "A secret scanning alert was resolved.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.revoke", + "description": "A secret scanning alert was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_alert.validate", + "description": "A secret scanning alert was validated.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning" + }, + { + "action": "secret_scanning_closure_request.approve", + "description": "A request to close a secret scanning alert was approved by a user.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning_closure_request.cancel", + "description": "N/A", + "docs_reference_links": "A reqeust to close a secret scanning alert was canceled by a user." + }, + { + "action": "secret_scanning_closure_request.create", + "description": "N/A", + "docs_reference_links": "A user requested to close a secret scanning alert." + }, + { + "action": "secret_scanning_closure_request.deny", + "description": "A request to close a secret scanning alert was denied by a user.", + "docs_reference_links": "N/A" + }, + { + "action": "secret_scanning.disable", + "description": "Secret scanning was disabled for all existing repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning.enable", + "description": "Secret scanning was enabled for all existing repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_new_repos.disable", + "description": "Secret scanning was disabled for all new repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_new_repos.enable", + "description": "Secret scanning was enabled for all new repositories.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "secret_scanning_push_protection.bypass", + "description": "Triggered when a user bypasses the push protection on a secret detected by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/protecting-pushes-with-secret-scanning#bypassing-push-protection-for-a-secret" + }, + { + "action": "secret_scanning_push_protection_request.approve", + "description": "A request to bypass secret scanning push protection was approved by a user.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#managing-requests-to-bypass-push-protection" + }, + { + "action": "secret_scanning_push_protection_request.cancel", + "description": "A user canceled a request to bypass secret scanning push protection.", + "docs_reference_links": "/code-security/secret-scanning/working-with-push-protection#requesting-bypass-privileges-when-working-with-the-command-line" + }, + { + "action": "secret_scanning_push_protection_request.complete", + "description": "A user pushed a commit containing a secret for which there is an approved secret scanning push protection bypass request.", + "docs_reference_links": "/code-security/secret-scanning/working-with-push-protection#requesting-bypass-privileges-when-working-with-the-command-line" + }, + { + "action": "secret_scanning_push_protection_request.deny", + "description": "A request to bypass secret scanning push protection was denied by a user.", + "docs_reference_links": "/code-security/secret-scanning/push-protection-for-repositories-and-organizations#managing-requests-to-bypass-push-protection" + }, + { + "action": "secret_scanning_push_protection_request.request", + "description": "A user requested to bypass secret scanning push protection.", + "docs_reference_links": "/code-security/secret-scanning/working-with-push-protection#requesting-bypass-privileges-when-working-with-the-command-line" + }, + { + "action": "secret_scanning_scan.completed", + "description": "A secret scanning scan has completed on this repository.", + "docs_reference_links": "/code-security/secret-scanning/about-secret-scanning" + }, + { + "action": "security_configuration.create", + "description": "A security configuration was created", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_default.delete", + "description": "A default security configuration setting for new repositories was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_default.update", + "description": "A default security configuration setting for new repositories was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration.delete", + "description": "A security configuration was deleted", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration_policy.update", + "description": "A security configuration policy was updated", + "docs_reference_links": "N/A" + }, + { + "action": "security_configuration.update", + "description": "A security configuration was updated", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.agreement_sign", + "description": "A GitHub Sponsors agreement was signed on behalf of an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.custom_amount_settings_change", + "description": "Custom amounts for GitHub Sponsors were enabled or disabled, or the suggested custom amount was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.fiscal_host_change", + "description": "The fiscal host for a GitHub Sponsors listing was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.invoiced_agreement_sign", + "description": "An agreement for invoiced billing for GitHub Sponsors was signed.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/paying-for-github-sponsors-by-invoice" + }, + { + "action": "sponsors.repo_funding_links_file_action", + "description": "The FUNDING file in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository" + }, + { + "action": "sponsors.sponsor_sponsorship_cancel", + "description": "A sponsorship was canceled.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_create", + "description": "A sponsorship was created, by sponsoring an account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_payment_complete", + "description": "After you sponsor an account and a payment has been processed, the sponsorship payment was marked as complete.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_preference_change", + "description": "The option to receive email updates from a sponsored account was changed.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/managing-your-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_tier_change", + "description": "A sponsorship was upgraded or downgraded.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/upgrading-a-sponsorship, /billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsored_developer_approve", + "description": "A GitHub Sponsors account was approved.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_create", + "description": "A GitHub Sponsors account was created.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_disable", + "description": "A GitHub Sponsors account was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_profile_update", + "description": "The profile for GitHub Sponsors account was edited.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/editing-your-profile-details-for-github-sponsors" + }, + { + "action": "sponsors.sponsored_developer_redraft", + "description": "A GitHub Sponsors account was returned to draft state from approved state.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_request_approval", + "description": "An application for GitHub Sponsors was submitted for approval.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_tier_description_update", + "description": "The description for a sponsorship tier was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.sponsors_patreon_user_create", + "description": "A Patreon account was linked to a user account for use with GitHub Sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/enabling-sponsorships-through-patreon#linking-your-patreon-account-to-your-github-account" + }, + { + "action": "sponsors.sponsors_patreon_user_destroy", + "description": "A Patreon account for use with GitHub Sponsors was unlinked from a user account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-your-github-account" + }, + { + "action": "sponsors.update_tier_repository", + "description": "A GitHub Sponsors tier changed access for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.update_tier_welcome_message", + "description": "The welcome message for a GitHub Sponsors tier for an organization was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.withdraw_agreement_signature", + "description": "A signature was withdrawn from a GitHub Sponsors agreement that applies to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "ssh_certificate_authority.create", + "description": "An SSH certificate authority for an organization or enterprise was created.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_authority.destroy", + "description": "An SSH certificate authority for an organization or enterprise was deleted.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_requirement.disable", + "description": "The requirement for members to use SSH certificates to access an organization resources was disabled.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "ssh_certificate_requirement.enable", + "description": "The requirement for members to use SSH certificates to access an organization resources was enabled.", + "docs_reference_links": "/organizations/managing-git-access-to-your-organizations-repositories/managing-your-organizations-ssh-certificate-authorities, /admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-ssh-certificate-authorities-for-your-enterprise" + }, + { + "action": "staff.dependabot_debug_credentials_generated", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "staff.set_domain_token_expiration", + "description": "The verification code expiry time for an organization or enterprise domain was set.", + "docs_reference_links": "N/A" + }, + { + "action": "staff.unverify_domain", + "description": "An organization or enterprise domain was unverified.", + "docs_reference_links": "N/A" + }, + { + "action": "staff.verify_domain", + "description": "An organization or enterprise domain was verified.", + "docs_reference_links": "N/A" + }, + { + "action": "team.add_member", + "description": "A member of an organization was added to a team.", + "docs_reference_links": "/organizations/organizing-members-into-teams/adding-organization-members-to-a-team" + }, + { + "action": "team.add_repository", + "description": "A team was given access and permissions to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "team.change_parent_team", + "description": "A child team was created or a child team's parent was changed.", + "docs_reference_links": "/organizations/organizing-members-into-teams/moving-a-team-in-your-organizations-hierarchy" + }, + { + "action": "team.change_privacy", + "description": "A team's privacy level was changed.", + "docs_reference_links": "/organizations/organizing-members-into-teams/changing-team-visibility" + }, + { + "action": "team.create", + "description": "A new team is created.", + "docs_reference_links": "N/A" + }, + { + "action": "team.demote_maintainer", + "description": "A user was demoted from a team maintainer to a team member.", + "docs_reference_links": "/organizations/organizing-members-into-teams/assigning-the-team-maintainer-role-to-a-team-member" + }, + { + "action": "team.destroy", + "description": "A team was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "team_discussions.clear", + "description": "An organization owner cleared the setting to allow team discussions for an organization or enterprise.", + "docs_reference_links": "N/A" + }, + { + "action": "team_discussions.disable", + "description": "Team discussions were disabled for an organization.", + "docs_reference_links": "/organizations/organizing-members-into-teams/disabling-team-discussions-for-your-organization" + }, + { + "action": "team_discussions.enable", + "description": "Team discussions were enabled for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "team_group_mapping.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "team_group_mapping.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "team_group_mapping.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "team.promote_maintainer", + "description": "A user was promoted from a team member to a team maintainer.", + "docs_reference_links": "/organizations/organizing-members-into-teams/assigning-the-team-maintainer-role-to-a-team-member#promoting-an-organization-member-to-team-maintainer" + }, + { + "action": "team.remove_member", + "description": "An organization member was removed from a team.", + "docs_reference_links": "/organizations/organizing-members-into-teams/removing-organization-members-from-a-team" + }, + { + "action": "team.remove_repository", + "description": "A repository was removed from a team's control.", + "docs_reference_links": "N/A" + }, + { + "action": "team.rename", + "description": "A team's name was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "team_sync_tenant.disabled", + "description": "Team synchronization with a tenant was disabled.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/managing-team-synchronization-for-your-organization, /admin/identity-and-access-management/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise" + }, + { + "action": "team_sync_tenant.enabled", + "description": "Team synchronization with a tenant was enabled.", + "docs_reference_links": "/organizations/managing-saml-single-sign-on-for-your-organization/managing-team-synchronization-for-your-organization, /admin/identity-and-access-management/using-saml-for-enterprise-iam/managing-team-synchronization-for-organizations-in-your-enterprise" + }, + { + "action": "team_sync_tenant.update_okta_credentials", + "description": "The Okta credentials for team synchronization with a tenant were changed.", + "docs_reference_links": "N/A" + }, + { + "action": "team.update_repository_permission", + "description": "A team's permission to a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.create", + "description": "A Dependabot rule was created.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.delete", + "description": "A Dependabot rule was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.disable", + "description": "A Dependabot rule was disabled for a single repository or disabled by default for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.enable", + "description": "A Dependabot rule was enabled for a single repository or enabled by default for an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.force_disable", + "description": "A Dependabot rule was enabled for an organization and cannot be disabled for its repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.force_enable", + "description": "A Dependabot rule was disabled for an organization and cannot be enabled for its repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "vulnerability_alert_rule.update", + "description": "A Dependabot rule's conditions, actions, or metadata changed.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.approve_workflow_job", + "description": "A workflow job was approved.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.bypass_protection_rules", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.cancel_workflow_run", + "description": "A workflow run was cancelled.", + "docs_reference_links": "/actions/managing-workflow-runs/canceling-a-workflow" + }, + { + "action": "workflows.comment_workflow_job", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.completed_workflow_run", + "description": "A workflow status changed to completed. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history" + }, + { + "action": "workflows.created_workflow_run", + "description": "A workflow run was create. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/learn-github-actions/understanding-github-actions#create-an-example-workflow" + }, + { + "action": "workflows.delete_workflow_run", + "description": "A workflow run was deleted.", + "docs_reference_links": "/actions/managing-workflow-runs/deleting-a-workflow-run" + }, + { + "action": "workflows.disable_workflow", + "description": "A workflow was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.enable_workflow", + "description": "A workflow was enabled, after previously being disabled by disable_workflow.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.pin_workflow", + "description": "A workflow was pinned.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.prepared_workflow_job", + "description": "A workflow job was started. Includes the list of secrets that were provided to the job. This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", + "docs_reference_links": "/actions/using-workflows/events-that-trigger-workflows" + }, + { + "action": "workflows.reject_workflow_job", + "description": "A workflow job was rejected.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.rerun_workflow_run", + "description": "A workflow run was re-run.", + "docs_reference_links": "/actions/managing-workflow-runs/re-running-workflows-and-jobs" + }, + { + "action": "workflows.unpin_workflow", + "description": "A workflow was unpinned after previously being pinned.", + "docs_reference_links": "N/A" + } +] \ No newline at end of file diff --git a/src/audit-logs/data/ghes-3.18/user.json b/src/audit-logs/data/ghes-3.18/user.json new file mode 100644 index 000000000000..ea5a2e3d2d8e --- /dev/null +++ b/src/audit-logs/data/ghes-3.18/user.json @@ -0,0 +1,1977 @@ +[ + { + "action": "account.billing_date_change", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account.plan_change", + "description": "The account's plan changed.", + "docs_reference_links": "/billing/managing-the-plan-for-your-github-account/about-billing-for-plans" + }, + { + "action": "account_recovery_token.confirm", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account_recovery_token.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "account_recovery_token.recover", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "actions_cache.delete", + "description": "A GitHub Actions cache was deleted using the REST API.", + "docs_reference_links": "N/A" + }, + { + "action": "artifact.destroy", + "description": "A workflow run artifact was manually deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "billing.change_billing_type", + "description": "The way the account pays for GitHub was changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/adding-or-editing-a-payment-method" + }, + { + "action": "billing.change_email", + "description": "The billing email address changed.", + "docs_reference_links": "/billing/managing-your-github-billing-settings/setting-your-billing-email" + }, + { + "action": "billing.lock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "billing.unlock", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "billing.update_bill_cycle_day", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_code_scanning_metrics", + "description": "A CSV export was requested on the \"CodeQL pull request alerts\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_coverage", + "description": "A CSV export was requested on the \"Coverage\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_overview_dashboard", + "description": "A CSV export was requested on the \"Overview Dashboard\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.security_center_export_risk", + "description": "A CSV export was requested on the \"Risk\" page.", + "docs_reference_links": "N/A" + }, + { + "action": "business.set_actions_fork_pr_approvals_policy", + "description": "The policy for requiring approvals for workflows from public forks was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-your-enterprise" + }, + { + "action": "business.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-private-repositories" + }, + { + "action": "business.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-artifact-and-log-retention-in-your-enterprise" + }, + { + "action": "business.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise" + }, + { + "action": "business.set_fork_pr_workflows_policy", + "description": "The policy for fork pull request workflows was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-your-enterprise" + }, + { + "action": "business.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for an enterprise.", + "docs_reference_links": "/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "checks.auto_trigger_disabled", + "description": "Automatic creation of check suites was disabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.auto_trigger_enabled", + "description": "Automatic creation of check suites was enabled on a repository in the organization or enterprise.", + "docs_reference_links": "/rest/checks#update-repository-preferences-for-check-suites" + }, + { + "action": "checks.delete_logs", + "description": "Logs in a check suite were deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.allow_permissions", + "description": "A codespace using custom permissions from its devcontainer.json file was launched.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.connect", + "description": "Credentials for a codespace were refreshed.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.create", + "description": "A codespace was created", + "docs_reference_links": "/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository" + }, + { + "action": "codespaces.destroy", + "description": "A user deleted a codespace.", + "docs_reference_links": "/codespaces/developing-in-codespaces/deleting-a-codespace" + }, + { + "action": "codespaces.export_environment", + "description": "A codespace was exported to a branch on GitHub.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.restore", + "description": "A codespace was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.start_environment", + "description": "A codespace was started.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.suspend_environment", + "description": "A codespace was stopped.", + "docs_reference_links": "N/A" + }, + { + "action": "codespaces.trusted_repositories_access_update", + "description": "A personal account's access and security setting for Codespaces were updated.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "copilot.cfb_seat_added", + "description": "A Copilot Business or Copilot Enterprise seat was added for a user and they have received access to GitHub Copilot. This can occur as the result of directly assigning a seat for a user, assigning a seat for a team, or setting the organization to allow access for all members.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_created", + "description": "A Copilot Business or Copilot Enterprise seat assignment was newly created for a user or a team, and seats are being created.", + "docs_reference_links": "/copilot/overview-of-github-copilot/about-github-copilot-for-business" + }, + { + "action": "copilot.cfb_seat_assignment_refreshed", + "description": "A seat assignment that was previously pending cancellation was re-assigned and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_reused", + "description": "A Copilot Business or Copilot Enterprise seat assignment was re-created for a user who already had a seat with no pending cancellation date, and the user will retain access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_assignment_unassigned", + "description": "A user or team's Copilot Business or Copilot Enterprise seat assignment was unassigned, and the user(s) will lose access to Copilot at the end of the current billing cycle.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.cfb_seat_cancelled_by_staff", + "description": "A user's Copilot Business or Copilot Enterprise seat was canceled manually by GitHub staff, and the user no longer has access to Copilot.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_disabled", + "description": "Specific repositories were disabled from using Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enabled", + "description": "Specific repositories were enabled to use Copilot coding agent.", + "docs_reference_links": "N/A" + }, + { + "action": "copilot.swe_agent_repo_enablement_updated", + "description": "Copilot coding agent access was updated for the organization's or user's repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "custom_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_alerts.disable", + "description": "Dependabot alerts were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts.enable", + "description": "Dependabot alerts were enabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-for-all-existing-repositories" + }, + { + "action": "dependabot_alerts_new_repos.disable", + "description": "Dependabot alerts were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_alerts_new_repos.enable", + "description": "Dependabot alerts were enabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization#enabling-or-disabling-a-feature-automatically-when-new-repositories-are-added" + }, + { + "action": "dependabot_repository_access.repositories_updated", + "description": "The repositories that Dependabot can access were updated.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates.disable", + "description": "Dependabot security updates were disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates.enable", + "description": "Dependabot security updates were enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependabot_security_updates_new_repos.disable", + "description": " Dependabot security updates were disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependabot_security_updates_new_repos.enable", + "description": "Dependabot security updates were enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph.disable", + "description": "The dependency graph was disabled for all existing repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph.enable", + "description": "The dependency graph was enabled for all existing repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "dependency_graph_new_repos.disable", + "description": "The dependency graph was disabled for all new repositories.", + "docs_reference_links": "/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-security-and-analysis-settings-for-your-organization" + }, + { + "action": "dependency_graph_new_repos.enable", + "description": "The dependency graph was enabled for all new repositories.", + "docs_reference_links": "N/A" + }, + { + "action": "environment.add_protection_rule", + "description": "A GitHub Actions deployment protection rule was created via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "environment.create_actions_secret", + "description": "A secret was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.create_actions_variable", + "description": "A variable was created for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.delete", + "description": "An environment was deleted.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deleting-an-environment" + }, + { + "action": "environment.remove_actions_secret", + "description": "A secret was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.remove_actions_variable", + "description": "A variable was deleted for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.remove_protection_rule", + "description": "A GitHub Actions deployment protection rule was deleted via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "environment.update_actions_secret", + "description": "A secret was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets" + }, + { + "action": "environment.update_actions_variable", + "description": "A variable was updated for a GitHub Actions environment.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-an-environment" + }, + { + "action": "environment.update_protection_rule", + "description": "A GitHub Actions deployment protection rule was updated via the API.", + "docs_reference_links": "/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules" + }, + { + "action": "gist.create", + "description": "A gist was created.", + "docs_reference_links": "N/A" + }, + { + "action": "gist.destroy", + "description": "A gist was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "gist.visibility_change", + "description": "The visibility of a gist was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "git_signing_ssh_public_key.create", + "description": "An SSH key was added to a user account as a Git commit signing key.", + "docs_reference_links": "/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key" + }, + { + "action": "git_signing_ssh_public_key.delete", + "description": "An SSH key was removed from a user account as a Git commit signing key.", + "docs_reference_links": "/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key" + }, + { + "action": "github_hosted_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "github_hosted_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "gpg_key.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "gpg_key.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "hook.active_changed", + "description": "A hook's active status was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.config_changed", + "description": "A hook's configuration was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.create", + "description": "A new hook was added.", + "docs_reference_links": "/get-started/exploring-integrations/about-webhooks" + }, + { + "action": "hook.destroy", + "description": "A hook was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "hook.events_changed", + "description": "A hook's configured events were changed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.create", + "description": "A GitHub App was created.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.destroy", + "description": "A GitHub App was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.generate_client_secret", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "integration_installation.create", + "description": "A GitHub App was installed.", + "docs_reference_links": "/apps/using-github-apps/authorizing-github-apps" + }, + { + "action": "integration_installation.destroy", + "description": "A GitHub App was uninstalled.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.repositories_added", + "description": "Repositories were added to a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation.repositories_removed", + "description": "Repositories were removed from a GitHub App.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#modifying-repository-access" + }, + { + "action": "integration_installation.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/using-github-apps/reviewing-and-modifying-installed-github-apps#blocking-access" + }, + { + "action": "integration_installation.version_updated", + "description": "Permissions for a GitHub App were updated.", + "docs_reference_links": "/apps/using-github-apps/approving-updated-permissions-for-a-github-app" + }, + { + "action": "integration.manager_added", + "description": "A member of an enterprise or organization was added as a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#giving-someone-the-ability-to-manage-all-github-apps-owned-by-the-organization" + }, + { + "action": "integration.manager_removed", + "description": "A member of an enterprise or organization was removed from being a GitHub App manager.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/adding-and-removing-github-app-managers-in-your-organization#removing-a-github-app-managers-permissions-for-the-entire-organization" + }, + { + "action": "integration.remove_client_secret", + "description": "A client secret for a GitHub App was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_all_tokens", + "description": "All user tokens for a GitHub App were requested to be revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.revoke_tokens", + "description": "Token(s) for a GitHub App were revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "integration.suspend", + "description": "A GitHub App was suspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "integration.transfer", + "description": "Ownership of a GitHub App was transferred to another user or organization.", + "docs_reference_links": "/apps/maintaining-github-apps/transferring-ownership-of-a-github-app" + }, + { + "action": "integration.unsuspend", + "description": "A GitHub App was unsuspended.", + "docs_reference_links": "/apps/maintaining-github-apps/suspending-a-github-app-installation" + }, + { + "action": "marketplace_agreement_signature.create", + "description": "The GitHub Marketplace Developer Agreement was signed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.approve", + "description": "A listing was approved for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.change_category", + "description": "A category for a listing for an app in GitHub Marketplace was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.create", + "description": "A listing for an app in GitHub Marketplace was created.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.delist", + "description": "A listing was removed from GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.publish", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.retire", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing_plan.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.redraft", + "description": "A listing was sent back to draft state.", + "docs_reference_links": "N/A" + }, + { + "action": "marketplace_listing.reject", + "description": "A listing was not accepted for inclusion in GitHub Marketplace.", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.pull_request_dequeued", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.pull_request_queue_jump", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.queue_cleared", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "merge_queue.update_settings", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "metered_billing_configuration.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "migration.create", + "description": "A migration file was created for transferring data from a source location (such as a GitHub.com organization or a GitHub Enterprise Server instance) to a target GitHub Enterprise Server instance.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.create", + "description": "An OAuth access token was generated.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps, /authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token" + }, + { + "action": "oauth_access.destroy", + "description": "An OAuth access token was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "oauth_access.regenerate", + "description": "An OAuth access token was regenerated.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.revoke", + "description": "An OAuth access token was revoked.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_access.update", + "description": "An OAuth access token was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "oauth_application.create", + "description": "An OAuth application was created.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.destroy", + "description": "An OAuth application was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.generate_client_secret", + "description": "An OAuth application's secret key was generated.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.remove_client_secret", + "description": "An OAuth application's secret key was deleted.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.reset_secret", + "description": "The secret key for an OAuth application was reset.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_all_tokens", + "description": "All user tokens for an OAuth application were requested to be revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.revoke_tokens", + "description": "Token(s) for an OAuth application were revoked.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_application.transfer", + "description": "An OAuth application was transferred from one account to another.", + "docs_reference_links": "/apps/oauth-apps/building-oauth-apps/authenticating-to-the-rest-api-with-an-oauth-app#registering-your-app" + }, + { + "action": "oauth_authorization.create", + "description": "An authorization for an OAuth application was created.", + "docs_reference_links": "/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "oauth_authorization.destroy", + "description": "An authorization for an OAuth application was deleted.", + "docs_reference_links": "/apps/using-github-apps/reviewing-your-authorized-integrations" + }, + { + "action": "oauth_authorization.update", + "description": "An authorization for an OAuth application was updated.", + "docs_reference_links": "/apps/oauth-apps/using-oauth-apps/authorizing-oauth-apps" + }, + { + "action": "org.add_member", + "description": "A user joined an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.add_outside_collaborator", + "description": "An outside collaborator was added to a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_for_new_repos", + "description": "GitHub Advanced Security was disabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_disabled_on_all_repos", + "description": "GitHub Advanced Security was disabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_for_new_repos", + "description": "GitHub Advanced Security was enabled for new repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.advanced_security_enabled_on_all_repos", + "description": "GitHub Advanced Security was enabled for all repositories in an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "org.remove_member", + "description": "A member was removed from an organization, either manually or due to a two-factor authentication requirement.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_code_scanning_metrics", + "description": "A CSV export was requested on the CodeQL pull request alerts page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_coverage", + "description": "A CSV export was requested on the Coverage page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_overview_dashboard", + "description": "A CSV export was requested on the Overview Dashboard page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.security_center_export_risk", + "description": "A CSV export was requested on the Risk page.", + "docs_reference_links": "N/A" + }, + { + "action": "org.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#requiring-approval-for-workflows-from-public-forks" + }, + { + "action": "org.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in an organization was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization" + }, + { + "action": "org.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization" + }, + { + "action": "org.set_fork_pr_workflows_policy", + "description": "The policy for workflows on private repository forks was changed.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#enabling-workflows-for-private-repository-forks" + }, + { + "action": "org.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for an organization.", + "docs_reference_links": "/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "org.update_member", + "description": "A person's role was changed from owner to member or member to owner.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_creation_permission", + "description": "The create repository permission for organization members was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "org.update_member_repository_invitation_permission", + "description": "An organization owner changed the policy setting for organization members inviting outside collaborators to repositories.", + "docs_reference_links": "/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators" + }, + { + "action": "pages_protected_domain.create", + "description": "A GitHub Pages verified domain was created for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.delete", + "description": "A GitHub Pages verified domain was deleted from an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "pages_protected_domain.verify", + "description": "A GitHub Pages domain was verified for an organization or enterprise.", + "docs_reference_links": "/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages" + }, + { + "action": "passkey.register", + "description": "A new passkey was added.", + "docs_reference_links": "N/A" + }, + { + "action": "passkey.remove", + "description": "A new passkey was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.create", + "description": "A new payment method was added, such as a new credit card or PayPal account.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.remove", + "description": "A payment method was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "payment_method.update", + "description": "An existing payment method was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.access_granted", + "description": "A fine-grained personal access token was granted access to resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.access_revoked", + "description": "A fine-grained personal access token was revoked. The token can still read public organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/reviewing-and-revoking-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.create", + "description": "Triggered when you create a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.credential_regenerated", + "description": "Triggered when you regenerate a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.credential_revoked", + "description": "A fine-grained personal access token was revoked by GitHub Advanced Security.", + "docs_reference_links": "/code-security/getting-started/github-security-features#secret-scanning-alerts-for-users" + }, + { + "action": "personal_access_token.destroy", + "description": "Triggered when you delete a fine-grained personal access token.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_cancelled", + "description": "A pending request for a fine-grained personal access token to access organization resources was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "personal_access_token.request_created", + "description": "Triggered when a fine-grained personal access token was created to access organization resources and the organization requires approval before the token can access organization resources.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.request_denied", + "description": "A request for a fine-grained personal access token to access organization resources was denied.", + "docs_reference_links": "/organizations/managing-programmatic-access-to-your-organization/managing-requests-for-personal-access-tokens-in-your-organization" + }, + { + "action": "personal_access_token.update", + "description": "A fine-grained personal access token was updated.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#fine-grained-personal-access-tokens" + }, + { + "action": "premium_runner.create", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "premium_runner.update", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.disable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "private_vulnerability_reporting_new_repos.enable", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "profile_picture.update", + "description": "A profile picture was updated.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile" + }, + { + "action": "project.access", + "description": "A project board visibility was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.close", + "description": "A project board was closed.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board" + }, + { + "action": "project_collaborator.add", + "description": "A collaborator was added to a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.remove", + "description": "A collaborator was removed from a project.", + "docs_reference_links": "N/A" + }, + { + "action": "project_collaborator.update", + "description": "A project collaborator's permission level was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.create", + "description": "A project board was created.", + "docs_reference_links": "N/A" + }, + { + "action": "project.delete", + "description": "A project board was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "project_field.create", + "description": "A field was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields" + }, + { + "action": "project_field.delete", + "description": "A field was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/understanding-fields/deleting-custom-fields" + }, + { + "action": "project.link", + "description": "A repository was linked to a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.open", + "description": "A project board was reopened.", + "docs_reference_links": "/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board" + }, + { + "action": "project.rename", + "description": "A project board was renamed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.unlink", + "description": "A repository was unlinked from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_org_permission", + "description": "The project's base-level permission for all organization members was changed or removed.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_team_permission", + "description": "A team's project board permission level was changed or when a team was added or removed from a project board.", + "docs_reference_links": "N/A" + }, + { + "action": "project.update_user_permission", + "description": "A user was added to or removed from a project board or had their permission level changed.", + "docs_reference_links": "N/A" + }, + { + "action": "project_view.create", + "description": "A view was created in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project_view.delete", + "description": "A view was deleted in a project board.", + "docs_reference_links": "/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/managing-your-views" + }, + { + "action": "project.visibility_private", + "description": "A project's visibility was changed from public to private.", + "docs_reference_links": "N/A" + }, + { + "action": "project.visibility_public", + "description": "A project's visibility was changed from private to public.", + "docs_reference_links": "N/A" + }, + { + "action": "protected_branch.update_merge_queue_enforcement_level", + "description": "Enforcement of the merge queue was modified for a branch.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-merge-queue" + }, + { + "action": "public_key.create", + "description": "An SSH key was added to a user account or a deploy key was added to a repository.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" + }, + { + "action": "public_key.delete", + "description": "An SSH key was removed from a user account or a deploy key was removed from a repository.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/reviewing-your-ssh-keys" + }, + { + "action": "public_key.unverification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.unverify", + "description": "A user account's SSH key or a repository's deploy key was unverified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.update", + "description": "A user account's SSH key or a repository's deploy key was updated.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verification_failure", + "description": "A user account's SSH key or a repository's deploy key was unable to be verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "public_key.verify", + "description": "A user account's SSH key or a repository's deploy key was verified.", + "docs_reference_links": "/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys" + }, + { + "action": "repo.access", + "description": "The visibility of a repository changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility" + }, + { + "action": "repo.actions_enabled", + "description": "GitHub Actions was enabled for a repository.", + "docs_reference_links": "organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#using-the-audit-log-api" + }, + { + "action": "repo.add_member", + "description": "A collaborator was added to a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository" + }, + { + "action": "repo.add_topic", + "description": "A topic was added to a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics" + }, + { + "action": "repo.advanced_security_disabled", + "description": "GitHub Advanced Security was disabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.advanced_security_enabled", + "description": "GitHub Advanced Security was enabled for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository" + }, + { + "action": "repo.archived", + "description": "A repository was archived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.change_merge_setting", + "description": "Pull request merge options were changed for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.code_scanning_analysis_deleted", + "description": "Code scanning analysis for a repository was deleted.", + "docs_reference_links": "/rest/code-scanning#delete-a-code-scanning-analysis-from-a-repository" + }, + { + "action": "repo.code_scanning_configuration_for_branch_deleted", + "description": "A code scanning configuration for a branch of a repository was deleted.", + "docs_reference_links": "/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository#removing-stale-configurations-and-alerts-from-a-branch" + }, + { + "action": "repo.config.disable_collaborators_only", + "description": "The interaction limit for collaborators only was disabled.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_contributors_only", + "description": "The interaction limit for prior contributors only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.disable_sockpuppet_disallowed", + "description": "The interaction limit for existing users only was disabled in a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_collaborators_only", + "description": "The interaction limit for collaborators only was enabled in a repository Users that are not collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_contributors_only", + "description": "The interaction limit for prior contributors only was enabled in a repository Users that are not prior contributors, collaborators or organization members were unable to interact with a repository for a set duration.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.config.enable_sockpuppet_disallowed", + "description": "The interaction limit for existing users was enabled in a repository New users aren't able to interact with a repository for a set duration Existing users of the repository, contributors, collaborators or organization members are able to interact with a repository.", + "docs_reference_links": "/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository" + }, + { + "action": "repo.configure_self_hosted_jit_runner", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.create", + "description": "A repository was created.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/creating-a-new-repository" + }, + { + "action": "repo.create_actions_secret", + "description": "A GitHub Actions secret was created for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.create_actions_variable", + "description": "A GitHub Actions variable was created for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.create_integration_secret", + "description": "A Codespaces or Dependabot secret was created for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.destroy", + "description": "A repository was deleted.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/deleting-a-repository" + }, + { + "action": "repo.pages_cname", + "description": "A GitHub Pages custom domain was modified in a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_create", + "description": "A GitHub Pages site was created.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_destroy", + "description": "A GitHub Pages site was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_disabled", + "description": "HTTPS redirects were disabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_https_redirect_enabled", + "description": "HTTPS redirects were enabled for a GitHub Pages site.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_private", + "description": "A GitHub Pages site visibility was changed to private.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_public", + "description": "A GitHub Pages site visibility was changed to public.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete", + "description": "A GitHub Pages site was soft-deleted because its owner's plan changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_soft_delete_restore", + "description": "A GitHub Pages site that was previously soft-deleted was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.pages_source", + "description": "A GitHub Pages source was modified.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.register_self_hosted_runner", + "description": "A new self-hosted runner was registered.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-a-repository" + }, + { + "action": "repo.remove_actions_secret", + "description": "A GitHub Actions secret was deleted for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.remove_actions_variable", + "description": "A GitHub Actions variable was deleted for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.remove_integration_secret", + "description": "A Codespaces or Dependabot secret was deleted for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.remove_member", + "description": "A collaborator was removed from a repository.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository" + }, + { + "action": "repo.remove_self_hosted_runner", + "description": "A self-hosted runner was removed.", + "docs_reference_links": "/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-a-repository" + }, + { + "action": "repo.remove_topic", + "description": "A topic was removed from a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.rename", + "description": "A repository was renamed.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/renaming-a-repository" + }, + { + "action": "repo.restore", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "repo.set_actions_fork_pr_approvals_policy", + "description": "The setting for requiring approvals for workflows from public forks was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-required-approval-for-workflows-from-public-forks" + }, + { + "action": "repo.set_actions_private_fork_pr_approvals_policy", + "description": "The policy for requiring approval for fork pull request workflows from collaborators without write access to private repos was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-forks-of-private-repositories" + }, + { + "action": "repo.set_actions_retention_limit", + "description": "The retention period for GitHub Actions artifacts and logs in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository" + }, + { + "action": "repo.set_default_workflow_permissions", + "description": "The default permissions granted to the GITHUB_TOKEN when running workflows were changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository" + }, + { + "action": "repo.set_fork_pr_workflows_policy", + "description": "Triggered when the policy for workflows on private repository forks is changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-private-repository-forks" + }, + { + "action": "repo.set_workflow_permission_can_approve_pr", + "description": "The policy for allowing GitHub Actions to create and approve pull requests was changed for a repository.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests" + }, + { + "action": "repo.staff_unlock", + "description": "An enterprise owner or GitHub staff (with permission from a repository administrator) temporarily unlocked the repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.temporary_access_granted", + "description": "Temporary access was enabled for a repository.", + "docs_reference_links": "/admin/user-management/managing-repositories-in-your-enterprise/accessing-user-owned-repositories-in-your-enterprise" + }, + { + "action": "repo.transfer", + "description": "A user accepted a request to receive a transferred repository.", + "docs_reference_links": "/repositories/creating-and-managing-repositories/transferring-a-repository" + }, + { + "action": "repo.transfer_outgoing", + "description": "A repository was transferred to another repository network.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.transfer_start", + "description": "A user sent a request to transfer a repository to another user or organization.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.unarchived", + "description": "A repository was unarchived.", + "docs_reference_links": "/repositories/archiving-a-github-repository" + }, + { + "action": "repo.update_actions_access_settings", + "description": "The setting to control how a repository was used by GitHub Actions workflows in other repositories was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_secret", + "description": "A GitHub Actions secret was updated for a repository.", + "docs_reference_links": "/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository" + }, + { + "action": "repo.update_actions_settings", + "description": "A repository administrator changed GitHub Actions policy settings for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_actions_variable", + "description": "A GitHub Actions variable was updated for a repository.", + "docs_reference_links": "/actions/learn-github-actions/variables#creating-configuration-variables-for-a-repository" + }, + { + "action": "repo.update_default_branch", + "description": "The default branch for a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_integration_secret", + "description": "A Codespaces or Dependabot secret was updated for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "repo.update_member", + "description": "A user's permission to a repository was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.create", + "description": "An image to represent a repository was uploaded.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_image.destroy", + "description": "An image to represent a repository was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.accept", + "description": "An invitation to join a repository was accepted.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.cancel", + "description": "An invitation to join a repository was canceled.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.create", + "description": "An invitation to join a repository was sent.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_invitation.reject", + "description": "An invitation to join a repository was declined.", + "docs_reference_links": "N/A" + }, + { + "action": "repository_ruleset.create", + "description": "A repository ruleset was created.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository" + }, + { + "action": "repository_ruleset.destroy", + "description": "A repository ruleset was deleted.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#deleting-a-ruleset" + }, + { + "action": "repository_ruleset.update", + "description": "A repository ruleset was edited.", + "docs_reference_links": "/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/managing-rulesets-for-a-repository#editing-a-ruleset" + }, + { + "action": "security_key.register", + "description": "A security key was registered for an account.", + "docs_reference_links": "N/A" + }, + { + "action": "security_key.remove", + "description": "A security key was removed from an account.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.agreement_sign", + "description": "A GitHub Sponsors agreement was signed on behalf of an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.custom_amount_settings_change", + "description": "Custom amounts for GitHub Sponsors were enabled or disabled, or the suggested custom amount was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.fiscal_host_change", + "description": "The fiscal host for a GitHub Sponsors listing was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.repo_funding_links_file_action", + "description": "The FUNDING file in a repository was changed.", + "docs_reference_links": "/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository" + }, + { + "action": "sponsors.sponsor_sponsorship_cancel", + "description": "A sponsorship was canceled.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_create", + "description": "A sponsorship was created, by sponsoring an account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_payment_complete", + "description": "After you sponsor an account and a payment has been processed, the sponsorship payment was marked as complete.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/about-sponsorships-fees-and-taxes" + }, + { + "action": "sponsors.sponsor_sponsorship_preference_change", + "description": "The option to receive email updates from a sponsored account was changed.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/managing-your-sponsorship" + }, + { + "action": "sponsors.sponsor_sponsorship_tier_change", + "description": "A sponsorship was upgraded or downgraded.", + "docs_reference_links": "/billing/managing-billing-for-github-sponsors/upgrading-a-sponsorship, /billing/managing-billing-for-github-sponsors/downgrading-a-sponsorship" + }, + { + "action": "sponsors.sponsored_developer_approve", + "description": "A GitHub Sponsors account was approved.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_create", + "description": "A GitHub Sponsors account was created.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_disable", + "description": "A GitHub Sponsors account was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_profile_update", + "description": "The profile for GitHub Sponsors account was edited.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/editing-your-profile-details-for-github-sponsors" + }, + { + "action": "sponsors.sponsored_developer_redraft", + "description": "A GitHub Sponsors account was returned to draft state from approved state.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.sponsored_developer_request_approval", + "description": "An application for GitHub Sponsors was submitted for approval.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.sponsored_developer_tier_description_update", + "description": "The description for a sponsorship tier was changed.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/managing-your-sponsorship-tiers" + }, + { + "action": "sponsors.sponsored_developer_update_newsletter_send", + "description": "Triggered when you send an email update to your sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/contacting-your-sponsors" + }, + { + "action": "sponsors.sponsors_patreon_user_create", + "description": "A Patreon account was linked to a user account for use with GitHub Sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/enabling-sponsorships-through-patreon#linking-your-patreon-account-to-your-github-account" + }, + { + "action": "sponsors.sponsors_patreon_user_destroy", + "description": "A Patreon account for use with GitHub Sponsors was unlinked from a user account.", + "docs_reference_links": "/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-your-github-account" + }, + { + "action": "sponsors.update_tier_repository", + "description": "A GitHub Sponsors tier changed access for a repository.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.update_tier_welcome_message", + "description": "The welcome message for a GitHub Sponsors tier for an organization was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "sponsors.waitlist_join", + "description": "You join the waitlist to join GitHub Sponsors.", + "docs_reference_links": "/sponsors/receiving-sponsorships-through-github-sponsors/setting-up-github-sponsors-for-your-personal-account" + }, + { + "action": "sponsors.withdraw_agreement_signature", + "description": "A signature was withdrawn from a GitHub Sponsors agreement that applies to an organization.", + "docs_reference_links": "N/A" + }, + { + "action": "successor_invitation.accept", + "description": "Triggered when you accept a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.cancel", + "description": "Triggered when you cancel a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.create", + "description": "Triggered when you create a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.decline", + "description": "Triggered when you decline a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "successor_invitation.destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "successor_invitation.revoke", + "description": "Triggered when you revoke a succession invitation.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories" + }, + { + "action": "trusted_device.register", + "description": "A new trusted device was added.", + "docs_reference_links": "N/A" + }, + { + "action": "trusted_device.remove", + "description": "A trusted device was removed.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.abort", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.complete", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.ignore", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.staff_approve", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.staff_decline", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.start", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_account_recovery.two_factor_destroy", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.add_factor", + "description": "A secondary authentication factor was added to a user account.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.disabled", + "description": "Two-factor authentication was disabled for a user account.", + "docs_reference_links": "https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account" + }, + { + "action": "two_factor_authentication.enabled", + "description": "Two-factor authentication was enabled for a user account.", + "docs_reference_links": "https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.password_reset_fallback_sms", + "description": "A one-time password code was sent to a user account fallback phone number.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.recovery_codes_regenerated", + "description": "Two factor recovery codes were regenerated for a user account.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.remove_factor", + "description": "A secondary authentication factor was removed from a user account.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication" + }, + { + "action": "two_factor_authentication.sign_in_fallback_sms", + "description": "A one-time password code was sent to a user account fallback phone number.", + "docs_reference_links": "N/A" + }, + { + "action": "two_factor_authentication.update_fallback", + "description": "The two-factor authentication fallback for a user account was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.add_email", + "description": "An email address was added to a user account.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account" + }, + { + "action": "user.async_delete", + "description": "An asynchronous job was started to destroy a user account, eventually triggering a user.delete event.", + "docs_reference_links": "N/A" + }, + { + "action": "user.audit_log_export", + "description": "Audit log entries were exported.", + "docs_reference_links": "N/A" + }, + { + "action": "user.block_user", + "description": "A user was blocked by another user.", + "docs_reference_links": "N/A" + }, + { + "action": "user.change_password", + "description": "A user changed their password.", + "docs_reference_links": "N/A" + }, + { + "action": "user.codespaces_trusted_repo_access_granted", + "description": "Triggered when you allow the codespaces you create for a repository to access other repositories owned by your personal account.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "user.codespaces_trusted_repo_access_revoked", + "description": "Triggered when you disallow the codespaces you create for a repository to access other repositories owned by your personal account.", + "docs_reference_links": "/codespaces/managing-codespaces-for-your-organization/managing-repository-access-for-your-organizations-codespaces" + }, + { + "action": "user.create", + "description": "A new user account was created.", + "docs_reference_links": "N/A" + }, + { + "action": "user.create_integration_secret", + "description": "A user secret for Codespaces was created.", + "docs_reference_links": "N/A" + }, + { + "action": "user.creation_rate_limit_exceeded", + "description": "The rate of creation of user accounts, applications, issues, pull requests or other resources exceeded the configured rate limits, or too many users were followed too quickly.", + "docs_reference_links": "N/A" + }, + { + "action": "user.delete", + "description": "A user account was destroyed by an asynchronous job.", + "docs_reference_links": "N/A" + }, + { + "action": "user.demote", + "description": "A site administrator was demoted to an ordinary user account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.destroy", + "description": "A user deleted his or her account, triggering user.async_delete.", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_failure", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_requested", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.device_verification_success", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_collaborators_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_contributors_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.disable_sockpuppet_disallowed", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user_email.confirm_claim", + "description": "An enterprise managed user claimed an email address.", + "docs_reference_links": "N/A" + }, + { + "action": "user_email.mark_as_unclaimed", + "description": "N/A", + "docs_reference_links": "An enterprise managed user unclaimed an email address." + }, + { + "action": "user.enable_collaborators_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.enable_contributors_only", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.enable_sockpuppet_disallowed", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.failed_login", + "description": "A user tried to sign in with an incorrect username, password, or two-factor authentication code.", + "docs_reference_links": "N/A" + }, + { + "action": "user.forgot_password", + "description": "A user requested a password reset.", + "docs_reference_links": "/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials" + }, + { + "action": "user.grant_github_developer", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.hide_private_contributions_count", + "description": "A user changed the visibility of their private contributions. The number of contributions to private repositories on the user's profile are now hidden.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile" + }, + { + "action": "user.login", + "description": "A user signed in.", + "docs_reference_links": "N/A" + }, + { + "action": "user.logout", + "description": "A user signed out.", + "docs_reference_links": "N/A" + }, + { + "action": "user.new_device_used", + "description": "A user signed in from a new device.", + "docs_reference_links": "N/A" + }, + { + "action": "user.promote", + "description": "An ordinary user account was promoted to a site administrator.", + "docs_reference_links": "N/A" + }, + { + "action": "user.recreate", + "description": "A user's account was restored.", + "docs_reference_links": "N/A" + }, + { + "action": "user.remove_email", + "description": "An email address was removed from a user account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.remove_integration_secret", + "description": "A user secret for Codespaces was deleted.", + "docs_reference_links": "N/A" + }, + { + "action": "user.rename", + "description": "A username was changed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.reset_password", + "description": "A user reset their account password.", + "docs_reference_links": "N/A" + }, + { + "action": "user_session.country_change", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.show_private_contributions_count", + "description": "A user changed the visibility of their private contributions. The number of contributions to private repositories on the user's profile are now shown.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile" + }, + { + "action": "user.sign_in_from_unrecognized_device", + "description": "A user signed in from an unrecognized device.", + "docs_reference_links": "N/A" + }, + { + "action": "user.sign_in_from_unrecognized_device_and_location", + "description": "A user signed in from an unrecognized device and location.", + "docs_reference_links": "N/A" + }, + { + "action": "user_status.destroy", + "description": "Triggered when you clear the status on your profile.", + "docs_reference_links": "N/A" + }, + { + "action": "user_status.update", + "description": "Triggered when you set or change the status on your profile.", + "docs_reference_links": "/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#setting-a-status" + }, + { + "action": "user.suspend", + "description": "A user account was suspended.", + "docs_reference_links": "N/A" + }, + { + "action": "user.toggle_warn_private_email", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_challenge_failure", + "description": "A 2FA challenge issued for a user account failed.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_challenge_success", + "description": "A 2FA challenge issued for a user account succeeded.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recover", + "description": "A user used their 2FA recovery codes.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_downloaded", + "description": "A user downloaded 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_printed", + "description": "A user printed 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_recovery_codes_viewed", + "description": "A user viewed 2FA recovery codes for their account.", + "docs_reference_links": "N/A" + }, + { + "action": "user.two_factor_requested", + "description": "A user was prompted for a two-factor authentication code.", + "docs_reference_links": "/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication" + }, + { + "action": "user.unblock_user", + "description": "A user was unblocked by another user.", + "docs_reference_links": "N/A" + }, + { + "action": "user.unsuspend", + "description": "A user account was unsuspended.", + "docs_reference_links": "N/A" + }, + { + "action": "user.update_integration_secret", + "description": "A user secret for Codespaces was updated.", + "docs_reference_links": "N/A" + }, + { + "action": "user.update_new_repository_default_branch_setting", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.approve_workflow_job", + "description": "A workflow job was approved.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.bypass_protection_rules", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.comment_workflow_job", + "description": "N/A", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.delete_workflow_run", + "description": "A workflow run was deleted.", + "docs_reference_links": "/actions/managing-workflow-runs/deleting-a-workflow-run" + }, + { + "action": "workflows.disable_workflow", + "description": "A workflow was disabled.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.enable_workflow", + "description": "A workflow was enabled, after previously being disabled by disable_workflow.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.pin_workflow", + "description": "A workflow was pinned.", + "docs_reference_links": "N/A" + }, + { + "action": "workflows.reject_workflow_job", + "description": "A workflow job was rejected.", + "docs_reference_links": "/actions/managing-workflow-runs/reviewing-deployments" + }, + { + "action": "workflows.unpin_workflow", + "description": "A workflow was unpinned after previously being pinned.", + "docs_reference_links": "N/A" + } +] \ No newline at end of file diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 11c9563ff056..c5cbc69e4a4c 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -3,5 +3,5 @@ "apiOnlyEvents": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", "apiRequestEvent": "This event is only available via audit log streaming." }, - "sha": "a44fbc883ed2e0f27e21ba9a5d5f3859f77d3b74" + "sha": "eba0af9fafae7ac460e7063e153b06b7bc5ab300" } \ No newline at end of file diff --git a/src/content-linter/lib/linting-rules/british-english-quotes.js b/src/content-linter/lib/linting-rules/british-english-quotes.js new file mode 100644 index 000000000000..77eb0dec05e5 --- /dev/null +++ b/src/content-linter/lib/linting-rules/british-english-quotes.js @@ -0,0 +1,99 @@ +import { addError } from 'markdownlint-rule-helpers' +import { getRange } from '../helpers/utils.js' +import frontmatter from '#src/frame/lib/read-frontmatter.js' + +export const britishEnglishQuotes = { + names: ['GHD048', 'british-english-quotes'], + description: + 'Periods and commas should be placed inside quotation marks (American English style)', + tags: ['punctuation', 'quotes', 'style', 'consistency'], + severity: 'warning', // Non-blocking as requested in the issue + function: (params, onError) => { + // Skip autogenerated files + const frontmatterString = params.frontMatterLines.join('\n') + const fm = frontmatter(frontmatterString).data + if (fm && fm.autogenerated) return + + // Check each line for British English quote patterns + for (let i = 0; i < params.lines.length; i++) { + const line = params.lines[i] + const lineNumber = i + 1 + + // Skip code blocks, code spans, and URLs + if (isInCodeContext(line, params.lines, i)) { + continue + } + + // Find British English quote patterns and report them + findAndReportBritishQuotes(line, lineNumber, onError) + } + }, +} + +/** + * Check if the current position is within a code context (code blocks, inline code, URLs) + */ +function isInCodeContext(line, allLines, lineIndex) { + // Skip if line contains code fences + if (line.includes('```') || line.includes('~~~')) { + return true + } + + // Check if we're inside a code block + let inCodeBlock = false + for (let i = 0; i < lineIndex; i++) { + if (allLines[i].includes('```') || allLines[i].includes('~~~')) { + inCodeBlock = !inCodeBlock + } + } + if (inCodeBlock) { + return true + } + + // Skip if line appears to be mostly code (has multiple backticks) + const backtickCount = (line.match(/`/g) || []).length + if (backtickCount >= 4) { + return true + } + + // Skip URLs and email addresses + if (line.includes('http://') || line.includes('https://') || line.includes('mailto:')) { + return true + } + + return false +} + +/** + * Find and report British English quote patterns in a line + */ +function findAndReportBritishQuotes(line, lineNumber, onError) { + // Pattern to find quote followed by punctuation outside + // Matches: "text". or 'text', or "text", etc. + const britishPattern = /(["'])([^"']*?)\1\s*([.,])/g + + let match + while ((match = britishPattern.exec(line)) !== null) { + const quoteChar = match[1] + const quotedText = match[2] + const punctuation = match[3] + const fullMatch = match[0] + const startIndex = match.index + + // Create the corrected version (punctuation inside quotes) + const correctedText = quoteChar + quotedText + punctuation + quoteChar + + const range = getRange(line, fullMatch) + const punctuationName = punctuation === '.' ? 'period' : 'comma' + const errorMessage = `Use American English punctuation: place ${punctuationName} inside the quotation marks` + + // Provide auto-fix + const fixInfo = { + editColumn: startIndex + 1, + deleteCount: fullMatch.length, + insertText: correctedText, + } + + addError(onError, lineNumber, errorMessage, line, range, fixInfo) + } +} diff --git a/src/content-linter/lib/linting-rules/index.js b/src/content-linter/lib/linting-rules/index.js index 27567239275a..5312740267c3 100644 --- a/src/content-linter/lib/linting-rules/index.js +++ b/src/content-linter/lib/linting-rules/index.js @@ -35,6 +35,9 @@ import { liquidTagWhitespace } from './liquid-tag-whitespace.js' import { linkQuotation } from './link-quotation.js' import { octiconAriaLabels } from './octicon-aria-labels.js' import { liquidIfversionVersions } from './liquid-ifversion-versions.js' +import { britishEnglishQuotes } from './british-english-quotes.js' +import { multipleEmphasisPatterns } from './multiple-emphasis-patterns.js' +import { noteWarningFormatting } from './note-warning-formatting.js' const noDefaultAltText = markdownlintGitHub.find((elem) => elem.names.includes('no-default-alt-text'), @@ -84,5 +87,8 @@ export const gitHubDocsMarkdownlint = { liquidTagWhitespace, linkQuotation, octiconAriaLabels, + britishEnglishQuotes, + multipleEmphasisPatterns, + noteWarningFormatting, ], } diff --git a/src/content-linter/lib/linting-rules/list-first-word-capitalization.js b/src/content-linter/lib/linting-rules/list-first-word-capitalization.js index cb39281816e8..43c8b16ee91f 100644 --- a/src/content-linter/lib/linting-rules/list-first-word-capitalization.js +++ b/src/content-linter/lib/linting-rules/list-first-word-capitalization.js @@ -5,6 +5,9 @@ export const listFirstWordCapitalization = { description: 'First word of list item should be capitalized', tags: ['ul', 'ol'], function: (params, onError) => { + // Skip site-policy directory as these are legal documents with specific formatting requirements + if (params.name && params.name.includes('content/site-policy/')) return + // We're going to look for a sequence of 3 tokens. If the markdown // is a really small string, it might not even have that many tokens // in it. Can bail early. diff --git a/src/content-linter/lib/linting-rules/multiple-emphasis-patterns.js b/src/content-linter/lib/linting-rules/multiple-emphasis-patterns.js new file mode 100644 index 000000000000..b02839ff91f2 --- /dev/null +++ b/src/content-linter/lib/linting-rules/multiple-emphasis-patterns.js @@ -0,0 +1,93 @@ +import { addError } from 'markdownlint-rule-helpers' +import { getRange } from '../helpers/utils.js' +import frontmatter from '#src/frame/lib/read-frontmatter.js' + +export const multipleEmphasisPatterns = { + names: ['GHD050', 'multiple-emphasis-patterns'], + description: 'Do not use more than one emphasis/strong, italics, or uppercase for a string', + tags: ['formatting', 'emphasis', 'style'], + severity: 'warning', + function: (params, onError) => { + // Skip autogenerated files + const frontmatterString = params.frontMatterLines.join('\n') + const fm = frontmatter(frontmatterString).data + if (fm && fm.autogenerated) return + + const lines = params.lines + let inCodeBlock = false + + for (let i = 0; i < lines.length; i++) { + const line = lines[i] + const lineNumber = i + 1 + + // Track code block state + if (line.trim().startsWith('```')) { + inCodeBlock = !inCodeBlock + continue + } + + // Skip code blocks and indented code + if (inCodeBlock || line.trim().startsWith(' ')) continue + + // Check for multiple emphasis patterns + checkMultipleEmphasis(line, lineNumber, onError) + } + }, +} + +/** + * Check for multiple emphasis types in a single text segment + */ +function checkMultipleEmphasis(line, lineNumber, onError) { + // Focus on the clearest violations of the style guide + const multipleEmphasisPatterns = [ + // Bold + italic combinations (***text***) + { regex: /\*\*\*([^*]+)\*\*\*/g, types: ['bold', 'italic'] }, + { regex: /___([^_]+)___/g, types: ['bold', 'italic'] }, + + // Bold with code nested inside + { regex: /\*\*([^*]*`[^`]+`[^*]*)\*\*/g, types: ['bold', 'code'] }, + { regex: /__([^_]*`[^`]+`[^_]*)__/g, types: ['bold', 'code'] }, + + // Code with bold nested inside + { regex: /`([^`]*\*\*[^*]+\*\*[^`]*)`/g, types: ['code', 'bold'] }, + { regex: /`([^`]*__[^_]+__[^`]*)`/g, types: ['code', 'bold'] }, + ] + + for (const pattern of multipleEmphasisPatterns) { + let match + while ((match = pattern.regex.exec(line)) !== null) { + // Skip if this is likely intentional or very short + if (shouldSkipMatch(match[0], match[1])) continue + + const range = getRange(line, match[0]) + addError( + onError, + lineNumber, + `Do not use multiple emphasis types in a single string: ${pattern.types.join(' + ')}`, + line, + range, + null, // No auto-fix as this requires editorial judgment + ) + } + } +} + +/** + * Determine if a match should be skipped (likely intentional formatting) + */ +function shouldSkipMatch(fullMatch, content) { + // Skip common false positives + if (!content) return true + + // Skip very short content (likely intentional single chars) + if (content.trim().length < 2) return true + + // Skip if it's mostly code-like content (constants, variables) + if (/^[A-Z_][A-Z0-9_]*$/.test(content.trim())) return true + + // Skip file extensions or URLs + if (/\.[a-z]{2,4}$/i.test(content.trim()) || /https?:\/\//.test(content)) return true + + return false +} diff --git a/src/content-linter/lib/linting-rules/note-warning-formatting.js b/src/content-linter/lib/linting-rules/note-warning-formatting.js new file mode 100644 index 000000000000..37abecd8205e --- /dev/null +++ b/src/content-linter/lib/linting-rules/note-warning-formatting.js @@ -0,0 +1,220 @@ +import { addError } from 'markdownlint-rule-helpers' +import { getRange } from '../helpers/utils.js' +import frontmatter from '#src/frame/lib/read-frontmatter.js' + +export const noteWarningFormatting = { + names: ['GHD049', 'note-warning-formatting'], + description: 'Note and warning tags should be formatted according to style guide', + tags: ['formatting', 'callouts', 'notes', 'warnings', 'style'], + severity: 'warning', + function: (params, onError) => { + // Skip autogenerated files + const frontmatterString = params.frontMatterLines.join('\n') + const fm = frontmatter(frontmatterString).data + if (fm && fm.autogenerated) return + + const lines = params.lines + let inLegacyNote = false + let noteStartLine = null + let noteContent = [] + + for (let i = 0; i < lines.length; i++) { + const line = lines[i] + const lineNumber = i + 1 + + // Check for legacy {% note %} tags + if (line.trim() === '{% note %}') { + inLegacyNote = true + noteStartLine = lineNumber + noteContent = [] + + // Check for missing line break before {% note %} + const prevLine = i > 0 ? lines[i - 1] : '' + if (prevLine.trim() !== '') { + const range = getRange(line, '{% note %}') + addError(onError, lineNumber, 'Add a blank line before {% note %} tag', line, range, { + editColumn: 1, + deleteCount: 0, + insertText: '\n', + }) + } + continue + } + + // Check for end of legacy note + if (line.trim() === '{% endnote %}') { + if (inLegacyNote) { + inLegacyNote = false + + // Check for missing line break after {% endnote %} + const nextLine = i < lines.length - 1 ? lines[i + 1] : '' + if (nextLine.trim() !== '') { + const range = getRange(line, '{% endnote %}') + addError(onError, lineNumber, 'Add a blank line after {% endnote %} tag', line, range, { + editColumn: line.length + 1, + deleteCount: 0, + insertText: '\n', + }) + } + + // Check note content formatting + validateNoteContent(noteContent, noteStartLine, onError) + } + continue + } + + // Collect content inside legacy notes + if (inLegacyNote) { + noteContent.push({ text: line, lineNumber: lineNumber }) + continue + } + + // Check for new-style callouts > [!NOTE], > [!WARNING], > [!DANGER] + const calloutMatch = line.match(/^>\s*\[!(NOTE|WARNING|DANGER)\]\s*$/) + if (calloutMatch) { + const calloutType = calloutMatch[1] + + // Check for missing line break before callout + const prevLine = i > 0 ? lines[i - 1] : '' + if (prevLine.trim() !== '') { + const range = getRange(line, line.trim()) + addError( + onError, + lineNumber, + `Add a blank line before > [!${calloutType}] callout`, + line, + range, + { + editColumn: 1, + deleteCount: 0, + insertText: '\n', + }, + ) + } + + // Find the end of this callout block and validate content + const calloutContent = [] + let j = i + 1 + while (j < lines.length && lines[j].startsWith('>')) { + if (lines[j].trim() !== '>') { + calloutContent.push({ text: lines[j], lineNumber: j + 1 }) + } + j++ + } + + // Check for missing line break after callout + if (j < lines.length && lines[j].trim() !== '') { + const range = getRange(lines[j], lines[j].trim()) + addError( + onError, + j + 1, + `Add a blank line after > [!${calloutType}] callout block`, + lines[j], + range, + { + editColumn: 1, + deleteCount: 0, + insertText: '\n', + }, + ) + } + + validateCalloutContent(calloutContent, calloutType, lineNumber, onError) + i = j - 1 // Skip to end of callout block + continue + } + + // Check for orphaned **Note:**/**Warning:**/**Danger:** outside callouts + const orphanedPrefixMatch = line.match(/\*\*(Note|Warning|Danger):\*\*/) + if (orphanedPrefixMatch && !inLegacyNote && !line.startsWith('>')) { + const range = getRange(line, orphanedPrefixMatch[0]) + addError( + onError, + lineNumber, + `${orphanedPrefixMatch[1]} prefix should be inside a callout block`, + line, + range, + null, // No auto-fix as this requires human decision + ) + } + } + }, +} + +/** + * Validate content inside legacy {% note %} blocks + */ +function validateNoteContent(noteContent, noteStartLine, onError) { + if (noteContent.length === 0) return + + const contentLines = noteContent.filter((item) => item.text.trim() !== '') + if (contentLines.length === 0) return + + // Count bullet points + const bulletLines = contentLines.filter((item) => item.text.trim().match(/^[*\-+]\s/)) + if (bulletLines.length > 2) { + const range = getRange(bulletLines[2].text, bulletLines[2].text.trim()) + addError( + onError, + bulletLines[2].lineNumber, + 'Do not include more than 2 bullet points inside a callout', + bulletLines[2].text, + range, + null, // No auto-fix as this requires content restructuring + ) + } + + // Check for missing prefix (only if it looks like a traditional note) + const firstContentLine = contentLines[0] + const allContent = contentLines.map((line) => line.text).join(' ') + const hasButtons = + allContent.includes(' item.text.trim() !== '>') + if (contentLines.length === 0) return + + // Count bullet points + const bulletLines = contentLines.filter((item) => item.text.match(/^>\s*[*\-+]\s/)) + if (bulletLines.length > 2) { + const range = getRange(bulletLines[2].text, bulletLines[2].text.trim()) + addError( + onError, + bulletLines[2].lineNumber, + 'Do not include more than 2 bullet points inside a callout', + bulletLines[2].text, + range, + null, // No auto-fix as this requires content restructuring + ) + } + + // For new-style callouts, the prefix is handled by the [!NOTE] syntax itself + // so we don't need to check for manual **Note:** prefixes +} diff --git a/src/content-linter/tests/unit/british-english-quotes.js b/src/content-linter/tests/unit/british-english-quotes.js new file mode 100644 index 000000000000..2c1404591e32 --- /dev/null +++ b/src/content-linter/tests/unit/british-english-quotes.js @@ -0,0 +1,215 @@ +import { describe, expect, test } from 'vitest' + +import { runRule } from '../../lib/init-test.js' +import { britishEnglishQuotes } from '../../lib/linting-rules/british-english-quotes.js' + +describe(britishEnglishQuotes.names.join(' - '), () => { + test('Correct American English punctuation passes', async () => { + const markdown = [ + 'She said, "Hello, world."', + 'The guide mentions "Getting started."', + 'See "[AUTOTITLE]."', + 'Zara replied, "That sounds great!"', + 'The section titled "Prerequisites," explains the setup.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('British English quotes with AUTOTITLE are flagged', async () => { + const markdown = [ + 'For more information, see "[AUTOTITLE]".', + 'The article "[AUTOTITLE]", covers this topic.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + expect(errors[0].lineNumber).toBe(1) + if (errors[0].detail) { + expect(errors[0].detail).toContain('place period inside the quotation marks') + } + expect(errors[1].lineNumber).toBe(2) + if (errors[1].detail) { + expect(errors[1].detail).toContain('place comma inside the quotation marks') + } + }) + + test('General British English punctuation patterns are detected', async () => { + const markdown = [ + 'Priya said "Hello".', + 'The tutorial called "Advanced Git", is helpful.', + 'Marcus mentioned "DevOps best practices".', + 'See the guide titled "Getting Started", for details.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(4) + if (errors[0].detail) { + expect(errors[0].detail).toContain('period inside') + } + if (errors[1].detail) { + expect(errors[1].detail).toContain('comma inside') + } + if (errors[2].detail) { + expect(errors[2].detail).toContain('period inside') + } + if (errors[3].detail) { + expect(errors[3].detail).toContain('comma inside') + } + }) + + test('Single quotes are also detected', async () => { + const markdown = [ + "Aisha said 'excellent work'.", + "The term 'API endpoint', refers to a specific URL.", + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + if (errors[0].detail) { + expect(errors[0].detail).toContain('period inside') + } + if (errors[1].detail) { + expect(errors[1].detail).toContain('comma inside') + } + }) + + test('Code blocks and inline code are ignored', async () => { + const markdown = [ + '```javascript', + 'console.log("Hello");', + 'const message = "World";', + '```', + '', + 'In code, use `console.log("Debug");` for logging.', + 'The command `git commit -m "Fix bug";` creates a commit.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('URLs and emails are ignored', async () => { + const markdown = [ + 'Visit https://example.com/api"docs" for more info.', + 'Email support@company.com"help" for assistance.', + 'The webhook URL http://api.service.com"endpoint" should work.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Auto-fix suggestions work correctly', async () => { + const markdown = [ + 'See "[AUTOTITLE]".', + 'The guide "Setup Instructions", explains everything.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + + // Check that fix info is provided + expect(errors[0].fixInfo).toBeDefined() + expect(errors[0].fixInfo.insertText).toContain('."') + expect(errors[1].fixInfo).toBeDefined() + expect(errors[1].fixInfo.insertText).toContain(',"') + }) + + test('Mixed punctuation scenarios', async () => { + const markdown = [ + 'Chen explained, "The process involves three steps". First, prepare the data.', + 'The error message "File not found", appears when the path is incorrect.', + 'As Fatima noted, "Testing is crucial"; quality depends on it.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + expect(errors[0].lineNumber).toBe(1) + expect(errors[1].lineNumber).toBe(2) + }) + + test('Nested quotes are handled appropriately', async () => { + const markdown = [ + 'She said, "The article \'Best Practices\', is recommended".', + 'The message "Error: \'Invalid input\'" appears sometimes.', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + if (errors[0].detail) { + expect(errors[0].detail).toContain('period inside') + } + }) + + test('Edge cases with spacing', async () => { + const markdown = [ + 'The command "npm install" .', + 'See documentation "API Guide" , which covers authentication.', + 'Reference "[AUTOTITLE]" .', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(3) + if (errors[0].detail) { + expect(errors[0].detail).toContain('period inside') + } + if (errors[1].detail) { + expect(errors[1].detail).toContain('comma inside') + } + if (errors[2].detail) { + expect(errors[2].detail).toContain('period inside') + } + }) + + test('Autogenerated files are skipped', async () => { + const frontmatter = ['---', 'title: API Reference', 'autogenerated: rest', '---'].join('\n') + const markdown = ['The endpoint "GET /users", returns user data.', 'See "[AUTOTITLE]".'].join( + '\n', + ) + const result = await runRule(britishEnglishQuotes, { + strings: { + markdown: frontmatter + '\n' + markdown, + }, + }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Complex real-world examples', async () => { + const markdown = [ + '## Configuration Options', + '', + 'To enable the feature, set `enabled: true` in "config.yml".', + 'Aaliyah mentioned that the tutorial "Docker Basics", covers containers.', + 'The error "Permission denied", occurs when access is restricted.', + 'For troubleshooting, see "[AUTOTITLE]".', + '', + '```yaml', + 'name: "production"', + 'debug: false', + '```', + '', + 'Dmitri explained, "The workflow has multiple stages."', + ].join('\n') + const result = await runRule(britishEnglishQuotes, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(4) + expect(errors[0].lineNumber).toBe(3) // config.yml line + expect(errors[1].lineNumber).toBe(4) // Docker Basics line + expect(errors[2].lineNumber).toBe(5) // Permission denied line + expect(errors[3].lineNumber).toBe(6) // AUTOTITLE line + }) + + test('Warning severity is set correctly', () => { + expect(britishEnglishQuotes.severity).toBe('warning') + }) + + test('Rule has correct metadata', () => { + expect(britishEnglishQuotes.names).toEqual(['GHD048', 'british-english-quotes']) + expect(britishEnglishQuotes.description).toContain('American English style') + expect(britishEnglishQuotes.tags).toContain('punctuation') + expect(britishEnglishQuotes.tags).toContain('quotes') + }) +}) diff --git a/src/content-linter/tests/unit/list-first-word-captitalization.js b/src/content-linter/tests/unit/list-first-word-captitalization.js index 780bac091924..b00b39fe880b 100644 --- a/src/content-linter/tests/unit/list-first-word-captitalization.js +++ b/src/content-linter/tests/unit/list-first-word-captitalization.js @@ -76,4 +76,25 @@ describe(listFirstWordCapitalization.names.join(' - '), () => { const errors = result.markdown expect(errors.length).toBe(0) }) + + test('skips site-policy directory files', async () => { + const markdown = [ + '- list item should normally be flagged', + '- another uncapitalized item', + '- a. this is alphabetic numbering', + '- b. this is also alphabetic numbering', + ].join('\n') + + // Test normal behavior (should flag errors) + const normalResult = await runRule(listFirstWordCapitalization, { strings: { markdown } }) + expect(normalResult.markdown.length).toBeGreaterThan(0) + + // Test site-policy exclusion (should skip all errors) + const sitePolicyResult = await runRule(listFirstWordCapitalization, { + strings: { + 'content/site-policy/some-policy.md': markdown, + }, + }) + expect(sitePolicyResult['content/site-policy/some-policy.md'].length).toBe(0) + }) }) diff --git a/src/content-linter/tests/unit/multiple-emphasis-patterns.js b/src/content-linter/tests/unit/multiple-emphasis-patterns.js new file mode 100644 index 000000000000..0efc7e28bc93 --- /dev/null +++ b/src/content-linter/tests/unit/multiple-emphasis-patterns.js @@ -0,0 +1,231 @@ +import { describe, expect, test } from 'vitest' + +import { runRule } from '../../lib/init-test.js' +import { multipleEmphasisPatterns } from '../../lib/linting-rules/multiple-emphasis-patterns.js' + +describe(multipleEmphasisPatterns.names.join(' - '), () => { + test('Single emphasis types pass', async () => { + const markdown = [ + 'This is **bold text** that is fine.', + 'This is *italic text* that is okay.', + 'This is `code text` that is acceptable.', + 'This is a SCREAMING_CASE_WORD that is allowed.', + 'This is __bold with underscores__ that works.', + 'This is _italic with underscores_ that works.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Multiple emphasis types in same string are flagged', async () => { + const markdown = [ + 'This is **bold and `code`** in the same string.', + 'This is ***bold and italic*** combined.', + 'This is `code with **bold**` inside.', + 'This is ___bold and italic___ with underscores.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(4) + expect(errors[0].lineNumber).toBe(1) + expect(errors[1].lineNumber).toBe(2) + expect(errors[2].lineNumber).toBe(3) + expect(errors[3].lineNumber).toBe(4) + }) + + test('Nested emphasis patterns are flagged', async () => { + const markdown = [ + 'This is **bold with `code` inside**.', + 'This is `code with **bold** nested`.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + expect(errors[0].lineNumber).toBe(1) + expect(errors[1].lineNumber).toBe(2) + }) + + test('Separate emphasis patterns on same line pass', async () => { + const markdown = [ + 'This is **bold** and this is *italic* but separate.', + 'Here is `code` and here is UPPERCASE but apart.', + 'First **bold**, then some text, then *italic*.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Code blocks are ignored', async () => { + const markdown = [ + '```javascript', + 'const text = "**bold** and `code` mixed";', + 'const more = "***triple emphasis***";', + '```', + '', + ' // Indented code block', + ' const example = "**bold** with `code`";', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Inline code prevents other emphasis detection', async () => { + const markdown = [ + 'Use `**bold**` to make text bold.', + 'The `*italic*` syntax creates italic text.', + 'Type `__bold__` for bold formatting.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) // Code with bold inside is detected + }) + + test('Complex mixed emphasis patterns', async () => { + const markdown = [ + 'This is **bold and `code`** mixed.', + 'Here is ***bold italic*** combined.', + 'Text with __bold and `code`__ together.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(3) + expect(errors[0].lineNumber).toBe(1) + expect(errors[1].lineNumber).toBe(2) + expect(errors[2].lineNumber).toBe(3) + }) + + test('Edge case: adjacent emphasis without overlap passes', async () => { + const markdown = [ + 'This is **bold**_italic_ adjacent but not overlapping.', + 'Here is `code`**bold** touching but separate.', + 'Text with UPPERCASE**bold** next to each other.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Triple asterisk bold+italic is flagged', async () => { + const markdown = [ + 'This is ***bold and italic*** combined.', + 'Here is ___bold and italic___ with underscores.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + expect(errors[0].lineNumber).toBe(1) + expect(errors[1].lineNumber).toBe(2) + }) + + test('Mixed adjacent emphasis types are allowed', async () => { + const markdown = [ + 'This has **bold** and normal text.', + 'This has **bold** and other text.', + 'The API key and **configuration** work.', + 'The API key and **setup** process.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Autogenerated files are skipped', async () => { + const frontmatter = ['---', 'title: API Reference', 'autogenerated: rest', '---'].join('\n') + const markdown = [ + 'This is **bold and `code`** mixed.', + 'This is ***bold italic*** combined.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { + strings: { + markdown: frontmatter + '\n' + markdown, + }, + }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Links with emphasis are handled correctly', async () => { + const markdown = [ + 'See [**bold link**](http://example.com) for details.', + 'Check [*italic link*](http://example.com) here.', + 'Visit [`code link`](http://example.com) for info.', + 'Go to [**bold and `code`**](http://example.com) - should be flagged.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(4) + }) + + test('Headers with emphasis are checked', async () => { + const markdown = [ + '# This is **bold** header', + '## This is *italic* header', + '### This is **bold and `code`** header', + '#### This is normal header', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(3) + }) + + test('List items with emphasis are checked', async () => { + const markdown = [ + '- This is **bold** item', + '- This is *italic* item', + '- This is **bold and `code`** item', + '1. This is numbered **bold** item', + '2. This is numbered ***bold italic*** item', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(2) + expect(errors[0].lineNumber).toBe(3) + expect(errors[1].lineNumber).toBe(5) + }) + + test('Escaped emphasis characters are ignored', async () => { + const markdown = [ + 'This has \\*\\*escaped\\*\\* asterisks.', + 'This has \\`escaped\\` backticks.', + 'This has \\_escaped\\_ underscores.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Rule has correct metadata', () => { + expect(multipleEmphasisPatterns.names).toEqual(['GHD050', 'multiple-emphasis-patterns']) + expect(multipleEmphasisPatterns.description).toContain('emphasis') + expect(multipleEmphasisPatterns.tags).toContain('formatting') + expect(multipleEmphasisPatterns.tags).toContain('emphasis') + expect(multipleEmphasisPatterns.tags).toContain('style') + expect(multipleEmphasisPatterns.severity).toBe('warning') + }) + + test('Empty content does not cause errors', async () => { + const markdown = ['', ' ', '\t'].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Single character emphasis is handled', async () => { + const markdown = [ + 'This is **a** single letter.', + 'This is *b* single letter.', + 'This is `c` single letter.', + 'This is **a** and *b* separate.', + 'This is **`x`** nested single chars.', + ].join('\n') + const result = await runRule(multipleEmphasisPatterns, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) // Nested single chars still flagged + expect(errors[0].lineNumber).toBe(5) + }) +}) diff --git a/src/content-linter/tests/unit/note-warning-formatting.js b/src/content-linter/tests/unit/note-warning-formatting.js new file mode 100644 index 000000000000..791abd68e159 --- /dev/null +++ b/src/content-linter/tests/unit/note-warning-formatting.js @@ -0,0 +1,324 @@ +import { describe, expect, test } from 'vitest' + +import { runRule } from '../../lib/init-test.js' +import { noteWarningFormatting } from '../../lib/linting-rules/note-warning-formatting.js' + +describe(noteWarningFormatting.names.join(' - '), () => { + test('Correctly formatted legacy notes pass', async () => { + const markdown = [ + 'This is a paragraph.', + '', + '{% note %}', + '', + '**Note:** This is a properly formatted note.', + '', + '{% endnote %}', + '', + 'Another paragraph follows.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Correctly formatted new-style callouts pass', async () => { + const markdown = [ + 'This is a paragraph.', + '', + '> [!NOTE]', + '> This is a properly formatted callout note.', + '', + 'Another paragraph follows.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Missing line break before legacy note is flagged', async () => { + const markdown = [ + 'This is a paragraph.', + '{% note %}', + '**Note:** This note needs a line break before it.', + '{% endnote %}', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(2) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Add a blank line before {% note %}') + } + }) + + test('Missing line break after legacy note is flagged', async () => { + const markdown = [ + '', + '{% note %}', + '**Note:** This note needs a line break after it.', + '{% endnote %}', + 'This paragraph is too close.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(4) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Add a blank line after {% endnote %}') + } + }) + + test('Missing line break before new-style callout is flagged', async () => { + const markdown = [ + 'This is a paragraph.', + '> [!WARNING]', + '> This warning needs a line break before it.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(2) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Add a blank line before > [!WARNING]') + } + }) + + test('Missing line break after new-style callout is flagged', async () => { + const markdown = [ + '', + '> [!DANGER]', + '> This danger callout needs a line break after it.', + 'This paragraph is too close.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(4) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Add a blank line after > [!DANGER]') + } + }) + + test('Too many bullet points in legacy note is flagged', async () => { + const markdown = [ + '', + '{% note %}', + '', + '**Note:** This note has too many bullets:', + '', + '* First bullet point', + '* Second bullet point', + '* Third bullet point (this should be flagged)', + '', + '{% endnote %}', + '', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(8) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Do not include more than 2 bullet points') + } + }) + + test('Too many bullet points in new-style callout is flagged', async () => { + const markdown = [ + '', + '> [!NOTE]', + '> This callout has too many bullets:', + '>', + '> * First bullet point', + '> * Second bullet point', + '> * Third bullet point (this should be flagged)', + '', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(7) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Do not include more than 2 bullet points') + } + }) + + test('Missing prefix in legacy note is flagged and fixable', async () => { + const markdown = [ + '', + '{% note %}', + '', + 'This note is missing the proper prefix.', + '', + '{% endnote %}', + '', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(4) + if (errors[0].detail) { + expect(errors[0].detail).toContain('should start with **Note:**') + } + expect(errors[0].fixInfo).toBeDefined() + if (errors[0].fixInfo) { + expect(errors[0].fixInfo.insertText).toBe('**Note:** ') + } + }) + + test('Orphaned note prefix outside callout is flagged', async () => { + const markdown = [ + 'This is a regular paragraph.', + '', + '**Note:** This note prefix should be inside a callout block.', + '', + 'Another paragraph.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(3) + if (errors[0].detail) { + expect(errors[0].detail).toContain('should be inside a callout block') + } + }) + + test('Orphaned warning prefix outside callout is flagged', async () => { + const markdown = [ + 'Regular content here.', + '', + '**Warning:** This warning should be in a proper callout.', + '', + 'More content.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(1) + expect(errors[0].lineNumber).toBe(3) + if (errors[0].detail) { + expect(errors[0].detail).toContain('Warning prefix should be inside a callout block') + } + }) + + test('Feedback forms in legacy notes are not flagged for missing prefix', async () => { + const markdown = [ + '', + '{% note %}', + '', + 'Did you successfully complete this task?', + '', + 'Yes', + '', + '{% endnote %}', + '', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + // Should only flag missing line breaks, not missing prefix for feedback forms + expect(errors.length).toBe(0) + }) + + test('Multiple formatting issues are all caught', async () => { + const markdown = [ + 'Paragraph without break.', + '{% note %}', + 'Missing prefix and has bullets:', + '* First bullet', + '* Second bullet', + '* Third bullet (too many)', + '{% endnote %}', + 'No break after note.', + '', + '**Danger:** Orphaned danger prefix.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(5) + + // Check we get all expected error types by line numbers and error count + const errorLines = errors.map((e) => e.lineNumber).sort((a, b) => a - b) + expect(errorLines).toEqual([2, 3, 6, 7, 10]) + + // Verify we have the expected number of different types of errors: + // 1. Missing line break before note (line 2) + // 2. Missing prefix in note content (line 3) + // 3. Too many bullet points (line 6) + // 4. Missing line break after note (line 7) + // 5. Orphaned danger prefix (line 10) + expect(errors.length).toBe(5) + }) + + test('Mixed legacy and new-style callouts work correctly', async () => { + const markdown = [ + 'Some content.', + '', + '{% note %}', + '**Note:** This is a legacy note.', + '{% endnote %}', + '', + 'More content.', + '', + '> [!WARNING]', + '> This is a new-style warning.', + '', + 'Final content.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Different callout types are handled correctly', async () => { + const markdown = [ + '', + '> [!NOTE]', + '> This is a note callout.', + '', + '> [!WARNING]', + '> This is a warning callout.', + '', + '> [!DANGER]', + '> This is a danger callout.', + '', + ].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Autogenerated files are skipped', async () => { + const frontmatter = ['---', 'title: API Reference', 'autogenerated: rest', '---'].join('\n') + const markdown = [ + 'Content.', + '{% note %}', + 'Badly formatted note.', + '{% endnote %}', + 'More content.', + ].join('\n') + const result = await runRule(noteWarningFormatting, { + strings: { + markdown: frontmatter + '\n' + markdown, + }, + }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Empty notes and callouts do not cause errors', async () => { + const markdown = ['', '{% note %}', '', '{% endnote %}', '', '> [!NOTE]', '>', ''].join('\n') + const result = await runRule(noteWarningFormatting, { strings: { markdown } }) + const errors = result.markdown + expect(errors.length).toBe(0) + }) + + test('Warning severity is set correctly', () => { + expect(noteWarningFormatting.severity).toBe('warning') + }) + + test('Rule has correct metadata', () => { + expect(noteWarningFormatting.names).toEqual(['GHD049', 'note-warning-formatting']) + expect(noteWarningFormatting.description).toContain('style guide') + expect(noteWarningFormatting.tags).toContain('callouts') + expect(noteWarningFormatting.tags).toContain('notes') + expect(noteWarningFormatting.tags).toContain('warnings') + }) +}) diff --git a/src/content-render/scripts/reusables-cli/shared.ts b/src/content-render/scripts/reusables-cli/shared.ts index 0c12288d4388..1df03be81a8f 100644 --- a/src/content-render/scripts/reusables-cli/shared.ts +++ b/src/content-render/scripts/reusables-cli/shared.ts @@ -100,14 +100,17 @@ export function resolveReusablePath(reusablePath: string): string { } } +let paths: string[] export function getAllReusablesFilePaths(): string[] { - return filterFiles( + if (paths) return paths! + paths = filterFiles( walk(reusablesDirectory, { includeBasePath: true, directories: false, ignore: ['**/README.md', 'enterprise_deprecation/**'], }), ) + return paths } export function findIndicesOfSubstringInString(substr: string, str: string): number[] { diff --git a/src/fixtures/fixtures/data/ui.yml b/src/fixtures/fixtures/data/ui.yml index d5e6fa9dea6b..0dab040b7da1 100644 --- a/src/fixtures/fixtures/data/ui.yml +++ b/src/fixtures/fixtures/data/ui.yml @@ -50,8 +50,8 @@ search: references: Copilot Sources loading_status_message: Loading Copilot response... done_loading_status_message: Done loading Copilot response - copy_answer: Copy answer - copied_announcement: Copied! + share_answer: Copy answer URL + share_copied_announcement: Copied share URL! thumbs_up: This answer was helpful thumbs_down: This answer was not helpful thumbs_announcement: Thank you for your feedback! @@ -61,6 +61,9 @@ search: query_too_large: Sorry, your question is too long. Please try shortening it and asking again. asked_too_many_times: Sorry, you've asked too many questions in a short time period. Please wait a few minutes and try again. invalid_query: Sorry, I'm unable to answer that question. Please try asking a different question. + response: + copy_code: Copy code to clipboard + copied_code: Copied! failure: general_title: There was an error loading search results. ai_title: There was an error loading Copilot. diff --git a/src/frame/components/ui/MarkdownContent/UnrenderedMarkdownContent.tsx b/src/frame/components/ui/MarkdownContent/UnrenderedMarkdownContent.tsx index 189a0bf1d9e2..2e22e68b9d92 100644 --- a/src/frame/components/ui/MarkdownContent/UnrenderedMarkdownContent.tsx +++ b/src/frame/components/ui/MarkdownContent/UnrenderedMarkdownContent.tsx @@ -1,35 +1,93 @@ +import React from 'react' import ReactMarkdown from 'react-markdown' import type { Components } from 'react-markdown' -import cx from 'classnames' import remarkGfm from 'remark-gfm' +import cx from 'classnames' +import { IconButton } from '@primer/react' +import { CopyIcon, CheckIcon } from '@primer/octicons-react' +import { announce } from '@primer/live-region-element' + +import { useTranslation } from '@/languages/components/useTranslation' +import useCopyClipboard from '@/rest/components/useClipboard' +import { EventType } from '@/events/types' +import { sendEvent } from '@/events/components/events' export type MarkdownContentPropsT = { children: string className?: string openLinksInNewTab?: boolean includeQueryParams?: boolean + codeBlocksCopyable?: boolean eventGroupKey?: string eventGroupId?: string as?: keyof JSX.IntrinsicElements tabIndex?: number } -// For content that comes in a Markdown string -// e.g. a GPT Response - export const UnrenderedMarkdownContent = ({ children, className, openLinksInNewTab = true, includeQueryParams = true, + codeBlocksCopyable = true, eventGroupKey = '', eventGroupId = '', ...restProps }: MarkdownContentPropsT) => { + const { t } = useTranslation('search') // Overrides for ReactMarkdown components const components = {} as Components - // eslint-disable-next-line @typescript-eslint/no-unused-vars - components.a = ({ node, ...props }) => { + if (codeBlocksCopyable) { + // Override the default code block to make multiline code blocks copyable + components.code = ({ ...props }) => { + // get the literal text of the code block + let text = String(props.children) + // If the codeblock is not multiline, return inline code block without copy functionality + if (!text.includes('\n')) { + return {props.children} + } else { + // Otherwise it's multiline and we want to make it copyable + text = text.replace(/\n$/, '') + } + + const [isCopied, copyToClipboard] = useCopyClipboard(text, { + successDuration: 2000, + }) + + return ( +
    + { + await copyToClipboard() + announce(t('search.ai.response.copied_code')) + sendEvent({ + type: EventType.clipboard, + clipboard_operation: 'copy', + eventGroupKey: eventGroupKey, + eventGroupId: eventGroupId, + }) + }} + sx={{ + position: 'absolute', + right: '-.7rem', + top: '-.7rem', + zIndex: 1, + }} + > + {props.children} +
    + ) + } + } + + // Override the default anchor tag to open links in a new tab and include specific query parameters + components.a = ({ ...props }) => { let href = props.href || '' let existingAnchorParams = '' // When we want to include specific query parameters in the URL diff --git a/src/frame/middleware/api.ts b/src/frame/middleware/api.ts index 7992969d2d23..b3fc7278fd1c 100644 --- a/src/frame/middleware/api.ts +++ b/src/frame/middleware/api.ts @@ -65,10 +65,15 @@ router.get('/cookies', (req, res) => { const cookies = { isStaff: Boolean(req.cookies?.staffonly?.startsWith('yes')) || false, } - return res.json(cookies) + res.json(cookies) }) -router.get('*', (req, res) => { +// Handle root /api requests +router.get('/', (req, res) => { + res.status(404).json({ error: `${req.path} not found` }) +}) + +router.get('/*path', (req, res) => { res.status(404).json({ error: `${req.path} not found` }) }) diff --git a/src/frame/middleware/build-info.ts b/src/frame/middleware/build-info.ts index f317f626d5a6..5f4f8e68434e 100644 --- a/src/frame/middleware/build-info.ts +++ b/src/frame/middleware/build-info.ts @@ -8,7 +8,8 @@ export default function buildInfo(req: Request, res: Response) { res.type('text/plain') noCacheControl(res) if (!BUILD_SHA) { - return res.status(404).send('Not known') + res.status(404).send('Not known') + return } - return res.send(`${BUILD_SHA}`) + res.send(`${BUILD_SHA}`) } diff --git a/src/frame/middleware/fast-head.ts b/src/frame/middleware/fast-head.ts index 3685f92b0be7..d64f9c5f2e74 100644 --- a/src/frame/middleware/fast-head.ts +++ b/src/frame/middleware/fast-head.ts @@ -12,7 +12,8 @@ export default function fastHead(req: ExtendedRequest, res: Response, next: Next // this and allow the CDN to hold on to it. defaultCacheControl(res) - return res.status(200).send('') + res.status(200).send('') + return } next() } diff --git a/src/frame/middleware/fastly-cache-test.ts b/src/frame/middleware/fastly-cache-test.ts index f84423f6a3c9..4970fc9fa9be 100644 --- a/src/frame/middleware/fastly-cache-test.ts +++ b/src/frame/middleware/fastly-cache-test.ts @@ -12,7 +12,7 @@ import crypto from 'crypto' const router = express.Router() -router.get('/*', function (req, res) { +router.get('/*path', function (req, res) { // If X-CacheTest-Error is set, simulate the site being down (regardless of URL) if (req.get('X-CacheTest-Error')) { res.status(parseInt(req.get('X-CacheTest-Error') as string)).end() diff --git a/src/frame/middleware/index.ts b/src/frame/middleware/index.ts index 571d52930757..16814695b554 100644 --- a/src/frame/middleware/index.ts +++ b/src/frame/middleware/index.ts @@ -250,7 +250,7 @@ export default function (app: Express) { // Specifically deal with HEAD requests before doing the slower // full page rendering. - app.head('/*', fastHead) + app.head('/*path', fastHead) // *** Preparation for render-page: contextualizers *** app.use(asyncMiddleware(secretScanning)) @@ -282,7 +282,7 @@ export default function (app: Express) { app.use(haltOnDroppedConnection) // *** Rendering, must go almost last *** - app.get('/*', asyncMiddleware(renderPage)) + app.get('/*path', asyncMiddleware(renderPage)) // *** Error handling, must go last *** app.use(handleErrors) diff --git a/src/frame/middleware/mock-va-portal.ts b/src/frame/middleware/mock-va-portal.ts index 4d74287e0c23..dc98dcc4468b 100644 --- a/src/frame/middleware/mock-va-portal.ts +++ b/src/frame/middleware/mock-va-portal.ts @@ -58,7 +58,8 @@ export default function mockVaPortal(req: ExtendedRequest, res: Response, next: if (req.url.startsWith('/iframe/docs_va')) { res.removeHeader('content-security-policy') - return res.status(200).type('text/html').send(HTML) + res.status(200).type('text/html').send(HTML) + return } next() diff --git a/src/frame/middleware/render-page.ts b/src/frame/middleware/render-page.ts index 3a8a8bdd5698..149ba73798be 100644 --- a/src/frame/middleware/render-page.ts +++ b/src/frame/middleware/render-page.ts @@ -108,7 +108,7 @@ export default async function renderPage(req: ExtendedRequest, res: Response) { // It's important to not use `src/pages/404.txt` (or `/404` as the path) // here because then it will set the wrong Cache-Control header. tempReq.url = '/_notfound' - tempReq.path = '/_notfound' + Object.defineProperty(tempReq, 'path', { value: '/_notfound', writable: true }) tempReq.cookies = {} tempReq.headers = {} // By default, since the lookup for a `src/pages/*.tsx` file will work, diff --git a/src/frame/middleware/robots.ts b/src/frame/middleware/robots.ts index bbec96077d4e..b669ee603684 100644 --- a/src/frame/middleware/robots.ts +++ b/src/frame/middleware/robots.ts @@ -23,8 +23,9 @@ export default function robots(req: ExtendedRequest, res: Response, next: NextFu req.hostname === 'docs.github.com' || req.hostname === '127.0.0.1' ) { - return res.send(defaultResponse) + res.send(defaultResponse) + return } - return res.send(disallowAll) + res.send(disallowAll) } diff --git a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json index 8c5f882cfb9a..85db152afe3e 100644 --- a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json @@ -4091,6 +4091,33 @@ "requestPath": "/repos/{owner}/{repo}/attestations/{subject_digest}", "additional-permissions": false, "access": "read" + }, + { + "category": "users", + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "additional-permissions": false, + "access": "write" + }, + { + "category": "users", + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "additional-permissions": false, + "access": "write" + }, + { + "category": "users", + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "additional-permissions": false, + "access": "write" } ] }, @@ -4626,6 +4653,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json index 2aad451595a6..20f3f630bcec 100644 --- a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json @@ -3236,6 +3236,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -5352,6 +5358,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json index 31f13fcf982b..5bcd8e9935f5 100644 --- a/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json @@ -4965,6 +4965,39 @@ "user-to-server": true, "server-to-server": true, "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false } ] }, @@ -5608,6 +5641,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json b/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json index 96508044f1cb..fbda299fa972 100644 --- a/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json @@ -2756,6 +2756,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -4668,6 +4674,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json b/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json index 2aad451595a6..20f3f630bcec 100644 --- a/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json @@ -3236,6 +3236,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -5352,6 +5358,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json index 07777c87926c..8a9e4fd704c3 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json @@ -4664,6 +4664,33 @@ "requestPath": "/repos/{owner}/{repo}/attestations/{subject_digest}", "additional-permissions": false, "access": "read" + }, + { + "category": "users", + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "additional-permissions": false, + "access": "write" + }, + { + "category": "users", + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "additional-permissions": false, + "access": "write" + }, + { + "category": "users", + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "additional-permissions": false, + "access": "write" } ] }, @@ -5199,6 +5226,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json index e25cbdf65ac2..2619591bc141 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json @@ -3462,6 +3462,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -5832,6 +5838,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json index 9cda7790d318..60a4b0c0ef77 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json @@ -5660,6 +5660,39 @@ "user-to-server": true, "server-to-server": true, "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, + { + "category": "users", + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false } ] }, @@ -6303,6 +6336,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json index 2d42aa58f839..562223d92924 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json @@ -2982,6 +2982,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -5118,6 +5124,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json index e25cbdf65ac2..2619591bc141 100644 --- a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json @@ -3462,6 +3462,12 @@ "verb": "delete", "requestPath": "/orgs/{org}" }, + { + "slug": "list-attestations-by-bulk-subject-digests", + "subcategory": "orgs", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list" + }, { "slug": "list-attestations", "subcategory": "orgs", @@ -5832,6 +5838,24 @@ "verb": "get", "requestPath": "/users" }, + { + "slug": "delete-attestations-in-bulk", + "subcategory": "attestations", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request" + }, + { + "slug": "delete-attestations-by-subject-digest", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}" + }, + { + "slug": "delete-attestations-by-id", + "subcategory": "attestations", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}" + }, { "slug": "list-attestations", "subcategory": "attestations", diff --git a/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json index a28b55a6abbf..4ce0ccd0ee76 100644 --- a/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.13-2022-11-28/fine-grained-pat-permissions.json @@ -3420,6 +3420,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json index 81f5a05896fa..ea44c8cfb4e7 100644 --- a/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.13-2022-11-28/server-to-server-permissions.json @@ -4150,6 +4150,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json index 59930f1832de..d20f4d1f083e 100644 --- a/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.14-2022-11-28/fine-grained-pat-permissions.json @@ -3552,6 +3552,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json index 6bc202e0102c..8ee51bad2fac 100644 --- a/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.14-2022-11-28/server-to-server-permissions.json @@ -4310,6 +4310,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json index 5b3e41e63f3c..20e0a8e632d0 100644 --- a/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.15-2022-11-28/fine-grained-pat-permissions.json @@ -3651,6 +3651,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json index 061c90b73fbe..6af75f134a9b 100644 --- a/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.15-2022-11-28/server-to-server-permissions.json @@ -4431,6 +4431,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json index 42936c93099a..5a38242f1300 100644 --- a/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.16-2022-11-28/fine-grained-pat-permissions.json @@ -3711,6 +3711,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json index aee7ff858a3b..e2b53b051dc8 100644 --- a/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.16-2022-11-28/server-to-server-permissions.json @@ -4503,6 +4503,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json index 2a11f7d93420..8ad35f6515ee 100644 --- a/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghes-3.17-2022-11-28/fine-grained-pat-permissions.json @@ -3720,6 +3720,15 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "additional-permissions": false, + "access": "read" + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json index 9dd0de310ea9..646c451b35cd 100644 --- a/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghes-3.17-2022-11-28/server-to-server-permissions.json @@ -4514,6 +4514,17 @@ "title": "Contents", "displayTitle": "Repository permissions for \"Contents\"", "permissions": [ + { + "category": "markdown", + "slug": "render-a-markdown-document", + "subcategory": "markdown", + "verb": "post", + "requestPath": "/markdown", + "access": "read", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "repos", "slug": "list-repository-activities", diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index 52fbf5dad102..4710ee8c4184 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "bf4af7c248a68067f570e103053a01b1c9725a92" + "sha": "23d16a0c0808c8241b1076d63e8d3f2e75cb6632" } \ No newline at end of file diff --git a/src/graphql/data/fpt/changelog.json b/src/graphql/data/fpt/changelog.json index de6de910d43c..cbbee13e43bd 100644 --- a/src/graphql/data/fpt/changelog.json +++ b/src/graphql/data/fpt/changelog.json @@ -1,4 +1,37 @@ [ + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [] + } + ], + "previewChanges": [], + "upcomingChanges": [ + { + "title": "The following changes will be made to the schema:", + "changes": [ + "

    On member ClosedEvent.stateReason:stateReason will be removed. Effective 2025-10-01.

    ", + "

    On member Issue.stateReason:stateReason will be removed. Effective 2025-10-01.

    " + ] + } + ], + "date": "2025-06-17" + }, + { + "schemaChanges": [ + { + "title": "The GraphQL schema includes these changes:", + "changes": [ + "

    Type BotOrUser was removed

    ", + "

    Input field botIds of type '[ID!]was added to input object typeRequestReviewsInput'

    " + ] + } + ], + "previewChanges": [], + "upcomingChanges": [], + "date": "2025-06-13" + }, { "schemaChanges": [ { diff --git a/src/graphql/data/fpt/graphql_upcoming_changes.public.yml b/src/graphql/data/fpt/graphql_upcoming_changes.public.yml index f8fc89d1e662..8a74750e9563 100644 --- a/src/graphql/data/fpt/graphql_upcoming_changes.public.yml +++ b/src/graphql/data/fpt/graphql_upcoming_changes.public.yml @@ -1512,6 +1512,18 @@ upcoming_changes: date: '2025-09-04' criticality: breaking owner: github/issues_advanced_search + - location: ClosedEvent.stateReason + description: '`stateReason` will be removed.' + reason: The state reason for duplicate issue is now returned by default. + date: '2025-10-01T00:00:00+00:00' + criticality: breaking + owner: issues + - location: Issue.stateReason + description: '`stateReason` will be removed.' + reason: The state reason for duplicate issue is now returned by default. + date: '2025-10-01T00:00:00+00:00' + criticality: breaking + owner: issues - location: SecurityAdvisory.cvss description: '`cvss` will be removed. New `cvss_severities` field will now contain diff --git a/src/graphql/data/fpt/schema.docs.graphql b/src/graphql/data/fpt/schema.docs.graphql index 20d2376cb668..61070e97eb39 100644 --- a/src/graphql/data/fpt/schema.docs.graphql +++ b/src/graphql/data/fpt/schema.docs.graphql @@ -2413,11 +2413,6 @@ type Bot implements Actor & Node & UniformResourceLocatable { url: URI! } -""" -Used when either Bot or User are accepted. -""" -union BotOrUser = Bot | User - """ Types which can be actors for `BranchActorAllowance` objects. """ @@ -4646,6 +4641,7 @@ type ClosedEvent implements Node & UniformResourceLocatable { The reason the issue state was changed to closed. """ stateReason: IssueStateReason + @deprecated(reason: "The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.") """ The HTTP URL for this closed event. @@ -6469,7 +6465,8 @@ input ContributionOrder { } """ -A contributions collection aggregates contributions such as opened issues and commits created by a user. +A collection of contributions made by a user, including opened issues, commits, and pull requests. +Contributions in private and internal repositories are only included with the optional read:user scope. """ type ContributionsCollection { """ @@ -19074,6 +19071,7 @@ type Issue implements Assignable & Closable & Comment & Deletable & Labelable & """ enableDuplicate: Boolean = false ): IssueStateReason + @deprecated(reason: "The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.") """ A list of sub-issues associated with the Issue. @@ -19875,8 +19873,7 @@ enum IssueStateReason { COMPLETED """ - An issue that has been closed as a duplicate. To retrieve this value, set - `(enableDuplicate: true)` when querying the stateReason field. + An issue that has been closed as a duplicate. """ DUPLICATE @@ -53600,6 +53597,11 @@ type ReprioritizeSubIssuePayload { Autogenerated input type of RequestReviews """ input RequestReviewsInput { + """ + The Node IDs of the bot to request. + """ + botIds: [ID!] @possibleTypes(concreteTypes: ["Bot"]) + """ A unique identifier for the client performing the mutation. """ @@ -53623,7 +53625,7 @@ input RequestReviewsInput { """ The Node IDs of the user to request. """ - userIds: [ID!] @possibleTypes(concreteTypes: ["Bot", "User"]) + userIds: [ID!] @possibleTypes(concreteTypes: ["User"]) } """ diff --git a/src/graphql/data/fpt/schema.json b/src/graphql/data/fpt/schema.json index a122c397aadc..d10420bd042a 100644 --- a/src/graphql/data/fpt/schema.json +++ b/src/graphql/data/fpt/schema.json @@ -13830,7 +13830,9 @@ "type": "IssueStateReason", "id": "issuestatereason", "kind": "enums", - "href": "/graphql/reference/enums#issuestatereason" + "href": "/graphql/reference/enums#issuestatereason", + "isDeprecated": true, + "deprecationReason": "

    The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.

    " }, { "name": "url", @@ -16179,7 +16181,7 @@ "kind": "objects", "id": "contributionscollection", "href": "/graphql/reference/objects#contributionscollection", - "description": "

    A contributions collection aggregates contributions such as opened issues and commits created by a user.

    ", + "description": "

    A collection of contributions made by a user, including opened issues, commits, and pull requests.\nContributions in private and internal repositories are only included with the optional read:user scope.

    ", "fields": [ { "name": "commitContributionsByRepository", @@ -29819,7 +29821,9 @@ "href": "/graphql/reference/scalars#boolean" } } - ] + ], + "isDeprecated": true, + "deprecationReason": "

    The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.

    " }, { "name": "subIssues", @@ -89326,7 +89330,7 @@ }, { "name": "DUPLICATE", - "description": "

    An issue that has been closed as a duplicate. To retrieve this value, set\n(enableDuplicate: true) when querying the stateReason field.

    " + "description": "

    An issue that has been closed as a duplicate.

    " }, { "name": "NOT_PLANNED", @@ -94746,25 +94750,6 @@ } ] }, - { - "name": "BotOrUser", - "kind": "unions", - "id": "botoruser", - "href": "/graphql/reference/unions#botoruser", - "description": "

    Used when either Bot or User are accepted.

    ", - "possibleTypes": [ - { - "name": "Bot", - "id": "bot", - "href": "/graphql/reference/objects#bot" - }, - { - "name": "User", - "id": "user", - "href": "/graphql/reference/objects#user" - } - ] - }, { "name": "BranchActorAllowanceActor", "kind": "unions", @@ -106047,6 +106032,15 @@ "href": "/graphql/reference/input-objects#requestreviewsinput", "description": "

    Autogenerated input type of RequestReviews.

    ", "inputFields": [ + { + "name": "botIds", + "description": "

    The Node IDs of the bot to request.

    ", + "type": "[ID!]", + "id": "id", + "kind": "scalars", + "href": "/graphql/reference/scalars#id", + "isDeprecated": false + }, { "name": "clientMutationId", "description": "

    A unique identifier for the client performing the mutation.

    ", diff --git a/src/graphql/data/fpt/upcoming-changes.json b/src/graphql/data/fpt/upcoming-changes.json index 5b69c55304b0..22a7637d8dd8 100644 --- a/src/graphql/data/fpt/upcoming-changes.json +++ b/src/graphql/data/fpt/upcoming-changes.json @@ -8881,6 +8881,22 @@ "date": "2025-10-01", "criticality": "breaking", "owner": "github/advisory-database" + }, + { + "location": "Issue.stateReason", + "description": "

    stateReason will be removed.

    ", + "reason": "

    The state reason for duplicate issue is now returned by default.

    ", + "date": "2025-10-01", + "criticality": "breaking", + "owner": "issues" + }, + { + "location": "ClosedEvent.stateReason", + "description": "

    stateReason will be removed.

    ", + "reason": "

    The state reason for duplicate issue is now returned by default.

    ", + "date": "2025-10-01", + "criticality": "breaking", + "owner": "issues" } ], "2025-09-04": [ diff --git a/src/graphql/data/ghec/graphql_upcoming_changes.public.yml b/src/graphql/data/ghec/graphql_upcoming_changes.public.yml index f8fc89d1e662..8a74750e9563 100644 --- a/src/graphql/data/ghec/graphql_upcoming_changes.public.yml +++ b/src/graphql/data/ghec/graphql_upcoming_changes.public.yml @@ -1512,6 +1512,18 @@ upcoming_changes: date: '2025-09-04' criticality: breaking owner: github/issues_advanced_search + - location: ClosedEvent.stateReason + description: '`stateReason` will be removed.' + reason: The state reason for duplicate issue is now returned by default. + date: '2025-10-01T00:00:00+00:00' + criticality: breaking + owner: issues + - location: Issue.stateReason + description: '`stateReason` will be removed.' + reason: The state reason for duplicate issue is now returned by default. + date: '2025-10-01T00:00:00+00:00' + criticality: breaking + owner: issues - location: SecurityAdvisory.cvss description: '`cvss` will be removed. New `cvss_severities` field will now contain diff --git a/src/graphql/data/ghec/schema.docs.graphql b/src/graphql/data/ghec/schema.docs.graphql index 20d2376cb668..61070e97eb39 100644 --- a/src/graphql/data/ghec/schema.docs.graphql +++ b/src/graphql/data/ghec/schema.docs.graphql @@ -2413,11 +2413,6 @@ type Bot implements Actor & Node & UniformResourceLocatable { url: URI! } -""" -Used when either Bot or User are accepted. -""" -union BotOrUser = Bot | User - """ Types which can be actors for `BranchActorAllowance` objects. """ @@ -4646,6 +4641,7 @@ type ClosedEvent implements Node & UniformResourceLocatable { The reason the issue state was changed to closed. """ stateReason: IssueStateReason + @deprecated(reason: "The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.") """ The HTTP URL for this closed event. @@ -6469,7 +6465,8 @@ input ContributionOrder { } """ -A contributions collection aggregates contributions such as opened issues and commits created by a user. +A collection of contributions made by a user, including opened issues, commits, and pull requests. +Contributions in private and internal repositories are only included with the optional read:user scope. """ type ContributionsCollection { """ @@ -19074,6 +19071,7 @@ type Issue implements Assignable & Closable & Comment & Deletable & Labelable & """ enableDuplicate: Boolean = false ): IssueStateReason + @deprecated(reason: "The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.") """ A list of sub-issues associated with the Issue. @@ -19875,8 +19873,7 @@ enum IssueStateReason { COMPLETED """ - An issue that has been closed as a duplicate. To retrieve this value, set - `(enableDuplicate: true)` when querying the stateReason field. + An issue that has been closed as a duplicate. """ DUPLICATE @@ -53600,6 +53597,11 @@ type ReprioritizeSubIssuePayload { Autogenerated input type of RequestReviews """ input RequestReviewsInput { + """ + The Node IDs of the bot to request. + """ + botIds: [ID!] @possibleTypes(concreteTypes: ["Bot"]) + """ A unique identifier for the client performing the mutation. """ @@ -53623,7 +53625,7 @@ input RequestReviewsInput { """ The Node IDs of the user to request. """ - userIds: [ID!] @possibleTypes(concreteTypes: ["Bot", "User"]) + userIds: [ID!] @possibleTypes(concreteTypes: ["User"]) } """ diff --git a/src/graphql/data/ghec/schema.json b/src/graphql/data/ghec/schema.json index a122c397aadc..d10420bd042a 100644 --- a/src/graphql/data/ghec/schema.json +++ b/src/graphql/data/ghec/schema.json @@ -13830,7 +13830,9 @@ "type": "IssueStateReason", "id": "issuestatereason", "kind": "enums", - "href": "/graphql/reference/enums#issuestatereason" + "href": "/graphql/reference/enums#issuestatereason", + "isDeprecated": true, + "deprecationReason": "

    The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.

    " }, { "name": "url", @@ -16179,7 +16181,7 @@ "kind": "objects", "id": "contributionscollection", "href": "/graphql/reference/objects#contributionscollection", - "description": "

    A contributions collection aggregates contributions such as opened issues and commits created by a user.

    ", + "description": "

    A collection of contributions made by a user, including opened issues, commits, and pull requests.\nContributions in private and internal repositories are only included with the optional read:user scope.

    ", "fields": [ { "name": "commitContributionsByRepository", @@ -29819,7 +29821,9 @@ "href": "/graphql/reference/scalars#boolean" } } - ] + ], + "isDeprecated": true, + "deprecationReason": "

    The state reason for duplicate issue is now returned by default. Removal on 2025-10-01 UTC.

    " }, { "name": "subIssues", @@ -89326,7 +89330,7 @@ }, { "name": "DUPLICATE", - "description": "

    An issue that has been closed as a duplicate. To retrieve this value, set\n(enableDuplicate: true) when querying the stateReason field.

    " + "description": "

    An issue that has been closed as a duplicate.

    " }, { "name": "NOT_PLANNED", @@ -94746,25 +94750,6 @@ } ] }, - { - "name": "BotOrUser", - "kind": "unions", - "id": "botoruser", - "href": "/graphql/reference/unions#botoruser", - "description": "

    Used when either Bot or User are accepted.

    ", - "possibleTypes": [ - { - "name": "Bot", - "id": "bot", - "href": "/graphql/reference/objects#bot" - }, - { - "name": "User", - "id": "user", - "href": "/graphql/reference/objects#user" - } - ] - }, { "name": "BranchActorAllowanceActor", "kind": "unions", @@ -106047,6 +106032,15 @@ "href": "/graphql/reference/input-objects#requestreviewsinput", "description": "

    Autogenerated input type of RequestReviews.

    ", "inputFields": [ + { + "name": "botIds", + "description": "

    The Node IDs of the bot to request.

    ", + "type": "[ID!]", + "id": "id", + "kind": "scalars", + "href": "/graphql/reference/scalars#id", + "isDeprecated": false + }, { "name": "clientMutationId", "description": "

    A unique identifier for the client performing the mutation.

    ", diff --git a/src/graphql/data/ghec/upcoming-changes.json b/src/graphql/data/ghec/upcoming-changes.json index 5b69c55304b0..22a7637d8dd8 100644 --- a/src/graphql/data/ghec/upcoming-changes.json +++ b/src/graphql/data/ghec/upcoming-changes.json @@ -8881,6 +8881,22 @@ "date": "2025-10-01", "criticality": "breaking", "owner": "github/advisory-database" + }, + { + "location": "Issue.stateReason", + "description": "

    stateReason will be removed.

    ", + "reason": "

    The state reason for duplicate issue is now returned by default.

    ", + "date": "2025-10-01", + "criticality": "breaking", + "owner": "issues" + }, + { + "location": "ClosedEvent.stateReason", + "description": "

    stateReason will be removed.

    ", + "reason": "

    The state reason for duplicate issue is now returned by default.

    ", + "date": "2025-10-01", + "criticality": "breaking", + "owner": "issues" } ], "2025-09-04": [ diff --git a/src/links/lib/excluded-links.yml b/src/links/lib/excluded-links.yml index f0000e8836b7..6002d3d16329 100644 --- a/src/links/lib/excluded-links.yml +++ b/src/links/lib/excluded-links.yml @@ -99,3 +99,4 @@ - is: https://www.tpgi.com/color-contrast-checker/ - startsWith: https://github.com/githubcustomers/enterprise-preview-program - is: https://aka.ms/copiloteclipse +- is: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1375604 diff --git a/src/observability/middleware/handle-errors.ts b/src/observability/middleware/handle-errors.ts index 9351dcb446e0..5ff060986f57 100644 --- a/src/observability/middleware/handle-errors.ts +++ b/src/observability/middleware/handle-errors.ts @@ -1,4 +1,4 @@ -import type { NextFunction, Response } from 'express' +import type { NextFunction, Response, ErrorRequestHandler } from 'express' import FailBot from '../lib/failbot.js' import { nextApp } from '@/frame/middleware/next.js' @@ -53,7 +53,7 @@ function timedOut(req: ExtendedRequest) { statsd.increment('middleware.timeout', 1, incrementTags) } -export default async function handleError( +const handleError: ErrorRequestHandler = async function handleError( error: ErrorWithCode | number, req: ExtendedRequest, res: Response, @@ -93,7 +93,8 @@ export default async function handleError( } // We MUST delegate to the default Express error handler - return next(error) + next(error) + return } if (!req.context) { @@ -103,7 +104,8 @@ export default async function handleError( // Special handling for when a middleware calls `next(404)` if (error === 404) { // Note that if this fails, it will swallow that error. - return nextApp.render404(req, res) + nextApp.render404(req, res) + return } if (typeof error === 'number') { throw new Error("Don't use next(xxx) where xxx is any other number than 404") @@ -117,7 +119,8 @@ export default async function handleError( // If the error contains a status code, just send that back. This is usually // from a middleware like `express.json()`. if (error.statusCode) { - return res.sendStatus(error.statusCode) + res.sendStatus(error.statusCode) + return } res.statusCode = 500 @@ -129,7 +132,8 @@ export default async function handleError( // it's easier to just see the full stack trace in the console // and in the client. if (process.env.NODE_ENV === 'development') { - return next(error) + next(error) + return } else { nextApp.renderError(error, req, res, req.path) @@ -138,6 +142,9 @@ export default async function handleError( } } catch (error) { console.error('An error occurred in the error handling middleware!', error) - return next(error) + next(error) + return } } + +export default handleError diff --git a/src/rest/data/fpt-2022-11-28/schema.json b/src/rest/data/fpt-2022-11-28/schema.json index 539840accc0e..d2e47946388c 100644 --- a/src/rest/data/fpt-2022-11-28/schema.json +++ b/src/rest/data/fpt-2022-11-28/schema.json @@ -1035,13 +1035,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

    \n

    OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the total GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

    \n

    OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -1940,8 +1940,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -2303,8 +2302,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3150,8 +3148,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3291,13 +3288,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a GitHub-hosted runner configured in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a GitHub-hosted runner configured in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -3482,8 +3479,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3782,8 +3778,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -8429,6 +8424,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -10628,13 +10628,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific self-hosted runner group for an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific self-hosted runner group for an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -11109,8 +11109,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -12387,6 +12386,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -12445,13 +12449,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists the repositories with access to a self-hosted runner group configured in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists the repositories with access to a self-hosted runner group configured in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -22210,6 +22214,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -27507,6 +27516,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -28355,6 +28369,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -30335,6 +30354,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -31183,6 +31207,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -33708,6 +33737,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -34556,6 +34590,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -39052,6 +39091,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -39900,6 +39944,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -71303,13 +71352,13 @@ } ], "previews": [], + "descriptionHTML": "

    These are events that you've received by watching repositories and following users. If you are authenticated as the\ngiven user, you will see private events. Otherwise, you'll only see public events.

    \n

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    These are events that you've received by watching repositories and following users. If you are authenticated as the\ngiven user, you will see private events. Otherwise, you'll only see public events.

    \n

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " + ] }, { "serverUrl": "https://api.github.com", @@ -76452,6 +76501,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -77603,6 +77657,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -79182,6 +79241,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -79298,13 +79362,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all notifications for the current user in the specified repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all notifications for the current user in the specified repository.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -86542,6 +86606,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -87599,6 +87668,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -103302,6 +103376,7 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all plans that are part of your GitHub Marketplace listing.

    \n

    GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -103315,8 +103390,7 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ], - "descriptionHTML": "

    Lists all plans that are part of your GitHub Marketplace listing.

    \n

    GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -148268,6 +148342,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -150190,6 +150269,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -151553,6 +151637,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -153389,6 +153478,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -155383,6 +155477,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -180460,6 +180559,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -182339,6 +182443,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -184077,6 +184186,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -186564,6 +186678,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -188303,6 +188422,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -190409,6 +190533,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -192298,6 +192427,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -194033,6 +194167,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -195825,6 +195964,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -197640,6 +197784,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -205297,6 +205446,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -207101,6 +207255,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -209492,6 +209651,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -211504,6 +211668,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -213907,6 +214076,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -215823,6 +215997,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -218426,6 +218605,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -220184,6 +220368,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -222074,6 +222263,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -223551,6 +223745,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -225073,6 +225272,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -238515,6 +238719,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -241384,6 +241593,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -241397,6 +241609,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -241438,7 +241656,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -242578,6 +242795,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -242591,6 +242811,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -242632,7 +242858,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -249992,6 +250217,29 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "in": "query", + "description": "

    The page number of results to fetch.

    ", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "per_page", + "in": "query", + "description": "

    Number of results per page.

    ", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 30 + } } ], "bodyParameters": [], @@ -250118,554 +250366,561 @@ "accessible_repositories": { "type": "array", "items": { - "title": "Simple Repository", - "description": "A GitHub repository.", - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "A unique identifier of the repository.", - "examples": [ - 1296269 - ] - }, - "node_id": { - "type": "string", - "description": "The GraphQL identifier of the repository.", - "examples": [ - "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - ] - }, - "name": { - "type": "string", - "description": "The name of the repository.", - "examples": [ - "Hello-World" - ] - }, - "full_name": { - "type": "string", - "description": "The full, globally unique, name of the repository.", - "examples": [ - "octocat/Hello-World" - ] + "anyOf": [ + { + "type": "null" }, - "owner": { - "title": "Simple User", - "description": "A GitHub user.", + { + "title": "Simple Repository", + "description": "A GitHub repository.", "type": "object", "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "A unique identifier of the repository.", + "examples": [ + 1296269 + ] + }, + "node_id": { + "type": "string", + "description": "The GraphQL identifier of the repository.", + "examples": [ + "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" + ] + }, "name": { - "type": [ - "string", - "null" + "type": "string", + "description": "The name of the repository.", + "examples": [ + "Hello-World" ] }, - "email": { + "full_name": { + "type": "string", + "description": "The full, globally unique, name of the repository.", + "examples": [ + "octocat/Hello-World" + ] + }, + "owner": { + "title": "Simple User", + "description": "A GitHub user.", + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ] + }, + "email": { + "type": [ + "string", + "null" + ] + }, + "login": { + "type": "string", + "examples": [ + "octocat" + ] + }, + "id": { + "type": "integer", + "format": "int64", + "examples": [ + 1 + ] + }, + "node_id": { + "type": "string", + "examples": [ + "MDQ6VXNlcjE=" + ] + }, + "avatar_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://github.com/images/error/octocat_happy.gif" + ] + }, + "gravatar_id": { + "type": [ + "string", + "null" + ], + "examples": [ + "41d064eb2195891e12d0413f63227ea7" + ] + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat" + ] + }, + "html_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://github.com/octocat" + ] + }, + "followers_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/followers" + ] + }, + "following_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/following{/other_user}" + ] + }, + "gists_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/gists{/gist_id}" + ] + }, + "starred_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/starred{/owner}{/repo}" + ] + }, + "subscriptions_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/subscriptions" + ] + }, + "organizations_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/orgs" + ] + }, + "repos_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/repos" + ] + }, + "events_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/events{/privacy}" + ] + }, + "received_events_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/received_events" + ] + }, + "type": { + "type": "string", + "examples": [ + "User" + ] + }, + "site_admin": { + "type": "boolean" + }, + "starred_at": { + "type": "string", + "examples": [ + "\"2020-07-09T00:17:55Z\"" + ] + }, + "user_view_type": { + "type": "string", + "examples": [ + "public" + ] + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ] + }, + "private": { + "type": "boolean", + "description": "Whether the repository is private." + }, + "html_url": { + "type": "string", + "format": "uri", + "description": "The URL to view the repository on GitHub.com.", + "examples": [ + "https://github.com/octocat/Hello-World" + ] + }, + "description": { "type": [ "string", "null" + ], + "description": "The repository description.", + "examples": [ + "This your first repo!" ] }, - "login": { + "fork": { + "type": "boolean", + "description": "Whether the repository is a fork." + }, + "url": { "type": "string", + "format": "uri", + "description": "The URL to get more information about the repository from the GitHub API.", "examples": [ - "octocat" + "https://api.github.com/repos/octocat/Hello-World" ] }, - "id": { - "type": "integer", - "format": "int64", + "archive_url": { + "type": "string", + "description": "A template for the API URL to download the repository as an archive.", "examples": [ - 1 + "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" ] }, - "node_id": { + "assignees_url": { "type": "string", + "description": "A template for the API URL to list the available assignees for issues in the repository.", "examples": [ - "MDQ6VXNlcjE=" + "https://api.github.com/repos/octocat/Hello-World/assignees{/user}" ] }, - "avatar_url": { + "blobs_url": { + "type": "string", + "description": "A template for the API URL to create or retrieve a raw Git blob in the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" + ] + }, + "branches_url": { + "type": "string", + "description": "A template for the API URL to get information about branches in the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/branches{/branch}" + ] + }, + "collaborators_url": { + "type": "string", + "description": "A template for the API URL to get information about collaborators of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" + ] + }, + "comments_url": { + "type": "string", + "description": "A template for the API URL to get information about comments on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/comments{/number}" + ] + }, + "commits_url": { + "type": "string", + "description": "A template for the API URL to get information about commits on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/commits{/sha}" + ] + }, + "compare_url": { + "type": "string", + "description": "A template for the API URL to compare two commits or refs.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" + ] + }, + "contents_url": { + "type": "string", + "description": "A template for the API URL to get the contents of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/contents/{+path}" + ] + }, + "contributors_url": { "type": "string", "format": "uri", + "description": "A template for the API URL to list the contributors to the repository.", "examples": [ - "https://github.com/images/error/octocat_happy.gif" + "https://api.github.com/repos/octocat/Hello-World/contributors" ] }, - "gravatar_id": { - "type": [ - "string", - "null" - ], + "deployments_url": { + "type": "string", + "format": "uri", + "description": "The API URL to list the deployments of the repository.", "examples": [ - "41d064eb2195891e12d0413f63227ea7" + "https://api.github.com/repos/octocat/Hello-World/deployments" ] }, - "url": { + "downloads_url": { "type": "string", "format": "uri", + "description": "The API URL to list the downloads on the repository.", "examples": [ - "https://api.github.com/users/octocat" + "https://api.github.com/repos/octocat/Hello-World/downloads" ] }, - "html_url": { + "events_url": { "type": "string", "format": "uri", + "description": "The API URL to list the events of the repository.", "examples": [ - "https://github.com/octocat" + "https://api.github.com/repos/octocat/Hello-World/events" ] }, - "followers_url": { + "forks_url": { "type": "string", "format": "uri", + "description": "The API URL to list the forks of the repository.", "examples": [ - "https://api.github.com/users/octocat/followers" + "https://api.github.com/repos/octocat/Hello-World/forks" ] }, - "following_url": { + "git_commits_url": { "type": "string", + "description": "A template for the API URL to get information about Git commits of the repository.", "examples": [ - "https://api.github.com/users/octocat/following{/other_user}" + "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" ] }, - "gists_url": { + "git_refs_url": { "type": "string", + "description": "A template for the API URL to get information about Git refs of the repository.", "examples": [ - "https://api.github.com/users/octocat/gists{/gist_id}" + "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" ] }, - "starred_url": { + "git_tags_url": { "type": "string", + "description": "A template for the API URL to get information about Git tags of the repository.", "examples": [ - "https://api.github.com/users/octocat/starred{/owner}{/repo}" + "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" ] }, - "subscriptions_url": { + "issue_comment_url": { + "type": "string", + "description": "A template for the API URL to get information about issue comments on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" + ] + }, + "issue_events_url": { + "type": "string", + "description": "A template for the API URL to get information about issue events on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}" + ] + }, + "issues_url": { + "type": "string", + "description": "A template for the API URL to get information about issues on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues{/number}" + ] + }, + "keys_url": { + "type": "string", + "description": "A template for the API URL to get information about deploy keys on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}" + ] + }, + "labels_url": { + "type": "string", + "description": "A template for the API URL to get information about labels of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/labels{/name}" + ] + }, + "languages_url": { "type": "string", "format": "uri", + "description": "The API URL to get information about the languages of the repository.", "examples": [ - "https://api.github.com/users/octocat/subscriptions" + "https://api.github.com/repos/octocat/Hello-World/languages" ] }, - "organizations_url": { + "merges_url": { "type": "string", "format": "uri", + "description": "The API URL to merge branches in the repository.", "examples": [ - "https://api.github.com/users/octocat/orgs" + "https://api.github.com/repos/octocat/Hello-World/merges" ] }, - "repos_url": { + "milestones_url": { + "type": "string", + "description": "A template for the API URL to get information about milestones of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/milestones{/number}" + ] + }, + "notifications_url": { + "type": "string", + "description": "A template for the API URL to get information about notifications on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" + ] + }, + "pulls_url": { + "type": "string", + "description": "A template for the API URL to get information about pull requests on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls{/number}" + ] + }, + "releases_url": { + "type": "string", + "description": "A template for the API URL to get information about releases on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/releases{/id}" + ] + }, + "stargazers_url": { "type": "string", "format": "uri", + "description": "The API URL to list the stargazers on the repository.", "examples": [ - "https://api.github.com/users/octocat/repos" + "https://api.github.com/repos/octocat/Hello-World/stargazers" ] }, - "events_url": { + "statuses_url": { "type": "string", + "description": "A template for the API URL to get information about statuses of a commit.", "examples": [ - "https://api.github.com/users/octocat/events{/privacy}" + "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}" ] }, - "received_events_url": { + "subscribers_url": { "type": "string", "format": "uri", + "description": "The API URL to list the subscribers on the repository.", "examples": [ - "https://api.github.com/users/octocat/received_events" + "https://api.github.com/repos/octocat/Hello-World/subscribers" ] }, - "type": { + "subscription_url": { "type": "string", + "format": "uri", + "description": "The API URL to subscribe to notifications for this repository.", "examples": [ - "User" + "https://api.github.com/repos/octocat/Hello-World/subscription" ] }, - "site_admin": { - "type": "boolean" + "tags_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get information about tags on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/tags" + ] }, - "starred_at": { + "teams_url": { "type": "string", + "format": "uri", + "description": "The API URL to list the teams on the repository.", "examples": [ - "\"2020-07-09T00:17:55Z\"" + "https://api.github.com/repos/octocat/Hello-World/teams" ] }, - "user_view_type": { + "trees_url": { "type": "string", + "description": "A template for the API URL to create or retrieve a raw Git tree of the repository.", "examples": [ - "public" + "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" + ] + }, + "hooks_url": { + "type": "string", + "format": "uri", + "description": "The API URL to list the hooks on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/hooks" ] } }, "required": [ - "avatar_url", + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", "html_url", "id", "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", "url" ] - }, - "private": { - "type": "boolean", - "description": "Whether the repository is private." - }, - "html_url": { - "type": "string", - "format": "uri", - "description": "The URL to view the repository on GitHub.com.", - "examples": [ - "https://github.com/octocat/Hello-World" - ] - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "The repository description.", - "examples": [ - "This your first repo!" - ] - }, - "fork": { - "type": "boolean", - "description": "Whether the repository is a fork." - }, - "url": { - "type": "string", - "format": "uri", - "description": "The URL to get more information about the repository from the GitHub API.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World" - ] - }, - "archive_url": { - "type": "string", - "description": "A template for the API URL to download the repository as an archive.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - ] - }, - "assignees_url": { - "type": "string", - "description": "A template for the API URL to list the available assignees for issues in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/assignees{/user}" - ] - }, - "blobs_url": { - "type": "string", - "description": "A template for the API URL to create or retrieve a raw Git blob in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - ] - }, - "branches_url": { - "type": "string", - "description": "A template for the API URL to get information about branches in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/branches{/branch}" - ] - }, - "collaborators_url": { - "type": "string", - "description": "A template for the API URL to get information about collaborators of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - ] - }, - "comments_url": { - "type": "string", - "description": "A template for the API URL to get information about comments on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/comments{/number}" - ] - }, - "commits_url": { - "type": "string", - "description": "A template for the API URL to get information about commits on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/commits{/sha}" - ] - }, - "compare_url": { - "type": "string", - "description": "A template for the API URL to compare two commits or refs.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - ] - }, - "contents_url": { - "type": "string", - "description": "A template for the API URL to get the contents of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/contents/{+path}" - ] - }, - "contributors_url": { - "type": "string", - "format": "uri", - "description": "A template for the API URL to list the contributors to the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/contributors" - ] - }, - "deployments_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the deployments of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/deployments" - ] - }, - "downloads_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the downloads on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/downloads" - ] - }, - "events_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the events of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/events" - ] - }, - "forks_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the forks of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/forks" - ] - }, - "git_commits_url": { - "type": "string", - "description": "A template for the API URL to get information about Git commits of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - ] - }, - "git_refs_url": { - "type": "string", - "description": "A template for the API URL to get information about Git refs of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - ] - }, - "git_tags_url": { - "type": "string", - "description": "A template for the API URL to get information about Git tags of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - ] - }, - "issue_comment_url": { - "type": "string", - "description": "A template for the API URL to get information about issue comments on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - ] - }, - "issue_events_url": { - "type": "string", - "description": "A template for the API URL to get information about issue events on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - ] - }, - "issues_url": { - "type": "string", - "description": "A template for the API URL to get information about issues on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues{/number}" - ] - }, - "keys_url": { - "type": "string", - "description": "A template for the API URL to get information about deploy keys on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - ] - }, - "labels_url": { - "type": "string", - "description": "A template for the API URL to get information about labels of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/labels{/name}" - ] - }, - "languages_url": { - "type": "string", - "format": "uri", - "description": "The API URL to get information about the languages of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/languages" - ] - }, - "merges_url": { - "type": "string", - "format": "uri", - "description": "The API URL to merge branches in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/merges" - ] - }, - "milestones_url": { - "type": "string", - "description": "A template for the API URL to get information about milestones of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/milestones{/number}" - ] - }, - "notifications_url": { - "type": "string", - "description": "A template for the API URL to get information about notifications on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - ] - }, - "pulls_url": { - "type": "string", - "description": "A template for the API URL to get information about pull requests on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/pulls{/number}" - ] - }, - "releases_url": { - "type": "string", - "description": "A template for the API URL to get information about releases on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/releases{/id}" - ] - }, - "stargazers_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the stargazers on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/stargazers" - ] - }, - "statuses_url": { - "type": "string", - "description": "A template for the API URL to get information about statuses of a commit.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - ] - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the subscribers on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/subscribers" - ] - }, - "subscription_url": { - "type": "string", - "format": "uri", - "description": "The API URL to subscribe to notifications for this repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/subscription" - ] - }, - "tags_url": { - "type": "string", - "format": "uri", - "description": "The API URL to get information about tags on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/tags" - ] - }, - "teams_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the teams on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/teams" - ] - }, - "trees_url": { - "type": "string", - "description": "A template for the API URL to create or retrieve a raw Git tree of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - ] - }, - "hooks_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the hooks on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/hooks" - ] } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url" ] } } @@ -250710,7 +250965,20 @@ } } ], - "bodyParameters": [], + "bodyParameters": [ + { + "type": "array of integers", + "name": "repository_ids_to_add", + "in": "body", + "description": "

    List of repository IDs to add.

    " + }, + { + "type": "array of integers", + "name": "repository_ids_to_remove", + "in": "body", + "description": "

    List of repository IDs to remove.

    " + } + ], "progAccess": { "userToServerRest": true, "serverToServer": true, @@ -250739,7 +251007,7 @@ } ], "previews": [], - "descriptionHTML": "

    Note

    \n

    \nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.

    \n
    ", + "descriptionHTML": "

    Note

    \n

    \nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.

    \n
    \n

    Example request body:

    \n
    {\n  \"repository_ids_to_add\": [123, 456],\n  \"repository_ids_to_remove\": [789]\n}\n
    ", "statusCodes": [ { "httpStatusCode": "204", @@ -251322,6 +251590,7 @@ } ], "previews": [], + "descriptionHTML": "

    Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", @@ -251331,8 +251600,7 @@ "httpStatusCode": "204", "description": "

    Response when updating a secret

    " } - ], - "descriptionHTML": "

    Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -252352,6 +252620,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -372227,7 +372500,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -372254,7 +372531,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -372994,13 +373271,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get the octocat as ASCII art

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get the octocat as ASCII art

    " + ] }, { "serverUrl": "https://api.github.com", @@ -374755,6 +375032,7 @@ } ], "previews": [], + "descriptionHTML": "

    Get the top 10 popular contents over the last 14 days.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -374764,8 +375042,7 @@ "httpStatusCode": "403", "description": "

    Forbidden

    " } - ], - "descriptionHTML": "

    Get the top 10 popular contents over the last 14 days.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -380769,6 +381046,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -388332,6 +388614,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -389456,6 +389743,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -389465,6 +389753,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -389738,6 +390034,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -389798,6 +390104,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -390244,6 +390598,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -390253,6 +390608,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -390526,6 +390889,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -390586,6 +390959,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -390805,6 +391226,304 @@ } ] }, + { + "serverUrl": "https://api.github.com", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list", + "title": "List attestations by bulk subject digests", + "category": "orgs", + "subcategory": "orgs", + "parameters": [ + { + "name": "per_page", + "description": "

    The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "before", + "description": "

    A cursor, as given in the Link header. If specified, the query only searches for results before this cursor. For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "after", + "description": "

    A cursor, as given in the Link header. If specified, the query only searches for results after this cursor. For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org", + "description": "

    The organization name. The name is not case sensitive.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "name": "subject_digests", + "in": "body", + "description": "

    List of subject digests to fetch attestations for.

    ", + "isRequired": true + }, + { + "type": "string", + "name": "predicate_type", + "in": "body", + "description": "

    Optional filter for fetching attestations with a given predicate type.\nThis option accepts provenance, sbom, or freeform text for custom predicate types.

    " + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [], + "allowPermissionlessAccess": true, + "allowsPublicRead": true + }, + "codeExamples": [ + { + "key": "default", + "request": { + "contentType": "application/json", + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "subject_digests": [ + "sha256:abc123", + "sha512:def456" + ] + }, + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

    Response

    ", + "example": { + "attestations_subject_digests": [ + { + "sha256:abc": [ + { + "bundle": { + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "tlogEntries": [ + { + "logIndex": "97913980", + "logId": { + "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" + }, + "kindVersion": { + "kind": "dsse", + "version": "0.0.1" + }, + "integratedTime": "1716998992", + "inclusionPromise": { + "signedEntryTimestamp": "MEYCIQCeEsQAy+qXtULkh52wbnHrkt2R2JQ05P9STK/xmdpQ2AIhANiG5Gw6cQiMnwvUz1+9UKtG/vlC8dduq07wsFOViwSL" + }, + "inclusionProof": { + "logIndex": "93750549", + "rootHash": "KgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=", + "treeSize": "93750551", + "hashes": [ + "8LI21mzwxnUSo0fuZeFsUrz2ujZ4QAL+oGeTG+5toZg=", + "nCb369rcIytNhGwWoqBv+eV49X3ZKpo/HJGKm9V+dck=", + "hnNQ9mUdSwYCfdV21pd87NucrdRRNZATowlaRR1hJ4A=", + "MBhhK33vlD4Tq/JKgAaXUI4VjmosWKe6+7RNpQ2ncNM=", + "XKWUE3stvGV1OHsIGiCGfn047Ok6uD4mFkh7BaicaEc=", + "Tgve40VPFfuei+0nhupdGpfPPR+hPpZjxgTiDT8WNoY=", + "wV+S/7tLtYGzkLaSb6UDqexNyhMvumHK/RpTNvEZuLU=", + "uwaWufty6sn6XqO1Tb9M3Vz6sBKPu0HT36mStxJNd7s=", + "jUfeMOXQP0XF1JAnCEETVbfRKMUwCzrVUzYi8vnDMVs=", + "xQKjzJAwwdlQG/YUYBKPXxbCmhMYKo1wnv+6vDuKWhQ=", + "cX3Agx+hP66t1ZLbX/yHbfjU46/3m/VAmWyG/fhxAVc=", + "sjohk/3DQIfXTgf/5XpwtdF7yNbrf8YykOMHr1CyBYQ=", + "98enzMaC+x5oCMvIZQA5z8vu2apDMCFvE/935NfuPw8=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 2605736670972794746\\n93750551\\nKgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=\\n\\n— rekor.sigstore.dev wNI9ajBEAiBkLzdjY8A9HReU7rmtjwZ+JpSuYtEr9SmvSwUIW7FBjgIgKo+vhkW3tqc+gc8fw9gza3xLoncA8a+MTaJYCaLGA9c=\\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiM2I1YzkwNDk5MGFiYzE4NjI1ZWE3Njg4MzE1OGEwZmI4MTEwMjM4MGJkNjQwZjI5OWJlMzYwZWVkOTMxNjYwYiJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjM4ZGNlZDJjMzE1MGU2OTQxMDViYjZiNDNjYjY3NzBiZTYzZDdhNGM4NjNiMTc2YTkwMmU1MGQ5ZTAyN2ZiMjMifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVRQ0lFR0lHQW03Z1pWTExwc3JQY2puZEVqaXVjdEUyL2M5K2o5S0d2YXp6M3JsQWlBZDZPMTZUNWhrelJNM0liUlB6bSt4VDQwbU5RWnhlZmQ3bGFEUDZ4MlhMUT09IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VkcVZFTkRRbWhUWjBGM1NVSkJaMGxWVjFsNGNVdHpjazFUTTFOMmJEVkphalZQUkdaQ1owMUtUeTlKZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwUmQwNVVTVFZOVkZsM1QxUlZlVmRvWTA1TmFsRjNUbFJKTlUxVVdYaFBWRlY1VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVmtiV2RvVGs1M00yNVZMMHQxWlZGbmMzQkhTRmMzWjJnNVdFeEVMMWRrU1RoWlRVSUtLekJ3TUZZMGJ6RnJTRzgyWTAweGMwUktaM0pEWjFCUlZYcDRjSFZaZFc4cmVIZFFTSGxzTDJ0RWVXWXpSVXhxYTJGUFEwSlVUWGRuWjFWMlRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdSQ1owNVdTRkUwUlVablVWVnhaa05RQ25aWVMwRjJVelJEWkdoUk1taGlXbGRLVTA5RmRsWnZkMGgzV1VSV1VqQnFRa0puZDBadlFWVXpPVkJ3ZWpGWmEwVmFZalZ4VG1wd1MwWlhhWGhwTkZrS1drUTRkMWRuV1VSV1VqQlNRVkZJTDBKR1FYZFViMXBOWVVoU01HTklUVFpNZVRsdVlWaFNiMlJYU1hWWk1qbDBUREpPYzJGVE9XcGlSMnQyVEcxa2NBcGtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbHBIVm5kaVJ6azFZbGRXZFdSRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVNR051Vm5WaGVrRTFDa0puYjNKQ1owVkZRVmxQTDAxQlJVSkNRM1J2WkVoU2QyTjZiM1pNTTFKMllUSldkVXh0Um1wa1IyeDJZbTVOZFZveWJEQmhTRlpwWkZoT2JHTnRUbllLWW01U2JHSnVVWFZaTWpsMFRVSTRSME5wYzBkQlVWRkNaemM0ZDBGUlNVVkZXR1IyWTIxMGJXSkhPVE5ZTWxKd1l6TkNhR1JIVG05TlJGbEhRMmx6UndwQlVWRkNaemM0ZDBGUlRVVkxSMXBvV2xkWmVWcEhVbXRQUkVacFRVUmplazVxWXpCUFJGRjRUVEpGTTFsNldUQk9iVTVyVFVkS2JWbDZTVEpaZWtGM0NsbFVRWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNRa0ZSUzFKSFZuZGlSemsxWWxkV2RXUkVRVlpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0ZrYW1KSGEzWUtXVEo0Y0UxQ05FZERhWE5IUVZGUlFtYzNPSGRCVVZsRlJVaEtiRnB1VFhaaFIxWm9Xa2hOZG1SSVNqRmliWE4zVDNkWlMwdDNXVUpDUVVkRWRucEJRZ3BEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVk1iVVpxWkVkc2RtSnVUWFZhTW13d1lVaFdhV1JZVG14amJVNTJZbTVTYkdKdVVYVlpNamwwQ2sxR2QwZERhWE5IUVZGUlFtYzNPSGRCVVd0RlZHZDRUV0ZJVWpCalNFMDJUSGs1Ym1GWVVtOWtWMGwxV1RJNWRFd3lUbk5oVXpscVlrZHJka3h0WkhBS1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmFSMVozWWtjNU5XSlhWblZrUXpVMVlsZDRRV050Vm0xamVUbHZXbGRHYTJONU9UQmpibFoxWVhwQk5BcENaMjl5UW1kRlJVRlpUeTlOUVVWTFFrTnZUVXRIV21oYVYxbDVXa2RTYTA5RVJtbE5SR042VG1wak1FOUVVWGhOTWtVeldYcFpNRTV0VG10TlIwcHRDbGw2U1RKWmVrRjNXVlJCZDBoUldVdExkMWxDUWtGSFJIWjZRVUpEZDFGUVJFRXhibUZZVW05a1YwbDBZVWM1ZW1SSFZtdE5RMjlIUTJselIwRlJVVUlLWnpjNGQwRlJkMFZJUVhkaFlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2MyRlRPV3BpUjJ0M1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWdwRVVWRnhSRU5vYlZsWFZtMU5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBGSENrTnBjMGRCVVZGQ1p6YzRkMEZSTkVWRlozZFJZMjFXYldONU9XOWFWMFpyWTNrNU1HTnVWblZoZWtGYVFtZHZja0puUlVWQldVOHZUVUZGVUVKQmMwMEtRMVJKZUUxcVdYaE5la0V3VDFSQmJVSm5iM0pDWjBWRlFWbFBMMDFCUlZGQ1FtZE5SbTFvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhZ3BpUjJ0M1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVdEVRV2N4VDFSamQwNUVZM2hOVkVKalFtZHZja0puUlVWQldVOHZUVUZGVTBKRk5FMVVSMmd3Q21SSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhbUpIYTNaWk1uaHdUSGsxYm1GWVVtOWtWMGwyWkRJNWVXRXlXbk5pTTJSNlRESlNiR05IZUhZS1pWY3hiR0p1VVhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtUklTakZpYlhOM1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmh0V1ZkV2JRcE5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBWSFEybHpSMEZSVVVKbk56aDNDa0ZTVVVWRmQzZFNaREk1ZVdFeVduTmlNMlJtV2tkc2VtTkhSakJaTW1kM1ZGRlpTMHQzV1VKQ1FVZEVkbnBCUWtaUlVTOUVSREZ2WkVoU2QyTjZiM1lLVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5ZUhCTU1rNXpZVk01YUZrelVuQmlNalY2VEROS01XSnVUWFpQVkVrMFQxUkJNMDVVWXpGTmFUbG9aRWhTYkFwaVdFSXdZM2s0ZUUxQ1dVZERhWE5IUVZGUlFtYzNPSGRCVWxsRlEwRjNSMk5JVm1saVIyeHFUVWxIVEVKbmIzSkNaMFZGUVdSYU5VRm5VVU5DU0RCRkNtVjNRalZCU0dOQk0xUXdkMkZ6WWtoRlZFcHFSMUkwWTIxWFl6TkJjVXBMV0hKcVpWQkxNeTlvTkhCNVowTTRjRGR2TkVGQlFVZFFlRkl4ZW1KblFVRUtRa0ZOUVZORVFrZEJhVVZCS3pobmJGRkplRTlCYUZoQ1FVOVRObE1yT0ZweGQwcGpaSGQzVTNJdlZGZHBhSE16WkV4eFZrRjJiME5KVVVSaWVUbG9NUXBKWTNWRVJYSXJlbk5YYVV3NFVIYzFRMU5VZEd0c2RFbzBNakZ6UlRneFZuWjFOa0Z3VkVGTFFtZG5jV2hyYWs5UVVWRkVRWGRPYmtGRVFtdEJha0VyQ2tSSU4xQXJhR2cwVmtoWFprTlhXSFJ5UzFSdlFrdDFZa0pyUzNCbVYwTlpVWGhxV0UweWRsWXZibEJ4WWxwR1dVOVdXazlpWlRaQlRuSm5lV1J2V1VNS1RVWlZUV0l6ZUhwelJrNVJXWFp6UlZsUGFUSkxibkoyUmpCMFoyOXdiVmhIVm05NmJsb3JjUzh5UVVsRVZ6bEdNVVUzV1RaWk1EWXhaVzkxUVZsa1NBcFhkejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn1dfX0=" + } + ], + "timestampVerificationData": {}, + "certificate": { + "rawBytes": "MIIGjTCCBhSgAwIBAgIUWYxqKsrMS3Svl5Ij5ODfBgMJO/IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjQwNTI5MTYwOTUyWhcNMjQwNTI5MTYxOTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdmghNNw3nU/KueQgspGHW7gh9XLD/WdI8YMB+0p0V4o1kHo6cM1sDJgrCgPQUzxpuYuo+xwPHyl/kDyf3ELjkaOCBTMwggUvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUqfCPvXKAvS4CdhQ2hbZWJSOEvVowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wWgYDVR0RAQH/BFAwToZMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwGAYKKwYBBAGDvzABBAQKRGVwbG95bWVudDAVBgorBgEEAYO/MAEFBAdjbGkvY2xpMB4GCisGAQQBg78wAQYEEHJlZnMvaGVhZHMvdHJ1bmswOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMFwGCisGAQQBg78wAQkETgxMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA4BgorBgEEAYO/MAEKBCoMKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMCoGCisGAQQBg78wAQwEHAwaaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkwOAYKKwYBBAGDvzABDQQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCAGCisGAQQBg78wAQ4EEgwQcmVmcy9oZWFkcy90cnVuazAZBgorBgEEAYO/MAEPBAsMCTIxMjYxMzA0OTAmBgorBgEEAYO/MAEQBBgMFmh0dHBzOi8vZ2l0aHViLmNvbS9jbGkwGAYKKwYBBAGDvzABEQQKDAg1OTcwNDcxMTBcBgorBgEEAYO/MAESBE4MTGh0dHBzOi8vZ2l0aHViLmNvbS9jbGkvY2xpLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveW1lbnQueW1sQHJlZnMvaGVhZHMvdHJ1bmswOAYKKwYBBAGDvzABEwQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwTQYKKwYBBAGDvzABFQQ/DD1odHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaS9hY3Rpb25zL3J1bnMvOTI4OTA3NTc1Mi9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGPxR1zbgAABAMASDBGAiEA+8glQIxOAhXBAOS6S+8ZqwJcdwwSr/TWihs3dLqVAvoCIQDby9h1IcuDEr+zsWiL8Pw5CSTtkltJ421sE81Vvu6ApTAKBggqhkjOPQQDAwNnADBkAjA+DH7P+hh4VHWfCWXtrKToBKubBkKpfWCYQxjXM2vV/nPqbZFYOVZObe6ANrgydoYCMFUMb3xzsFNQYvsEYOi2KnrvF0tgopmXGVoznZ+q/2AIDW9F1E7Y6Y061eouAYdHWw==" + } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoiZ2hfMi41MC4wX3dpbmRvd3NfYXJtNjQuemlwIiwiZGlnZXN0Ijp7InNoYTI1NiI6IjhhYWQxMjBiNDE2Mzg2YjQyNjllZjYyYzhmZGViY2FkMzFhNzA4NDcyOTc4MTdhMTQ5ZGFmOTI3ZWRjODU1NDgifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL3Nsc2EtZnJhbWV3b3JrLmdpdGh1Yi5pby9naXRodWItYWN0aW9ucy1idWlsZHR5cGVzL3dvcmtmbG93L3YxIiwiZXh0ZXJuYWxQYXJhbWV0ZXJzIjp7IndvcmtmbG93Ijp7InJlZiI6InJlZnMvaGVhZHMvdHJ1bmsiLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkiLCJwYXRoIjoiLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X2Rpc3BhdGNoIiwicmVwb3NpdG9yeV9pZCI6IjIxMjYxMzA0OSIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiI1OTcwNDcxMSJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaUByZWZzL2hlYWRzL3RydW5rIiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6ImZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL2dpdGh1Yi1ob3N0ZWQifSwibWV0YWRhdGEiOnsiaW52b2NhdGlvbklkIjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvYWN0aW9ucy9ydW5zLzkyODkwNzU3NTIvYXR0ZW1wdHMvMSJ9fX19", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEQCIEGIGAm7gZVLLpsrPcjndEjiuctE2/c9+j9KGvazz3rlAiAd6O16T5hkzRM3IbRPzm+xT40mNQZxefd7laDP6x2XLQ==" + } + ] + } + }, + "repository_id": 1 + }, + { + "bundle": { + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "tlogEntries": [ + { + "logIndex": "97913980", + "logId": { + "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" + }, + "kindVersion": { + "kind": "dsse", + "version": "0.0.1" + }, + "integratedTime": "1716998992", + "inclusionPromise": { + "signedEntryTimestamp": "MEYCIQCeEsQAy+qXtULkh52wbnHrkt2R2JQ05P9STK/xmdpQ2AIhANiG5Gw6cQiMnwvUz1+9UKtG/vlC8dduq07wsFOViwSL" + }, + "inclusionProof": { + "logIndex": "93750549", + "rootHash": "KgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=", + "treeSize": "93750551", + "hashes": [ + "8LI21mzwxnUSo0fuZeFsUrz2ujZ4QAL+oGeTG+5toZg=", + "nCb369rcIytNhGwWoqBv+eV49X3ZKpo/HJGKm9V+dck=", + "hnNQ9mUdSwYCfdV21pd87NucrdRRNZATowlaRR1hJ4A=", + "MBhhK33vlD4Tq/JKgAaXUI4VjmosWKe6+7RNpQ2ncNM=", + "XKWUE3stvGV1OHsIGiCGfn047Ok6uD4mFkh7BaicaEc=", + "Tgve40VPFfuei+0nhupdGpfPPR+hPpZjxgTiDT8WNoY=", + "wV+S/7tLtYGzkLaSb6UDqexNyhMvumHK/RpTNvEZuLU=", + "uwaWufty6sn6XqO1Tb9M3Vz6sBKPu0HT36mStxJNd7s=", + "jUfeMOXQP0XF1JAnCEETVbfRKMUwCzrVUzYi8vnDMVs=", + "xQKjzJAwwdlQG/YUYBKPXxbCmhMYKo1wnv+6vDuKWhQ=", + "cX3Agx+hP66t1ZLbX/yHbfjU46/3m/VAmWyG/fhxAVc=", + "sjohk/3DQIfXTgf/5XpwtdF7yNbrf8YykOMHr1CyBYQ=", + "98enzMaC+x5oCMvIZQA5z8vu2apDMCFvE/935NfuPw8=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 2605736670972794746\\n93750551\\nKgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=\\n\\n— rekor.sigstore.dev wNI9ajBEAiBkLzdjY8A9HReU7rmtjwZ+JpSuYtEr9SmvSwUIW7FBjgIgKo+vhkW3tqc+gc8fw9gza3xLoncA8a+MTaJYCaLGA9c=\\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiM2I1YzkwNDk5MGFiYzE4NjI1ZWE3Njg4MzE1OGEwZmI4MTEwMjM4MGJkNjQwZjI5OWJlMzYwZWVkOTMxNjYwYiJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjM4ZGNlZDJjMzE1MGU2OTQxMDViYjZiNDNjYjY3NzBiZTYzZDdhNGM4NjNiMTc2YTkwMmU1MGQ5ZTAyN2ZiMjMifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVRQ0lFR0lHQW03Z1pWTExwc3JQY2puZEVqaXVjdEUyL2M5K2o5S0d2YXp6M3JsQWlBZDZPMTZUNWhrelJNM0liUlB6bSt4VDQwbU5RWnhlZmQ3bGFEUDZ4MlhMUT09IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VkcVZFTkRRbWhUWjBGM1NVSkJaMGxWVjFsNGNVdHpjazFUTTFOMmJEVkphalZQUkdaQ1owMUtUeTlKZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwUmQwNVVTVFZOVkZsM1QxUlZlVmRvWTA1TmFsRjNUbFJKTlUxVVdYaFBWRlY1VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVmtiV2RvVGs1M00yNVZMMHQxWlZGbmMzQkhTRmMzWjJnNVdFeEVMMWRrU1RoWlRVSUtLekJ3TUZZMGJ6RnJTRzgyWTAweGMwUktaM0pEWjFCUlZYcDRjSFZaZFc4cmVIZFFTSGxzTDJ0RWVXWXpSVXhxYTJGUFEwSlVUWGRuWjFWMlRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdSQ1owNVdTRkUwUlVablVWVnhaa05RQ25aWVMwRjJVelJEWkdoUk1taGlXbGRLVTA5RmRsWnZkMGgzV1VSV1VqQnFRa0puZDBadlFWVXpPVkJ3ZWpGWmEwVmFZalZ4VG1wd1MwWlhhWGhwTkZrS1drUTRkMWRuV1VSV1VqQlNRVkZJTDBKR1FYZFViMXBOWVVoU01HTklUVFpNZVRsdVlWaFNiMlJYU1hWWk1qbDBUREpPYzJGVE9XcGlSMnQyVEcxa2NBcGtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbHBIVm5kaVJ6azFZbGRXZFdSRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVNR051Vm5WaGVrRTFDa0puYjNKQ1owVkZRVmxQTDAxQlJVSkNRM1J2WkVoU2QyTjZiM1pNTTFKMllUSldkVXh0Um1wa1IyeDJZbTVOZFZveWJEQmhTRlpwWkZoT2JHTnRUbllLWW01U2JHSnVVWFZaTWpsMFRVSTRSME5wYzBkQlVWRkNaemM0ZDBGUlNVVkZXR1IyWTIxMGJXSkhPVE5ZTWxKd1l6TkNhR1JIVG05TlJGbEhRMmx6UndwQlVWRkNaemM0ZDBGUlRVVkxSMXBvV2xkWmVWcEhVbXRQUkVacFRVUmplazVxWXpCUFJGRjRUVEpGTTFsNldUQk9iVTVyVFVkS2JWbDZTVEpaZWtGM0NsbFVRWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNRa0ZSUzFKSFZuZGlSemsxWWxkV2RXUkVRVlpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0ZrYW1KSGEzWUtXVEo0Y0UxQ05FZERhWE5IUVZGUlFtYzNPSGRCVVZsRlJVaEtiRnB1VFhaaFIxWm9Xa2hOZG1SSVNqRmliWE4zVDNkWlMwdDNXVUpDUVVkRWRucEJRZ3BEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVk1iVVpxWkVkc2RtSnVUWFZhTW13d1lVaFdhV1JZVG14amJVNTJZbTVTYkdKdVVYVlpNamwwQ2sxR2QwZERhWE5IUVZGUlFtYzNPSGRCVVd0RlZHZDRUV0ZJVWpCalNFMDJUSGs1Ym1GWVVtOWtWMGwxV1RJNWRFd3lUbk5oVXpscVlrZHJka3h0WkhBS1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmFSMVozWWtjNU5XSlhWblZrUXpVMVlsZDRRV050Vm0xamVUbHZXbGRHYTJONU9UQmpibFoxWVhwQk5BcENaMjl5UW1kRlJVRlpUeTlOUVVWTFFrTnZUVXRIV21oYVYxbDVXa2RTYTA5RVJtbE5SR042VG1wak1FOUVVWGhOTWtVeldYcFpNRTV0VG10TlIwcHRDbGw2U1RKWmVrRjNXVlJCZDBoUldVdExkMWxDUWtGSFJIWjZRVUpEZDFGUVJFRXhibUZZVW05a1YwbDBZVWM1ZW1SSFZtdE5RMjlIUTJselIwRlJVVUlLWnpjNGQwRlJkMFZJUVhkaFlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2MyRlRPV3BpUjJ0M1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWdwRVVWRnhSRU5vYlZsWFZtMU5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBGSENrTnBjMGRCVVZGQ1p6YzRkMEZSTkVWRlozZFJZMjFXYldONU9XOWFWMFpyWTNrNU1HTnVWblZoZWtGYVFtZHZja0puUlVWQldVOHZUVUZGVUVKQmMwMEtRMVJKZUUxcVdYaE5la0V3VDFSQmJVSm5iM0pDWjBWRlFWbFBMMDFCUlZGQ1FtZE5SbTFvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhZ3BpUjJ0M1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVdEVRV2N4VDFSamQwNUVZM2hOVkVKalFtZHZja0puUlVWQldVOHZUVUZGVTBKRk5FMVVSMmd3Q21SSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhbUpIYTNaWk1uaHdUSGsxYm1GWVVtOWtWMGwyWkRJNWVXRXlXbk5pTTJSNlRESlNiR05IZUhZS1pWY3hiR0p1VVhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtUklTakZpYlhOM1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmh0V1ZkV2JRcE5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBWSFEybHpSMEZSVVVKbk56aDNDa0ZTVVVWRmQzZFNaREk1ZVdFeVduTmlNMlJtV2tkc2VtTkhSakJaTW1kM1ZGRlpTMHQzV1VKQ1FVZEVkbnBCUWtaUlVTOUVSREZ2WkVoU2QyTjZiM1lLVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5ZUhCTU1rNXpZVk01YUZrelVuQmlNalY2VEROS01XSnVUWFpQVkVrMFQxUkJNMDVVWXpGTmFUbG9aRWhTYkFwaVdFSXdZM2s0ZUUxQ1dVZERhWE5IUVZGUlFtYzNPSGRCVWxsRlEwRjNSMk5JVm1saVIyeHFUVWxIVEVKbmIzSkNaMFZGUVdSYU5VRm5VVU5DU0RCRkNtVjNRalZCU0dOQk0xUXdkMkZ6WWtoRlZFcHFSMUkwWTIxWFl6TkJjVXBMV0hKcVpWQkxNeTlvTkhCNVowTTRjRGR2TkVGQlFVZFFlRkl4ZW1KblFVRUtRa0ZOUVZORVFrZEJhVVZCS3pobmJGRkplRTlCYUZoQ1FVOVRObE1yT0ZweGQwcGpaSGQzVTNJdlZGZHBhSE16WkV4eFZrRjJiME5KVVVSaWVUbG9NUXBKWTNWRVJYSXJlbk5YYVV3NFVIYzFRMU5VZEd0c2RFbzBNakZ6UlRneFZuWjFOa0Z3VkVGTFFtZG5jV2hyYWs5UVVWRkVRWGRPYmtGRVFtdEJha0VyQ2tSSU4xQXJhR2cwVmtoWFprTlhXSFJ5UzFSdlFrdDFZa0pyUzNCbVYwTlpVWGhxV0UweWRsWXZibEJ4WWxwR1dVOVdXazlpWlRaQlRuSm5lV1J2V1VNS1RVWlZUV0l6ZUhwelJrNVJXWFp6UlZsUGFUSkxibkoyUmpCMFoyOXdiVmhIVm05NmJsb3JjUzh5UVVsRVZ6bEdNVVUzV1RaWk1EWXhaVzkxUVZsa1NBcFhkejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn1dfX0=" + } + ], + "timestampVerificationData": {}, + "certificate": { + "rawBytes": "MIIGjTCCBhSgAwIBAgIUWYxqKsrMS3Svl5Ij5ODfBgMJO/IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjQwNTI5MTYwOTUyWhcNMjQwNTI5MTYxOTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdmghNNw3nU/KueQgspGHW7gh9XLD/WdI8YMB+0p0V4o1kHo6cM1sDJgrCgPQUzxpuYuo+xwPHyl/kDyf3ELjkaOCBTMwggUvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUqfCPvXKAvS4CdhQ2hbZWJSOEvVowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wWgYDVR0RAQH/BFAwToZMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwGAYKKwYBBAGDvzABBAQKRGVwbG95bWVudDAVBgorBgEEAYO/MAEFBAdjbGkvY2xpMB4GCisGAQQBg78wAQYEEHJlZnMvaGVhZHMvdHJ1bmswOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMFwGCisGAQQBg78wAQkETgxMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA4BgorBgEEAYO/MAEKBCoMKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMCoGCisGAQQBg78wAQwEHAwaaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkwOAYKKwYBBAGDvzABDQQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCAGCisGAQQBg78wAQ4EEgwQcmVmcy9oZWFkcy90cnVuazAZBgorBgEEAYO/MAEPBAsMCTIxMjYxMzA0OTAmBgorBgEEAYO/MAEQBBgMFmh0dHBzOi8vZ2l0aHViLmNvbS9jbGkwGAYKKwYBBAGDvzABEQQKDAg1OTcwNDcxMTBcBgorBgEEAYO/MAESBE4MTGh0dHBzOi8vZ2l0aHViLmNvbS9jbGkvY2xpLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveW1lbnQueW1sQHJlZnMvaGVhZHMvdHJ1bmswOAYKKwYBBAGDvzABEwQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwTQYKKwYBBAGDvzABFQQ/DD1odHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaS9hY3Rpb25zL3J1bnMvOTI4OTA3NTc1Mi9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGPxR1zbgAABAMASDBGAiEA+8glQIxOAhXBAOS6S+8ZqwJcdwwSr/TWihs3dLqVAvoCIQDby9h1IcuDEr+zsWiL8Pw5CSTtkltJ421sE81Vvu6ApTAKBggqhkjOPQQDAwNnADBkAjA+DH7P+hh4VHWfCWXtrKToBKubBkKpfWCYQxjXM2vV/nPqbZFYOVZObe6ANrgydoYCMFUMb3xzsFNQYvsEYOi2KnrvF0tgopmXGVoznZ+q/2AIDW9F1E7Y6Y061eouAYdHWw==" + } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoiZ2hfMi41MC4wX3dpbmRvd3NfYXJtNjQuemlwIiwiZGlnZXN0Ijp7InNoYTI1NiI6IjhhYWQxMjBiNDE2Mzg2YjQyNjllZjYyYzhmZGViY2FkMzFhNzA4NDcyOTc4MTdhMTQ5ZGFmOTI3ZWRjODU1NDgifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL3Nsc2EtZnJhbWV3b3JrLmdpdGh1Yi5pby9naXRodWItYWN0aW9ucy1idWlsZHR5cGVzL3dvcmtmbG93L3YxIiwiZXh0ZXJuYWxQYXJhbWV0ZXJzIjp7IndvcmtmbG93Ijp7InJlZiI6InJlZnMvaGVhZHMvdHJ1bmsiLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkiLCJwYXRoIjoiLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X2Rpc3BhdGNoIiwicmVwb3NpdG9yeV9pZCI6IjIxMjYxMzA0OSIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiI1OTcwNDcxMSJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaUByZWZzL2hlYWRzL3RydW5rIiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6ImZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL2dpdGh1Yi1ob3N0ZWQifSwibWV0YWRhdGEiOnsiaW52b2NhdGlvbklkIjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvYWN0aW9ucy9ydW5zLzkyODkwNzU3NTIvYXR0ZW1wdHMvMSJ9fX19", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEQCIEGIGAm7gZVLLpsrPcjndEjiuctE2/c9+j9KGvazz3rlAiAd6O16T5hkzRM3IbRPzm+xT40mNQZxefd7laDP6x2XLQ==" + } + ] + } + }, + "repository_id": 1 + } + ] + } + ] + }, + "schema": { + "type": "object", + "properties": { + "attestations_subject_digests": { + "type": "object", + "additionalProperties": { + "type": [ + "array", + "null" + ], + "items": { + "type": "object", + "properties": { + "bundle": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "verificationMaterial": { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "dsseEnvelope": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "description": "The bundle of the attestation." + }, + "repository_id": { + "type": "integer" + }, + "bundle_url": { + "type": "string" + } + } + } + }, + "description": "Mapping of subject digest to bundles." + }, + "page_info": { + "type": "object", + "properties": { + "has_next": { + "type": "boolean", + "description": "Indicates whether there is a next page." + }, + "has_previous": { + "type": "boolean", + "description": "Indicates whether there is a previous page." + }, + "next": { + "type": "string", + "description": "The cursor to the next page." + }, + "previous": { + "type": "string", + "description": "The cursor to the previous page." + } + }, + "description": "Information about the current page." + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "

    List a collection of artifact attestations associated with any entry in a list of subject digests owned by an organization.

    \n

    The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the attestations:read permission is required.

    \n

    Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "get", @@ -406110,6 +406829,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -407867,6 +408591,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -407981,7 +408710,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -408005,7 +408734,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -420171,6 +420900,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -421460,6 +422194,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -422697,6 +423436,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -424828,6 +425572,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -426097,6 +426846,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -427383,6 +428137,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -427461,13 +428220,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific package for a package owned by the authenticated user.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific package for a package owned by the authenticated user.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    " + ] }, { "serverUrl": "https://api.github.com", @@ -429476,6 +430235,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -430765,6 +431529,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -432069,6 +432838,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -469235,13 +470009,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the List reviews for a pull request operation.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the users or teams whose review is requested for a pull request. Once a requested reviewer submits a review, they are no longer considered a requested reviewer. Their review will instead be returned by the List reviews for a pull request operation.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -481641,6 +482415,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -484122,13 +484904,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -487354,13 +488136,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to an issue comment.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nYou can also specify a repository by repository_id using the route DELETE delete /repositories/:repository_id/issues/comments/:comment_id/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to an issue comment.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -499512,6 +500294,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -517901,6 +518688,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -523790,6 +524582,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -530989,6 +531786,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -536654,6 +537456,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -541479,7 +542286,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -541503,7 +542310,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -555184,6 +555991,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -556741,6 +557553,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -563262,6 +564079,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -564943,6 +566093,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -565949,6 +567432,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -566757,6 +568573,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -567613,6 +569762,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -597290,6 +599772,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -603100,6 +605587,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -620122,6 +622614,236 @@ } ], "attestations": [ + { + "serverUrl": "https://api.github.com", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "title": "Delete attestations in bulk", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "name": "subject_digests", + "in": "body", + "description": "

    List of subject digests associated with the artifact attestations to delete.

    ", + "isRequired": true + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [], + "previews": [], + "descriptionHTML": "

    Delete artifact attestations in bulk by either subject digests or unique ID.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "title": "Delete attestations by subject digest", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "subject_digest", + "description": "

    Subject Digest

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "200", + "request": { + "description": "Example 1: Status Code 200", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "subject_digest": "SUBJECT_DIGEST" + } + }, + "response": { + "statusCode": "200", + "description": "

    Response

    " + } + }, + { + "key": "204", + "request": { + "description": "Example 2: Status Code 204", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "subject_digest": "SUBJECT_DIGEST" + } + }, + "response": { + "statusCode": "204", + "description": "

    Response

    " + } + } + ], + "previews": [], + "descriptionHTML": "

    Delete an artifact attestation by subject digest.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "204", + "description": "

    No Content

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "title": "Delete attestations by ID", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "attestation_id", + "description": "

    Attestation ID

    ", + "in": "path", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "200", + "request": { + "description": "Example 1: Status Code 200", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "attestation_id": "ATTESTATION_ID" + } + }, + "response": { + "statusCode": "200", + "description": "

    Response

    " + } + }, + { + "key": "204", + "request": { + "description": "Example 2: Status Code 204", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "attestation_id": "ATTESTATION_ID" + } + }, + "response": { + "statusCode": "204", + "description": "

    Response

    " + } + } + ], + "previews": [], + "descriptionHTML": "

    Delete an artifact attestation by unique ID that is associated with a repository owned by a user.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "204", + "description": "

    No Content

    " + }, + { + "httpStatusCode": "403", + "description": "

    Forbidden

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "get", diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index 83841219a280..2ae8b7f50deb 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -2012,8 +2012,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -2372,8 +2371,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3195,8 +3193,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3523,8 +3520,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -3819,8 +3815,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -4165,8 +4160,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -4528,8 +4522,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -4669,13 +4662,13 @@ } ], "previews": [], + "descriptionHTML": "

    Creates a GitHub-hosted runner for an organization.\nOAuth tokens and personal access tokens (classic) need the manage_runners:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Creates a GitHub-hosted runner for an organization.\nOAuth tokens and personal access tokens (classic) need the manage_runners:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -5136,13 +5129,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get the list of machine specs available for GitHub-hosted runners for an organization.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get the list of machine specs available for GitHub-hosted runners for an organization.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -5375,8 +5368,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -5707,8 +5699,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -6007,8 +5998,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -6215,13 +6205,13 @@ } ], "previews": [], + "descriptionHTML": "

    Sets the GitHub Actions OpenID Connect (OIDC) custom issuer policy for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Sets the GitHub Actions OpenID Connect (OIDC) custom issuer policy for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -9943,13 +9933,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in a repository,\nas well as if GitHub Actions can submit approving pull request reviews.\nFor more information, see \"Setting the permissions of the GITHUB_TOKEN for your repository.\"

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in a repository,\nas well as if GitHub Actions can submit approving pull request reviews.\nFor more information, see \"Setting the permissions of the GITHUB_TOKEN for your repository.\"

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -11598,6 +11588,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -15942,8 +15937,7 @@ "id", "size_gb", "display_name", - "source", - "version" + "source" ] } ] @@ -17232,6 +17226,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -20696,13 +20695,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -24371,13 +24370,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an organization. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an organization. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -28120,13 +28119,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an repository. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an repository. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -30718,6 +30717,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -30858,6 +30862,7 @@ } ], "previews": [], + "descriptionHTML": "

    Replaces all repositories for an organization variable that is available\nto selected repositories. Organization variables that are available to selected\nrepositories have their visibility field set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "204", @@ -30867,8 +30872,7 @@ "httpStatusCode": "409", "description": "

    Response when the visibility of the variable is not set to selected

    " } - ], - "descriptionHTML": "

    Replaces all repositories for an organization variable that is available\nto selected repositories. Organization variables that are available to selected\nrepositories have their visibility field set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -31177,13 +31181,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all organization variables shared with a repository.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all organization variables shared with a repository.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -36027,6 +36031,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -36887,6 +36896,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -38879,6 +38893,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -39739,6 +39758,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -42276,6 +42300,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -43136,6 +43165,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -47644,6 +47678,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -48504,6 +48543,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -64668,13 +64712,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " + ] }, { "serverUrl": "https://api.github.com", @@ -85068,6 +85112,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -86231,6 +86280,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -87822,6 +87876,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -95194,6 +95253,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -96263,6 +96327,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -118430,13 +118499,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the summary of the free and paid GitHub Actions minutes used.

    \n

    Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

    \n

    OAuth app tokens and personal access tokens (classic) need the user scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the summary of the free and paid GitHub Actions minutes used.

    \n

    Paid minutes only apply to workflows in private repositories that use GitHub-hosted runners. Minutes used is listed for each GitHub-hosted runner operating system. Any job re-runs are also included in the usage. The usage returned includes any minute multipliers for macOS and Windows runners, and is rounded up to the nearest whole minute. For more information, see \"Managing billing for GitHub Actions\".

    \n

    OAuth app tokens and personal access tokens (classic) need the user scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -152911,13 +152980,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists annotations for a check run using the annotation id.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists annotations for a check run using the annotation id.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -157724,6 +157793,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -159658,6 +159732,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -161033,6 +161112,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -162881,6 +162965,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -164887,6 +164976,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -184331,6 +184425,7 @@ } ], "previews": [], + "descriptionHTML": "

    Attaches an enterprise code security configuration to repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration.

    \n

    If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.

    \n

    The authenticated user must be an administrator for the enterprise to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "202", @@ -184348,8 +184443,7 @@ "httpStatusCode": "409", "description": "

    Conflict

    " } - ], - "descriptionHTML": "

    Attaches an enterprise code security configuration to repositories. If the repositories specified are already attached to a configuration, they will be re-attached to the provided configuration.

    \n

    If insufficient GHAS licenses are available to attach the configuration to a repository, only free features will be enabled.

    \n

    The authenticated user must be an administrator for the enterprise to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -191584,6 +191678,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -193475,6 +193574,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -195225,6 +195329,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -197724,6 +197833,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -199475,6 +199589,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -201593,6 +201712,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -203494,6 +203618,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -205241,6 +205370,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -207045,6 +207179,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -208872,6 +209011,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -209665,6 +209809,7 @@ } ], "previews": [], + "descriptionHTML": "

    Gets information about an export of a codespace.

    \n

    OAuth app tokens and personal access tokens (classic) need the codespace scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -209674,8 +209819,7 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ], - "descriptionHTML": "

    Gets information about an export of a codespace.

    \n

    OAuth app tokens and personal access tokens (classic) need the codespace scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -216553,6 +216697,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -218369,6 +218518,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -220772,6 +220926,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -222796,6 +222955,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -225211,6 +225375,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -227139,6 +227308,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -229754,6 +229928,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -231524,6 +231703,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -233426,6 +233610,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -234915,6 +235104,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -236449,6 +236643,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -249903,6 +250102,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -253733,6 +253937,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -253746,6 +253953,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -253787,7 +254000,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -254525,6 +254737,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -254538,6 +254753,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -254579,7 +254800,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -255528,6 +255748,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -255541,6 +255764,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -255582,7 +255811,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -256722,6 +256950,9 @@ "name": { "type": "string" }, + "description": { + "type": "string" + }, "slug": { "type": "string" }, @@ -256735,6 +256966,12 @@ "disabled | all" ] }, + "organization_selection_type": { + "type": "string", + "examples": [ + "disabled | all" + ] + }, "group_id": { "type": [ "string", @@ -256776,7 +257013,6 @@ "id", "url", "members_url", - "sync_to_organizations", "name", "html_url", "slug", @@ -264136,6 +264372,29 @@ "schema": { "type": "string" } + }, + { + "name": "page", + "in": "query", + "description": "

    The page number of results to fetch.

    ", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "per_page", + "in": "query", + "description": "

    Number of results per page.

    ", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 30 + } } ], "bodyParameters": [], @@ -264262,554 +264521,561 @@ "accessible_repositories": { "type": "array", "items": { - "title": "Simple Repository", - "description": "A GitHub repository.", - "type": "object", - "properties": { - "id": { - "type": "integer", - "format": "int64", - "description": "A unique identifier of the repository.", - "examples": [ - 1296269 - ] - }, - "node_id": { - "type": "string", - "description": "The GraphQL identifier of the repository.", - "examples": [ - "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" - ] - }, - "name": { - "type": "string", - "description": "The name of the repository.", - "examples": [ - "Hello-World" - ] - }, - "full_name": { - "type": "string", - "description": "The full, globally unique, name of the repository.", - "examples": [ - "octocat/Hello-World" - ] + "anyOf": [ + { + "type": "null" }, - "owner": { - "title": "Simple User", - "description": "A GitHub user.", + { + "title": "Simple Repository", + "description": "A GitHub repository.", "type": "object", "properties": { + "id": { + "type": "integer", + "format": "int64", + "description": "A unique identifier of the repository.", + "examples": [ + 1296269 + ] + }, + "node_id": { + "type": "string", + "description": "The GraphQL identifier of the repository.", + "examples": [ + "MDEwOlJlcG9zaXRvcnkxMjk2MjY5" + ] + }, "name": { - "type": [ - "string", - "null" + "type": "string", + "description": "The name of the repository.", + "examples": [ + "Hello-World" ] }, - "email": { + "full_name": { + "type": "string", + "description": "The full, globally unique, name of the repository.", + "examples": [ + "octocat/Hello-World" + ] + }, + "owner": { + "title": "Simple User", + "description": "A GitHub user.", + "type": "object", + "properties": { + "name": { + "type": [ + "string", + "null" + ] + }, + "email": { + "type": [ + "string", + "null" + ] + }, + "login": { + "type": "string", + "examples": [ + "octocat" + ] + }, + "id": { + "type": "integer", + "format": "int64", + "examples": [ + 1 + ] + }, + "node_id": { + "type": "string", + "examples": [ + "MDQ6VXNlcjE=" + ] + }, + "avatar_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://github.com/images/error/octocat_happy.gif" + ] + }, + "gravatar_id": { + "type": [ + "string", + "null" + ], + "examples": [ + "41d064eb2195891e12d0413f63227ea7" + ] + }, + "url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat" + ] + }, + "html_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://github.com/octocat" + ] + }, + "followers_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/followers" + ] + }, + "following_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/following{/other_user}" + ] + }, + "gists_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/gists{/gist_id}" + ] + }, + "starred_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/starred{/owner}{/repo}" + ] + }, + "subscriptions_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/subscriptions" + ] + }, + "organizations_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/orgs" + ] + }, + "repos_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/repos" + ] + }, + "events_url": { + "type": "string", + "examples": [ + "https://api.github.com/users/octocat/events{/privacy}" + ] + }, + "received_events_url": { + "type": "string", + "format": "uri", + "examples": [ + "https://api.github.com/users/octocat/received_events" + ] + }, + "type": { + "type": "string", + "examples": [ + "User" + ] + }, + "site_admin": { + "type": "boolean" + }, + "starred_at": { + "type": "string", + "examples": [ + "\"2020-07-09T00:17:55Z\"" + ] + }, + "user_view_type": { + "type": "string", + "examples": [ + "public" + ] + } + }, + "required": [ + "avatar_url", + "events_url", + "followers_url", + "following_url", + "gists_url", + "gravatar_id", + "html_url", + "id", + "node_id", + "login", + "organizations_url", + "received_events_url", + "repos_url", + "site_admin", + "starred_url", + "subscriptions_url", + "type", + "url" + ] + }, + "private": { + "type": "boolean", + "description": "Whether the repository is private." + }, + "html_url": { + "type": "string", + "format": "uri", + "description": "The URL to view the repository on GitHub.com.", + "examples": [ + "https://github.com/octocat/Hello-World" + ] + }, + "description": { "type": [ "string", "null" + ], + "description": "The repository description.", + "examples": [ + "This your first repo!" ] }, - "login": { + "fork": { + "type": "boolean", + "description": "Whether the repository is a fork." + }, + "url": { "type": "string", + "format": "uri", + "description": "The URL to get more information about the repository from the GitHub API.", "examples": [ - "octocat" + "https://api.github.com/repos/octocat/Hello-World" ] }, - "id": { - "type": "integer", - "format": "int64", + "archive_url": { + "type": "string", + "description": "A template for the API URL to download the repository as an archive.", "examples": [ - 1 + "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" ] }, - "node_id": { + "assignees_url": { "type": "string", + "description": "A template for the API URL to list the available assignees for issues in the repository.", "examples": [ - "MDQ6VXNlcjE=" + "https://api.github.com/repos/octocat/Hello-World/assignees{/user}" ] }, - "avatar_url": { + "blobs_url": { + "type": "string", + "description": "A template for the API URL to create or retrieve a raw Git blob in the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" + ] + }, + "branches_url": { + "type": "string", + "description": "A template for the API URL to get information about branches in the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/branches{/branch}" + ] + }, + "collaborators_url": { + "type": "string", + "description": "A template for the API URL to get information about collaborators of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" + ] + }, + "comments_url": { + "type": "string", + "description": "A template for the API URL to get information about comments on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/comments{/number}" + ] + }, + "commits_url": { + "type": "string", + "description": "A template for the API URL to get information about commits on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/commits{/sha}" + ] + }, + "compare_url": { + "type": "string", + "description": "A template for the API URL to compare two commits or refs.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" + ] + }, + "contents_url": { + "type": "string", + "description": "A template for the API URL to get the contents of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/contents/{+path}" + ] + }, + "contributors_url": { "type": "string", "format": "uri", + "description": "A template for the API URL to list the contributors to the repository.", "examples": [ - "https://github.com/images/error/octocat_happy.gif" + "https://api.github.com/repos/octocat/Hello-World/contributors" ] }, - "gravatar_id": { - "type": [ - "string", - "null" - ], + "deployments_url": { + "type": "string", + "format": "uri", + "description": "The API URL to list the deployments of the repository.", "examples": [ - "41d064eb2195891e12d0413f63227ea7" + "https://api.github.com/repos/octocat/Hello-World/deployments" ] }, - "url": { + "downloads_url": { "type": "string", "format": "uri", + "description": "The API URL to list the downloads on the repository.", "examples": [ - "https://api.github.com/users/octocat" + "https://api.github.com/repos/octocat/Hello-World/downloads" ] }, - "html_url": { + "events_url": { "type": "string", "format": "uri", + "description": "The API URL to list the events of the repository.", "examples": [ - "https://github.com/octocat" + "https://api.github.com/repos/octocat/Hello-World/events" ] }, - "followers_url": { + "forks_url": { "type": "string", "format": "uri", + "description": "The API URL to list the forks of the repository.", "examples": [ - "https://api.github.com/users/octocat/followers" + "https://api.github.com/repos/octocat/Hello-World/forks" ] }, - "following_url": { + "git_commits_url": { "type": "string", + "description": "A template for the API URL to get information about Git commits of the repository.", "examples": [ - "https://api.github.com/users/octocat/following{/other_user}" + "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" ] }, - "gists_url": { + "git_refs_url": { "type": "string", + "description": "A template for the API URL to get information about Git refs of the repository.", "examples": [ - "https://api.github.com/users/octocat/gists{/gist_id}" + "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" ] }, - "starred_url": { + "git_tags_url": { "type": "string", + "description": "A template for the API URL to get information about Git tags of the repository.", "examples": [ - "https://api.github.com/users/octocat/starred{/owner}{/repo}" + "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" ] }, - "subscriptions_url": { + "issue_comment_url": { + "type": "string", + "description": "A template for the API URL to get information about issue comments on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" + ] + }, + "issue_events_url": { + "type": "string", + "description": "A template for the API URL to get information about issue events on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}" + ] + }, + "issues_url": { + "type": "string", + "description": "A template for the API URL to get information about issues on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues{/number}" + ] + }, + "keys_url": { + "type": "string", + "description": "A template for the API URL to get information about deploy keys on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}" + ] + }, + "labels_url": { + "type": "string", + "description": "A template for the API URL to get information about labels of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/labels{/name}" + ] + }, + "languages_url": { "type": "string", "format": "uri", + "description": "The API URL to get information about the languages of the repository.", "examples": [ - "https://api.github.com/users/octocat/subscriptions" + "https://api.github.com/repos/octocat/Hello-World/languages" ] }, - "organizations_url": { + "merges_url": { "type": "string", "format": "uri", + "description": "The API URL to merge branches in the repository.", "examples": [ - "https://api.github.com/users/octocat/orgs" + "https://api.github.com/repos/octocat/Hello-World/merges" ] }, - "repos_url": { + "milestones_url": { + "type": "string", + "description": "A template for the API URL to get information about milestones of the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/milestones{/number}" + ] + }, + "notifications_url": { + "type": "string", + "description": "A template for the API URL to get information about notifications on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" + ] + }, + "pulls_url": { + "type": "string", + "description": "A template for the API URL to get information about pull requests on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls{/number}" + ] + }, + "releases_url": { + "type": "string", + "description": "A template for the API URL to get information about releases on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/releases{/id}" + ] + }, + "stargazers_url": { "type": "string", "format": "uri", + "description": "The API URL to list the stargazers on the repository.", "examples": [ - "https://api.github.com/users/octocat/repos" + "https://api.github.com/repos/octocat/Hello-World/stargazers" ] }, - "events_url": { + "statuses_url": { "type": "string", + "description": "A template for the API URL to get information about statuses of a commit.", "examples": [ - "https://api.github.com/users/octocat/events{/privacy}" + "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}" ] }, - "received_events_url": { + "subscribers_url": { "type": "string", "format": "uri", + "description": "The API URL to list the subscribers on the repository.", "examples": [ - "https://api.github.com/users/octocat/received_events" + "https://api.github.com/repos/octocat/Hello-World/subscribers" ] }, - "type": { + "subscription_url": { "type": "string", + "format": "uri", + "description": "The API URL to subscribe to notifications for this repository.", "examples": [ - "User" + "https://api.github.com/repos/octocat/Hello-World/subscription" ] }, - "site_admin": { - "type": "boolean" + "tags_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get information about tags on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/tags" + ] }, - "starred_at": { + "teams_url": { "type": "string", + "format": "uri", + "description": "The API URL to list the teams on the repository.", "examples": [ - "\"2020-07-09T00:17:55Z\"" + "https://api.github.com/repos/octocat/Hello-World/teams" ] }, - "user_view_type": { + "trees_url": { "type": "string", + "description": "A template for the API URL to create or retrieve a raw Git tree of the repository.", "examples": [ - "public" + "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" + ] + }, + "hooks_url": { + "type": "string", + "format": "uri", + "description": "The API URL to list the hooks on the repository.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/hooks" ] } }, "required": [ - "avatar_url", + "archive_url", + "assignees_url", + "blobs_url", + "branches_url", + "collaborators_url", + "comments_url", + "commits_url", + "compare_url", + "contents_url", + "contributors_url", + "deployments_url", + "description", + "downloads_url", "events_url", - "followers_url", - "following_url", - "gists_url", - "gravatar_id", + "fork", + "forks_url", + "full_name", + "git_commits_url", + "git_refs_url", + "git_tags_url", + "hooks_url", "html_url", "id", "node_id", - "login", - "organizations_url", - "received_events_url", - "repos_url", - "site_admin", - "starred_url", - "subscriptions_url", - "type", + "issue_comment_url", + "issue_events_url", + "issues_url", + "keys_url", + "labels_url", + "languages_url", + "merges_url", + "milestones_url", + "name", + "notifications_url", + "owner", + "private", + "pulls_url", + "releases_url", + "stargazers_url", + "statuses_url", + "subscribers_url", + "subscription_url", + "tags_url", + "teams_url", + "trees_url", "url" ] - }, - "private": { - "type": "boolean", - "description": "Whether the repository is private." - }, - "html_url": { - "type": "string", - "format": "uri", - "description": "The URL to view the repository on GitHub.com.", - "examples": [ - "https://github.com/octocat/Hello-World" - ] - }, - "description": { - "type": [ - "string", - "null" - ], - "description": "The repository description.", - "examples": [ - "This your first repo!" - ] - }, - "fork": { - "type": "boolean", - "description": "Whether the repository is a fork." - }, - "url": { - "type": "string", - "format": "uri", - "description": "The URL to get more information about the repository from the GitHub API.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World" - ] - }, - "archive_url": { - "type": "string", - "description": "A template for the API URL to download the repository as an archive.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}" - ] - }, - "assignees_url": { - "type": "string", - "description": "A template for the API URL to list the available assignees for issues in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/assignees{/user}" - ] - }, - "blobs_url": { - "type": "string", - "description": "A template for the API URL to create or retrieve a raw Git blob in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}" - ] - }, - "branches_url": { - "type": "string", - "description": "A template for the API URL to get information about branches in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/branches{/branch}" - ] - }, - "collaborators_url": { - "type": "string", - "description": "A template for the API URL to get information about collaborators of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}" - ] - }, - "comments_url": { - "type": "string", - "description": "A template for the API URL to get information about comments on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/comments{/number}" - ] - }, - "commits_url": { - "type": "string", - "description": "A template for the API URL to get information about commits on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/commits{/sha}" - ] - }, - "compare_url": { - "type": "string", - "description": "A template for the API URL to compare two commits or refs.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}" - ] - }, - "contents_url": { - "type": "string", - "description": "A template for the API URL to get the contents of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/contents/{+path}" - ] - }, - "contributors_url": { - "type": "string", - "format": "uri", - "description": "A template for the API URL to list the contributors to the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/contributors" - ] - }, - "deployments_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the deployments of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/deployments" - ] - }, - "downloads_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the downloads on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/downloads" - ] - }, - "events_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the events of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/events" - ] - }, - "forks_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the forks of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/forks" - ] - }, - "git_commits_url": { - "type": "string", - "description": "A template for the API URL to get information about Git commits of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}" - ] - }, - "git_refs_url": { - "type": "string", - "description": "A template for the API URL to get information about Git refs of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}" - ] - }, - "git_tags_url": { - "type": "string", - "description": "A template for the API URL to get information about Git tags of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}" - ] - }, - "issue_comment_url": { - "type": "string", - "description": "A template for the API URL to get information about issue comments on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}" - ] - }, - "issue_events_url": { - "type": "string", - "description": "A template for the API URL to get information about issue events on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}" - ] - }, - "issues_url": { - "type": "string", - "description": "A template for the API URL to get information about issues on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/issues{/number}" - ] - }, - "keys_url": { - "type": "string", - "description": "A template for the API URL to get information about deploy keys on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}" - ] - }, - "labels_url": { - "type": "string", - "description": "A template for the API URL to get information about labels of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/labels{/name}" - ] - }, - "languages_url": { - "type": "string", - "format": "uri", - "description": "The API URL to get information about the languages of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/languages" - ] - }, - "merges_url": { - "type": "string", - "format": "uri", - "description": "The API URL to merge branches in the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/merges" - ] - }, - "milestones_url": { - "type": "string", - "description": "A template for the API URL to get information about milestones of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/milestones{/number}" - ] - }, - "notifications_url": { - "type": "string", - "description": "A template for the API URL to get information about notifications on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}" - ] - }, - "pulls_url": { - "type": "string", - "description": "A template for the API URL to get information about pull requests on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/pulls{/number}" - ] - }, - "releases_url": { - "type": "string", - "description": "A template for the API URL to get information about releases on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/releases{/id}" - ] - }, - "stargazers_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the stargazers on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/stargazers" - ] - }, - "statuses_url": { - "type": "string", - "description": "A template for the API URL to get information about statuses of a commit.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}" - ] - }, - "subscribers_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the subscribers on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/subscribers" - ] - }, - "subscription_url": { - "type": "string", - "format": "uri", - "description": "The API URL to subscribe to notifications for this repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/subscription" - ] - }, - "tags_url": { - "type": "string", - "format": "uri", - "description": "The API URL to get information about tags on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/tags" - ] - }, - "teams_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the teams on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/teams" - ] - }, - "trees_url": { - "type": "string", - "description": "A template for the API URL to create or retrieve a raw Git tree of the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}" - ] - }, - "hooks_url": { - "type": "string", - "format": "uri", - "description": "The API URL to list the hooks on the repository.", - "examples": [ - "https://api.github.com/repos/octocat/Hello-World/hooks" - ] } - }, - "required": [ - "archive_url", - "assignees_url", - "blobs_url", - "branches_url", - "collaborators_url", - "comments_url", - "commits_url", - "compare_url", - "contents_url", - "contributors_url", - "deployments_url", - "description", - "downloads_url", - "events_url", - "fork", - "forks_url", - "full_name", - "git_commits_url", - "git_refs_url", - "git_tags_url", - "hooks_url", - "html_url", - "id", - "node_id", - "issue_comment_url", - "issue_events_url", - "issues_url", - "keys_url", - "labels_url", - "languages_url", - "merges_url", - "milestones_url", - "name", - "notifications_url", - "owner", - "private", - "pulls_url", - "releases_url", - "stargazers_url", - "statuses_url", - "subscribers_url", - "subscription_url", - "tags_url", - "teams_url", - "trees_url", - "url" ] } } @@ -264854,7 +265120,20 @@ } } ], - "bodyParameters": [], + "bodyParameters": [ + { + "type": "array of integers", + "name": "repository_ids_to_add", + "in": "body", + "description": "

    List of repository IDs to add.

    " + }, + { + "type": "array of integers", + "name": "repository_ids_to_remove", + "in": "body", + "description": "

    List of repository IDs to remove.

    " + } + ], "progAccess": { "userToServerRest": true, "serverToServer": true, @@ -264883,7 +265162,7 @@ } ], "previews": [], - "descriptionHTML": "

    Note

    \n

    \nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.

    \n
    ", + "descriptionHTML": "

    Note

    \n

    \nThis operation supports both server-to-server and user-to-server access.\nUnauthorized users will not see the existence of this endpoint.

    \n
    \n

    Example request body:

    \n
    {\n  \"repository_ids_to_add\": [123, 456],\n  \"repository_ids_to_remove\": [789]\n}\n
    ", "statusCodes": [ { "httpStatusCode": "204", @@ -266508,6 +266787,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -281642,13 +281926,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists one audit log stream configuration via a stream ID.

    \n

    When using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    Lists one audit log stream configuration via stream ID.

    " } - ], - "descriptionHTML": "

    Lists one audit log stream configuration via a stream ID.

    \n

    When using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"

    " + ] }, { "serverUrl": "https://api.github.com", @@ -283293,7 +283577,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -405265,7 +405549,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -405292,7 +405580,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -406135,13 +406423,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get a random sentence from the Zen of GitHub

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get a random sentence from the Zen of GitHub

    " + ] } ] }, @@ -413819,6 +414107,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -421394,6 +421687,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -421731,6 +422029,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -421740,6 +422039,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -422015,6 +422322,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -422075,6 +422392,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -422535,6 +422900,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -422544,6 +422910,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -422819,6 +423193,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -422879,6 +423263,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -423106,6 +423538,304 @@ } ] }, + { + "serverUrl": "https://api.github.com", + "verb": "post", + "requestPath": "/orgs/{org}/attestations/bulk-list", + "title": "List attestations by bulk subject digests", + "category": "orgs", + "subcategory": "orgs", + "parameters": [ + { + "name": "per_page", + "description": "

    The number of results per page (max 100). For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "schema": { + "type": "integer", + "default": 30 + } + }, + { + "name": "before", + "description": "

    A cursor, as given in the Link header. If specified, the query only searches for results before this cursor. For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "after", + "description": "

    A cursor, as given in the Link header. If specified, the query only searches for results after this cursor. For more information, see \"Using pagination in the REST API.\"

    ", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "org", + "description": "

    The organization name. The name is not case sensitive.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "name": "subject_digests", + "in": "body", + "description": "

    List of subject digests to fetch attestations for.

    ", + "isRequired": true + }, + { + "type": "string", + "name": "predicate_type", + "in": "body", + "description": "

    Optional filter for fetching attestations with a given predicate type.\nThis option accepts provenance, sbom, or freeform text for custom predicate types.

    " + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [], + "allowPermissionlessAccess": true, + "allowsPublicRead": true + }, + "codeExamples": [ + { + "key": "default", + "request": { + "contentType": "application/json", + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "bodyParameters": { + "subject_digests": [ + "sha256:abc123", + "sha512:def456" + ] + }, + "parameters": { + "org": "ORG" + } + }, + "response": { + "statusCode": "200", + "contentType": "application/json", + "description": "

    Response

    ", + "example": { + "attestations_subject_digests": [ + { + "sha256:abc": [ + { + "bundle": { + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "tlogEntries": [ + { + "logIndex": "97913980", + "logId": { + "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" + }, + "kindVersion": { + "kind": "dsse", + "version": "0.0.1" + }, + "integratedTime": "1716998992", + "inclusionPromise": { + "signedEntryTimestamp": "MEYCIQCeEsQAy+qXtULkh52wbnHrkt2R2JQ05P9STK/xmdpQ2AIhANiG5Gw6cQiMnwvUz1+9UKtG/vlC8dduq07wsFOViwSL" + }, + "inclusionProof": { + "logIndex": "93750549", + "rootHash": "KgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=", + "treeSize": "93750551", + "hashes": [ + "8LI21mzwxnUSo0fuZeFsUrz2ujZ4QAL+oGeTG+5toZg=", + "nCb369rcIytNhGwWoqBv+eV49X3ZKpo/HJGKm9V+dck=", + "hnNQ9mUdSwYCfdV21pd87NucrdRRNZATowlaRR1hJ4A=", + "MBhhK33vlD4Tq/JKgAaXUI4VjmosWKe6+7RNpQ2ncNM=", + "XKWUE3stvGV1OHsIGiCGfn047Ok6uD4mFkh7BaicaEc=", + "Tgve40VPFfuei+0nhupdGpfPPR+hPpZjxgTiDT8WNoY=", + "wV+S/7tLtYGzkLaSb6UDqexNyhMvumHK/RpTNvEZuLU=", + "uwaWufty6sn6XqO1Tb9M3Vz6sBKPu0HT36mStxJNd7s=", + "jUfeMOXQP0XF1JAnCEETVbfRKMUwCzrVUzYi8vnDMVs=", + "xQKjzJAwwdlQG/YUYBKPXxbCmhMYKo1wnv+6vDuKWhQ=", + "cX3Agx+hP66t1ZLbX/yHbfjU46/3m/VAmWyG/fhxAVc=", + "sjohk/3DQIfXTgf/5XpwtdF7yNbrf8YykOMHr1CyBYQ=", + "98enzMaC+x5oCMvIZQA5z8vu2apDMCFvE/935NfuPw8=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 2605736670972794746\\n93750551\\nKgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=\\n\\n— rekor.sigstore.dev wNI9ajBEAiBkLzdjY8A9HReU7rmtjwZ+JpSuYtEr9SmvSwUIW7FBjgIgKo+vhkW3tqc+gc8fw9gza3xLoncA8a+MTaJYCaLGA9c=\\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiM2I1YzkwNDk5MGFiYzE4NjI1ZWE3Njg4MzE1OGEwZmI4MTEwMjM4MGJkNjQwZjI5OWJlMzYwZWVkOTMxNjYwYiJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjM4ZGNlZDJjMzE1MGU2OTQxMDViYjZiNDNjYjY3NzBiZTYzZDdhNGM4NjNiMTc2YTkwMmU1MGQ5ZTAyN2ZiMjMifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVRQ0lFR0lHQW03Z1pWTExwc3JQY2puZEVqaXVjdEUyL2M5K2o5S0d2YXp6M3JsQWlBZDZPMTZUNWhrelJNM0liUlB6bSt4VDQwbU5RWnhlZmQ3bGFEUDZ4MlhMUT09IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VkcVZFTkRRbWhUWjBGM1NVSkJaMGxWVjFsNGNVdHpjazFUTTFOMmJEVkphalZQUkdaQ1owMUtUeTlKZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwUmQwNVVTVFZOVkZsM1QxUlZlVmRvWTA1TmFsRjNUbFJKTlUxVVdYaFBWRlY1VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVmtiV2RvVGs1M00yNVZMMHQxWlZGbmMzQkhTRmMzWjJnNVdFeEVMMWRrU1RoWlRVSUtLekJ3TUZZMGJ6RnJTRzgyWTAweGMwUktaM0pEWjFCUlZYcDRjSFZaZFc4cmVIZFFTSGxzTDJ0RWVXWXpSVXhxYTJGUFEwSlVUWGRuWjFWMlRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdSQ1owNVdTRkUwUlVablVWVnhaa05RQ25aWVMwRjJVelJEWkdoUk1taGlXbGRLVTA5RmRsWnZkMGgzV1VSV1VqQnFRa0puZDBadlFWVXpPVkJ3ZWpGWmEwVmFZalZ4VG1wd1MwWlhhWGhwTkZrS1drUTRkMWRuV1VSV1VqQlNRVkZJTDBKR1FYZFViMXBOWVVoU01HTklUVFpNZVRsdVlWaFNiMlJYU1hWWk1qbDBUREpPYzJGVE9XcGlSMnQyVEcxa2NBcGtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbHBIVm5kaVJ6azFZbGRXZFdSRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVNR051Vm5WaGVrRTFDa0puYjNKQ1owVkZRVmxQTDAxQlJVSkNRM1J2WkVoU2QyTjZiM1pNTTFKMllUSldkVXh0Um1wa1IyeDJZbTVOZFZveWJEQmhTRlpwWkZoT2JHTnRUbllLWW01U2JHSnVVWFZaTWpsMFRVSTRSME5wYzBkQlVWRkNaemM0ZDBGUlNVVkZXR1IyWTIxMGJXSkhPVE5ZTWxKd1l6TkNhR1JIVG05TlJGbEhRMmx6UndwQlVWRkNaemM0ZDBGUlRVVkxSMXBvV2xkWmVWcEhVbXRQUkVacFRVUmplazVxWXpCUFJGRjRUVEpGTTFsNldUQk9iVTVyVFVkS2JWbDZTVEpaZWtGM0NsbFVRWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNRa0ZSUzFKSFZuZGlSemsxWWxkV2RXUkVRVlpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0ZrYW1KSGEzWUtXVEo0Y0UxQ05FZERhWE5IUVZGUlFtYzNPSGRCVVZsRlJVaEtiRnB1VFhaaFIxWm9Xa2hOZG1SSVNqRmliWE4zVDNkWlMwdDNXVUpDUVVkRWRucEJRZ3BEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVk1iVVpxWkVkc2RtSnVUWFZhTW13d1lVaFdhV1JZVG14amJVNTJZbTVTYkdKdVVYVlpNamwwQ2sxR2QwZERhWE5IUVZGUlFtYzNPSGRCVVd0RlZHZDRUV0ZJVWpCalNFMDJUSGs1Ym1GWVVtOWtWMGwxV1RJNWRFd3lUbk5oVXpscVlrZHJka3h0WkhBS1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmFSMVozWWtjNU5XSlhWblZrUXpVMVlsZDRRV050Vm0xamVUbHZXbGRHYTJONU9UQmpibFoxWVhwQk5BcENaMjl5UW1kRlJVRlpUeTlOUVVWTFFrTnZUVXRIV21oYVYxbDVXa2RTYTA5RVJtbE5SR042VG1wak1FOUVVWGhOTWtVeldYcFpNRTV0VG10TlIwcHRDbGw2U1RKWmVrRjNXVlJCZDBoUldVdExkMWxDUWtGSFJIWjZRVUpEZDFGUVJFRXhibUZZVW05a1YwbDBZVWM1ZW1SSFZtdE5RMjlIUTJselIwRlJVVUlLWnpjNGQwRlJkMFZJUVhkaFlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2MyRlRPV3BpUjJ0M1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWdwRVVWRnhSRU5vYlZsWFZtMU5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBGSENrTnBjMGRCVVZGQ1p6YzRkMEZSTkVWRlozZFJZMjFXYldONU9XOWFWMFpyWTNrNU1HTnVWblZoZWtGYVFtZHZja0puUlVWQldVOHZUVUZGVUVKQmMwMEtRMVJKZUUxcVdYaE5la0V3VDFSQmJVSm5iM0pDWjBWRlFWbFBMMDFCUlZGQ1FtZE5SbTFvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhZ3BpUjJ0M1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVdEVRV2N4VDFSamQwNUVZM2hOVkVKalFtZHZja0puUlVWQldVOHZUVUZGVTBKRk5FMVVSMmd3Q21SSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhbUpIYTNaWk1uaHdUSGsxYm1GWVVtOWtWMGwyWkRJNWVXRXlXbk5pTTJSNlRESlNiR05IZUhZS1pWY3hiR0p1VVhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtUklTakZpYlhOM1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmh0V1ZkV2JRcE5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBWSFEybHpSMEZSVVVKbk56aDNDa0ZTVVVWRmQzZFNaREk1ZVdFeVduTmlNMlJtV2tkc2VtTkhSakJaTW1kM1ZGRlpTMHQzV1VKQ1FVZEVkbnBCUWtaUlVTOUVSREZ2WkVoU2QyTjZiM1lLVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5ZUhCTU1rNXpZVk01YUZrelVuQmlNalY2VEROS01XSnVUWFpQVkVrMFQxUkJNMDVVWXpGTmFUbG9aRWhTYkFwaVdFSXdZM2s0ZUUxQ1dVZERhWE5IUVZGUlFtYzNPSGRCVWxsRlEwRjNSMk5JVm1saVIyeHFUVWxIVEVKbmIzSkNaMFZGUVdSYU5VRm5VVU5DU0RCRkNtVjNRalZCU0dOQk0xUXdkMkZ6WWtoRlZFcHFSMUkwWTIxWFl6TkJjVXBMV0hKcVpWQkxNeTlvTkhCNVowTTRjRGR2TkVGQlFVZFFlRkl4ZW1KblFVRUtRa0ZOUVZORVFrZEJhVVZCS3pobmJGRkplRTlCYUZoQ1FVOVRObE1yT0ZweGQwcGpaSGQzVTNJdlZGZHBhSE16WkV4eFZrRjJiME5KVVVSaWVUbG9NUXBKWTNWRVJYSXJlbk5YYVV3NFVIYzFRMU5VZEd0c2RFbzBNakZ6UlRneFZuWjFOa0Z3VkVGTFFtZG5jV2hyYWs5UVVWRkVRWGRPYmtGRVFtdEJha0VyQ2tSSU4xQXJhR2cwVmtoWFprTlhXSFJ5UzFSdlFrdDFZa0pyUzNCbVYwTlpVWGhxV0UweWRsWXZibEJ4WWxwR1dVOVdXazlpWlRaQlRuSm5lV1J2V1VNS1RVWlZUV0l6ZUhwelJrNVJXWFp6UlZsUGFUSkxibkoyUmpCMFoyOXdiVmhIVm05NmJsb3JjUzh5UVVsRVZ6bEdNVVUzV1RaWk1EWXhaVzkxUVZsa1NBcFhkejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn1dfX0=" + } + ], + "timestampVerificationData": {}, + "certificate": { + "rawBytes": "MIIGjTCCBhSgAwIBAgIUWYxqKsrMS3Svl5Ij5ODfBgMJO/IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjQwNTI5MTYwOTUyWhcNMjQwNTI5MTYxOTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdmghNNw3nU/KueQgspGHW7gh9XLD/WdI8YMB+0p0V4o1kHo6cM1sDJgrCgPQUzxpuYuo+xwPHyl/kDyf3ELjkaOCBTMwggUvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUqfCPvXKAvS4CdhQ2hbZWJSOEvVowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wWgYDVR0RAQH/BFAwToZMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwGAYKKwYBBAGDvzABBAQKRGVwbG95bWVudDAVBgorBgEEAYO/MAEFBAdjbGkvY2xpMB4GCisGAQQBg78wAQYEEHJlZnMvaGVhZHMvdHJ1bmswOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMFwGCisGAQQBg78wAQkETgxMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA4BgorBgEEAYO/MAEKBCoMKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMCoGCisGAQQBg78wAQwEHAwaaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkwOAYKKwYBBAGDvzABDQQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCAGCisGAQQBg78wAQ4EEgwQcmVmcy9oZWFkcy90cnVuazAZBgorBgEEAYO/MAEPBAsMCTIxMjYxMzA0OTAmBgorBgEEAYO/MAEQBBgMFmh0dHBzOi8vZ2l0aHViLmNvbS9jbGkwGAYKKwYBBAGDvzABEQQKDAg1OTcwNDcxMTBcBgorBgEEAYO/MAESBE4MTGh0dHBzOi8vZ2l0aHViLmNvbS9jbGkvY2xpLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveW1lbnQueW1sQHJlZnMvaGVhZHMvdHJ1bmswOAYKKwYBBAGDvzABEwQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwTQYKKwYBBAGDvzABFQQ/DD1odHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaS9hY3Rpb25zL3J1bnMvOTI4OTA3NTc1Mi9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGPxR1zbgAABAMASDBGAiEA+8glQIxOAhXBAOS6S+8ZqwJcdwwSr/TWihs3dLqVAvoCIQDby9h1IcuDEr+zsWiL8Pw5CSTtkltJ421sE81Vvu6ApTAKBggqhkjOPQQDAwNnADBkAjA+DH7P+hh4VHWfCWXtrKToBKubBkKpfWCYQxjXM2vV/nPqbZFYOVZObe6ANrgydoYCMFUMb3xzsFNQYvsEYOi2KnrvF0tgopmXGVoznZ+q/2AIDW9F1E7Y6Y061eouAYdHWw==" + } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoiZ2hfMi41MC4wX3dpbmRvd3NfYXJtNjQuemlwIiwiZGlnZXN0Ijp7InNoYTI1NiI6IjhhYWQxMjBiNDE2Mzg2YjQyNjllZjYyYzhmZGViY2FkMzFhNzA4NDcyOTc4MTdhMTQ5ZGFmOTI3ZWRjODU1NDgifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL3Nsc2EtZnJhbWV3b3JrLmdpdGh1Yi5pby9naXRodWItYWN0aW9ucy1idWlsZHR5cGVzL3dvcmtmbG93L3YxIiwiZXh0ZXJuYWxQYXJhbWV0ZXJzIjp7IndvcmtmbG93Ijp7InJlZiI6InJlZnMvaGVhZHMvdHJ1bmsiLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkiLCJwYXRoIjoiLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X2Rpc3BhdGNoIiwicmVwb3NpdG9yeV9pZCI6IjIxMjYxMzA0OSIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiI1OTcwNDcxMSJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaUByZWZzL2hlYWRzL3RydW5rIiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6ImZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL2dpdGh1Yi1ob3N0ZWQifSwibWV0YWRhdGEiOnsiaW52b2NhdGlvbklkIjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvYWN0aW9ucy9ydW5zLzkyODkwNzU3NTIvYXR0ZW1wdHMvMSJ9fX19", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEQCIEGIGAm7gZVLLpsrPcjndEjiuctE2/c9+j9KGvazz3rlAiAd6O16T5hkzRM3IbRPzm+xT40mNQZxefd7laDP6x2XLQ==" + } + ] + } + }, + "repository_id": 1 + }, + { + "bundle": { + "mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", + "verificationMaterial": { + "tlogEntries": [ + { + "logIndex": "97913980", + "logId": { + "keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0=" + }, + "kindVersion": { + "kind": "dsse", + "version": "0.0.1" + }, + "integratedTime": "1716998992", + "inclusionPromise": { + "signedEntryTimestamp": "MEYCIQCeEsQAy+qXtULkh52wbnHrkt2R2JQ05P9STK/xmdpQ2AIhANiG5Gw6cQiMnwvUz1+9UKtG/vlC8dduq07wsFOViwSL" + }, + "inclusionProof": { + "logIndex": "93750549", + "rootHash": "KgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=", + "treeSize": "93750551", + "hashes": [ + "8LI21mzwxnUSo0fuZeFsUrz2ujZ4QAL+oGeTG+5toZg=", + "nCb369rcIytNhGwWoqBv+eV49X3ZKpo/HJGKm9V+dck=", + "hnNQ9mUdSwYCfdV21pd87NucrdRRNZATowlaRR1hJ4A=", + "MBhhK33vlD4Tq/JKgAaXUI4VjmosWKe6+7RNpQ2ncNM=", + "XKWUE3stvGV1OHsIGiCGfn047Ok6uD4mFkh7BaicaEc=", + "Tgve40VPFfuei+0nhupdGpfPPR+hPpZjxgTiDT8WNoY=", + "wV+S/7tLtYGzkLaSb6UDqexNyhMvumHK/RpTNvEZuLU=", + "uwaWufty6sn6XqO1Tb9M3Vz6sBKPu0HT36mStxJNd7s=", + "jUfeMOXQP0XF1JAnCEETVbfRKMUwCzrVUzYi8vnDMVs=", + "xQKjzJAwwdlQG/YUYBKPXxbCmhMYKo1wnv+6vDuKWhQ=", + "cX3Agx+hP66t1ZLbX/yHbfjU46/3m/VAmWyG/fhxAVc=", + "sjohk/3DQIfXTgf/5XpwtdF7yNbrf8YykOMHr1CyBYQ=", + "98enzMaC+x5oCMvIZQA5z8vu2apDMCFvE/935NfuPw8=" + ], + "checkpoint": { + "envelope": "rekor.sigstore.dev - 2605736670972794746\\n93750551\\nKgKiXoOl8rM5d4y6Xlbm2QLftvj/FYvTs6z7dJlNO60=\\n\\n— rekor.sigstore.dev wNI9ajBEAiBkLzdjY8A9HReU7rmtjwZ+JpSuYtEr9SmvSwUIW7FBjgIgKo+vhkW3tqc+gc8fw9gza3xLoncA8a+MTaJYCaLGA9c=\\n" + } + }, + "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiZHNzZSIsInNwZWMiOnsiZW52ZWxvcGVIYXNoIjp7ImFsZ29yaXRobSI6InNoYTI1NiIsInZhbHVlIjoiM2I1YzkwNDk5MGFiYzE4NjI1ZWE3Njg4MzE1OGEwZmI4MTEwMjM4MGJkNjQwZjI5OWJlMzYwZWVkOTMxNjYwYiJ9LCJwYXlsb2FkSGFzaCI6eyJhbGdvcml0aG0iOiJzaGEyNTYiLCJ2YWx1ZSI6IjM4ZGNlZDJjMzE1MGU2OTQxMDViYjZiNDNjYjY3NzBiZTYzZDdhNGM4NjNiMTc2YTkwMmU1MGQ5ZTAyN2ZiMjMifSwic2lnbmF0dXJlcyI6W3sic2lnbmF0dXJlIjoiTUVRQ0lFR0lHQW03Z1pWTExwc3JQY2puZEVqaXVjdEUyL2M5K2o5S0d2YXp6M3JsQWlBZDZPMTZUNWhrelJNM0liUlB6bSt4VDQwbU5RWnhlZmQ3bGFEUDZ4MlhMUT09IiwidmVyaWZpZXIiOiJMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VkcVZFTkRRbWhUWjBGM1NVSkJaMGxWVjFsNGNVdHpjazFUTTFOMmJEVkphalZQUkdaQ1owMUtUeTlKZDBObldVbExiMXBKZW1vd1JVRjNUWGNLVG5wRlZrMUNUVWRCTVZWRlEyaE5UV015Ykc1ak0xSjJZMjFWZFZwSFZqSk5ValIzU0VGWlJGWlJVVVJGZUZaNllWZGtlbVJIT1hsYVV6RndZbTVTYkFwamJURnNXa2RzYUdSSFZYZElhR05PVFdwUmQwNVVTVFZOVkZsM1QxUlZlVmRvWTA1TmFsRjNUbFJKTlUxVVdYaFBWRlY1VjJwQlFVMUdhM2RGZDFsSUNrdHZXa2w2YWpCRFFWRlpTVXR2V2tsNmFqQkVRVkZqUkZGblFVVmtiV2RvVGs1M00yNVZMMHQxWlZGbmMzQkhTRmMzWjJnNVdFeEVMMWRrU1RoWlRVSUtLekJ3TUZZMGJ6RnJTRzgyWTAweGMwUktaM0pEWjFCUlZYcDRjSFZaZFc4cmVIZFFTSGxzTDJ0RWVXWXpSVXhxYTJGUFEwSlVUWGRuWjFWMlRVRTBSd3BCTVZWa1JIZEZRaTkzVVVWQmQwbElaMFJCVkVKblRsWklVMVZGUkVSQlMwSm5aM0pDWjBWR1FsRmpSRUY2UVdSQ1owNVdTRkUwUlVablVWVnhaa05RQ25aWVMwRjJVelJEWkdoUk1taGlXbGRLVTA5RmRsWnZkMGgzV1VSV1VqQnFRa0puZDBadlFWVXpPVkJ3ZWpGWmEwVmFZalZ4VG1wd1MwWlhhWGhwTkZrS1drUTRkMWRuV1VSV1VqQlNRVkZJTDBKR1FYZFViMXBOWVVoU01HTklUVFpNZVRsdVlWaFNiMlJYU1hWWk1qbDBUREpPYzJGVE9XcGlSMnQyVEcxa2NBcGtSMmd4V1drNU0ySXpTbkphYlhoMlpETk5kbHBIVm5kaVJ6azFZbGRXZFdSRE5UVmlWM2hCWTIxV2JXTjVPVzlhVjBaclkzazVNR051Vm5WaGVrRTFDa0puYjNKQ1owVkZRVmxQTDAxQlJVSkNRM1J2WkVoU2QyTjZiM1pNTTFKMllUSldkVXh0Um1wa1IyeDJZbTVOZFZveWJEQmhTRlpwWkZoT2JHTnRUbllLWW01U2JHSnVVWFZaTWpsMFRVSTRSME5wYzBkQlVWRkNaemM0ZDBGUlNVVkZXR1IyWTIxMGJXSkhPVE5ZTWxKd1l6TkNhR1JIVG05TlJGbEhRMmx6UndwQlVWRkNaemM0ZDBGUlRVVkxSMXBvV2xkWmVWcEhVbXRQUkVacFRVUmplazVxWXpCUFJGRjRUVEpGTTFsNldUQk9iVTVyVFVkS2JWbDZTVEpaZWtGM0NsbFVRWGRIUVZsTFMzZFpRa0pCUjBSMmVrRkNRa0ZSUzFKSFZuZGlSemsxWWxkV2RXUkVRVlpDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0ZrYW1KSGEzWUtXVEo0Y0UxQ05FZERhWE5IUVZGUlFtYzNPSGRCVVZsRlJVaEtiRnB1VFhaaFIxWm9Xa2hOZG1SSVNqRmliWE4zVDNkWlMwdDNXVUpDUVVkRWRucEJRZ3BEUVZGMFJFTjBiMlJJVW5kamVtOTJURE5TZG1FeVZuVk1iVVpxWkVkc2RtSnVUWFZhTW13d1lVaFdhV1JZVG14amJVNTJZbTVTYkdKdVVYVlpNamwwQ2sxR2QwZERhWE5IUVZGUlFtYzNPSGRCVVd0RlZHZDRUV0ZJVWpCalNFMDJUSGs1Ym1GWVVtOWtWMGwxV1RJNWRFd3lUbk5oVXpscVlrZHJka3h0WkhBS1pFZG9NVmxwT1ROaU0wcHlXbTE0ZG1RelRYWmFSMVozWWtjNU5XSlhWblZrUXpVMVlsZDRRV050Vm0xamVUbHZXbGRHYTJONU9UQmpibFoxWVhwQk5BcENaMjl5UW1kRlJVRlpUeTlOUVVWTFFrTnZUVXRIV21oYVYxbDVXa2RTYTA5RVJtbE5SR042VG1wak1FOUVVWGhOTWtVeldYcFpNRTV0VG10TlIwcHRDbGw2U1RKWmVrRjNXVlJCZDBoUldVdExkMWxDUWtGSFJIWjZRVUpEZDFGUVJFRXhibUZZVW05a1YwbDBZVWM1ZW1SSFZtdE5RMjlIUTJselIwRlJVVUlLWnpjNGQwRlJkMFZJUVhkaFlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2MyRlRPV3BpUjJ0M1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWdwRVVWRnhSRU5vYlZsWFZtMU5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBGSENrTnBjMGRCVVZGQ1p6YzRkMEZSTkVWRlozZFJZMjFXYldONU9XOWFWMFpyWTNrNU1HTnVWblZoZWtGYVFtZHZja0puUlVWQldVOHZUVUZGVUVKQmMwMEtRMVJKZUUxcVdYaE5la0V3VDFSQmJVSm5iM0pDWjBWRlFWbFBMMDFCUlZGQ1FtZE5SbTFvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhZ3BpUjJ0M1IwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWUlVVdEVRV2N4VDFSamQwNUVZM2hOVkVKalFtZHZja0puUlVWQldVOHZUVUZGVTBKRk5FMVVSMmd3Q21SSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhbUpIYTNaWk1uaHdUSGsxYm1GWVVtOWtWMGwyWkRJNWVXRXlXbk5pTTJSNlRESlNiR05IZUhZS1pWY3hiR0p1VVhWbFZ6RnpVVWhLYkZwdVRYWmhSMVpvV2toTmRtUklTakZpYlhOM1QwRlpTMHQzV1VKQ1FVZEVkbnBCUWtWM1VYRkVRMmh0V1ZkV2JRcE5iVkpyV2tSbmVGbHFRVE5OZWxrelRrUm5NRTFVVG1oT01rMHlUa1JhYWxwRVFtbGFiVTE1VG0xTmQwMUhSWGROUTBWSFEybHpSMEZSVVVKbk56aDNDa0ZTVVVWRmQzZFNaREk1ZVdFeVduTmlNMlJtV2tkc2VtTkhSakJaTW1kM1ZGRlpTMHQzV1VKQ1FVZEVkbnBCUWtaUlVTOUVSREZ2WkVoU2QyTjZiM1lLVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5ZUhCTU1rNXpZVk01YUZrelVuQmlNalY2VEROS01XSnVUWFpQVkVrMFQxUkJNMDVVWXpGTmFUbG9aRWhTYkFwaVdFSXdZM2s0ZUUxQ1dVZERhWE5IUVZGUlFtYzNPSGRCVWxsRlEwRjNSMk5JVm1saVIyeHFUVWxIVEVKbmIzSkNaMFZGUVdSYU5VRm5VVU5DU0RCRkNtVjNRalZCU0dOQk0xUXdkMkZ6WWtoRlZFcHFSMUkwWTIxWFl6TkJjVXBMV0hKcVpWQkxNeTlvTkhCNVowTTRjRGR2TkVGQlFVZFFlRkl4ZW1KblFVRUtRa0ZOUVZORVFrZEJhVVZCS3pobmJGRkplRTlCYUZoQ1FVOVRObE1yT0ZweGQwcGpaSGQzVTNJdlZGZHBhSE16WkV4eFZrRjJiME5KVVVSaWVUbG9NUXBKWTNWRVJYSXJlbk5YYVV3NFVIYzFRMU5VZEd0c2RFbzBNakZ6UlRneFZuWjFOa0Z3VkVGTFFtZG5jV2hyYWs5UVVWRkVRWGRPYmtGRVFtdEJha0VyQ2tSSU4xQXJhR2cwVmtoWFprTlhXSFJ5UzFSdlFrdDFZa0pyUzNCbVYwTlpVWGhxV0UweWRsWXZibEJ4WWxwR1dVOVdXazlpWlRaQlRuSm5lV1J2V1VNS1RVWlZUV0l6ZUhwelJrNVJXWFp6UlZsUGFUSkxibkoyUmpCMFoyOXdiVmhIVm05NmJsb3JjUzh5UVVsRVZ6bEdNVVUzV1RaWk1EWXhaVzkxUVZsa1NBcFhkejA5Q2kwdExTMHRSVTVFSUVORlVsUkpSa2xEUVZSRkxTMHRMUzBLIn1dfX0=" + } + ], + "timestampVerificationData": {}, + "certificate": { + "rawBytes": "MIIGjTCCBhSgAwIBAgIUWYxqKsrMS3Svl5Ij5ODfBgMJO/IwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjQwNTI5MTYwOTUyWhcNMjQwNTI5MTYxOTUyWjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdmghNNw3nU/KueQgspGHW7gh9XLD/WdI8YMB+0p0V4o1kHo6cM1sDJgrCgPQUzxpuYuo+xwPHyl/kDyf3ELjkaOCBTMwggUvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUqfCPvXKAvS4CdhQ2hbZWJSOEvVowHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wWgYDVR0RAQH/BFAwToZMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA5BgorBgEEAYO/MAEBBCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMB8GCisGAQQBg78wAQIEEXdvcmtmbG93X2Rpc3BhdGNoMDYGCisGAQQBg78wAQMEKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwGAYKKwYBBAGDvzABBAQKRGVwbG95bWVudDAVBgorBgEEAYO/MAEFBAdjbGkvY2xpMB4GCisGAQQBg78wAQYEEHJlZnMvaGVhZHMvdHJ1bmswOwYKKwYBBAGDvzABCAQtDCtodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tMFwGCisGAQQBg78wAQkETgxMaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWxAcmVmcy9oZWFkcy90cnVuazA4BgorBgEEAYO/MAEKBCoMKGZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAwHQYKKwYBBAGDvzABCwQPDA1naXRodWItaG9zdGVkMCoGCisGAQQBg78wAQwEHAwaaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkwOAYKKwYBBAGDvzABDQQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCAGCisGAQQBg78wAQ4EEgwQcmVmcy9oZWFkcy90cnVuazAZBgorBgEEAYO/MAEPBAsMCTIxMjYxMzA0OTAmBgorBgEEAYO/MAEQBBgMFmh0dHBzOi8vZ2l0aHViLmNvbS9jbGkwGAYKKwYBBAGDvzABEQQKDAg1OTcwNDcxMTBcBgorBgEEAYO/MAESBE4MTGh0dHBzOi8vZ2l0aHViLmNvbS9jbGkvY2xpLy5naXRodWIvd29ya2Zsb3dzL2RlcGxveW1lbnQueW1sQHJlZnMvaGVhZHMvdHJ1bmswOAYKKwYBBAGDvzABEwQqDChmYWVmMmRkZDgxYjA3MzY3NDg0MTNhN2M2NDZjZDBiZmMyNmMwMGEwMCEGCisGAQQBg78wARQEEwwRd29ya2Zsb3dfZGlzcGF0Y2gwTQYKKwYBBAGDvzABFQQ/DD1odHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaS9hY3Rpb25zL3J1bnMvOTI4OTA3NTc1Mi9hdHRlbXB0cy8xMBYGCisGAQQBg78wARYECAwGcHVibGljMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGPxR1zbgAABAMASDBGAiEA+8glQIxOAhXBAOS6S+8ZqwJcdwwSr/TWihs3dLqVAvoCIQDby9h1IcuDEr+zsWiL8Pw5CSTtkltJ421sE81Vvu6ApTAKBggqhkjOPQQDAwNnADBkAjA+DH7P+hh4VHWfCWXtrKToBKubBkKpfWCYQxjXM2vV/nPqbZFYOVZObe6ANrgydoYCMFUMb3xzsFNQYvsEYOi2KnrvF0tgopmXGVoznZ+q/2AIDW9F1E7Y6Y061eouAYdHWw==" + } + }, + "dsseEnvelope": { + "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJzdWJqZWN0IjpbeyJuYW1lIjoiZ2hfMi41MC4wX3dpbmRvd3NfYXJtNjQuemlwIiwiZGlnZXN0Ijp7InNoYTI1NiI6IjhhYWQxMjBiNDE2Mzg2YjQyNjllZjYyYzhmZGViY2FkMzFhNzA4NDcyOTc4MTdhMTQ5ZGFmOTI3ZWRjODU1NDgifX1dLCJwcmVkaWNhdGVUeXBlIjoiaHR0cHM6Ly9zbHNhLmRldi9wcm92ZW5hbmNlL3YxIiwicHJlZGljYXRlIjp7ImJ1aWxkRGVmaW5pdGlvbiI6eyJidWlsZFR5cGUiOiJodHRwczovL3Nsc2EtZnJhbWV3b3JrLmdpdGh1Yi5pby9naXRodWItYWN0aW9ucy1idWlsZHR5cGVzL3dvcmtmbG93L3YxIiwiZXh0ZXJuYWxQYXJhbWV0ZXJzIjp7IndvcmtmbG93Ijp7InJlZiI6InJlZnMvaGVhZHMvdHJ1bmsiLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkiLCJwYXRoIjoiLmdpdGh1Yi93b3JrZmxvd3MvZGVwbG95bWVudC55bWwifX0sImludGVybmFsUGFyYW1ldGVycyI6eyJnaXRodWIiOnsiZXZlbnRfbmFtZSI6IndvcmtmbG93X2Rpc3BhdGNoIiwicmVwb3NpdG9yeV9pZCI6IjIxMjYxMzA0OSIsInJlcG9zaXRvcnlfb3duZXJfaWQiOiI1OTcwNDcxMSJ9fSwicmVzb2x2ZWREZXBlbmRlbmNpZXMiOlt7InVyaSI6ImdpdCtodHRwczovL2dpdGh1Yi5jb20vY2xpL2NsaUByZWZzL2hlYWRzL3RydW5rIiwiZGlnZXN0Ijp7ImdpdENvbW1pdCI6ImZhZWYyZGRkODFiMDczNjc0ODQxM2E3YzY0NmNkMGJmYzI2YzAwYTAifX1dfSwicnVuRGV0YWlscyI6eyJidWlsZGVyIjp7ImlkIjoiaHR0cHM6Ly9naXRodWIuY29tL2FjdGlvbnMvcnVubmVyL2dpdGh1Yi1ob3N0ZWQifSwibWV0YWRhdGEiOnsiaW52b2NhdGlvbklkIjoiaHR0cHM6Ly9naXRodWIuY29tL2NsaS9jbGkvYWN0aW9ucy9ydW5zLzkyODkwNzU3NTIvYXR0ZW1wdHMvMSJ9fX19", + "payloadType": "application/vnd.in-toto+json", + "signatures": [ + { + "sig": "MEQCIEGIGAm7gZVLLpsrPcjndEjiuctE2/c9+j9KGvazz3rlAiAd6O16T5hkzRM3IbRPzm+xT40mNQZxefd7laDP6x2XLQ==" + } + ] + } + }, + "repository_id": 1 + } + ] + } + ] + }, + "schema": { + "type": "object", + "properties": { + "attestations_subject_digests": { + "type": "object", + "additionalProperties": { + "type": [ + "array", + "null" + ], + "items": { + "type": "object", + "properties": { + "bundle": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "verificationMaterial": { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "dsseEnvelope": { + "type": "object", + "properties": {}, + "additionalProperties": true + } + }, + "description": "The bundle of the attestation." + }, + "repository_id": { + "type": "integer" + }, + "bundle_url": { + "type": "string" + } + } + } + }, + "description": "Mapping of subject digest to bundles." + }, + "page_info": { + "type": "object", + "properties": { + "has_next": { + "type": "boolean", + "description": "Indicates whether there is a next page." + }, + "has_previous": { + "type": "boolean", + "description": "Indicates whether there is a previous page." + }, + "next": { + "type": "string", + "description": "The cursor to the next page." + }, + "previous": { + "type": "string", + "description": "The cursor to the previous page." + } + }, + "description": "Information about the current page." + } + } + } + } + } + ], + "previews": [], + "descriptionHTML": "

    List a collection of artifact attestations associated with any entry in a list of subject digests owned by an organization.

    \n

    The collection of attestations returned by this endpoint is filtered according to the authenticated user's permissions; if the authenticated user cannot read a repository, the attestations associated with that repository will not be included in the response. In addition, when using a fine-grained access token the attestations:read permission is required.

    \n

    Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "get", @@ -426564,13 +427294,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get the number of API requests and rate-limited requests made within an organization by a specific user over a specified time period.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get the number of API requests and rate-limited requests made within an organization by a specific user over a specified time period.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -427454,7 +428184,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -439604,13 +440334,13 @@ } ], "previews": [], + "descriptionHTML": "

    Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"

    \n

    The authenticated user must be an administrator for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"

    \n

    The authenticated user must be an administrator for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -443502,6 +444232,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -445271,6 +446006,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -445385,7 +446125,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -445409,7 +446149,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -457593,6 +458333,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -458894,6 +459639,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -460143,6 +460893,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -460932,13 +461687,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific package version in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific package version in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    " + ] }, { "serverUrl": "https://api.github.com", @@ -462286,6 +463041,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -463567,6 +464327,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -464865,6 +465630,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -466970,6 +467740,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -468271,6 +469046,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -469587,6 +470367,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -516724,13 +517509,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all reviews for a specified pull request. The list of reviews returns in chronological order.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    The list of reviews returns in chronological order.

    " } - ], - "descriptionHTML": "

    Lists all reviews for a specified pull request. The list of reviews returns in chronological order.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " + ] }, { "serverUrl": "https://api.github.com", @@ -519165,6 +519950,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -537047,6 +537840,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -552667,13 +553465,13 @@ } ], "previews": [], + "descriptionHTML": "

    List a collection of artifact attestations with a given subject digest that are associated with a repository.

    \n

    The authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the attestations:read permission is required.

    \n

    Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    List a collection of artifact attestations with a given subject digest that are associated with a repository.

    \n

    The authenticated user making the request must have read access to the repository. In addition, when using a fine-grained access token the attestations:read permission is required.

    \n

    Please note: in order to offer meaningful security benefits, an attestation's signature and timestamps must be cryptographically verified, and the identity of the attestation signer must be validated. Attestations can be verified using the GitHub CLI attestation verify command. For more information, see our guide on how to use artifact attestations to establish a build's provenance.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -555503,6 +556301,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -561416,6 +562219,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -568639,6 +569447,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -569215,7 +570028,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -575098,6 +575911,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -580066,7 +580884,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -580090,7 +580908,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -596342,6 +597160,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -597911,6 +598734,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -604432,6 +605260,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -606113,6 +607274,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -607119,6 +608613,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -607927,6 +609754,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -608783,6 +610943,339 @@ "null" ], "description": "A boolean value representing whether or not alert is base64 encoded" + }, + "first_location_detected": { + "anyOf": [ + { + "type": "null" + }, + { + "description": "Details on the location where the token was initially detected. This can be a commit, wiki commit, issue, discussion, pull request.\n", + "oneOf": [ + { + "description": "Represents a 'commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path in the repository", + "examples": [ + "/example/secrets.txt" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8BIT ASCII" + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8BIT ASCII" + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "blob_url": { + "type": "string", + "description": "The API URL to get the associated blob resource" + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "commit_url": { + "type": "string", + "description": "The API URL to get the associated commit resource" + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "blob_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents a 'wiki_commit' secret scanning location type. This location type shows that a secret was detected inside a commit to a repository wiki.", + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The file path of the wiki page", + "examples": [ + "/example/Home.md" + ] + }, + "start_line": { + "type": "number", + "description": "Line number at which the secret starts in the file" + }, + "end_line": { + "type": "number", + "description": "Line number at which the secret ends in the file" + }, + "start_column": { + "type": "number", + "description": "The column at which the secret starts within the start line when the file is interpreted as 8-bit ASCII." + }, + "end_column": { + "type": "number", + "description": "The column at which the secret ends within the end line when the file is interpreted as 8-bit ASCII." + }, + "blob_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated blob", + "examples": [ + "af5626b4a114abcb82d63db7c8082c3c4756e51b" + ] + }, + "page_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki page", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/Home/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_sha": { + "type": "string", + "description": "SHA-1 hash ID of the associated commit", + "examples": [ + "302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + }, + "commit_url": { + "type": "string", + "description": "The GitHub URL to get the associated wiki commit", + "examples": [ + "https://github.com/octocat/Hello-World/wiki/_compare/302c0b7e200761c9dd9b57e57db540ee0b4293a5" + ] + } + }, + "required": [ + "path", + "start_line", + "end_line", + "start_column", + "end_column", + "blob_sha", + "page_url", + "commit_sha", + "commit_url" + ] + }, + { + "description": "Represents an 'issue_title' secret scanning location type. This location type shows that a secret was detected in the title of an issue.", + "type": "object", + "properties": { + "issue_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_title_url" + ] + }, + { + "description": "Represents an 'issue_body' secret scanning location type. This location type shows that a secret was detected in the body of an issue.", + "type": "object", + "properties": { + "issue_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/1347" + ] + } + }, + "required": [ + "issue_body_url" + ] + }, + { + "description": "Represents an 'issue_comment' secret scanning location type. This location type shows that a secret was detected in a comment on an issue.", + "type": "object", + "properties": { + "issue_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the issue comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "issue_comment_url" + ] + }, + { + "description": "Represents a 'discussion_title' secret scanning location type. This location type shows that a secret was detected in the title of a discussion.", + "type": "object", + "properties": { + "discussion_title_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082" + ] + } + }, + "required": [ + "discussion_title_url" + ] + }, + { + "description": "Represents a 'discussion_body' secret scanning location type. This location type shows that a secret was detected in the body of a discussion.", + "type": "object", + "properties": { + "discussion_body_url": { + "type": "string", + "format": "uri", + "description": "The URL to the discussion where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussion-4566270" + ] + } + }, + "required": [ + "discussion_body_url" + ] + }, + { + "description": "Represents a 'discussion_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a discussion.", + "type": "object", + "properties": { + "discussion_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the discussion comment where the secret was detected.", + "examples": [ + "https://github.com/community/community/discussions/39082#discussioncomment-4158232" + ] + } + }, + "required": [ + "discussion_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_title' secret scanning location type. This location type shows that a secret was detected in the title of a pull request.", + "type": "object", + "properties": { + "pull_request_title_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_title_url" + ] + }, + { + "description": "Represents a 'pull_request_body' secret scanning location type. This location type shows that a secret was detected in the body of a pull request.", + "type": "object", + "properties": { + "pull_request_body_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846" + ] + } + }, + "required": [ + "pull_request_body_url" + ] + }, + { + "description": "Represents a 'pull_request_comment' secret scanning location type. This location type shows that a secret was detected in a comment on a pull request.", + "type": "object", + "properties": { + "pull_request_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/issues/comments/1081119451" + ] + } + }, + "required": [ + "pull_request_comment_url" + ] + }, + { + "description": "Represents a 'pull_request_review' secret scanning location type. This location type shows that a secret was detected in a review on a pull request.", + "type": "object", + "properties": { + "pull_request_review_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/2846/reviews/80" + ] + } + }, + "required": [ + "pull_request_review_url" + ] + }, + { + "description": "Represents a 'pull_request_review_comment' secret scanning location type. This location type shows that a secret was detected in a review comment on a pull request.", + "type": "object", + "properties": { + "pull_request_review_comment_url": { + "type": "string", + "format": "uri", + "description": "The API URL to get the pull request review comment where the secret was detected.", + "examples": [ + "https://api.github.com/repos/octocat/Hello-World/pulls/comments/12" + ] + } + }, + "required": [ + "pull_request_review_comment_url" + ] + } + ] + } + ] + }, + "has_more_locations": { + "type": "boolean", + "description": "A boolean value representing whether or not the token in the alert was detected in more than one location." } } } @@ -609831,7 +612324,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -610259,7 +612752,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -611140,7 +613633,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -611573,7 +614066,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -641209,6 +643702,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -641265,13 +643763,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists a team's repositories visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists a team's repositories visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

    \n
    " + ] }, { "serverUrl": "https://api.github.com", @@ -647031,6 +649529,11 @@ } } } + }, + "custom_properties": { + "type": "object", + "description": "The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.", + "additionalProperties": true } }, "required": [ @@ -651757,13 +654260,13 @@ } ], "previews": [], + "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List discussion comments endpoint.

    \n
    \n

    List all comments on a team discussion.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List discussion comments endpoint.

    \n
    \n

    List all comments on a team discussion.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "https://api.github.com", @@ -665689,6 +668192,236 @@ } ], "attestations": [ + { + "serverUrl": "https://api.github.com", + "verb": "post", + "requestPath": "/users/{username}/attestations/delete-request", + "title": "Delete attestations in bulk", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "bodyParameters": [ + { + "type": "array of strings", + "name": "subject_digests", + "in": "body", + "description": "

    List of subject digests associated with the artifact attestations to delete.

    ", + "isRequired": true + } + ], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [], + "previews": [], + "descriptionHTML": "

    Delete artifact attestations in bulk by either subject digests or unique ID.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/users/{username}/attestations/digest/{subject_digest}", + "title": "Delete attestations by subject digest", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "subject_digest", + "description": "

    Subject Digest

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "x-multi-segment": true + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "200", + "request": { + "description": "Example 1: Status Code 200", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "subject_digest": "SUBJECT_DIGEST" + } + }, + "response": { + "statusCode": "200", + "description": "

    Response

    " + } + }, + { + "key": "204", + "request": { + "description": "Example 2: Status Code 204", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "subject_digest": "SUBJECT_DIGEST" + } + }, + "response": { + "statusCode": "204", + "description": "

    Response

    " + } + } + ], + "previews": [], + "descriptionHTML": "

    Delete an artifact attestation by subject digest.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "204", + "description": "

    No Content

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/users/{username}/attestations/{attestation_id}", + "title": "Delete attestations by ID", + "category": "users", + "subcategory": "attestations", + "parameters": [ + { + "name": "username", + "description": "

    The handle for the GitHub user account.

    ", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "attestation_id", + "description": "

    Attestation ID

    ", + "in": "path", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Attestations\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "200", + "request": { + "description": "Example 1: Status Code 200", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "attestation_id": "ATTESTATION_ID" + } + }, + "response": { + "statusCode": "200", + "description": "

    Response

    " + } + }, + { + "key": "204", + "request": { + "description": "Example 2: Status Code 204", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "username": "USERNAME", + "attestation_id": "ATTESTATION_ID" + } + }, + "response": { + "statusCode": "204", + "description": "

    Response

    " + } + } + ], + "previews": [], + "descriptionHTML": "

    Delete an artifact attestation by unique ID that is associated with a repository owned by a user.

    ", + "statusCodes": [ + { + "httpStatusCode": "200", + "description": "

    OK

    " + }, + { + "httpStatusCode": "204", + "description": "

    No Content

    " + }, + { + "httpStatusCode": "403", + "description": "

    Forbidden

    " + }, + { + "httpStatusCode": "404", + "description": "

    Resource not found

    " + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "get", diff --git a/src/rest/data/ghes-3.13-2022-11-28/schema.json b/src/rest/data/ghes-3.13-2022-11-28/schema.json index 3fc790036267..983eb7bdebeb 100644 --- a/src/rest/data/ghes-3.13-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.13-2022-11-28/schema.json @@ -313006,7 +313006,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -313033,7 +313037,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -333369,6 +333373,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -333378,6 +333383,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -333650,6 +333663,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -333710,6 +333733,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -334123,6 +334194,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -334132,6 +334204,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -334404,6 +334484,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -334464,6 +334554,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -347155,7 +347293,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -347179,7 +347317,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -417163,6 +417301,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -475966,7 +476112,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -475990,7 +476136,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", diff --git a/src/rest/data/ghes-3.14-2022-11-28/schema.json b/src/rest/data/ghes-3.14-2022-11-28/schema.json index a7db120bd42b..4d27a7c7702e 100644 --- a/src/rest/data/ghes-3.14-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.14-2022-11-28/schema.json @@ -313006,7 +313006,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -313033,7 +313037,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -333369,6 +333373,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -333378,6 +333383,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -333650,6 +333663,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -333710,6 +333733,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -334129,6 +334200,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -334138,6 +334210,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -334410,6 +334490,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -334470,6 +334560,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -350012,7 +350150,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -350036,7 +350174,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -420412,6 +420550,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -479215,7 +479361,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -479239,7 +479385,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", diff --git a/src/rest/data/ghes-3.15-2022-11-28/schema.json b/src/rest/data/ghes-3.15-2022-11-28/schema.json index 59fee11f1c15..6587b0c6414c 100644 --- a/src/rest/data/ghes-3.15-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.15-2022-11-28/schema.json @@ -264,13 +264,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all artifacts for a repository.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all artifacts for a repository.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -1630,13 +1630,13 @@ } ], "previews": [], - "descriptionHTML": "

    Sets GitHub Actions cache usage policy for a repository.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Sets GitHub Actions cache usage policy for a repository.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2168,13 +2168,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets the customization template for an OpenID Connect (OIDC) subject claim.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    A JSON serialized template for OIDC subject claim customization

    " } - ] + ], + "descriptionHTML": "

    Gets the customization template for an OpenID Connect (OIDC) subject claim.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3021,13 +3021,13 @@ } ], "previews": [], - "descriptionHTML": "

    Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Removes an organization from the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3100,13 +3100,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3326,13 +3326,13 @@ } ], "previews": [], - "descriptionHTML": "

    Sets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an enterprise, and sets\nwhether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Enforcing a policy for workflow permissions in your enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    Success response

    " } - ] + ], + "descriptionHTML": "

    Sets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an enterprise, and sets\nwhether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Enforcing a policy for workflow permissions in your enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -4802,13 +4802,13 @@ } ], "previews": [], - "descriptionHTML": "

    Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Adds a repository to the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -4867,13 +4867,13 @@ } ], "previews": [], - "descriptionHTML": "

    Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5032,13 +5032,13 @@ } ], "previews": [], - "descriptionHTML": "

    Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

    \n

    To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

    \n

    To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5112,13 +5112,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an organization,\nas well as whether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Setting the permissions of the GITHUB_TOKEN for your organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets the default workflow permissions granted to the GITHUB_TOKEN when running workflows in an organization,\nas well as whether GitHub Actions can submit approving pull request reviews. For more information, see\n\"Setting the permissions of the GITHUB_TOKEN for your organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5287,13 +5287,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.

    \n

    You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets the GitHub Actions permissions policy for a repository, including whether GitHub Actions is enabled and the actions allowed to run in the repository.

    \n

    You must authenticate using an access token with the repo scope to use this endpoint. GitHub Apps must have the administration repository permission to use this API.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -7495,13 +7495,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all repositories that have been selected when the visibility\nfor repository access to a secret is set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all repositories that have been selected when the visibility\nfor repository access to a secret is set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -9432,13 +9432,13 @@ } ], "previews": [], - "descriptionHTML": "

    Creates a new self-hosted runner group for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ] + ], + "descriptionHTML": "

    Creates a new self-hosted runner group for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10536,13 +10536,13 @@ } ], "previews": [], - "descriptionHTML": "

    Replaces the list of self-hosted runners that are part of an enterprise runner group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Replaces the list of self-hosted runners that are part of an enterprise runner group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10676,13 +10676,13 @@ } ], "previews": [], - "descriptionHTML": "

    Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -11410,13 +11410,13 @@ } ], "previews": [], - "descriptionHTML": "

    Updates the name and visibility of a self-hosted runner group in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Updates the name and visibility of a self-hosted runner group in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -11474,13 +11474,13 @@ } ], "previews": [], - "descriptionHTML": "

    Deletes a self-hosted runner group for an organization.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Deletes a self-hosted runner group for an organization.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -16058,13 +16058,13 @@ } ], "previews": [], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ] + ], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -19743,13 +19743,13 @@ } ], "previews": [], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an organization. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ] + ], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an organization. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to remove your self-hosted runner from an organization:

    \n
    ./config.sh remove --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -19923,13 +19923,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific self-hosted runner configured in an organization.

    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific self-hosted runner configured in an organization.

    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -20964,13 +20964,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all self-hosted runners configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all self-hosted runners configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -23692,13 +23692,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific self-hosted runner configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific self-hosted runner configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -23911,7 +23911,6 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all labels for a self-hosted runner configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -23921,7 +23920,8 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ] + ], + "descriptionHTML": "

    Lists all labels for a self-hosted runner configured in a repository.

    \n

    Authenticated users must have admin access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -24719,13 +24719,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all organization variables.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all organization variables.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -24958,13 +24958,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific variable in an organization.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific variable in an organization.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -26283,7 +26283,6 @@ } ], "previews": [], - "descriptionHTML": "

    Adds a repository to an organization variable that is available to selected repositories.\nOrganization variables that are available to selected repositories have their visibility field set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", @@ -26293,7 +26292,8 @@ "httpStatusCode": "409", "description": "

    Response when the visibility of the variable is not set to selected

    " } - ] + ], + "descriptionHTML": "

    Adds a repository to an organization variable that is available to selected repositories.\nOrganization variables that are available to selected repositories have their visibility field set to selected.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -26523,13 +26523,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all organization variables shared with a repository.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all organization variables shared with a repository.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -26896,13 +26896,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific variable in a repository.

    \n

    The authenticated user must have collaborator access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific variable in a repository.

    \n

    The authenticated user must have collaborator access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -29391,7 +29391,6 @@ } ], "previews": [], - "descriptionHTML": "

    Re-run a job and its dependent jobs in a workflow run.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", @@ -29401,7 +29400,8 @@ "httpStatusCode": "403", "description": "

    Forbidden

    " } - ] + ], + "descriptionHTML": "

    Re-run a job and its dependent jobs in a workflow run.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -32262,13 +32262,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    \n

    This endpoint will return up to 1,000 results for each search when using the following parameters: actor, branch, check_suite_id, created, event, head_sha, status.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all workflow runs for a repository. You can use parameters to narrow the list of results. For more information about using parameters, see Parameters.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    \n

    This endpoint will return up to 1,000 results for each search when using the following parameters: actor, branch, check_suite_id, created, event, head_sha, status.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -55441,13 +55441,13 @@ } ], "previews": [], - "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -70683,13 +70683,13 @@ } ], "previews": [], - "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -78652,13 +78652,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs.

    \n
      \n
    • Timeline: The GitHub Enterprise Server global public timeline
    • \n
    • User: The public timeline for any user, using uri_template. For more information, see \"Hypermedia.\"
    • \n
    • Current user public: The public timeline for the authenticated user
    • \n
    • Current user: The private timeline for the authenticated user
    • \n
    • Current user actor: The private timeline for activity created by the authenticated user
    • \n
    • Current user organizations: The private timeline for the organizations the authenticated user is a member of.
    • \n
    • Security advisories: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub Enterprise Server.
    • \n
    \n

    By default, timeline resources are returned in JSON. You can specify the application/atom+xml type in the Accept header to return timeline resources in Atom format. For more information, see \"Media types.\"

    \n

    Note

    \n

    \nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists the feeds available to the authenticated user. The response provides a URL for each feed. You can then get a specific feed by sending a request to one of the feed URLs.

    \n
      \n
    • Timeline: The GitHub Enterprise Server global public timeline
    • \n
    • User: The public timeline for any user, using uri_template. For more information, see \"Hypermedia.\"
    • \n
    • Current user public: The public timeline for the authenticated user
    • \n
    • Current user: The private timeline for the authenticated user
    • \n
    • Current user actor: The private timeline for activity created by the authenticated user
    • \n
    • Current user organizations: The private timeline for the organizations the authenticated user is a member of.
    • \n
    • Security advisories: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub Enterprise Server.
    • \n
    \n

    By default, timeline resources are returned in JSON. You can specify the application/atom+xml type in the Accept header to return timeline resources in Atom format. For more information, see \"Media types.\"

    \n

    Note

    \n

    \nPrivate feeds are only returned when authenticating via Basic Auth since current feed URIs use the older, non revocable auth tokens.

    \n
    " } ], "notifications": [ @@ -90962,13 +90962,13 @@ } ], "previews": [], - "descriptionHTML": "

    Sets the announcement banner to display for the organization.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Sets the announcement banner to display for the organization.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -91016,13 +91016,13 @@ } ], "previews": [], - "descriptionHTML": "

    Removes the announcement banner currently set for the organization.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Removes the announcement banner currently set for the organization.

    " } ] }, @@ -109300,13 +109300,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets the GitHub Advanced Security active committers for an organization per repository.

    \n

    Each distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of advanced_security_committers for each repository.

    \n

    If this organization defers to an enterprise for billing, the total_advanced_security_committers returned from the organization API may include some users that are in more than one organization, so they will only consume a single Advanced Security seat at the enterprise level.

    \n

    The total number of repositories with committer information is tracked by the total_count field.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    Success

    " } - ] + ], + "descriptionHTML": "

    Gets the GitHub Advanced Security active committers for an organization per repository.

    \n

    Each distinct user login across all repositories is counted as a single Advanced Security seat, so the total_advanced_security_committers is not the sum of advanced_security_committers for each repository.

    \n

    If this organization defers to an enterprise for billing, the total_advanced_security_committers returned from the organization API may include some users that are in more than one organization, so they will only consume a single Advanced Security seat at the enterprise level.

    \n

    The total number of repositories with committer information is tracked by the total_count field.

    " } ] }, @@ -191066,13 +191066,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all repositories that have been selected when the visibility\nfor repository access to a secret is set to selected.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all repositories that have been selected when the visibility\nfor repository access to a secret is set to selected.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -191536,13 +191536,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets. Anyone with read access\nto the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint if the repository is private.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets. Anyone with read access\nto the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint if the repository is private.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -204947,13 +204947,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -205388,13 +205388,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -212606,13 +212606,13 @@ } ], "previews": [], - "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "" }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -223109,13 +223109,13 @@ } ], "previews": [], - "descriptionHTML": "

    If your GitHub instance uses LDAP Sync with Active Directory LDAP servers, this API is disabled and will return a 403 response. Active Directory LDAP-authenticated users cannot be unsuspended using the API.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    If your GitHub instance uses LDAP Sync with Active Directory LDAP servers, this API is disabled and will return a 403 response. Active Directory LDAP-authenticated users cannot be unsuspended using the API.

    " } ] }, @@ -266156,13 +266156,13 @@ } ], "previews": [], - "descriptionHTML": "

    Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ] + ], + "descriptionHTML": "

    Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -271930,13 +271930,13 @@ } ], "previews": [], - "descriptionHTML": "

    You can use the REST API to delete comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    You can use the REST API to delete comments on issues and pull requests. Every pull request is an issue, but not every issue is a pull request.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -296491,13 +296491,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists labels for issues in a milestone.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists labels for issues in a milestone.

    " } ], "milestones": [ @@ -316233,7 +316233,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -316260,7 +316264,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -322333,7 +322337,6 @@ } ], "previews": [], - "descriptionHTML": "

    Deletes a previous migration archive. Migration archives are automatically deleted after seven days.

    ", "statusCodes": [ { "httpStatusCode": "204", @@ -322343,7 +322346,8 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ] + ], + "descriptionHTML": "

    Deletes a previous migration archive. Migration archives are automatically deleted after seven days.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -327818,7 +327822,6 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

    \n
    \n

    You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -327840,7 +327843,8 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

    \n
    \n

    You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -336690,6 +336694,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -336699,6 +336704,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -336971,6 +336984,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -337031,6 +337054,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -337450,6 +337521,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -337459,6 +337531,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -337731,6 +337811,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -337791,6 +337881,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -339552,13 +339690,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:read scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists all GitHub Apps in an organization. The installation count includes\nall GitHub Apps installed on repositories in the organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:read scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -339652,7 +339790,6 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: The ability to enable or disable a security feature for all eligible repositories in an organization is closing down. Please use code security configurations instead. For more information, see the changelog.

    \n
    \n

    Enables or disables the specified security feature for all eligible repositories in an organization. For more information, see \"Managing security managers in your organization.\"

    \n

    The authenticated user must be an organization owner or be member of a team with the security manager role to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org, write:org, or repo scopes to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", @@ -339662,7 +339799,8 @@ "httpStatusCode": "422", "description": "

    The action could not be taken due to an in progress enablement, or a policy is preventing enablement

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: The ability to enable or disable a security feature for all eligible repositories in an organization is closing down. Please use code security configurations instead. For more information, see the changelog.

    \n
    \n

    Enables or disables the specified security feature for all eligible repositories in an organization. For more information, see \"Managing security managers in your organization.\"

    \n

    The authenticated user must be an organization owner or be member of a team with the security manager role to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org, write:org, or repo scopes to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341653,13 +341791,13 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.

    \n
    \n

    List the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"

    \n

    The authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    Response - list of custom role names

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: This operation is closing down and will be removed in the future. Use the \"List custom repository roles\" endpoint instead.

    \n
    \n

    List the custom repository roles available in this organization. For more information on custom repository roles, see \"About custom repository roles.\"

    \n

    The authenticated user must be administrator of the organization or of a repository of the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org or repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -349680,13 +349818,13 @@ } ], "previews": [], - "descriptionHTML": "

    List all users who are outside collaborators of an organization.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    List all users who are outside collaborators of an organization.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -353398,7 +353536,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -353422,7 +353560,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -357369,7 +357507,6 @@ } ], "previews": [], - "descriptionHTML": "

    Create a repository ruleset for an organization.

    ", "statusCodes": [ { "httpStatusCode": "201", @@ -357383,7 +357520,8 @@ "httpStatusCode": "500", "description": "

    Internal Error

    " } - ] + ], + "descriptionHTML": "

    Create a repository ruleset for an organization.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -361171,13 +361309,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists teams that are security managers for an organization. For more information, see \"Managing security managers in your organization.\"

    \n

    The authenticated user must be an administrator or security manager for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists teams that are security managers for an organization. For more information, see \"Managing security managers in your organization.\"

    \n

    The authenticated user must be an administrator or security manager for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -361512,7 +361650,6 @@ } ], "previews": [], - "descriptionHTML": "

    List webhooks for an organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -361522,7 +361659,8 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ] + ], + "descriptionHTML": "

    List webhooks for an organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -366977,13 +367115,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific package in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific package in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -376898,13 +377036,13 @@ } ], "previews": [], - "descriptionHTML": "

    Gets a specific package version for a public package owned by a specified user.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Gets a specific package version for a public package owned by a specified user.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -379805,7 +379943,6 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", @@ -379815,7 +379952,8 @@ "httpStatusCode": "422", "description": "

    Validation failed, or the endpoint has been spammed.

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -407962,13 +408100,13 @@ } ], "previews": [], - "descriptionHTML": "

    Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Lists review comments for all pull requests in a repository. By default,\nreview comments are in ascending order by ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -422864,7 +423002,6 @@ } ], "previews": [], - "descriptionHTML": "

    Retrieves a pull request review by its ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", @@ -422874,7 +423011,8 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ] + ], + "descriptionHTML": "

    Retrieves a pull request review by its ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -424368,6 +424506,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -426106,13 +426252,13 @@ } ], "previews": [], - "descriptionHTML": "

    List the reactions to a team discussion comment.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    List the reactions to a team discussion comment.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -426825,13 +426971,13 @@ } ], "previews": [], - "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ] + ], + "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -427183,13 +427329,13 @@ } ], "previews": [], - "descriptionHTML": "

    List the reactions to a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    List the reactions to a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/:org_id/team/:team_id/discussions/:discussion_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -483324,7 +483470,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -483348,7 +483494,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -493791,13 +493937,13 @@ } ], "previews": [], - "descriptionHTML": "

    Updates the webhook configuration for a repository. To update more information about the webhook, including the active state and events, use \"Update a repository webhook.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:repo_hook or repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Updates the webhook configuration for a repository. To update more information about the webhook, including the active state and events, use \"Update a repository webhook.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:repo_hook or repo scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -494352,7 +494498,6 @@ } ], "previews": [], - "descriptionHTML": "

    Returns a delivery for a webhook configured in a repository.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -494366,7 +494511,8 @@ "httpStatusCode": "422", "description": "

    Validation failed, or the endpoint has been spammed.

    " } - ] + ], + "descriptionHTML": "

    Returns a delivery for a webhook configured in a repository.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -513463,7 +513609,6 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", @@ -513473,7 +513618,8 @@ "httpStatusCode": "404", "description": "

    Not Found if project is not managed by this team

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -513558,7 +513704,6 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    ", "statusCodes": [ { "httpStatusCode": "204", @@ -513568,7 +513713,8 @@ "httpStatusCode": "403", "description": "

    Forbidden if the project is not owned by the organization

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: Projects (classic) is being deprecated in favor of the new Projects experience.\nSee the changelog for more information.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -515751,7 +515897,6 @@ } ], "previews": [], - "descriptionHTML": "

    Checks whether a team has admin, push, maintain, triage, or pull permission for a repository. Repositories inherited through a parent team will also be checked.

    \n

    You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom media type via the application/vnd.github.v3.repository+json accept header.

    \n

    If a team doesn't have permission for the repository, you will receive a 404 Not Found response status.

    \n

    If the repository is private, you must have at least read permission for that repository, and your token must have the repo or admin:org scope. Otherwise, you will receive a 404 Not Found response status.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", @@ -515765,7 +515910,8 @@ "httpStatusCode": "404", "description": "

    Not Found if team does not have permission for the repository

    " } - ] + ], + "descriptionHTML": "

    Checks whether a team has admin, push, maintain, triage, or pull permission for a repository. Repositories inherited through a parent team will also be checked.

    \n

    You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom media type via the application/vnd.github.v3.repository+json accept header.

    \n

    If a team doesn't have permission for the repository, you will receive a 404 Not Found response status.

    \n

    If the repository is private, you must have at least read permission for that repository, and your token must have the repo or admin:org scope. Otherwise, you will receive a 404 Not Found response status.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -524125,13 +524271,13 @@ } ], "previews": [], - "descriptionHTML": "

    Get a specific comment on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Get a specific comment on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -530425,13 +530571,13 @@ } ], "previews": [], - "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Update a discussion endpoint.

    \n
    \n

    Edits the title and body text of a discussion post. Only the parameters you provide are updated.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Update a discussion endpoint.

    \n
    \n

    Edits the title and body text of a discussion post. Only the parameters you provide are updated.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -530721,13 +530867,13 @@ } ], "previews": [], - "descriptionHTML": "

    Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

    \n

    You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

    \n

    You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -531583,13 +531729,13 @@ } ], "previews": [], - "descriptionHTML": "

    Team members will include the members of child teams.

    \n

    To list members in a team, the team must be visible to the authenticated user.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ] + ], + "descriptionHTML": "

    Team members will include the members of child teams.

    \n

    To list members in a team, the team must be visible to the authenticated user.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -531689,7 +531835,6 @@ } ], "previews": [], - "descriptionHTML": "

    Team members will include the members of child teams.

    \n

    To get a user's membership with a team, the team must be visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/memberships/{username}.

    \n
    \n

    Note

    \n

    \nThe response contains the state of the membership and the member's role.

    \n
    \n

    The role for organization owners is set to maintainer. For more information about maintainer roles, see Create a team.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -531699,7 +531844,8 @@ "httpStatusCode": "404", "description": "

    if user has no team membership

    " } - ] + ], + "descriptionHTML": "

    Team members will include the members of child teams.

    \n

    To get a user's membership with a team, the team must be visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/memberships/{username}.

    \n
    \n

    Note

    \n

    \nThe response contains the state of the membership and the member's role.

    \n
    \n

    The role for organization owners is set to maintainer. For more information about maintainer roles, see Create a team.

    " }, { "serverUrl": "http(s)://HOSTNAME/api/v3", diff --git a/src/rest/data/ghes-3.16-2022-11-28/schema.json b/src/rest/data/ghes-3.16-2022-11-28/schema.json index 75e7db0885b4..2f5b7ee679b3 100644 --- a/src/rest/data/ghes-3.16-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.16-2022-11-28/schema.json @@ -1080,13 +1080,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the GitHub Actions cache usage policy for an enterprise.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the GitHub Actions cache usage policy for an enterprise.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2634,13 +2634,13 @@ } ], "previews": [], + "descriptionHTML": "

    Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Sets the GitHub Actions permissions policy for organizations and allowed actions in an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2836,13 +2836,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists the organizations that are selected to have GitHub Actions enabled in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -2961,13 +2961,13 @@ } ], "previews": [], + "descriptionHTML": "

    Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Adds an organization to the list of selected organizations that are enabled for GitHub Actions in an enterprise. To use this endpoint, the enterprise permission policy for enabled_organizations must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3100,13 +3100,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the selected actions that are allowed in an enterprise. To use this endpoint, the enterprise permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an enterprise.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -3503,13 +3503,13 @@ } ], "previews": [], + "descriptionHTML": "

    Sets the GitHub Actions permissions policy for repositories and allowed actions in an organization.

    \n

    If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as allowed_actions to selected actions, then you cannot override them for the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Sets the GitHub Actions permissions policy for repositories and allowed actions in an organization.

    \n

    If the organization belongs to an enterprise that has set restrictive permissions at the enterprise level, such as allowed_actions to selected actions, then you cannot override them for the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -4867,13 +4867,13 @@ } ], "previews": [], + "descriptionHTML": "

    Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Removes a repository from the list of selected repositories that are enabled for GitHub Actions in an organization. To use this endpoint, the organization permission policy for enabled_repositories must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -5032,13 +5032,13 @@ } ], "previews": [], + "descriptionHTML": "

    Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

    \n

    To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Sets the actions that are allowed in an organization. To use this endpoint, the organization permission policy for allowed_actions must be configured to selected. For more information, see \"Set GitHub Actions permissions for an organization.\"

    \n

    If the organization belongs to an enterprise that has selected actions set at the enterprise level, then you cannot override any of the enterprise's allowed actions settings.

    \n

    To use the patterns_allowed setting for private repositories, the organization must belong to an enterprise. If the organization does not belong to an enterprise, then the patterns_allowed setting only applies to public repositories in the organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -6066,13 +6066,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all secrets available in an organization without revealing their\nencrypted values.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all secrets available in an organization without revealing their\nencrypted values.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -6174,13 +6174,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -6290,13 +6290,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a single organization secret without revealing its encrypted value.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read secrets

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a single organization secret without revealing its encrypted value.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read secrets

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -6499,13 +6499,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes a secret in an organization using the secret name.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Deletes a secret in an organization using the secret name.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8716,13 +8716,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get the public key for an environment, which you need to encrypt environment\nsecrets. You need to encrypt a secret before you can create or update secrets.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get the public key for an environment, which you need to encrypt environment\nsecrets. You need to encrypt a secret before you can create or update secrets.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8833,13 +8833,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a single environment secret without revealing its encrypted value.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a single environment secret without revealing its encrypted value.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read secrets.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10082,13 +10082,13 @@ } ], "previews": [], + "descriptionHTML": "

    Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Replaces the list of organizations that have access to a self-hosted runner configured in an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -10676,13 +10676,13 @@ } ], "previews": [], + "descriptionHTML": "

    Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Removes a self-hosted runner from a group configured in an enterprise. The runner is then returned to the default group.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -11080,13 +11080,13 @@ } ], "previews": [], + "descriptionHTML": "

    Creates a new self-hosted runner group for an organization.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Creates a new self-hosted runner group for an organization.

    \n

    OAuth tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -13114,13 +13114,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists self-hosted runners that are in a specific organization group.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists self-hosted runners that are in a specific organization group.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -13576,13 +13576,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all self-hosted runners configured for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all self-hosted runners configured for an enterprise.

    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -16058,13 +16058,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script to remove a self-hosted runner from an enterprise. The token expires after one hour.

    \n

    Example using remove token:

    \n

    To remove your self-hosted runner from an enterprise, replace TOKEN with the remove token provided by this\nendpoint.

    \n
    ./config.sh remove --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -17377,13 +17377,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists binaries for the runner application that you can download and run.

    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists binaries for the runner application that you can download and run.

    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint. If the repository is private, the repo scope is also required.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -27332,13 +27332,13 @@ } ], "previews": [], + "descriptionHTML": "

    Create an environment variable that you can reference in a GitHub Actions workflow.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Create an environment variable that you can reference in a GitHub Actions workflow.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -27465,13 +27465,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific variable in an environment.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific variable in an environment.

    \n

    Authenticated users must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -35486,13 +35486,13 @@ } ], "previews": [], + "descriptionHTML": "

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -55441,13 +55441,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -59256,13 +59256,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nThis API is not built to serve real-time use cases. Depending on the time of day, event latency can be anywhere from 30s to 6h.

    \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -80920,6 +80920,7 @@ } ], "previews": [], + "descriptionHTML": "

    Marks a thread as \"read.\" Marking a thread as \"read\" is equivalent to clicking a notification in your notification inbox on GitHub Enterprise Server: https://github.com/notifications.

    ", "statusCodes": [ { "httpStatusCode": "205", @@ -80933,8 +80934,7 @@ "httpStatusCode": "403", "description": "

    Forbidden

    " } - ], - "descriptionHTML": "

    Marks a thread as \"read.\" Marking a thread as \"read\" is equivalent to clicking a notification in your notification inbox on GitHub Enterprise Server: https://github.com/notifications.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -90831,13 +90831,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the announcement banner currently set for the organization. Only returns the announcement banner set at the\norganization level. Organization members may also see an enterprise-level announcement banner. To get an\nannouncement banner displayed at the enterprise level, use the enterprise-level endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the announcement banner currently set for the organization. Only returns the announcement banner set at the\norganization level. Organization members may also see an enterprise-level announcement banner. To get an\nannouncement banner displayed at the enterprise level, use the enterprise-level endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -100270,13 +100270,13 @@ } ], "previews": [], + "descriptionHTML": "

    Enables an authenticated GitHub App to find the organization's installation information.

    \n

    You must use a JWT to access this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Enables an authenticated GitHub App to find the organization's installation information.

    \n

    You must use a JWT to access this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -150641,13 +150641,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a single check suite using its id.

    \n

    Note

    \n

    \nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a single check suite using its id.

    \n

    Note

    \n

    \nThe Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty pull_requests array and a null value for head_branch.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint on a private repository.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -171099,13 +171099,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -193531,13 +193531,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all secrets available in an organization without revealing their\nencrypted values.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all secrets available in an organization without revealing their\nencrypted values.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -193615,13 +193615,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets your public key, which you need to encrypt secrets. You need to\nencrypt a secret before you can create or update secrets.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -200467,13 +200467,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a deployment branch or tag policy for an environment.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a deployment branch or tag policy for an environment.

    \n

    Anyone with read access to the repository can use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with a private repository.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -200691,13 +200691,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes a deployment branch or tag policy for an environment.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Deletes a deployment branch or tag policy for an environment.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] } ], "environments": [ @@ -203504,13 +203504,13 @@ } ], "previews": [], + "descriptionHTML": "

    Enable a custom deployment protection rule for an environment.

    \n

    The authenticated user must have admin or owner permissions to the repository to use this endpoint.

    \n

    For more information about the app that is providing this custom deployment rule, see the documentation for the GET /apps/{app_slug} endpoint, as well as the guide to creating custom deployment protection rules.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    The enabled custom deployment protection rule

    " } - ], - "descriptionHTML": "

    Enable a custom deployment protection rule for an environment.

    \n

    The authenticated user must have admin or owner permissions to the repository to use this endpoint.

    \n

    For more information about the app that is providing this custom deployment rule, see the documentation for the GET /apps/{app_slug} endpoint, as well as the guide to creating custom deployment protection rules.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -208951,13 +208951,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -209145,13 +209145,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -209266,13 +209266,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -210180,13 +210180,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets the audit log for an enterprise.

    \n

    The authenticated user must be an enterprise admin to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets the audit log for an enterprise.

    \n

    The authenticated user must be an enterprise admin to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -211473,13 +211473,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes an existing audit log stream configuration for an enterprise.

    \n

    When using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    The audit log stream configuration was deleted successfully.

    " } - ], - "descriptionHTML": "

    Deletes an existing audit log stream configuration for an enterprise.

    \n

    When using this endpoint, you must encrypt the credentials following the same encryption steps as outlined in the guide on encrypting secrets. See \"Encrypting secrets for the REST API.\"

    " + ] } ], "billing": [ @@ -212310,13 +212310,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -216241,13 +216241,13 @@ } ], "previews": [], + "descriptionHTML": "

    List all pre-receive hooks that are enabled or testing for this organization as well as any disabled hooks that can be configured at the organization level. Globally disabled pre-receive hooks that do not allow downstream configuration are not listed.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    List all pre-receive hooks that are enabled or testing for this organization as well as any disabled hooks that can be configured at the organization level. Globally disabled pre-receive hooks that do not allow downstream configuration are not listed.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -218386,13 +218386,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -224573,13 +224573,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -225710,13 +225710,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes a personal access token. Returns a 403 - Forbidden status when a personal access token is in use. For example, if you access this endpoint with the same personal access token that you are trying to delete, you will receive this error.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Deletes a personal access token. Returns a 403 - Forbidden status when a personal access token is in use. For example, if you access this endpoint with the same personal access token that you are trying to delete, you will receive this error.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -242825,6 +242825,7 @@ } ], "previews": [], + "descriptionHTML": "

    Updates a comment on a gist.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github.raw+json: Returns the raw markdown. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github.base64+json: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", @@ -242834,8 +242835,7 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ], - "descriptionHTML": "

    Updates a comment on a gist.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github.raw+json: Returns the raw markdown. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github.base64+json: Returns the base64-encoded contents. This can be useful if your gist contains any invalid UTF-8 sequences.
    • \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -283636,6 +283636,7 @@ } ], "previews": [], + "descriptionHTML": "

    Lists events for a repository.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -283645,8 +283646,7 @@ "httpStatusCode": "422", "description": "

    Validation failed, or the endpoint has been spammed.

    " } - ], - "descriptionHTML": "

    Lists events for a repository.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -301533,13 +301533,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes a label using the given label name.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Deletes a label using the given label name.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -321464,7 +321464,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -321491,7 +321495,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -322060,13 +322064,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get the octocat as ASCII art

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get the octocat as ASCII art

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -333049,6 +333053,7 @@ } ], "previews": [], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

    \n
    \n

    You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -333070,8 +333075,7 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: GitHub Enterprise Server will discontinue the OAuth Authorizations API, which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our web application flow. The OAuth Authorizations API will be removed on November 13, 2020. For more information, including scheduled brownouts, see the blog post.

    \n
    \n

    You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the list your authorizations API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on the application authorizations settings screen within GitHub. The scopes returned are the union of scopes authorized for the application. For example, if an application has one token with repo scope and another token with user scope, the grant will return [\"repo\", \"user\"].

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -341985,6 +341989,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -341994,6 +341999,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -342267,6 +342280,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -342327,6 +342350,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -342759,6 +342830,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -342768,6 +342840,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -343041,6 +343121,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -343101,6 +343191,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -350442,13 +350580,13 @@ } ], "previews": [], + "descriptionHTML": "

    Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Removes the public membership for the authenticated user from the specified organization, unless public visibility is enforced by default.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -353014,13 +353152,13 @@ } ], "previews": [], + "descriptionHTML": "

    Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"

    \n

    The authenticated user must be an administrator for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Revokes all assigned organization roles from a user. For more information on organization roles, see \"Using organization roles.\"

    \n

    The authenticated user must be an administrator for the organization to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -358723,7 +358861,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -358747,7 +358885,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -366569,13 +366707,13 @@ } ], "previews": [], + "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: This operation is closing down and will be removed in Enterprise Server 3.20. Please use the \"Organization Roles\" endpoints instead.

    \n
    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Warning

    \n

    \nClosing down notice: This operation is closing down and will be removed in Enterprise Server 3.20. Please use the \"Organization Roles\" endpoints instead.

    \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -367917,13 +368055,13 @@ } ], "previews": [], + "descriptionHTML": "

    Updates the webhook configuration for an organization. To update more information about the webhook, including the active state and events, use \"Update an organization webhook .\"

    \n

    You must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Updates the webhook configuration for an organization. To update more information about the webhook, including the active state and events, use \"Update an organization webhook .\"

    \n

    You must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -373022,13 +373160,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific package version in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific package version in an organization.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:packages scope to use this endpoint. For more information, see \"About permissions for GitHub Packages.\"

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -385164,6 +385302,7 @@ } ], "previews": [], + "descriptionHTML": "

    Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using LibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", @@ -385177,8 +385316,7 @@ "httpStatusCode": "422", "description": "

    Validation failed, or the endpoint has been spammed.

    " } - ], - "descriptionHTML": "

    Creates a private registry configuration with an encrypted value for an organization. Encrypt your secret using LibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -415475,13 +415613,13 @@ } ], "previews": [], + "descriptionHTML": "

    Edits the content of a specified review comment.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Edits the content of a specified review comment.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -430580,6 +430718,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -432939,6 +433085,7 @@ } ], "previews": [], + "descriptionHTML": "

    Create a reaction to a team discussion comment.

    \n

    A response with an HTTP 200 status means that you already added the reaction type to this team discussion comment.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -432948,8 +433095,7 @@ "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Create a reaction to a team discussion comment.

    \n

    A response with an HTTP 200 status means that you already added the reaction type to this team discussion comment.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route POST /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -433037,13 +433183,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Note

    \n

    \nYou can also specify a team or organization with team_id and org_id using the route DELETE /organizations/:org_id/team/:team_id/discussions/:discussion_number/comments/:comment_number/reactions/:reaction_id.

    \n
    \n

    Delete a reaction to a team discussion comment.

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -448409,13 +448555,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists repositories for the specified organization.

    \n

    Note

    \n

    \nIn order to see the security_and_analysis block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see \"Managing security managers in your organization.\"

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists repositories for the specified organization.

    \n

    Note

    \n

    \nIn order to see the security_and_analysis block for a repository you must have admin permissions for the repository or be an owner or security manager for the organization that owns the repository. For more information, see \"Managing security managers in your organization.\"

    \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -489536,7 +489682,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -489560,7 +489706,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -500012,13 +500158,13 @@ } ], "previews": [], + "descriptionHTML": "

    Updates the webhook configuration for a repository. To update more information about the webhook, including the active state and events, use \"Update a repository webhook.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:repo_hook or repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Updates the webhook configuration for a repository. To update more information about the webhook, including the active state and events, use \"Update a repository webhook.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:repo_hook or repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -523441,13 +523587,13 @@ } ], "previews": [], + "descriptionHTML": "

    To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    \n

    For more information about the permission levels, see \"Repository permission levels for an organization\".

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    \n

    For more information about the permission levels, see \"Repository permission levels for an organization\".

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -533137,13 +533283,13 @@ } ], "previews": [], + "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Create a discussion comment endpoint.

    \n
    \n

    Creates a new comment on a team discussion.

    \n

    This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new Create a discussion comment endpoint.

    \n
    \n

    Creates a new comment on a team discussion.

    \n

    This endpoint triggers notifications. Creating content too quickly using this endpoint may result in secondary rate limiting. For more information, see \"Rate limits for the API\" and \"Best practices for using the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -535550,13 +535696,13 @@ } ], "previews": [], + "descriptionHTML": "

    Get a specific discussion on a team's page.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Get a specific discussion on a team's page.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -538318,13 +538464,13 @@ } ], "previews": [], + "descriptionHTML": "

    Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

    \n

    You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Displays information about the specific group's usage. Provides a list of the group's external members as well as a list of teams that this group is connected to.

    \n

    You can manage team membership with your identity provider using Enterprise Managed Users for GitHub Enterprise Cloud. For more information, see \"GitHub's products\" in the GitHub Help documentation.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -546870,13 +547016,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists the people who the specified user follows.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists the people who the specified user follows.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", diff --git a/src/rest/data/ghes-3.17-2022-11-28/schema.json b/src/rest/data/ghes-3.17-2022-11-28/schema.json index 8f8c390dcadf..b998076a3d50 100644 --- a/src/rest/data/ghes-3.17-2022-11-28/schema.json +++ b/src/rest/data/ghes-3.17-2022-11-28/schema.json @@ -1364,13 +1364,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists repositories and their GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

    \n

    OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists repositories and their GitHub Actions cache usage for an organization.\nThe data fetched using this API is refreshed approximately every 5 minutes, so values returned from this endpoint may take at least 5 minutes to get updated.

    \n

    OAuth tokens and personal access tokens (classic) need the read:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -8248,13 +8248,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a single repository secret without revealing its encrypted value.

    \n

    The authenticated user must have collaborator access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a single repository secret without revealing its encrypted value.

    \n

    The authenticated user must have collaborator access to the repository to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -15022,13 +15022,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script. The token expires after one hour.

    \n

    Example using registration token:

    \n

    Configure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.

    \n
    ./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script. The token expires after one hour.

    \n

    Example using registration token:

    \n

    Configure your self-hosted runner, replacing TOKEN with the registration token provided by this endpoint.

    \n
    ./config.sh --url https://github.com/enterprises/octo-enterprise --token TOKEN\n
    \n

    OAuth app tokens and personal access tokens (classic) need the manage_runners:enterprise scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -18703,13 +18703,13 @@ } ], "previews": [], + "descriptionHTML": "

    Returns a token that you can pass to the config script. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to configure your self-hosted runner:

    \n
    ./config.sh --url https://github.com/octo-org --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Returns a token that you can pass to the config script. The token expires after one hour.

    \n

    For example, you can replace TOKEN in the following example with the registration token provided by this endpoint to configure your self-hosted runner:

    \n
    ./config.sh --url https://github.com/octo-org --token TOKEN\n
    \n

    Authenticated users must have admin access to the organization to use this endpoint.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -24982,13 +24982,13 @@ } ], "previews": [], + "descriptionHTML": "

    Gets a specific variable in an organization.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Gets a specific variable in an organization.

    \n

    The authenticated user must have collaborator access to a repository to create, update, or read variables.

    \n

    OAuth tokens and personal access tokens (classic) need theadmin:org scope to use this endpoint. If the repository is private, OAuth tokens and personal access tokens (classic) need the repo scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -194631,6 +194631,7 @@ } ], "previews": [], + "descriptionHTML": "

    Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "201", @@ -194640,8 +194641,7 @@ "httpStatusCode": "204", "description": "

    Response when updating a secret

    " } - ], - "descriptionHTML": "

    Creates or updates an organization secret with an encrypted value. Encrypt your secret using\nLibSodium. For more information, see \"Encrypting secrets for the REST API.\"

    \n

    OAuth app tokens and personal access tokens (classic) need the admin:org scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -210500,13 +210500,13 @@ } ], "previews": [], + "descriptionHTML": "

    Sets the message and expiration time for the global announcement banner in your enterprise.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Sets the message and expiration time for the global announcement banner in your enterprise.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -213235,13 +213235,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -213700,13 +213700,13 @@ } ], "previews": [], + "descriptionHTML": "

    Note that this API call does not automatically initiate an LDAP sync. Rather, if a 201 is returned, the sync job is queued successfully, and is performed when the instance is ready.

    ", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "

    Note that this API call does not automatically initiate an LDAP sync. Rather, if a 201 is returned, the sync job is queued successfully, and is performed when the instance is ready.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -218803,13 +218803,13 @@ } ], "previews": [], + "descriptionHTML": "", "statusCodes": [ { "httpStatusCode": "201", "description": "

    Created

    " } - ], - "descriptionHTML": "" + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -322378,7 +322378,11 @@ "userToServerRest": true, "serverToServer": true, "fineGrainedPat": true, - "permissions": [], + "permissions": [ + { + "\"Contents\" repository permissions": "read" + } + ], "allowPermissionlessAccess": true, "allowsPublicRead": true }, @@ -322405,7 +322409,7 @@ } ], "previews": [], - "descriptionHTML": "", + "descriptionHTML": "

    Depending on what is rendered in the Markdown, you may need to provide additional token scopes for labels, such as issues:read or pull_requests:read.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -342923,6 +342927,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -342932,6 +342937,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -343205,6 +343218,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -343265,6 +343288,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -343697,6 +343768,7 @@ "seats": 5 }, "default_repository_permission": "read", + "default_repository_branch": "main", "members_can_create_repositories": true, "two_factor_requirement_enabled": true, "members_allowed_repository_creation_type": "all", @@ -343706,6 +343778,14 @@ "members_can_create_pages": true, "members_can_create_public_pages": true, "members_can_create_private_pages": true, + "members_can_delete_repositories": true, + "members_can_change_repo_visibility": true, + "members_can_invite_outside_collaborators": true, + "members_can_delete_issues": false, + "display_commenter_full_name_setting_enabled": false, + "readers_can_create_discussions": true, + "members_can_create_teams": true, + "members_can_view_dependency_insights": true, "members_can_fork_private_repositories": false, "web_commit_signoff_required": false, "updated_at": "2014-03-03T18:58:10Z", @@ -343979,6 +344059,16 @@ "null" ] }, + "default_repository_branch": { + "type": [ + "string", + "null" + ], + "description": "The default branch for repositories created in this organization.", + "examples": [ + "main" + ] + }, "members_can_create_repositories": { "type": [ "boolean", @@ -344039,6 +344129,54 @@ true ] }, + "members_can_delete_repositories": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_change_repo_visibility": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_invite_outside_collaborators": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_delete_issues": { + "type": "boolean", + "examples": [ + true + ] + }, + "display_commenter_full_name_setting_enabled": { + "type": "boolean", + "examples": [ + true + ] + }, + "readers_can_create_discussions": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_create_teams": { + "type": "boolean", + "examples": [ + true + ] + }, + "members_can_view_dependency_insights": { + "type": "boolean", + "examples": [ + true + ] + }, "members_can_fork_private_repositories": { "type": [ "boolean", @@ -346350,7 +346488,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -360130,7 +360268,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -360154,7 +360292,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -369055,6 +369193,7 @@ } ], "previews": [], + "descriptionHTML": "

    List webhooks for an organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    ", "statusCodes": [ { "httpStatusCode": "200", @@ -369064,8 +369203,7 @@ "httpStatusCode": "404", "description": "

    Resource not found

    " } - ], - "descriptionHTML": "

    List webhooks for an organization.

    \n

    The authenticated user must be an organization owner to use this endpoint.

    \n

    OAuth app tokens and personal access tokens (classic) need admin:org_hook scope. OAuth apps cannot list, view, or edit\nwebhooks that they did not create and users cannot list, view, or edit webhooks that were created by OAuth apps.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -415242,13 +415380,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists a maximum of 250 commits for a pull request. To receive a complete\ncommit list for pull requests with more than 250 commits, use the List commits\nendpoint.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists a maximum of 250 commits for a pull request. To receive a complete\ncommit list for pull requests with more than 250 commits, use the List commits\nendpoint.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -418581,13 +418719,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists all review comments for a specified pull request. By default, review comments\nare in ascending order by ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists all review comments for a specified pull request. By default, review comments\nare in ascending order by ID.

    \n

    This endpoint supports the following custom media types. For more information, see \"Media types.\"

    \n
      \n
    • application/vnd.github-commitcomment.raw+json: Returns the raw markdown body. Response will include body. This is the default if you do not pass any specific media type.
    • \n
    • application/vnd.github-commitcomment.text+json: Returns a text only representation of the markdown body. Response will include body_text.
    • \n
    • application/vnd.github-commitcomment.html+json: Returns HTML rendered from the body's markdown. Response will include body_html.
    • \n
    • application/vnd.github-commitcomment.full+json: Returns raw, text, and HTML representations. Response will include body, body_text, and body_html.
    • \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -432905,6 +433043,14 @@ "examples": [ 2 ] + }, + "subject_type": { + "description": "The level at which the comment is targeted, can be a diff line or a file.", + "type": "string", + "enum": [ + "line", + "file" + ] } }, "required": [ @@ -482012,7 +482158,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -492815,7 +492961,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -492839,7 +492985,7 @@ }, { "name": "rule_suite_result", - "description": "

    The rule results to filter on. When specified, only suites with this result will be returned.

    ", + "description": "

    The rule suite results to filter on. When specified, only suites with this result will be returned.

    ", "in": "query", "schema": { "type": "string", @@ -519528,7 +519674,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -519961,7 +520107,7 @@ }, { "name": "time_period", - "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for insights that occurred in the past 7 days (168 hours).

    ", + "description": "

    The time period to filter by.

    \n

    For example, day will filter for rule suites that occurred in the past 24 hours, and week will filter for rule suites that occurred in the past 7 days (168 hours).

    ", "in": "query", "required": false, "schema": { @@ -528067,13 +528213,13 @@ } ], "previews": [], + "descriptionHTML": "

    Lists a team's repositories visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

    \n
    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Lists a team's repositories visible to the authenticated user.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/repos.

    \n
    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -529254,13 +529400,13 @@ } ], "previews": [], + "descriptionHTML": "

    To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    \n

    For more information about the permission levels, see \"Repository permission levels for an organization\".

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a 422 Unprocessable Entity status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set Content-Length to zero when calling out to this endpoint. For more information, see \"HTTP method.\"

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}.

    \n
    \n

    For more information about the permission levels, see \"Repository permission levels for an organization\".

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -536665,13 +536811,13 @@ } ], "previews": [], + "descriptionHTML": "

    List all comments on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    List all comments on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -538073,13 +538219,13 @@ } ], "previews": [], + "descriptionHTML": "

    Deletes a comment on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "204", "description": "

    No Content

    " } - ], - "descriptionHTML": "

    Deletes a comment on a team discussion.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route DELETE /organizations/{org_id}/team/{team_id}/discussions/{discussion_number}/comments/{comment_number}.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the write:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -540410,13 +540556,13 @@ } ], "previews": [], + "descriptionHTML": "

    List all discussions on a team's page.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    List all discussions on a team's page.

    \n

    Note

    \n

    \nYou can also specify a team by org_id and team_id using the route GET /organizations/{org_id}/team/{team_id}/discussions.

    \n
    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", @@ -542421,13 +542567,13 @@ } ], "previews": [], + "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List discussions endpoint.

    \n
    \n

    List all discussions on a team's page.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    ", "statusCodes": [ { "httpStatusCode": "200", "description": "

    OK

    " } - ], - "descriptionHTML": "

    Warning

    \n

    \nEndpoint closing down notice: This endpoint route is closing down and will be removed from the Teams API. We recommend migrating your existing code to use the new List discussions endpoint.

    \n
    \n

    List all discussions on a team's page.

    \n

    OAuth app tokens and personal access tokens (classic) need the read:discussion scope to use this endpoint.

    " + ] }, { "serverUrl": "http(s)://HOSTNAME/api/v3", diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index 97a6bf64a080..61293447a795 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -47,5 +47,5 @@ ] } }, - "sha": "bf4af7c248a68067f570e103053a01b1c9725a92" + "sha": "23d16a0c0808c8241b1076d63e8d3f2e75cb6632" } \ No newline at end of file diff --git a/src/search/components/input/AISearchCTAPopup.tsx b/src/search/components/input/AISearchCTAPopup.tsx index 8ddd1a69fb1a..73ad751e7f45 100644 --- a/src/search/components/input/AISearchCTAPopup.tsx +++ b/src/search/components/input/AISearchCTAPopup.tsx @@ -65,7 +65,7 @@ export function AISearchCTAPopup({ <> The Copilot Icon in front of an explosion of color. ('ai-query-cache', 1000, 7) const { isOpen: isCTAOpen, permanentDismiss: permanentlyDismissCTA } = useCTAPopoverContext() - const [isCopied, setCopied] = useClipboard(message, { successDuration: 1400 }) + let copyUrl = `` + if (window?.location?.href) { + // Get base path from current URL + const url = new URL(window.location.href) + copyUrl = `${url.origin}/?search-overlay-open=true&search-overlay-ask-ai=true&search-overlay-input=${encodeURIComponent(query)}` + } + + const [isCopied, setCopied] = useClipboard(copyUrl, { successDuration: 1399 }) const [feedbackSelected, setFeedbackSelected] = useState(null) const [conversationId, setConversationId] = useState('') @@ -504,15 +511,17 @@ export function AskAIResults({ boxShadow: 'unset', color: isCopied ? 'var(--fgColor-accent) !important;' : '', }} - icon={isCopied ? CheckIcon : CopyIcon} + icon={isCopied ? CheckIcon : ShareIcon} className="btn-octicon" - aria-label={t('ai.copy_answer')} + aria-label={ + isCopied ? t('search.ai.share_copied_announcement') : t('search.ai.share_answer') + } onClick={() => { setCopied() - announce(t('ai.copied_announcement')) + announce(t('search.ai.share_copied_announcement')) sendEvent({ type: EventType.clipboard, - clipboard_operation: 'copy', + clipboard_operation: 'share', eventGroupKey: ASK_AI_EVENT_GROUP, eventGroupId: askAIEventGroupId.current, }) diff --git a/src/search/components/input/SearchOverlay.module.scss b/src/search/components/input/SearchOverlay.module.scss index ca98247029d4..9f4e343cc8b3 100644 --- a/src/search/components/input/SearchOverlay.module.scss +++ b/src/search/components/input/SearchOverlay.module.scss @@ -60,6 +60,7 @@ $mutedTextColor: var(--fgColor-muted, var(--color-fg-muted, #656d76)); } .header { + display: flex; padding: 12px 14px 0px 14px !important; width: 100%; background-color: var(--overlay-bgColor) !important; diff --git a/src/search/middleware/search-routes.ts b/src/search/middleware/search-routes.ts index 89ceaab26558..af3af78d12ac 100644 --- a/src/search/middleware/search-routes.ts +++ b/src/search/middleware/search-routes.ts @@ -88,7 +88,7 @@ router.get( if (process.env.NODE_ENV !== 'development') { searchCacheControl(res) - setFastlySurrogateKey(res, SURROGATE_ENUMS.MANUAL) + setFastlySurrogateKey(res, SURROGATE_ENUMS.DEFAULT) } res.status(200).json({ meta, hits }) diff --git a/src/search/tests/api-ai-search-autocomplete.ts b/src/search/tests/api-ai-search-autocomplete.ts index 2275497d0e9a..5daf0114170f 100644 --- a/src/search/tests/api-ai-search-autocomplete.ts +++ b/src/search/tests/api-ai-search-autocomplete.ts @@ -33,7 +33,7 @@ const getSearchEndpointWithParams = (searchParams: URLSearchParams) => describeIfElasticsearchURL('search/ai-search-autocomplete v1 middleware', () => { vi.setConfig({ testTimeout: 60 * 1000 }) - test('basic search', async () => { + test('perform a basic ai autocomplete search', async () => { const sp = new URLSearchParams() // To see why this will work, // see src/search/tests/fixtures/data/ai/* @@ -59,7 +59,7 @@ describeIfElasticsearchURL('search/ai-search-autocomplete v1 middleware', () => expect(res.headers['cache-control']).toMatch(/max-age=[1-9]/) expect(res.headers['surrogate-control']).toContain('public') expect(res.headers['surrogate-control']).toMatch(/max-age=[1-9]/) - expect(res.headers['surrogate-key']).toBe('manual-purge') + expect(res.headers['surrogate-key']).toBe('every-deployment') }) test('invalid version', async () => { diff --git a/src/secret-scanning/data/public-docs.yml b/src/secret-scanning/data/public-docs.yml index 8fbe8df80966..de945bc37680 100644 --- a/src/secret-scanning/data/public-docs.yml +++ b/src/secret-scanning/data/public-docs.yml @@ -726,6 +726,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -737,6 +738,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -748,6 +750,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -783,6 +786,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1091,6 +1095,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1222,6 +1227,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -1245,6 +1251,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1256,6 +1263,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -1295,7 +1303,7 @@ isPublic: true isPrivateWithGhas: true hasPushProtection: true - hasValidityCheck: false + hasValidityCheck: '{% ifversion fpt or ghes %}false{% else %}true{% endif %}' isduplicate: false - provider: Doppler supportedSecret: Doppler SCIM Token @@ -1847,6 +1855,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -1906,6 +1915,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -1917,6 +1927,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -2511,6 +2522,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -2522,6 +2534,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2533,6 +2546,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2544,6 +2558,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2555,6 +2570,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2566,6 +2582,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2577,6 +2594,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2588,6 +2606,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2599,6 +2618,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false @@ -2931,6 +2951,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -3362,6 +3383,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: true @@ -3373,6 +3395,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: true @@ -3384,6 +3407,7 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: false isPrivateWithGhas: true hasPushProtection: false @@ -3674,7 +3698,7 @@ isPublic: true isPrivateWithGhas: true hasPushProtection: false - hasValidityCheck: false + hasValidityCheck: '{% ifversion fpt or ghes %}false{% else %}true{% endif %}' isduplicate: true - provider: Slack supportedSecret: Slack API Token @@ -3712,6 +3736,17 @@ hasPushProtection: true hasValidityCheck: false isduplicate: false +- provider: Snowflake + supportedSecret: Snowflake Programmatic Access Token + secretType: snowflake_programmatic_access_token + versions: + fpt: '*' + ghec: '*' + isPublic: false + isPrivateWithGhas: true + hasPushProtection: false + hasValidityCheck: false + isduplicate: false - provider: Sourcegraph supportedSecret: Sourcegraph Access Token secretType: sourcegraph_access_token @@ -3964,6 +3999,17 @@ hasPushProtection: true hasValidityCheck: false isduplicate: false +- provider: Tencent + supportedSecret: Tencent Cloud International Access Token + secretType: tencent_cloud_intl_access_token + versions: + fpt: '*' + ghec: '*' + isPublic: true + isPrivateWithGhas: true + hasPushProtection: false + hasValidityCheck: false + isduplicate: false - provider: Tencent supportedSecret: Tencent Cloud Secret ID secretType: tencent_cloud_secret_id @@ -4174,10 +4220,11 @@ versions: fpt: '*' ghec: '*' + ghes: '>=3.18' isPublic: true isPrivateWithGhas: true hasPushProtection: false - hasValidityCheck: false + hasValidityCheck: '{% ifversion fpt or ghes %}false{% else %}true{% endif %}' isduplicate: false - provider: Yandex supportedSecret: Yandex.Cloud API Key diff --git a/src/secret-scanning/lib/config.json b/src/secret-scanning/lib/config.json index 6e2c7ba299ec..ae01b8ec340b 100644 --- a/src/secret-scanning/lib/config.json +++ b/src/secret-scanning/lib/config.json @@ -1,5 +1,5 @@ { - "sha": "de330412222eaea5838c723eb6e3e2ebb124d35e", - "blob-sha": "06bbb1448f72fb3171b30d33d0f59334e3bba539", + "sha": "e3e9f53cd5abf83f8d63c7cdf5159ebd9ced145c", + "blob-sha": "d378a032277ebe231aa64e9228819ece8f2ca841", "targetFilename": "code-security/secret-scanning/introduction/supported-secret-scanning-patterns" } \ No newline at end of file diff --git a/src/shielding/middleware/handle-invalid-headers.ts b/src/shielding/middleware/handle-invalid-headers.ts index 4b74a7b30a94..857434e2516c 100644 --- a/src/shielding/middleware/handle-invalid-headers.ts +++ b/src/shielding/middleware/handle-invalid-headers.ts @@ -22,7 +22,8 @@ export default function handleInvalidNextPaths( // The CDN will not cache if the status code is not a success // and not a 404. - return res.status(400).type('text').send('Invalid request headers') + res.status(400).type('text').send('Invalid request headers') + return } return next() diff --git a/src/shielding/middleware/handle-invalid-nextjs-paths.ts b/src/shielding/middleware/handle-invalid-nextjs-paths.ts index 7ea02909ada0..231bf2b09cc8 100644 --- a/src/shielding/middleware/handle-invalid-nextjs-paths.ts +++ b/src/shielding/middleware/handle-invalid-nextjs-paths.ts @@ -26,7 +26,8 @@ export default function handleInvalidNextPaths( const tags = [`path:${req.path}`] statsd.increment(STATSD_KEY, 1, tags) - return res.status(404).type('text').send('Not found') + res.status(404).type('text').send('Not found') + return } return next() diff --git a/src/shielding/middleware/handle-invalid-paths.ts b/src/shielding/middleware/handle-invalid-paths.ts index 449586caec5c..2fab37fc6d7b 100644 --- a/src/shielding/middleware/handle-invalid-paths.ts +++ b/src/shielding/middleware/handle-invalid-paths.ts @@ -80,7 +80,8 @@ export default function handleInvalidPaths( // they're not going to suddenly work in the next deployment. defaultCacheControl(res) res.setHeader('content-type', 'text/plain') - return res.status(404).send('Not found') + res.status(404).send('Not found') + return } if (req.path.endsWith('/index.md')) { @@ -98,7 +99,8 @@ export default function handleInvalidPaths( .replace(/%2F/g, '/') .replace(/%40/g, '@') const newUrl = `/api/article/body?pathname=${encodedPath}` - return res.redirect(newUrl) + res.redirect(newUrl) + return } return next() } diff --git a/src/shielding/middleware/handle-invalid-query-strings.ts b/src/shielding/middleware/handle-invalid-query-strings.ts index 38668ba4ae52..6d244bd647a5 100644 --- a/src/shielding/middleware/handle-invalid-query-strings.ts +++ b/src/shielding/middleware/handle-invalid-query-strings.ts @@ -55,6 +55,30 @@ export default function handleInvalidQuerystrings( const { method, query, path } = req if (method === 'GET' || method === 'HEAD') { const originalKeys = Object.keys(query) + + // Check for invalid query string patterns (square brackets, etc.) + const invalidKeys = originalKeys.filter((key) => { + // Check for square brackets which are invalid + return key.includes('[') || key.includes(']') + }) + + if (invalidKeys.length > 0) { + noCacheControl(res) + const invalidKey = invalidKeys[0].replace(/\[.*$/, '') // Get the base key name + res.status(400).send(`Invalid query string key (${invalidKey})`) + + const tags = [ + 'response:400', + 'reason:invalid-brackets', + `url:${req.url}`, + `path:${req.path}`, + `keys:${originalKeys.length}`, + ] + statsd.increment(STATSD_KEY, 1, tags) + + return + } + let keys = originalKeys.filter((key) => !RECOGNIZED_KEYS_BY_ANY.has(key)) if (keys.length > 0) { // Before we judge the number of query strings, strip out all the ones diff --git a/src/shielding/middleware/handle-old-next-data-paths.ts b/src/shielding/middleware/handle-old-next-data-paths.ts index 8b3e70aeb6b5..877e3c1765d7 100644 --- a/src/shielding/middleware/handle-old-next-data-paths.ts +++ b/src/shielding/middleware/handle-old-next-data-paths.ts @@ -36,7 +36,8 @@ export default function handleOldNextDataPaths( const requestBuildId = req.path.split('/')[3] if (requestBuildId !== getCurrentBuildID()) { errorCacheControl(res) - return res.status(404).type('text').send('build ID mismatch') + res.status(404).type('text').send('build ID mismatch') + return } } return next() diff --git a/src/webhooks/data/fpt/schema.json b/src/webhooks/data/fpt/schema.json index 888573616b25..c98d6bb96733 100644 --- a/src/webhooks/data/fpt/schema.json +++ b/src/webhooks/data/fpt/schema.json @@ -2283,6 +2283,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -3817,6 +3822,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -5352,6 +5362,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -6899,6 +6914,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -88009,7 +88029,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -88062,7 +88082,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghec/schema.json b/src/webhooks/data/ghec/schema.json index ee97b3538ee6..aaa9271c3a93 100644 --- a/src/webhooks/data/ghec/schema.json +++ b/src/webhooks/data/ghec/schema.json @@ -4409,6 +4409,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -5959,6 +5964,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -7510,6 +7520,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -9073,6 +9088,11 @@ ] } ] + }, + { + "type": "object", + "name": "custom_properties", + "description": "

    The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

    " } ] }, @@ -91670,7 +91690,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -91723,7 +91743,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghes-3.13/schema.json b/src/webhooks/data/ghes-3.13/schema.json index e5fbcae0ca2d..ab1782c187e7 100644 --- a/src/webhooks/data/ghes-3.13/schema.json +++ b/src/webhooks/data/ghes-3.13/schema.json @@ -81972,7 +81972,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -82025,7 +82025,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghes-3.14/schema.json b/src/webhooks/data/ghes-3.14/schema.json index 38f631fe671c..be4f86c91609 100644 --- a/src/webhooks/data/ghes-3.14/schema.json +++ b/src/webhooks/data/ghes-3.14/schema.json @@ -83040,7 +83040,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -83093,7 +83093,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghes-3.15/schema.json b/src/webhooks/data/ghes-3.15/schema.json index f63b0b4d6fb0..4f6f29daccc1 100644 --- a/src/webhooks/data/ghes-3.15/schema.json +++ b/src/webhooks/data/ghes-3.15/schema.json @@ -83213,7 +83213,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -83266,7 +83266,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghes-3.16/schema.json b/src/webhooks/data/ghes-3.16/schema.json index 5774f14b2578..f2b00219edd9 100644 --- a/src/webhooks/data/ghes-3.16/schema.json +++ b/src/webhooks/data/ghes-3.16/schema.json @@ -84397,7 +84397,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -84450,7 +84450,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/data/ghes-3.17/schema.json b/src/webhooks/data/ghes-3.17/schema.json index 492601adadd0..6e98fd1fa9f9 100644 --- a/src/webhooks/data/ghes-3.17/schema.json +++ b/src/webhooks/data/ghes-3.17/schema.json @@ -85948,7 +85948,7 @@ "type": "object", "name": "hook", "in": "body", - "description": "

    The modified webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", + "description": "

    The deleted webhook. This will contain different keys based on the type of webhook it is: repository, organization, business, app, or GitHub Marketplace.

    ", "isRequired": true, "childParamsGroups": [ { @@ -86001,7 +86001,7 @@ { "type": "array of strings", "name": "events", - "description": "

    undefinedSupported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", + "description": "

    Supported values are: *, branch_protection_rule, check_run, check_suite, code_scanning_alert, commit_comment, create, delete, deployment, deployment_status, deploy_key, discussion, discussion_comment, fork, gollum, issues, issue_comment, label, member, membership, meta, milestone, organization, org_block, package, page_build, project, project_card, project_column, public, pull_request, pull_request_review, pull_request_review_comment, pull_request_review_thread, push, registry_package, release, repository, repository_import, repository_vulnerability_alert, secret_scanning_alert, secret_scanning_alert_location, security_and_analysis, star, status, team, team_add, watch, workflow_job, workflow_run, repository_dispatch, projects_v2_item

    ", "isRequired": true }, { diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index 3fe50bfb269b..453e96685d33 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "bf4af7c248a68067f570e103053a01b1c9725a92" + "sha": "23d16a0c0808c8241b1076d63e8d3f2e75cb6632" } \ No newline at end of file diff --git a/src/webhooks/middleware/webhooks.ts b/src/webhooks/middleware/webhooks.ts index 02998ffa801e..84ce38b3708d 100644 --- a/src/webhooks/middleware/webhooks.ts +++ b/src/webhooks/middleware/webhooks.ts @@ -12,10 +12,12 @@ const router = express.Router() // /api/webhooks/v1?category=check_run&version=free-pro-team%40latest router.get('/v1', async function webhooks(req, res) { if (!req.query.category) { - return res.status(400).json({ error: "Missing 'category' in query string" }) + res.status(400).json({ error: "Missing 'category' in query string" }) + return } if (!req.query.version) { - return res.status(400).json({ error: "Missing 'version' in query string" }) + res.status(400).json({ error: "Missing 'version' in query string" }) + return } const webhookVersion = Object.values(allVersions).find( @@ -24,7 +26,8 @@ router.get('/v1', async function webhooks(req, res) { const notFoundError = 'No webhook found for given category and version' if (!webhookVersion) { - return res.status(404).json({ error: notFoundError }) + res.status(404).json({ error: notFoundError }) + return } const webhook = await getWebhook(webhookVersion, req.query.category as string) @@ -33,7 +36,7 @@ router.get('/v1', async function webhooks(req, res) { if (process.env.NODE_ENV !== 'development') { defaultCacheControl(res) } - return res.status(200).send(webhook) + res.status(200).send(webhook) } else { res.status(404).json({ error: notFoundError }) } diff --git a/src/workflows/ready-for-docs-review.ts b/src/workflows/ready-for-docs-review.ts index 5d3d51a4267d..e1b7f1216566 100644 --- a/src/workflows/ready-for-docs-review.ts +++ b/src/workflows/ready-for-docs-review.ts @@ -12,6 +12,58 @@ import { getSize, } from './projects.js' +/** + * Determines if a PR is authored by Copilot and extracts the human assignee + * @param data GraphQL response data containing PR information + * @returns Object with isCopilotAuthor boolean and copilotAssignee string + */ +function getCopilotAuthorInfo(data: Record): { + isCopilotAuthor: boolean + copilotAssignee: string +} { + // Check if this is a Copilot-authored PR + const isCopilotAuthor = + data.item.__typename === 'PullRequest' && + data.item.author && + data.item.author.login === 'copilot-swe-agent' + + // For Copilot PRs, find the appropriate assignee (excluding Copilot itself) + let copilotAssignee = '' + if (isCopilotAuthor && data.item.assignees && data.item.assignees.nodes) { + const assignees = data.item.assignees.nodes + .map((assignee: Record) => assignee.login) + .filter((login: string) => login !== 'copilot-swe-agent') + + // Use the first non-Copilot assignee + copilotAssignee = assignees.length > 0 ? assignees[0] : '' + } + + return { isCopilotAuthor, copilotAssignee } +} + +/** + * Determines the appropriate author field value based on contributor type + * @param isCopilotAuthor Whether the PR is authored by Copilot + * @param copilotAssignee The human assignee for Copilot PRs (empty string if none) + * @param firstTimeContributor Whether this is a first-time contributor + * @returns The formatted author field value + */ +function getAuthorFieldValue( + isCopilotAuthor: boolean, + copilotAssignee: string, + firstTimeContributor: boolean | undefined, +): string { + if (isCopilotAuthor) { + return copilotAssignee ? `Copilot + ${copilotAssignee}` : 'Copilot' + } + + if (firstTimeContributor) { + return ':star: first time contributor' + } + + return process.env.AUTHOR_LOGIN || '' +} + async function run() { // Get info about the docs-content review board project const data: Record = await graphql( @@ -48,6 +100,14 @@ async function run() { path } } + author { + login + } + assignees(first: 10) { + nodes { + login + } + } } } } @@ -141,17 +201,31 @@ async function run() { } } const turnaround = process.env.REPO === 'github/docs' ? 3 : 2 + + // Check if this is a Copilot-authored PR and get the human assignee + const { isCopilotAuthor, copilotAssignee } = getCopilotAuthorInfo(data) + + // Determine the author field value + const authorFieldValue = getAuthorFieldValue( + isCopilotAuthor, + copilotAssignee, + firstTimeContributor, + ) + // Generate a mutation to populate fields for the new project item const updateProjectV2ItemMutation = generateUpdateProjectV2ItemFieldMutation({ item: newItemID, - author: firstTimeContributor ? ':star: first time contributor' : process.env.AUTHOR_LOGIN || '', + author: authorFieldValue, turnaround, feature, }) // Determine which variable to use for the contributor type let contributorType - if (await isDocsTeamMember(process.env.AUTHOR_LOGIN || '')) { + if (isCopilotAuthor) { + // Treat Copilot PRs as Docs team + contributorType = docsMemberTypeID + } else if (await isDocsTeamMember(process.env.AUTHOR_LOGIN || '')) { contributorType = docsMemberTypeID } else if (await isGitHubOrgMember(process.env.AUTHOR_LOGIN || '')) { contributorType = hubberTypeID @@ -185,6 +259,8 @@ async function run() { return newItemID } +export { run } + run().catch((error) => { console.log(`#ERROR# ${error}`) process.exit(1)